From f51c5d0dfabe7315c54ae423b8f9dfdc1b3fc5e3 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Mon, 30 Oct 2017 17:59:05 -0500 Subject: [PATCH] strip Razor sample to barebones --- src/FilterLists.Web/.bowerrc | 3 - src/FilterLists.Web/FilterLists.Web.csproj | 5 +- src/FilterLists.Web/Pages/About.cshtml | 9 - src/FilterLists.Web/Pages/About.cshtml.cs | 18 - src/FilterLists.Web/Pages/Contact.cshtml | 19 - src/FilterLists.Web/Pages/Contact.cshtml.cs | 18 - src/FilterLists.Web/Pages/Error.cshtml | 23 - src/FilterLists.Web/Pages/Error.cshtml.cs | 21 - src/FilterLists.Web/Pages/Index.cshtml | 107 +- src/FilterLists.Web/Pages/Index.cshtml.cs | 10 +- src/FilterLists.Web/Pages/_Layout.cshtml | 70 +- .../Pages/_ValidationScriptsPartial.cshtml | 18 - src/FilterLists.Web/Pages/_ViewImports.cshtml | 4 +- src/FilterLists.Web/Pages/_ViewStart.cshtml | 2 +- src/FilterLists.Web/Program.cs | 17 +- src/FilterLists.Web/Startup.cs | 16 +- src/FilterLists.Web/bower.json | 10 - src/FilterLists.Web/bundleconfig.json | 13 +- src/FilterLists.Web/wwwroot/css/site.css | 35 - src/FilterLists.Web/wwwroot/css/site.min.css | 1 - src/FilterLists.Web/wwwroot/favicon.ico | Bin 32038 -> 0 bytes .../wwwroot/images/banner1.svg | 1 - .../wwwroot/images/banner2.svg | 1 - .../wwwroot/images/banner3.svg | 1 - .../wwwroot/images/banner4.svg | 1 - src/FilterLists.Web/wwwroot/js/site.js | 1 - src/FilterLists.Web/wwwroot/js/site.min.js | 0 .../wwwroot/lib/bootstrap/.bower.json | 45 - .../wwwroot/lib/bootstrap/LICENSE | 21 - .../bootstrap/dist/css/bootstrap-theme.css | 587 - .../dist/css/bootstrap-theme.css.map | Bin 47706 -> 0 bytes .../dist/css/bootstrap-theme.min.css.map | Bin 25648 -> 0 bytes .../lib/bootstrap/dist/css/bootstrap.css | 6757 ----------- .../lib/bootstrap/dist/css/bootstrap.css.map | Bin 389287 -> 0 bytes .../bootstrap/dist/css/bootstrap.min.css.map | Bin 542194 -> 0 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../lib/bootstrap/dist/js/bootstrap.js | 2377 ---- .../wwwroot/lib/bootstrap/dist/js/npm.js | 13 - .../jquery-validation-unobtrusive/.bower.json | 44 - .../jquery.validate.unobtrusive.js | 416 - .../jquery.validate.unobtrusive.min.js | 5 - .../wwwroot/lib/jquery-validation/.bower.json | 40 - .../wwwroot/lib/jquery-validation/LICENSE.md | 22 - .../dist/additional-methods.js | 998 -- .../jquery-validation/dist/jquery.validate.js | 1398 --- .../wwwroot/lib/jquery/.bower.json | 25 - .../wwwroot/lib/jquery/LICENSE.txt | 36 - .../wwwroot/lib/jquery/dist/jquery.js | 9831 ----------------- .../wwwroot/lib/jquery/dist/jquery.min.map | Bin 129544 -> 0 bytes 53 files changed, 28 insertions(+), 23299 deletions(-) delete mode 100644 src/FilterLists.Web/.bowerrc delete mode 100644 src/FilterLists.Web/Pages/About.cshtml delete mode 100644 src/FilterLists.Web/Pages/About.cshtml.cs delete mode 100644 src/FilterLists.Web/Pages/Contact.cshtml delete mode 100644 src/FilterLists.Web/Pages/Contact.cshtml.cs delete mode 100644 src/FilterLists.Web/Pages/Error.cshtml delete mode 100644 src/FilterLists.Web/Pages/Error.cshtml.cs delete mode 100644 src/FilterLists.Web/Pages/_ValidationScriptsPartial.cshtml delete mode 100644 src/FilterLists.Web/bower.json delete mode 100644 src/FilterLists.Web/wwwroot/css/site.css delete mode 100644 src/FilterLists.Web/wwwroot/css/site.min.css delete mode 100644 src/FilterLists.Web/wwwroot/favicon.ico delete mode 100644 src/FilterLists.Web/wwwroot/images/banner1.svg delete mode 100644 src/FilterLists.Web/wwwroot/images/banner2.svg delete mode 100644 src/FilterLists.Web/wwwroot/images/banner3.svg delete mode 100644 src/FilterLists.Web/wwwroot/images/banner4.svg delete mode 100644 src/FilterLists.Web/wwwroot/js/site.js delete mode 100644 src/FilterLists.Web/wwwroot/js/site.min.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/.bower.json delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/LICENSE delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.svg delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/bootstrap.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/npm.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/.bower.json delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation/.bower.json delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation/LICENSE.md delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery/.bower.json delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery/LICENSE.txt delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery/dist/jquery.js delete mode 100644 src/FilterLists.Web/wwwroot/lib/jquery/dist/jquery.min.map diff --git a/src/FilterLists.Web/.bowerrc b/src/FilterLists.Web/.bowerrc deleted file mode 100644 index 6406626ab..000000000 --- a/src/FilterLists.Web/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "wwwroot/lib" -} diff --git a/src/FilterLists.Web/FilterLists.Web.csproj b/src/FilterLists.Web/FilterLists.Web.csproj index 09a1fe093..b34a84799 100644 --- a/src/FilterLists.Web/FilterLists.Web.csproj +++ b/src/FilterLists.Web/FilterLists.Web.csproj @@ -8,4 +8,7 @@ - + + + + \ No newline at end of file diff --git a/src/FilterLists.Web/Pages/About.cshtml b/src/FilterLists.Web/Pages/About.cshtml deleted file mode 100644 index 3c090d15f..000000000 --- a/src/FilterLists.Web/Pages/About.cshtml +++ /dev/null @@ -1,9 +0,0 @@ -@page -@model AboutModel -@{ - ViewData["Title"] = "About"; -} -

@ViewData["Title"]

-

@Model.Message

- -

Use this area to provide additional information.

diff --git a/src/FilterLists.Web/Pages/About.cshtml.cs b/src/FilterLists.Web/Pages/About.cshtml.cs deleted file mode 100644 index c70ef7d76..000000000 --- a/src/FilterLists.Web/Pages/About.cshtml.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace FilterLists.Web.Pages -{ - public class AboutModel : PageModel - { - public string Message { get; set; } - - public void OnGet() - { - Message = "Your application description page."; - } - } -} diff --git a/src/FilterLists.Web/Pages/Contact.cshtml b/src/FilterLists.Web/Pages/Contact.cshtml deleted file mode 100644 index b683c8216..000000000 --- a/src/FilterLists.Web/Pages/Contact.cshtml +++ /dev/null @@ -1,19 +0,0 @@ -@page -@model ContactModel -@{ - ViewData["Title"] = "Contact"; -} -

@ViewData["Title"]

-

@Model.Message

- -
- One Microsoft Way
- Redmond, WA 98052-6399
- P: - 425.555.0100 -
- -
- Support: Support@example.com
- Marketing: Marketing@example.com -
diff --git a/src/FilterLists.Web/Pages/Contact.cshtml.cs b/src/FilterLists.Web/Pages/Contact.cshtml.cs deleted file mode 100644 index 80341a258..000000000 --- a/src/FilterLists.Web/Pages/Contact.cshtml.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace FilterLists.Web.Pages -{ - public class ContactModel : PageModel - { - public string Message { get; set; } - - public void OnGet() - { - Message = "Your contact page."; - } - } -} diff --git a/src/FilterLists.Web/Pages/Error.cshtml b/src/FilterLists.Web/Pages/Error.cshtml deleted file mode 100644 index b1f3143a4..000000000 --- a/src/FilterLists.Web/Pages/Error.cshtml +++ /dev/null @@ -1,23 +0,0 @@ -@page -@model ErrorModel -@{ - ViewData["Title"] = "Error"; -} - -

Error.

-

An error occurred while processing your request.

- -@if (Model.ShowRequestId) -{ -

- Request ID: @Model.RequestId -

-} - -

Development Mode

-

- Swapping to Development environment will display more detailed information about the error that occurred. -

-

- Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application. -

diff --git a/src/FilterLists.Web/Pages/Error.cshtml.cs b/src/FilterLists.Web/Pages/Error.cshtml.cs deleted file mode 100644 index a4c497040..000000000 --- a/src/FilterLists.Web/Pages/Error.cshtml.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace FilterLists.Web.Pages -{ - public class ErrorModel : PageModel - { - public string RequestId { get; set; } - - public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - - public void OnGet() - { - RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; - } - } -} diff --git a/src/FilterLists.Web/Pages/Index.cshtml b/src/FilterLists.Web/Pages/Index.cshtml index c7f588fa3..1583fd6d2 100644 --- a/src/FilterLists.Web/Pages/Index.cshtml +++ b/src/FilterLists.Web/Pages/Index.cshtml @@ -2,109 +2,4 @@ @model IndexModel @{ ViewData["Title"] = "Home page"; -} - - - -
-
-

Application uses

-
    -
  • Sample pages using ASP.NET Core Razor Pages
  • -
  • Bower for managing client-side libraries
  • -
  • Theming using Bootstrap
  • -
-
- - - -
+} \ No newline at end of file diff --git a/src/FilterLists.Web/Pages/Index.cshtml.cs b/src/FilterLists.Web/Pages/Index.cshtml.cs index 3d70b0f6a..e64bc60e4 100644 --- a/src/FilterLists.Web/Pages/Index.cshtml.cs +++ b/src/FilterLists.Web/Pages/Index.cshtml.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Mvc.RazorPages; namespace FilterLists.Web.Pages { @@ -11,7 +6,6 @@ public class IndexModel : PageModel { public void OnGet() { - } } -} +} \ No newline at end of file diff --git a/src/FilterLists.Web/Pages/_Layout.cshtml b/src/FilterLists.Web/Pages/_Layout.cshtml index 118d0a7ae..f55e33100 100644 --- a/src/FilterLists.Web/Pages/_Layout.cshtml +++ b/src/FilterLists.Web/Pages/_Layout.cshtml @@ -1,71 +1,11 @@ - + - - + + @ViewData["Title"] - FilterLists.Web - - - - - - - - - - -
- @RenderBody() -
-
-

© 2017 - FilterLists.Web

-
-
- - - - - - - - - - - - - @RenderSection("Scripts", required: false) +@RenderBody() - + \ No newline at end of file diff --git a/src/FilterLists.Web/Pages/_ValidationScriptsPartial.cshtml b/src/FilterLists.Web/Pages/_ValidationScriptsPartial.cshtml deleted file mode 100644 index a2b13b317..000000000 --- a/src/FilterLists.Web/Pages/_ValidationScriptsPartial.cshtml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/src/FilterLists.Web/Pages/_ViewImports.cshtml b/src/FilterLists.Web/Pages/_ViewImports.cshtml index fdbfd1b5e..4ffb4a649 100644 --- a/src/FilterLists.Web/Pages/_ViewImports.cshtml +++ b/src/FilterLists.Web/Pages/_ViewImports.cshtml @@ -1,3 +1,3 @@ -@using FilterLists.Web +@using Web @namespace FilterLists.Web.Pages -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers \ No newline at end of file diff --git a/src/FilterLists.Web/Pages/_ViewStart.cshtml b/src/FilterLists.Web/Pages/_ViewStart.cshtml index a5f10045d..1af6e4946 100644 --- a/src/FilterLists.Web/Pages/_ViewStart.cshtml +++ b/src/FilterLists.Web/Pages/_ViewStart.cshtml @@ -1,3 +1,3 @@ @{ Layout = "_Layout"; -} +} \ No newline at end of file diff --git a/src/FilterLists.Web/Program.cs b/src/FilterLists.Web/Program.cs index fd165710c..bc18c5102 100644 --- a/src/FilterLists.Web/Program.cs +++ b/src/FilterLists.Web/Program.cs @@ -1,12 +1,5 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore; +using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Logging; namespace FilterLists.Web { @@ -17,9 +10,11 @@ public static void Main(string[] args) BuildWebHost(args).Run(); } - public static IWebHost BuildWebHost(string[] args) => - WebHost.CreateDefaultBuilder(args) + public static IWebHost BuildWebHost(string[] args) + { + return WebHost.CreateDefaultBuilder(args) .UseStartup() .Build(); + } } -} +} \ No newline at end of file diff --git a/src/FilterLists.Web/Startup.cs b/src/FilterLists.Web/Startup.cs index 4c71530ad..69494cd7a 100644 --- a/src/FilterLists.Web/Startup.cs +++ b/src/FilterLists.Web/Startup.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -18,13 +14,11 @@ public Startup(IConfiguration configuration) public IConfiguration Configuration { get; } - // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) @@ -32,19 +26,15 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } - else - { - app.UseExceptionHandler("/Error"); - } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( - name: "default", - template: "{controller}/{action=Index}/{id?}"); + "default", + "{controller}/{action=Index}/{id?}"); }); } } -} +} \ No newline at end of file diff --git a/src/FilterLists.Web/bower.json b/src/FilterLists.Web/bower.json deleted file mode 100644 index b07e3cc5a..000000000 --- a/src/FilterLists.Web/bower.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "asp.net", - "private": true, - "dependencies": { - "bootstrap": "3.3.7", - "jquery": "2.2.0", - "jquery-validation": "1.14.0", - "jquery-validation-unobtrusive": "3.2.6" - } -} diff --git a/src/FilterLists.Web/bundleconfig.json b/src/FilterLists.Web/bundleconfig.json index 6d3f9a57a..e2e76f5a6 100644 --- a/src/FilterLists.Web/bundleconfig.json +++ b/src/FilterLists.Web/bundleconfig.json @@ -1,24 +1,19 @@ -// Configure bundling and minification for the project. -// More info at https://go.microsoft.com/fwlink/?LinkId=808241 -[ +[ { "outputFileName": "wwwroot/css/site.min.css", - // An array of relative input file paths. Globbing patterns supported "inputFiles": [ - "wwwroot/css/site.css" + "" ] }, { "outputFileName": "wwwroot/js/site.min.js", "inputFiles": [ - "wwwroot/js/site.js" + "" ], - // Optionally specify minification options "minify": { "enabled": true, "renameLocals": true }, - // Optionally generate .map file "sourceMap": false } -] +] \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/css/site.css b/src/FilterLists.Web/wwwroot/css/site.css deleted file mode 100644 index 465ee540f..000000000 --- a/src/FilterLists.Web/wwwroot/css/site.css +++ /dev/null @@ -1,35 +0,0 @@ -body { - padding-top: 50px; - padding-bottom: 20px; -} - -/* Wrapping element */ -/* Set some basic padding to keep content from hitting the edges */ -.body-content { - padding-left: 15px; - padding-right: 15px; -} - -/* Carousel */ -.carousel-caption p { - font-size: 20px; - line-height: 1.4; -} - -/* Make .svg files in the carousel display properly in older browsers */ -.carousel-inner .item img[src$=".svg"] { - width: 100%; -} - -/* QR code generator */ -#qrCode { - margin: 15px; -} - -/* Hide/rearrange for smaller screens */ -@media screen and (max-width: 767px) { - /* Hide captions */ - .carousel-caption { - display: none; - } -} diff --git a/src/FilterLists.Web/wwwroot/css/site.min.css b/src/FilterLists.Web/wwwroot/css/site.min.css deleted file mode 100644 index 5e93e30ae..000000000 --- a/src/FilterLists.Web/wwwroot/css/site.min.css +++ /dev/null @@ -1 +0,0 @@ -body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}} \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/favicon.ico b/src/FilterLists.Web/wwwroot/favicon.ico deleted file mode 100644 index a3a799985c43bc7309d701b2cad129023377dc71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32038 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 \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/images/banner2.svg b/src/FilterLists.Web/wwwroot/images/banner2.svg deleted file mode 100644 index 9679c604d..000000000 --- a/src/FilterLists.Web/wwwroot/images/banner2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/images/banner3.svg b/src/FilterLists.Web/wwwroot/images/banner3.svg deleted file mode 100644 index 9be2c2503..000000000 --- a/src/FilterLists.Web/wwwroot/images/banner3.svg +++ /dev/null @@ -1 +0,0 @@ -banner3b \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/images/banner4.svg b/src/FilterLists.Web/wwwroot/images/banner4.svg deleted file mode 100644 index 38b3d7cd1..000000000 --- a/src/FilterLists.Web/wwwroot/images/banner4.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/js/site.js b/src/FilterLists.Web/wwwroot/js/site.js deleted file mode 100644 index 82ecce7b4..000000000 --- a/src/FilterLists.Web/wwwroot/js/site.js +++ /dev/null @@ -1 +0,0 @@ -// Write your Javascript code. diff --git a/src/FilterLists.Web/wwwroot/js/site.min.js b/src/FilterLists.Web/wwwroot/js/site.min.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/.bower.json b/src/FilterLists.Web/wwwroot/lib/bootstrap/.bower.json deleted file mode 100644 index 1e99b6299..000000000 --- a/src/FilterLists.Web/wwwroot/lib/bootstrap/.bower.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "bootstrap", - "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", - "keywords": [ - "css", - "js", - "less", - "mobile-first", - "responsive", - "front-end", - "framework", - "web" - ], - "homepage": "http://getbootstrap.com", - "license": "MIT", - "moduleType": "globals", - "main": [ - "less/bootstrap.less", - "dist/js/bootstrap.js" - ], - "ignore": [ - "/.*", - "_config.yml", - "CNAME", - "composer.json", - "CONTRIBUTING.md", - "docs", - "js/tests", - "test-infra" - ], - "dependencies": { - "jquery": "1.9.1 - 3" - }, - "version": "3.3.7", - "_release": "3.3.7", - "_resolution": { - "type": "version", - "tag": "v3.3.7", - "commit": "0b9c4a4007c44201dce9a6cc1a38407005c26c86" - }, - "_source": "https://github.com/twbs/bootstrap.git", - "_target": "v3.3.7", - "_originalSource": "bootstrap", - "_direct": true -} \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/LICENSE b/src/FilterLists.Web/wwwroot/lib/bootstrap/LICENSE deleted file mode 100644 index 7a300022c..000000000 --- a/src/FilterLists.Web/wwwroot/lib/bootstrap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011-2016 Twitter, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css deleted file mode 100644 index 31d888266..000000000 --- a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map deleted file mode 100644 index d876f60fb4fd2a1c421a4813ef080ac97b670465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47706 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 diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map deleted file mode 100644 index 94813e9006074c2ce411b02c4014be94b5bb6039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25648 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 diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css deleted file mode 100644 index 6167622ce..000000000 --- a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css +++ /dev/null @@ -1,6757 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - 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'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .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 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .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 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .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 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #286090; - border-color: #122b40; -} -.btn-primary:hover { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #449d44; - border-color: #255625; -} -.btn-success:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: middle; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - padding-right: 15px; - padding-left: 15px; - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - filter: alpha(opacity=0); - opacity: 0; - - line-break: auto; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - - line-break: auto; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - background-color: rgba(0, 0, 0, 0); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map deleted file mode 100644 index f010c82d113c25336f5ae7df32ce5de0caaddbd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389287 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 z 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®` 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 diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map deleted file mode 100644 index 6c7fa40b98db056a6d36faf96c77ef85d4a68bba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542194 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 bA-?Xc-OQ}XVyQJ~TkGkf9^G4i{@eco*UoYp diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20127 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45404 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 G`u_lkUM?>H diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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 diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/bootstrap.js deleted file mode 100644 index 8a2e99a53..000000000 --- a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/bootstrap.js +++ /dev/null @@ -1,2377 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under the MIT license - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - 'use strict'; - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.7 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.7 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.7' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector === '#' ? [] : selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.7 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.7' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state += 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d).prop(d, true) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d).prop(d, false) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked')) changed = false - $parent.find('.active').removeClass('active') - this.$element.addClass('active') - } else if ($input.prop('type') == 'checkbox') { - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false - this.$element.toggleClass('active') - } - $input.prop('checked', this.$element.hasClass('active')) - if (changed) $input.trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - this.$element.toggleClass('active') - } - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target).closest('.btn') - Plugin.call($btn, 'toggle') - if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { - // Prevent double click on radios, and the double selections (so cancellation) on checkboxes - e.preventDefault() - // The target component still receive the focus - if ($btn.is('input,button')) $btn.trigger('focus') - else $btn.find('input:visible,button:visible').first().trigger('focus') - } - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.7 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.7' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.7 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - -/* jshint latedef: false */ - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.7' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.7 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.7' - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) - }) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')) - .addClass('dropdown-backdrop') - .insertAfter($(this)) - .on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger($.Event('shown.bs.dropdown', relatedTarget)) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if (!isActive && e.which != 27 || isActive && e.which == 27) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('.dropdown-menu' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.7 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.7' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element.addClass('in') - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(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') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (document !== e.target && - this.$element[0] !== e.target && - !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $(document.createElement('div')) - .addClass('modal-backdrop ' + animate) - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.7 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - this.inState = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.7' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) - this.inState = { click: false, hover: false, focus: false } - - if (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!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true - } - - if (self.tip().hasClass('in') || self.hoverState == 'in') { - self.hoverState = 'in' - return - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.isInStateTrue = function () { - for (var key in this.inState) { - if (this.inState[key]) return true - } - - return false - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false - } - - if (self.isInStateTrue()) return - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - this.$element.trigger('inserted.bs.' + this.type) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var viewportDim = this.getPosition(this.$viewport) - - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top += marginTop - offset.left += marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - } - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var isSvg = window.SVGElement && el instanceof window.SVGElement - // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. - // See https://github.com/twbs/bootstrap/issues/20280 - var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - if (!this.$tip) { - this.$tip = $(this.options.template) - if (this.$tip.length != 1) { - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') - } - } - return this.$tip - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - if (e) { - self.inState.click = !self.inState.click - if (self.isInStateTrue()) self.enter(self) - else self.leave(self) - } else { - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - if (that.$tip) { - that.$tip.detach() - } - that.$tip = null - that.$arrow = null - that.$viewport = null - that.$element = null - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.7 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.7' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.7 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.7' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.7 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - // jscs:disable requireDollarBeforejQueryAssignment - this.element = $(element) - // jscs:enable requireDollarBeforejQueryAssignment - } - - Tab.VERSION = '3.3.7' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.7 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.7' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = Math.max($(document).height(), $(document.body).height()) - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/npm.js b/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/npm.js deleted file mode 100644 index bf6aa8060..000000000 --- a/src/FilterLists.Web/wwwroot/lib/bootstrap/dist/js/npm.js +++ /dev/null @@ -1,13 +0,0 @@ -// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('../../js/transition.js') -require('../../js/alert.js') -require('../../js/button.js') -require('../../js/carousel.js') -require('../../js/collapse.js') -require('../../js/dropdown.js') -require('../../js/modal.js') -require('../../js/tooltip.js') -require('../../js/popover.js') -require('../../js/scrollspy.js') -require('../../js/tab.js') -require('../../js/affix.js') \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/.bower.json b/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/.bower.json deleted file mode 100644 index ccf48121d..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/.bower.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "jquery-validation-unobtrusive", - "version": "3.2.6", - "homepage": "https://github.com/aspnet/jquery-validation-unobtrusive", - "description": "Add-on to jQuery Validation to enable unobtrusive validation options in data-* attributes.", - "main": [ - "jquery.validate.unobtrusive.js" - ], - "ignore": [ - "**/.*", - "*.json", - "*.md", - "*.txt", - "gulpfile.js" - ], - "keywords": [ - "jquery", - "asp.net", - "mvc", - "validation", - "unobtrusive" - ], - "authors": [ - "Microsoft" - ], - "license": "http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm", - "repository": { - "type": "git", - "url": "git://github.com/aspnet/jquery-validation-unobtrusive.git" - }, - "dependencies": { - "jquery-validation": ">=1.8", - "jquery": ">=1.8" - }, - "_release": "3.2.6", - "_resolution": { - "type": "version", - "tag": "v3.2.6", - "commit": "13386cd1b5947d8a5d23a12b531ce3960be1eba7" - }, - "_source": "git://github.com/aspnet/jquery-validation-unobtrusive.git", - "_target": "3.2.6", - "_originalSource": "jquery-validation-unobtrusive" -} \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js deleted file mode 100644 index 1b0de1249..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js +++ /dev/null @@ -1,416 +0,0 @@ -/*! -** Unobtrusive validation support library for jQuery and jQuery Validate -** Copyright (C) Microsoft Corporation. All rights reserved. -*/ - -/*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 */ -/*global document: false, jQuery: false */ - -(function ($) { - var $jQval = $.validator, - adapters, - data_validation = "unobtrusiveValidation"; - - function setValidationValues(options, ruleName, value) { - options.rules[ruleName] = value; - if (options.message) { - options.messages[ruleName] = options.message; - } - } - - function splitAndTrim(value) { - return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g); - } - - function escapeAttributeValue(value) { - // As mentioned on http://api.jquery.com/category/selectors/ - return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); - } - - function getModelPrefix(fieldName) { - return fieldName.substr(0, fieldName.lastIndexOf(".") + 1); - } - - function appendModelPrefix(value, prefix) { - if (value.indexOf("*.") === 0) { - value = value.replace("*.", prefix); - } - return value; - } - - function onError(error, inputElement) { // 'this' is the form element - var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"), - replaceAttrValue = container.attr("data-valmsg-replace"), - replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null; - - container.removeClass("field-validation-valid").addClass("field-validation-error"); - error.data("unobtrusiveContainer", container); - - if (replace) { - container.empty(); - error.removeClass("input-validation-error").appendTo(container); - } - else { - error.hide(); - } - } - - function onErrors(event, validator) { // 'this' is the form element - var container = $(this).find("[data-valmsg-summary=true]"), - list = container.find("ul"); - - if (list && list.length && validator.errorList.length) { - list.empty(); - container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); - - $.each(validator.errorList, function () { - $("
  • ").html(this.message).appendTo(list); - }); - } - } - - function onSuccess(error) { // 'this' is the form element - var container = error.data("unobtrusiveContainer"); - - if (container) { - var replaceAttrValue = container.attr("data-valmsg-replace"), - replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null; - - container.addClass("field-validation-valid").removeClass("field-validation-error"); - error.removeData("unobtrusiveContainer"); - - if (replace) { - container.empty(); - } - } - } - - function onReset(event) { // 'this' is the form element - var $form = $(this), - key = '__jquery_unobtrusive_validation_form_reset'; - if ($form.data(key)) { - return; - } - // Set a flag that indicates we're currently resetting the form. - $form.data(key, true); - try { - $form.data("validator").resetForm(); - } finally { - $form.removeData(key); - } - - $form.find(".validation-summary-errors") - .addClass("validation-summary-valid") - .removeClass("validation-summary-errors"); - $form.find(".field-validation-error") - .addClass("field-validation-valid") - .removeClass("field-validation-error") - .removeData("unobtrusiveContainer") - .find(">*") // If we were using valmsg-replace, get the underlying error - .removeData("unobtrusiveContainer"); - } - - function validationInfo(form) { - var $form = $(form), - result = $form.data(data_validation), - onResetProxy = $.proxy(onReset, form), - defaultOptions = $jQval.unobtrusive.options || {}, - execInContext = function (name, args) { - var func = defaultOptions[name]; - func && $.isFunction(func) && func.apply(form, args); - } - - if (!result) { - result = { - options: { // options structure passed to jQuery Validate's validate() method - errorClass: defaultOptions.errorClass || "input-validation-error", - errorElement: defaultOptions.errorElement || "span", - errorPlacement: function () { - onError.apply(form, arguments); - execInContext("errorPlacement", arguments); - }, - invalidHandler: function () { - onErrors.apply(form, arguments); - execInContext("invalidHandler", arguments); - }, - messages: {}, - rules: {}, - success: function () { - onSuccess.apply(form, arguments); - execInContext("success", arguments); - } - }, - attachValidation: function () { - $form - .off("reset." + data_validation, onResetProxy) - .on("reset." + data_validation, onResetProxy) - .validate(this.options); - }, - validate: function () { // a validation function that is called by unobtrusive Ajax - $form.validate(); - return $form.valid(); - } - }; - $form.data(data_validation, result); - } - - return result; - } - - $jQval.unobtrusive = { - adapters: [], - - parseElement: function (element, skipAttach) { - /// - /// Parses a single HTML element for unobtrusive validation attributes. - /// - /// The HTML element to be parsed. - /// [Optional] true to skip attaching the - /// validation to the form. If parsing just this single element, you should specify true. - /// If parsing several elements, you should specify false, and manually attach the validation - /// to the form when you are finished. The default is false. - var $element = $(element), - form = $element.parents("form")[0], - valInfo, rules, messages; - - if (!form) { // Cannot do client-side validation without a form - return; - } - - valInfo = validationInfo(form); - valInfo.options.rules[element.name] = rules = {}; - valInfo.options.messages[element.name] = messages = {}; - - $.each(this.adapters, function () { - var prefix = "data-val-" + this.name, - message = $element.attr(prefix), - paramValues = {}; - - if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy) - prefix += "-"; - - $.each(this.params, function () { - paramValues[this] = $element.attr(prefix + this); - }); - - this.adapt({ - element: element, - form: form, - message: message, - params: paramValues, - rules: rules, - messages: messages - }); - } - }); - - $.extend(rules, { "__dummy__": true }); - - if (!skipAttach) { - valInfo.attachValidation(); - } - }, - - parse: function (selector) { - /// - /// Parses all the HTML elements in the specified selector. It looks for input elements decorated - /// with the [data-val=true] attribute value and enables validation according to the data-val-* - /// attribute values. - /// - /// Any valid jQuery selector. - - // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one - // element with data-val=true - var $selector = $(selector), - $forms = $selector.parents() - .addBack() - .filter("form") - .add($selector.find("form")) - .has("[data-val=true]"); - - $selector.find("[data-val=true]").each(function () { - $jQval.unobtrusive.parseElement(this, true); - }); - - $forms.each(function () { - var info = validationInfo(this); - if (info) { - info.attachValidation(); - } - }); - } - }; - - adapters = $jQval.unobtrusive.adapters; - - adapters.add = function (adapterName, params, fn) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). - /// [Optional] An array of parameter names (strings) that will - /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and - /// mmmm is the parameter name). - /// The function to call, which adapts the values from the HTML - /// attributes into jQuery Validate rules and/or messages. - /// - if (!fn) { // Called with no params, just a function - fn = params; - params = []; - } - this.push({ name: adapterName, params: params, adapt: fn }); - return this; - }; - - adapters.addBool = function (adapterName, ruleName) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where - /// the jQuery Validate validation rule has no parameter values. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). - /// [Optional] The name of the jQuery Validate rule. If not provided, the value - /// of adapterName will be used instead. - /// - return this.add(adapterName, function (options) { - setValidationValues(options, ruleName || adapterName, true); - }); - }; - - adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where - /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and - /// one for min-and-max). The HTML parameters are expected to be named -min and -max. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). - /// The name of the jQuery Validate rule to be used when you only - /// have a minimum value. - /// The name of the jQuery Validate rule to be used when you only - /// have a maximum value. - /// The name of the jQuery Validate rule to be used when you - /// have both a minimum and maximum value. - /// [Optional] The name of the HTML attribute that - /// contains the minimum value. The default is "min". - /// [Optional] The name of the HTML attribute that - /// contains the maximum value. The default is "max". - /// - return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) { - var min = options.params.min, - max = options.params.max; - - if (min && max) { - setValidationValues(options, minMaxRuleName, [min, max]); - } - else if (min) { - setValidationValues(options, minRuleName, min); - } - else if (max) { - setValidationValues(options, maxRuleName, max); - } - }); - }; - - adapters.addSingleVal = function (adapterName, attribute, ruleName) { - /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where - /// the jQuery Validate validation rule has a single value. - /// The name of the adapter to be added. This matches the name used - /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name). - /// [Optional] The name of the HTML attribute that contains the value. - /// The default is "val". - /// [Optional] The name of the jQuery Validate rule. If not provided, the value - /// of adapterName will be used instead. - /// - return this.add(adapterName, [attribute || "val"], function (options) { - setValidationValues(options, ruleName || adapterName, options.params[attribute]); - }); - }; - - $jQval.addMethod("__dummy__", function (value, element, params) { - return true; - }); - - $jQval.addMethod("regex", function (value, element, params) { - var match; - if (this.optional(element)) { - return true; - } - - match = new RegExp(params).exec(value); - return (match && (match.index === 0) && (match[0].length === value.length)); - }); - - $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) { - var match; - if (nonalphamin) { - match = value.match(/\W/g); - match = match && match.length >= nonalphamin; - } - return match; - }); - - if ($jQval.methods.extension) { - adapters.addSingleVal("accept", "mimtype"); - adapters.addSingleVal("extension", "extension"); - } else { - // for backward compatibility, when the 'extension' validation method does not exist, such as with versions - // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for - // validating the extension, and ignore mime-type validations as they are not supported. - adapters.addSingleVal("extension", "extension", "accept"); - } - - adapters.addSingleVal("regex", "pattern"); - adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"); - adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range"); - adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength"); - adapters.add("equalto", ["other"], function (options) { - var prefix = getModelPrefix(options.element.name), - other = options.params.other, - fullOtherName = appendModelPrefix(other, prefix), - element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0]; - - setValidationValues(options, "equalTo", element); - }); - adapters.add("required", function (options) { - // jQuery Validate equates "required" with "mandatory" for checkbox elements - if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") { - setValidationValues(options, "required", true); - } - }); - adapters.add("remote", ["url", "type", "additionalfields"], function (options) { - var value = { - url: options.params.url, - type: options.params.type || "GET", - data: {} - }, - prefix = getModelPrefix(options.element.name); - - $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) { - var paramName = appendModelPrefix(fieldName, prefix); - value.data[paramName] = function () { - var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']"); - // For checkboxes and radio buttons, only pick up values from checked fields. - if (field.is(":checkbox")) { - return field.filter(":checked").val() || field.filter(":hidden").val() || ''; - } - else if (field.is(":radio")) { - return field.filter(":checked").val() || ''; - } - return field.val(); - }; - }); - - setValidationValues(options, "remote", value); - }); - adapters.add("password", ["min", "nonalphamin", "regex"], function (options) { - if (options.params.min) { - setValidationValues(options, "minlength", options.params.min); - } - if (options.params.nonalphamin) { - setValidationValues(options, "nonalphamin", options.params.nonalphamin); - } - if (options.params.regex) { - setValidationValues(options, "regex", options.params.regex); - } - }); - - $(function () { - $jQval.unobtrusive.parse(document); - }); -}(jQuery)); \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js b/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js deleted file mode 100644 index be9a38a4c..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/* -** Unobtrusive validation support library for jQuery and jQuery Validate -** Copyright (C) Microsoft Corporation. All rights reserved. -*/ -!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("
  • ").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 m(e){var n=a(e),t=n.data(v),r=a.proxy(l,e),i=p.unobtrusive.options||{},m=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),m("errorPlacement",arguments)},invalidHandler:function(){d.apply(e,arguments),m("invalidHandler",arguments)},messages:{},rules:{},success:function(){s.apply(e,arguments),m("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 u,p=a.validator,v="unobtrusiveValidation";p.unobtrusive={adapters:[],parseElement:function(e,n){var t,r,i,o=a(e),d=o.parents("form")[0];d&&(t=m(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(){p.unobtrusive.parseElement(this,!0)}),t.each(function(){var a=m(this);a&&a.attachValidation()})}},u=p.unobtrusive.adapters,u.add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},u.addBool=function(a,n){return this.add(a,function(t){e(t,n||a,!0)})},u.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)})},u.addSingleVal=function(a,n,t){return this.add(a,[n||"val"],function(r){e(r,t||a,r.params[n])})},p.addMethod("__dummy__",function(a,e,n){return!0}),p.addMethod("regex",function(a,e,n){var t;return this.optional(e)?!0:(t=new RegExp(n).exec(a),t&&0===t.index&&t[0].length===a.length)}),p.addMethod("nonalphamin",function(a,e,n){var t;return n&&(t=a.match(/\W/g),t=t&&t.length>=n),t}),p.methods.extension?(u.addSingleVal("accept","mimtype"),u.addSingleVal("extension","extension")):u.addSingleVal("extension","extension","accept"),u.addSingleVal("regex","pattern"),u.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),u.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),u.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),u.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)}),u.add("required",function(a){("INPUT"!==a.element.tagName.toUpperCase()||"CHECKBOX"!==a.element.type.toUpperCase())&&e(a,"required",!0)}),u.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)}),u.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)}),a(function(){p.unobtrusive.parse(document)})}(jQuery); \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation/.bower.json b/src/FilterLists.Web/wwwroot/lib/jquery-validation/.bower.json deleted file mode 100644 index cab34a4a6..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation/.bower.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "jquery-validation", - "homepage": "http://jqueryvalidation.org/", - "repository": { - "type": "git", - "url": "git://github.com/jzaefferer/jquery-validation.git" - }, - "authors": [ - "Jörn Zaefferer " - ], - "description": "Form validation made easy", - "main": "dist/jquery.validate.js", - "keywords": [ - "forms", - "validation", - "validate" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "demo", - "lib" - ], - "dependencies": { - "jquery": ">= 1.7.2" - }, - "version": "1.14.0", - "_release": "1.14.0", - "_resolution": { - "type": "version", - "tag": "1.14.0", - "commit": "c1343fb9823392aa9acbe1c3ffd337b8c92fed48" - }, - "_source": "git://github.com/jzaefferer/jquery-validation.git", - "_target": ">=1.8", - "_originalSource": "jquery-validation" -} \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation/LICENSE.md b/src/FilterLists.Web/wwwroot/lib/jquery-validation/LICENSE.md deleted file mode 100644 index dc377cc03..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) -===================== - -Copyright Jörn Zaefferer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js b/src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js deleted file mode 100644 index df41fbd40..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js +++ /dev/null @@ -1,998 +0,0 @@ -/*! - * jQuery Validation Plugin v1.14.0 - * - * http://jqueryvalidation.org/ - * - * Copyright (c) 2015 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery", "./jquery.validate"], factory ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -(function() { - - function stripHtml(value) { - // remove html tags and space chars - return value.replace(/<.[^<>]*?>/g, " ").replace(/ | /gi, " ") - // remove punctuation - .replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g, ""); - } - - $.validator.addMethod("maxWords", function(value, element, params) { - return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params; - }, $.validator.format("Please enter {0} words or less.")); - - $.validator.addMethod("minWords", function(value, element, params) { - return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params; - }, $.validator.format("Please enter at least {0} words.")); - - $.validator.addMethod("rangeWords", function(value, element, params) { - var valueStripped = stripHtml(value), - regex = /\b\w+\b/g; - return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1]; - }, $.validator.format("Please enter between {0} and {1} words.")); - -}()); - -// Accept a value from a file input based on a required mimetype -$.validator.addMethod("accept", function(value, element, param) { - // Split mime on commas in case we have multiple types we can accept - var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*", - optionalValue = this.optional(element), - i, file; - - // Element is optional - if (optionalValue) { - return optionalValue; - } - - if ($(element).attr("type") === "file") { - // If we are using a wildcard, make it regex friendly - typeParam = typeParam.replace(/\*/g, ".*"); - - // Check if the element has a FileList before checking each file - if (element.files && element.files.length) { - for (i = 0; i < element.files.length; i++) { - file = element.files[i]; - - // Grab the mimetype from the loaded file, verify it matches - if (!file.type.match(new RegExp( "\\.?(" + typeParam + ")$", "i"))) { - return false; - } - } - } - } - - // Either return true because we've validated each file, or because the - // browser does not support element.files and the FileList feature - return true; -}, $.validator.format("Please enter a value with a valid mimetype.")); - -$.validator.addMethod("alphanumeric", function(value, element) { - return this.optional(element) || /^\w+$/i.test(value); -}, "Letters, numbers, and underscores only please"); - -/* - * Dutch bank account numbers (not 'giro' numbers) have 9 digits - * and pass the '11 check'. - * We accept the notation with spaces, as that is common. - * acceptable: 123456789 or 12 34 56 789 - */ -$.validator.addMethod("bankaccountNL", function(value, element) { - if (this.optional(element)) { - return true; - } - if (!(/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(value))) { - return false; - } - // now '11 check' - var account = value.replace(/ /g, ""), // remove spaces - sum = 0, - len = account.length, - pos, factor, digit; - for ( pos = 0; pos < len; pos++ ) { - factor = len - pos; - digit = account.substring(pos, pos + 1); - sum = sum + factor * digit; - } - return sum % 11 === 0; -}, "Please specify a valid bank account number"); - -$.validator.addMethod("bankorgiroaccountNL", function(value, element) { - return this.optional(element) || - ($.validator.methods.bankaccountNL.call(this, value, element)) || - ($.validator.methods.giroaccountNL.call(this, value, element)); -}, "Please specify a valid bank or giro account number"); - -/** - * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. - * - * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional) - * - * BIC definition in detail: - * - First 4 characters - bank code (only letters) - * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters) - * - Next 2 characters - location code (letters and digits) - * a. shall not start with '0' or '1' - * b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant) - * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits) - */ -$.validator.addMethod("bic", function(value, element) { - return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value ); -}, "Please specify a valid BIC code"); - -/* - * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities - * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal - */ -$.validator.addMethod( "cifES", function( value ) { - "use strict"; - - var num = [], - controlDigit, sum, i, count, tmp, secondDigit; - - value = value.toUpperCase(); - - // Quick format test - 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}$)" ) ) { - return false; - } - - for ( i = 0; i < 9; i++ ) { - num[ i ] = parseInt( value.charAt( i ), 10 ); - } - - // Algorithm for checking CIF codes - sum = num[ 2 ] + num[ 4 ] + num[ 6 ]; - for ( count = 1; count < 8; count += 2 ) { - tmp = ( 2 * num[ count ] ).toString(); - secondDigit = tmp.charAt( 1 ); - - sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) ); - } - - /* The first (position 1) is a letter following the following criteria: - * A. Corporations - * B. LLCs - * C. General partnerships - * D. Companies limited partnerships - * E. Communities of goods - * F. Cooperative Societies - * G. Associations - * H. Communities of homeowners in horizontal property regime - * J. Civil Societies - * K. Old format - * L. Old format - * M. Old format - * N. Nonresident entities - * P. Local authorities - * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions - * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008) - * S. Organs of State Administration and regions - * V. Agrarian Transformation - * W. Permanent establishments of non-resident in Spain - */ - if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) { - sum += ""; - controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 ); - value += controlDigit; - return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) ); - } - - return false; - -}, "Please specify a valid CIF number." ); - -/* - * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number. - * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. - */ -$.validator.addMethod("cpfBR", function(value) { - // Removing special characters from value - value = value.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, ""); - - // Checking value to have 11 digits only - if (value.length !== 11) { - return false; - } - - var sum = 0, - firstCN, secondCN, checkResult, i; - - firstCN = parseInt(value.substring(9, 10), 10); - secondCN = parseInt(value.substring(10, 11), 10); - - checkResult = function(sum, cn) { - var result = (sum * 10) % 11; - if ((result === 10) || (result === 11)) {result = 0;} - return (result === cn); - }; - - // Checking for dump data - if (value === "" || - value === "00000000000" || - value === "11111111111" || - value === "22222222222" || - value === "33333333333" || - value === "44444444444" || - value === "55555555555" || - value === "66666666666" || - value === "77777777777" || - value === "88888888888" || - value === "99999999999" - ) { - return false; - } - - // Step 1 - using first Check Number: - for ( i = 1; i <= 9; i++ ) { - sum = sum + parseInt(value.substring(i - 1, i), 10) * (11 - i); - } - - // If first Check Number (CN) is valid, move to Step 2 - using second Check Number: - if ( checkResult(sum, firstCN) ) { - sum = 0; - for ( i = 1; i <= 10; i++ ) { - sum = sum + parseInt(value.substring(i - 1, i), 10) * (12 - i); - } - return checkResult(sum, secondCN); - } - return false; - -}, "Please specify a valid CPF number"); - -/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator - * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 - * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) - */ -$.validator.addMethod("creditcardtypes", function(value, element, param) { - if (/[^0-9\-]+/.test(value)) { - return false; - } - - value = value.replace(/\D/g, ""); - - var validTypes = 0x0000; - - if (param.mastercard) { - validTypes |= 0x0001; - } - if (param.visa) { - validTypes |= 0x0002; - } - if (param.amex) { - validTypes |= 0x0004; - } - if (param.dinersclub) { - validTypes |= 0x0008; - } - if (param.enroute) { - validTypes |= 0x0010; - } - if (param.discover) { - validTypes |= 0x0020; - } - if (param.jcb) { - validTypes |= 0x0040; - } - if (param.unknown) { - validTypes |= 0x0080; - } - if (param.all) { - validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; - } - if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard - return value.length === 16; - } - if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa - return value.length === 16; - } - if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex - return value.length === 15; - } - if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub - return value.length === 14; - } - if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute - return value.length === 15; - } - if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover - return value.length === 16; - } - if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb - return value.length === 16; - } - if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb - return value.length === 15; - } - if (validTypes & 0x0080) { //unknown - return true; - } - return false; -}, "Please enter a valid credit card number."); - -/** - * Validates currencies with any given symbols by @jameslouiz - * Symbols can be optional or required. Symbols required by default - * - * Usage examples: - * currency: ["£", false] - Use false for soft currency validation - * currency: ["$", false] - * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc - * - * - * - * Soft symbol checking - * currencyInput: { - * currency: ["$", false] - * } - * - * Strict symbol checking (default) - * currencyInput: { - * currency: "$" - * //OR - * currency: ["$", true] - * } - * - * Multiple Symbols - * currencyInput: { - * currency: "$,£,¢" - * } - */ -$.validator.addMethod("currency", function(value, element, param) { - var isParamString = typeof param === "string", - symbol = isParamString ? param : param[0], - soft = isParamString ? true : param[1], - regex; - - symbol = symbol.replace(/,/g, ""); - symbol = soft ? symbol + "]" : symbol + "]?"; - 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})?)$"; - regex = new RegExp(regex); - return this.optional(element) || regex.test(value); - -}, "Please specify a valid currency"); - -$.validator.addMethod("dateFA", function(value, element) { - 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); -}, $.validator.messages.date); - -/** - * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. - * - * @example $.validator.methods.date("01/01/1900") - * @result true - * - * @example $.validator.methods.date("01/13/1990") - * @result false - * - * @example $.validator.methods.date("01.01.1900") - * @result false - * - * @example - * @desc Declares an optional input element whose value must be a valid date. - * - * @name $.validator.methods.dateITA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod("dateITA", function(value, element) { - var check = false, - re = /^\d{1,2}\/\d{1,2}\/\d{4}$/, - adata, gg, mm, aaaa, xdata; - if ( re.test(value)) { - adata = value.split("/"); - gg = parseInt(adata[0], 10); - mm = parseInt(adata[1], 10); - aaaa = parseInt(adata[2], 10); - xdata = new Date(Date.UTC(aaaa, mm - 1, gg, 12, 0, 0, 0)); - if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth () === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) { - check = true; - } else { - check = false; - } - } else { - check = false; - } - return this.optional(element) || check; -}, $.validator.messages.date); - -$.validator.addMethod("dateNL", function(value, element) { - return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value); -}, $.validator.messages.date); - -// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept -$.validator.addMethod("extension", function(value, element, param) { - param = typeof param === "string" ? param.replace(/,/g, "|") : "png|jpe?g|gif"; - return this.optional(element) || value.match(new RegExp("\\.(" + param + ")$", "i")); -}, $.validator.format("Please enter a value with a valid extension.")); - -/** - * Dutch giro account numbers (not bank numbers) have max 7 digits - */ -$.validator.addMethod("giroaccountNL", function(value, element) { - return this.optional(element) || /^[0-9]{1,7}$/.test(value); -}, "Please specify a valid giro account number"); - -/** - * IBAN is the international bank account number. - * It has a country - specific format, that is checked here too - */ -$.validator.addMethod("iban", function(value, element) { - // some quick simple tests to prevent needless work - if (this.optional(element)) { - return true; - } - - // remove spaces and to upper case - var iban = value.replace(/ /g, "").toUpperCase(), - ibancheckdigits = "", - leadingZeroes = true, - cRest = "", - cOperator = "", - countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p; - - // check the country code and find the country specific format - countrycode = iban.substring(0, 2); - bbancountrypatterns = { - "AL": "\\d{8}[\\dA-Z]{16}", - "AD": "\\d{8}[\\dA-Z]{12}", - "AT": "\\d{16}", - "AZ": "[\\dA-Z]{4}\\d{20}", - "BE": "\\d{12}", - "BH": "[A-Z]{4}[\\dA-Z]{14}", - "BA": "\\d{16}", - "BR": "\\d{23}[A-Z][\\dA-Z]", - "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}", - "CR": "\\d{17}", - "HR": "\\d{17}", - "CY": "\\d{8}[\\dA-Z]{16}", - "CZ": "\\d{20}", - "DK": "\\d{14}", - "DO": "[A-Z]{4}\\d{20}", - "EE": "\\d{16}", - "FO": "\\d{14}", - "FI": "\\d{14}", - "FR": "\\d{10}[\\dA-Z]{11}\\d{2}", - "GE": "[\\dA-Z]{2}\\d{16}", - "DE": "\\d{18}", - "GI": "[A-Z]{4}[\\dA-Z]{15}", - "GR": "\\d{7}[\\dA-Z]{16}", - "GL": "\\d{14}", - "GT": "[\\dA-Z]{4}[\\dA-Z]{20}", - "HU": "\\d{24}", - "IS": "\\d{22}", - "IE": "[\\dA-Z]{4}\\d{14}", - "IL": "\\d{19}", - "IT": "[A-Z]\\d{10}[\\dA-Z]{12}", - "KZ": "\\d{3}[\\dA-Z]{13}", - "KW": "[A-Z]{4}[\\dA-Z]{22}", - "LV": "[A-Z]{4}[\\dA-Z]{13}", - "LB": "\\d{4}[\\dA-Z]{20}", - "LI": "\\d{5}[\\dA-Z]{12}", - "LT": "\\d{16}", - "LU": "\\d{3}[\\dA-Z]{13}", - "MK": "\\d{3}[\\dA-Z]{10}\\d{2}", - "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}", - "MR": "\\d{23}", - "MU": "[A-Z]{4}\\d{19}[A-Z]{3}", - "MC": "\\d{10}[\\dA-Z]{11}\\d{2}", - "MD": "[\\dA-Z]{2}\\d{18}", - "ME": "\\d{18}", - "NL": "[A-Z]{4}\\d{10}", - "NO": "\\d{11}", - "PK": "[\\dA-Z]{4}\\d{16}", - "PS": "[\\dA-Z]{4}\\d{21}", - "PL": "\\d{24}", - "PT": "\\d{21}", - "RO": "[A-Z]{4}[\\dA-Z]{16}", - "SM": "[A-Z]\\d{10}[\\dA-Z]{12}", - "SA": "\\d{2}[\\dA-Z]{18}", - "RS": "\\d{18}", - "SK": "\\d{20}", - "SI": "\\d{15}", - "ES": "\\d{20}", - "SE": "\\d{20}", - "CH": "\\d{5}[\\dA-Z]{12}", - "TN": "\\d{20}", - "TR": "\\d{5}[\\dA-Z]{17}", - "AE": "\\d{3}\\d{16}", - "GB": "[A-Z]{4}\\d{14}", - "VG": "[\\dA-Z]{4}\\d{16}" - }; - - bbanpattern = bbancountrypatterns[countrycode]; - // As new countries will start using IBAN in the - // future, we only check if the countrycode is known. - // This prevents false negatives, while almost all - // false positives introduced by this, will be caught - // by the checksum validation below anyway. - // Strict checking should return FALSE for unknown - // countries. - if (typeof bbanpattern !== "undefined") { - ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); - if (!(ibanregexp.test(iban))) { - return false; // invalid country specific format - } - } - - // now check the checksum, first convert to digits - ibancheck = iban.substring(4, iban.length) + iban.substring(0, 4); - for (i = 0; i < ibancheck.length; i++) { - charAt = ibancheck.charAt(i); - if (charAt !== "0") { - leadingZeroes = false; - } - if (!leadingZeroes) { - ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(charAt); - } - } - - // calculate the result of: ibancheckdigits % 97 - for (p = 0; p < ibancheckdigits.length; p++) { - cChar = ibancheckdigits.charAt(p); - cOperator = "" + cRest + "" + cChar; - cRest = cOperator % 97; - } - return cRest === 1; -}, "Please specify a valid IBAN"); - -$.validator.addMethod("integer", function(value, element) { - return this.optional(element) || /^-?\d+$/.test(value); -}, "A positive or negative non-decimal number please"); - -$.validator.addMethod("ipv4", function(value, element) { - 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); -}, "Please enter a valid IP v4 address."); - -$.validator.addMethod("ipv6", function(value, element) { - 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); -}, "Please enter a valid IP v6 address."); - -$.validator.addMethod("lettersonly", function(value, element) { - return this.optional(element) || /^[a-z]+$/i.test(value); -}, "Letters only please"); - -$.validator.addMethod("letterswithbasicpunc", function(value, element) { - return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); -}, "Letters or punctuation only please"); - -$.validator.addMethod("mobileNL", function(value, element) { - return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value); -}, "Please specify a valid mobile number"); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -$.validator.addMethod("mobileUK", function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/); -}, "Please specify a valid mobile number"); - -/* - * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain - */ -$.validator.addMethod( "nieES", function( value ) { - "use strict"; - - value = value.toUpperCase(); - - // Basic format test - 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}$)" ) ) { - return false; - } - - // Test NIE - //T - if ( /^[T]{1}/.test( value ) ) { - return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) ); - } - - //XYZ - if ( /^[XYZ]{1}/.test( value ) ) { - return ( - value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( - value.replace( "X", "0" ) - .replace( "Y", "1" ) - .replace( "Z", "2" ) - .substring( 0, 8 ) % 23 - ) - ); - } - - return false; - -}, "Please specify a valid NIE number." ); - -/* - * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals - */ -$.validator.addMethod( "nifES", function( value ) { - "use strict"; - - value = value.toUpperCase(); - - // Basic format test - 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}$)") ) { - return false; - } - - // Test NIF - if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) { - return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) ); - } - // Test specials NIF (starts with K, L or M) - if ( /^[KLM]{1}/.test( value ) ) { - return ( value[ 8 ] === String.fromCharCode( 64 ) ); - } - - return false; - -}, "Please specify a valid NIF number." ); - -jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) { - return this.optional(element) || !$.validator.methods.equalTo.call( this, value, element, param ); -}, "Please enter a different value, values must not be the same." ); - -$.validator.addMethod("nowhitespace", function(value, element) { - return this.optional(element) || /^\S+$/i.test(value); -}, "No white space please"); - -/** -* Return true if the field value matches the given format RegExp -* -* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) -* @result true -* -* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) -* @result false -* -* @name $.validator.methods.pattern -* @type Boolean -* @cat Plugins/Validate/Methods -*/ -$.validator.addMethod("pattern", function(value, element, param) { - if (this.optional(element)) { - return true; - } - if (typeof param === "string") { - param = new RegExp("^(?:" + param + ")$"); - } - return param.test(value); -}, "Invalid format."); - -/** - * Dutch phone numbers have 10 digits (or 11 and start with +31). - */ -$.validator.addMethod("phoneNL", function(value, element) { - 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); -}, "Please specify a valid phone number."); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -$.validator.addMethod("phoneUK", function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); - return this.optional(element) || phone_number.length > 9 && - 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})$/); -}, "Please specify a valid phone number"); - -/** - * matches US phone number format - * - * where the area code may not start with 1 and the prefix may not start with 1 - * allows '-' or ' ' as a separator and allows parens around area code - * some people may want to put a '1' in front of their number - * - * 1(212)-999-2345 or - * 212 999 2344 or - * 212-999-0983 - * - * but not - * 111-123-5434 - * and not - * 212 123 4567 - */ -$.validator.addMethod("phoneUS", function(phone_number, element) { - phone_number = phone_number.replace(/\s+/g, ""); - return this.optional(element) || phone_number.length > 9 && - 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}$/); -}, "Please specify a valid phone number"); - -/* For UK phone functions, do the following server side processing: - * Compare original input with this RegEx pattern: - * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ - * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' - * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. - * A number of very detailed GB telephone number RegEx patterns can also be found at: - * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - */ -//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers -$.validator.addMethod("phonesUK", function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/); -}, "Please specify a valid uk phone number"); - -/** - * Matches a valid Canadian Postal Code - * - * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element ) - * @result true - * - * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element ) - * @result false - * - * @name jQuery.validator.methods.postalCodeCA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod( "postalCodeCA", function( value, element ) { - return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value ); -}, "Please specify a valid postal code" ); - -/* -* Valida CEPs do brasileiros: -* -* Formatos aceitos: -* 99999-999 -* 99.999-999 -* 99999999 -*/ -$.validator.addMethod("postalcodeBR", function(cep_value, element) { - return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value ); -}, "Informe um CEP válido."); - -/* Matches Italian postcode (CAP) */ -$.validator.addMethod("postalcodeIT", function(value, element) { - return this.optional(element) || /^\d{5}$/.test(value); -}, "Please specify a valid postal code"); - -$.validator.addMethod("postalcodeNL", function(value, element) { - return this.optional(element) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(value); -}, "Please specify a valid postal code"); - -// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) -$.validator.addMethod("postcodeUK", function(value, element) { - 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); -}, "Please specify a valid UK postcode"); - -/* - * Lets you say "at least X inputs that match selector Y must be filled." - * - * The end result is that neither of these inputs: - * - * - * - * - * ...will validate unless at least one of them is filled. - * - * partnumber: {require_from_group: [1,".productinfo"]}, - * description: {require_from_group: [1,".productinfo"]} - * - * options[0]: number of fields that must be filled in the group - * options[1]: CSS selector that defines the group of conditionally required fields - */ -$.validator.addMethod("require_from_group", function(value, element, options) { - var $fields = $(options[1], element.form), - $fieldsFirst = $fields.eq(0), - validator = $fieldsFirst.data("valid_req_grp") ? $fieldsFirst.data("valid_req_grp") : $.extend({}, this), - isValid = $fields.filter(function() { - return validator.elementValue(this); - }).length >= options[0]; - - // Store the cloned validator for future validation - $fieldsFirst.data("valid_req_grp", validator); - - // If element isn't being validated, run each require_from_group field's validation rules - if (!$(element).data("being_validated")) { - $fields.data("being_validated", true); - $fields.each(function() { - validator.element(this); - }); - $fields.data("being_validated", false); - } - return isValid; -}, $.validator.format("Please fill at least {0} of these fields.")); - -/* - * Lets you say "either at least X inputs that match selector Y must be filled, - * OR they must all be skipped (left blank)." - * - * The end result, is that none of these inputs: - * - * - * - * - * - * ...will validate unless either at least two of them are filled, - * OR none of them are. - * - * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, - * description: {skip_or_fill_minimum: [2,".productinfo"]}, - * color: {skip_or_fill_minimum: [2,".productinfo"]} - * - * options[0]: number of fields that must be filled in the group - * options[1]: CSS selector that defines the group of conditionally required fields - * - */ -$.validator.addMethod("skip_or_fill_minimum", function(value, element, options) { - var $fields = $(options[1], element.form), - $fieldsFirst = $fields.eq(0), - validator = $fieldsFirst.data("valid_skip") ? $fieldsFirst.data("valid_skip") : $.extend({}, this), - numberFilled = $fields.filter(function() { - return validator.elementValue(this); - }).length, - isValid = numberFilled === 0 || numberFilled >= options[0]; - - // Store the cloned validator for future validation - $fieldsFirst.data("valid_skip", validator); - - // If element isn't being validated, run each skip_or_fill_minimum field's validation rules - if (!$(element).data("being_validated")) { - $fields.data("being_validated", true); - $fields.each(function() { - validator.element(this); - }); - $fields.data("being_validated", false); - } - return isValid; -}, $.validator.format("Please either skip these fields or fill at least {0} of them.")); - -/* Validates US States and/or Territories by @jdforsythe - * Can be case insensitive or require capitalization - default is case insensitive - * Can include US Territories or not - default does not - * Can include US Military postal abbreviations (AA, AE, AP) - default does not - * - * Note: "States" always includes DC (District of Colombia) - * - * Usage examples: - * - * This is the default - case insensitive, no territories, no military zones - * stateInput: { - * caseSensitive: false, - * includeTerritories: false, - * includeMilitary: false - * } - * - * Only allow capital letters, no territories, no military zones - * stateInput: { - * caseSensitive: false - * } - * - * Case insensitive, include territories but not military zones - * stateInput: { - * includeTerritories: true - * } - * - * Only allow capital letters, include territories and military zones - * stateInput: { - * caseSensitive: true, - * includeTerritories: true, - * includeMilitary: true - * } - * - * - * - */ - -$.validator.addMethod("stateUS", function(value, element, options) { - var isDefault = typeof options === "undefined", - caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive, - includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories, - includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary, - regex; - - if (!includeTerritories && !includeMilitary) { - 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])$"; - } else if (includeTerritories && includeMilitary) { - 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])$"; - } else if (includeTerritories) { - 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])$"; - } else { - 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])$"; - } - - regex = caseSensitive ? new RegExp(regex) : new RegExp(regex, "i"); - return this.optional(element) || regex.test(value); -}, -"Please specify a valid state"); - -// TODO check if value starts with <, otherwise don't try stripping anything -$.validator.addMethod("strippedminlength", function(value, element, param) { - return $(value).text().length >= param; -}, $.validator.format("Please enter at least {0} characters")); - -$.validator.addMethod("time", function(value, element) { - return this.optional(element) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(value); -}, "Please enter a valid time, between 00:00 and 23:59"); - -$.validator.addMethod("time12h", function(value, element) { - return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(value); -}, "Please enter a valid time in 12-hour am/pm format"); - -// same as url, but TLD is optional -$.validator.addMethod("url2", function(value, element) { - 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); -}, $.validator.messages.url); - -/** - * Return true, if the value is a valid vehicle identification number (VIN). - * - * Works with all kind of text inputs. - * - * @example - * @desc Declares a required input element whose value must be a valid vehicle identification number. - * - * @name $.validator.methods.vinUS - * @type Boolean - * @cat Plugins/Validate/Methods - */ -$.validator.addMethod("vinUS", function(v) { - if (v.length !== 17) { - return false; - } - - 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" ], - VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ], - FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ], - rs = 0, - i, n, d, f, cd, cdv; - - for (i = 0; i < 17; i++) { - f = FL[i]; - d = v.slice(i, i + 1); - if (i === 8) { - cdv = d; - } - if (!isNaN(d)) { - d *= f; - } else { - for (n = 0; n < LL.length; n++) { - if (d.toUpperCase() === LL[n]) { - d = VL[n]; - d *= f; - if (isNaN(cdv) && n === 8) { - cdv = LL[n]; - } - break; - } - } - } - rs += d; - } - cd = rs % 11; - if (cd === 10) { - cd = "X"; - } - if (cd === cdv) { - return true; - } - return false; -}, "The specified vehicle identification number (VIN) is invalid."); - -$.validator.addMethod("zipcodeUS", function(value, element) { - return this.optional(element) || /^\d{5}(-\d{4})?$/.test(value); -}, "The specified US ZIP Code is invalid"); - -$.validator.addMethod("ziprange", function(value, element) { - return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); -}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx"); - -})); \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.js b/src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.js deleted file mode 100644 index 4e979bcf6..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.js +++ /dev/null @@ -1,1398 +0,0 @@ -/*! - * jQuery Validation Plugin v1.14.0 - * - * http://jqueryvalidation.org/ - * - * Copyright (c) 2015 Jörn Zaefferer - * Released under the MIT license - */ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery"], factory ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -$.extend($.fn, { - // http://jqueryvalidation.org/validate/ - validate: function( options ) { - - // if nothing is selected, return nothing; can't chain anyway - if ( !this.length ) { - if ( options && options.debug && window.console ) { - console.warn( "Nothing selected, can't validate, returning nothing." ); - } - return; - } - - // check if a validator for this form was already created - var validator = $.data( this[ 0 ], "validator" ); - if ( validator ) { - return validator; - } - - // Add novalidate tag if HTML5. - this.attr( "novalidate", "novalidate" ); - - validator = new $.validator( options, this[ 0 ] ); - $.data( this[ 0 ], "validator", validator ); - - if ( validator.settings.onsubmit ) { - - this.on( "click.validate", ":submit", function( event ) { - if ( validator.settings.submitHandler ) { - validator.submitButton = event.target; - } - - // allow suppressing validation by adding a cancel class to the submit button - if ( $( this ).hasClass( "cancel" ) ) { - validator.cancelSubmit = true; - } - - // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button - if ( $( this ).attr( "formnovalidate" ) !== undefined ) { - validator.cancelSubmit = true; - } - }); - - // validate the form on submit - this.on( "submit.validate", function( event ) { - if ( validator.settings.debug ) { - // prevent form submit to be able to see console output - event.preventDefault(); - } - function handle() { - var hidden, result; - if ( validator.settings.submitHandler ) { - if ( validator.submitButton ) { - // insert a hidden input as a replacement for the missing submit button - hidden = $( "" ) - .attr( "name", validator.submitButton.name ) - .val( $( validator.submitButton ).val() ) - .appendTo( validator.currentForm ); - } - result = validator.settings.submitHandler.call( validator, validator.currentForm, event ); - if ( validator.submitButton ) { - // and clean up afterwards; thanks to no-block-scope, hidden can be referenced - hidden.remove(); - } - if ( result !== undefined ) { - return result; - } - return false; - } - return true; - } - - // prevent submit for invalid forms or custom submit handlers - if ( validator.cancelSubmit ) { - validator.cancelSubmit = false; - return handle(); - } - if ( validator.form() ) { - if ( validator.pendingRequest ) { - validator.formSubmitted = true; - return false; - } - return handle(); - } else { - validator.focusInvalid(); - return false; - } - }); - } - - return validator; - }, - // http://jqueryvalidation.org/valid/ - valid: function() { - var valid, validator, errorList; - - if ( $( this[ 0 ] ).is( "form" ) ) { - valid = this.validate().form(); - } else { - errorList = []; - valid = true; - validator = $( this[ 0 ].form ).validate(); - this.each( function() { - valid = validator.element( this ) && valid; - errorList = errorList.concat( validator.errorList ); - }); - validator.errorList = errorList; - } - return valid; - }, - - // http://jqueryvalidation.org/rules/ - rules: function( command, argument ) { - var element = this[ 0 ], - settings, staticRules, existingRules, data, param, filtered; - - if ( command ) { - settings = $.data( element.form, "validator" ).settings; - staticRules = settings.rules; - existingRules = $.validator.staticRules( element ); - switch ( command ) { - case "add": - $.extend( existingRules, $.validator.normalizeRule( argument ) ); - // remove messages from rules, but allow them to be set separately - delete existingRules.messages; - staticRules[ element.name ] = existingRules; - if ( argument.messages ) { - settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages ); - } - break; - case "remove": - if ( !argument ) { - delete staticRules[ element.name ]; - return existingRules; - } - filtered = {}; - $.each( argument.split( /\s/ ), function( index, method ) { - filtered[ method ] = existingRules[ method ]; - delete existingRules[ method ]; - if ( method === "required" ) { - $( element ).removeAttr( "aria-required" ); - } - }); - return filtered; - } - } - - data = $.validator.normalizeRules( - $.extend( - {}, - $.validator.classRules( element ), - $.validator.attributeRules( element ), - $.validator.dataRules( element ), - $.validator.staticRules( element ) - ), element ); - - // make sure required is at front - if ( data.required ) { - param = data.required; - delete data.required; - data = $.extend( { required: param }, data ); - $( element ).attr( "aria-required", "true" ); - } - - // make sure remote is at back - if ( data.remote ) { - param = data.remote; - delete data.remote; - data = $.extend( data, { remote: param }); - } - - return data; - } -}); - -// Custom selectors -$.extend( $.expr[ ":" ], { - // http://jqueryvalidation.org/blank-selector/ - blank: function( a ) { - return !$.trim( "" + $( a ).val() ); - }, - // http://jqueryvalidation.org/filled-selector/ - filled: function( a ) { - return !!$.trim( "" + $( a ).val() ); - }, - // http://jqueryvalidation.org/unchecked-selector/ - unchecked: function( a ) { - return !$( a ).prop( "checked" ); - } -}); - -// constructor for validator -$.validator = function( options, form ) { - this.settings = $.extend( true, {}, $.validator.defaults, options ); - this.currentForm = form; - this.init(); -}; - -// http://jqueryvalidation.org/jQuery.validator.format/ -$.validator.format = function( source, params ) { - if ( arguments.length === 1 ) { - return function() { - var args = $.makeArray( arguments ); - args.unshift( source ); - return $.validator.format.apply( this, args ); - }; - } - if ( arguments.length > 2 && params.constructor !== Array ) { - params = $.makeArray( arguments ).slice( 1 ); - } - if ( params.constructor !== Array ) { - params = [ params ]; - } - $.each( params, function( i, n ) { - source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() { - return n; - }); - }); - return source; -}; - -$.extend( $.validator, { - - defaults: { - messages: {}, - groups: {}, - rules: {}, - errorClass: "error", - validClass: "valid", - errorElement: "label", - focusCleanup: false, - focusInvalid: true, - errorContainer: $( [] ), - errorLabelContainer: $( [] ), - onsubmit: true, - ignore: ":hidden", - ignoreTitle: false, - onfocusin: function( element ) { - this.lastActive = element; - - // Hide error label and remove error class on focus if enabled - if ( this.settings.focusCleanup ) { - if ( this.settings.unhighlight ) { - this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); - } - this.hideThese( this.errorsFor( element ) ); - } - }, - onfocusout: function( element ) { - if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) { - this.element( element ); - } - }, - onkeyup: function( element, event ) { - // Avoid revalidate the field when pressing one of the following keys - // Shift => 16 - // Ctrl => 17 - // Alt => 18 - // Caps lock => 20 - // End => 35 - // Home => 36 - // Left arrow => 37 - // Up arrow => 38 - // Right arrow => 39 - // Down arrow => 40 - // Insert => 45 - // Num lock => 144 - // AltGr key => 225 - var excludedKeys = [ - 16, 17, 18, 20, 35, 36, 37, - 38, 39, 40, 45, 144, 225 - ]; - - if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) { - return; - } else if ( element.name in this.submitted || element === this.lastElement ) { - this.element( element ); - } - }, - onclick: function( element ) { - // click on selects, radiobuttons and checkboxes - if ( element.name in this.submitted ) { - this.element( element ); - - // or option elements, check parent select in that case - } else if ( element.parentNode.name in this.submitted ) { - this.element( element.parentNode ); - } - }, - highlight: function( element, errorClass, validClass ) { - if ( element.type === "radio" ) { - this.findByName( element.name ).addClass( errorClass ).removeClass( validClass ); - } else { - $( element ).addClass( errorClass ).removeClass( validClass ); - } - }, - unhighlight: function( element, errorClass, validClass ) { - if ( element.type === "radio" ) { - this.findByName( element.name ).removeClass( errorClass ).addClass( validClass ); - } else { - $( element ).removeClass( errorClass ).addClass( validClass ); - } - } - }, - - // http://jqueryvalidation.org/jQuery.validator.setDefaults/ - setDefaults: function( settings ) { - $.extend( $.validator.defaults, settings ); - }, - - 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.", - creditcard: "Please enter a valid credit card number.", - equalTo: "Please enter the same value again.", - maxlength: $.validator.format( "Please enter no more than {0} characters." ), - minlength: $.validator.format( "Please enter at least {0} characters." ), - rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ), - range: $.validator.format( "Please enter a value between {0} and {1}." ), - max: $.validator.format( "Please enter a value less than or equal to {0}." ), - min: $.validator.format( "Please enter a value greater than or equal to {0}." ) - }, - - autoCreateRanges: false, - - prototype: { - - init: function() { - this.labelContainer = $( this.settings.errorLabelContainer ); - this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm ); - this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer ); - this.submitted = {}; - this.valueCache = {}; - this.pendingRequest = 0; - this.pending = {}; - this.invalid = {}; - this.reset(); - - var groups = ( this.groups = {} ), - rules; - $.each( this.settings.groups, function( key, value ) { - if ( typeof value === "string" ) { - value = value.split( /\s/ ); - } - $.each( value, function( index, name ) { - groups[ name ] = key; - }); - }); - rules = this.settings.rules; - $.each( rules, function( key, value ) { - rules[ key ] = $.validator.normalizeRule( value ); - }); - - function delegate( event ) { - var validator = $.data( this.form, "validator" ), - eventType = "on" + event.type.replace( /^validate/, "" ), - settings = validator.settings; - if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) { - settings[ eventType ].call( validator, this, event ); - } - } - - $( 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']", delegate) - // Support: Chrome, oldIE - // "select" is provided as event.target when clicking a option - .on("click.validate", "select, option, [type='radio'], [type='checkbox']", delegate); - - if ( this.settings.invalidHandler ) { - $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler ); - } - - // Add aria-required to any Static/Data/Class required fields before first validation - // Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html - $( this.currentForm ).find( "[required], [data-rule-required], .required" ).attr( "aria-required", "true" ); - }, - - // http://jqueryvalidation.org/Validator.form/ - form: function() { - this.checkForm(); - $.extend( this.submitted, this.errorMap ); - this.invalid = $.extend({}, this.errorMap ); - if ( !this.valid() ) { - $( this.currentForm ).triggerHandler( "invalid-form", [ this ]); - } - this.showErrors(); - return this.valid(); - }, - - checkForm: function() { - this.prepareForm(); - for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) { - this.check( elements[ i ] ); - } - return this.valid(); - }, - - // http://jqueryvalidation.org/Validator.element/ - element: function( element ) { - var cleanElement = this.clean( element ), - checkElement = this.validationTargetFor( cleanElement ), - result = true; - - this.lastElement = checkElement; - - if ( checkElement === undefined ) { - delete this.invalid[ cleanElement.name ]; - } else { - this.prepareElement( checkElement ); - this.currentElements = $( checkElement ); - - result = this.check( checkElement ) !== false; - if ( result ) { - delete this.invalid[ checkElement.name ]; - } else { - this.invalid[ checkElement.name ] = true; - } - } - // Add aria-invalid status for screen readers - $( element ).attr( "aria-invalid", !result ); - - if ( !this.numberOfInvalids() ) { - // Hide error containers on last error - this.toHide = this.toHide.add( this.containers ); - } - this.showErrors(); - return result; - }, - - // http://jqueryvalidation.org/Validator.showErrors/ - showErrors: function( errors ) { - if ( errors ) { - // add items to error list and map - $.extend( this.errorMap, errors ); - this.errorList = []; - for ( var name in errors ) { - this.errorList.push({ - message: errors[ name ], - element: this.findByName( name )[ 0 ] - }); - } - // remove items from success list - this.successList = $.grep( this.successList, function( element ) { - return !( element.name in errors ); - }); - } - if ( this.settings.showErrors ) { - this.settings.showErrors.call( this, this.errorMap, this.errorList ); - } else { - this.defaultShowErrors(); - } - }, - - // http://jqueryvalidation.org/Validator.resetForm/ - resetForm: function() { - if ( $.fn.resetForm ) { - $( this.currentForm ).resetForm(); - } - this.submitted = {}; - this.lastElement = null; - this.prepareForm(); - this.hideErrors(); - var i, elements = this.elements() - .removeData( "previousValue" ) - .removeAttr( "aria-invalid" ); - - if ( this.settings.unhighlight ) { - for ( i = 0; elements[ i ]; i++ ) { - this.settings.unhighlight.call( this, elements[ i ], - this.settings.errorClass, "" ); - } - } else { - elements.removeClass( this.settings.errorClass ); - } - }, - - numberOfInvalids: function() { - return this.objectLength( this.invalid ); - }, - - objectLength: function( obj ) { - /* jshint unused: false */ - var count = 0, - i; - for ( i in obj ) { - count++; - } - return count; - }, - - hideErrors: function() { - this.hideThese( this.toHide ); - }, - - hideThese: function( errors ) { - errors.not( this.containers ).text( "" ); - this.addWrapper( errors ).hide(); - }, - - valid: function() { - return this.size() === 0; - }, - - size: function() { - return this.errorList.length; - }, - - focusInvalid: function() { - if ( this.settings.focusInvalid ) { - try { - $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || []) - .filter( ":visible" ) - .focus() - // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find - .trigger( "focusin" ); - } catch ( e ) { - // ignore IE throwing errors when focusing hidden elements - } - } - }, - - findLastActive: function() { - var lastActive = this.lastActive; - return lastActive && $.grep( this.errorList, function( n ) { - return n.element.name === lastActive.name; - }).length === 1 && lastActive; - }, - - elements: function() { - var validator = this, - rulesCache = {}; - - // select all valid inputs inside the form (no submit or reset buttons) - return $( this.currentForm ) - .find( "input, select, textarea" ) - .not( ":submit, :reset, :image, :disabled" ) - .not( this.settings.ignore ) - .filter( function() { - if ( !this.name && validator.settings.debug && window.console ) { - console.error( "%o has no name assigned", this ); - } - - // select only the first element for each name, and only those with rules specified - if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) { - return false; - } - - rulesCache[ this.name ] = true; - return true; - }); - }, - - clean: function( selector ) { - return $( selector )[ 0 ]; - }, - - errors: function() { - var errorClass = this.settings.errorClass.split( " " ).join( "." ); - return $( this.settings.errorElement + "." + errorClass, this.errorContext ); - }, - - reset: function() { - this.successList = []; - this.errorList = []; - this.errorMap = {}; - this.toShow = $( [] ); - this.toHide = $( [] ); - this.currentElements = $( [] ); - }, - - prepareForm: function() { - this.reset(); - this.toHide = this.errors().add( this.containers ); - }, - - prepareElement: function( element ) { - this.reset(); - this.toHide = this.errorsFor( element ); - }, - - elementValue: function( element ) { - var val, - $element = $( element ), - type = element.type; - - if ( type === "radio" || type === "checkbox" ) { - return this.findByName( element.name ).filter(":checked").val(); - } else if ( type === "number" && typeof element.validity !== "undefined" ) { - return element.validity.badInput ? false : $element.val(); - } - - val = $element.val(); - if ( typeof val === "string" ) { - return val.replace(/\r/g, "" ); - } - return val; - }, - - check: function( element ) { - element = this.validationTargetFor( this.clean( element ) ); - - var rules = $( element ).rules(), - rulesCount = $.map( rules, function( n, i ) { - return i; - }).length, - dependencyMismatch = false, - val = this.elementValue( element ), - result, method, rule; - - for ( method in rules ) { - rule = { method: method, parameters: rules[ method ] }; - try { - - result = $.validator.methods[ method ].call( this, val, element, rule.parameters ); - - // if a method indicates that the field is optional and therefore valid, - // don't mark it as valid when there are no other rules - if ( result === "dependency-mismatch" && rulesCount === 1 ) { - dependencyMismatch = true; - continue; - } - dependencyMismatch = false; - - if ( result === "pending" ) { - this.toHide = this.toHide.not( this.errorsFor( element ) ); - return; - } - - if ( !result ) { - this.formatAndAdd( element, rule ); - return false; - } - } catch ( e ) { - if ( this.settings.debug && window.console ) { - console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e ); - } - if ( e instanceof TypeError ) { - e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method."; - } - - throw e; - } - } - if ( dependencyMismatch ) { - return; - } - if ( this.objectLength( rules ) ) { - this.successList.push( element ); - } - return true; - }, - - // return the custom message for the given element and validation method - // specified in the element's HTML5 data attribute - // return the generic message if present and no method specific message is present - customDataMessage: function( element, method ) { - return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() + - method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" ); - }, - - // return the custom message for the given element name and validation method - customMessage: function( name, method ) { - var m = this.settings.messages[ name ]; - return m && ( m.constructor === String ? m : m[ method ]); - }, - - // return the first defined argument, allowing empty strings - findDefined: function() { - for ( var i = 0; i < arguments.length; i++) { - if ( arguments[ i ] !== undefined ) { - return arguments[ i ]; - } - } - return undefined; - }, - - defaultMessage: function( element, method ) { - return this.findDefined( - this.customMessage( element.name, method ), - this.customDataMessage( element, method ), - // title is never undefined, so handle empty string as undefined - !this.settings.ignoreTitle && element.title || undefined, - $.validator.messages[ method ], - "Warning: No message defined for " + element.name + "" - ); - }, - - formatAndAdd: function( element, rule ) { - var message = this.defaultMessage( element, rule.method ), - theregex = /\$?\{(\d+)\}/g; - if ( typeof message === "function" ) { - message = message.call( this, rule.parameters, element ); - } else if ( theregex.test( message ) ) { - message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters ); - } - this.errorList.push({ - message: message, - element: element, - method: rule.method - }); - - this.errorMap[ element.name ] = message; - this.submitted[ element.name ] = message; - }, - - addWrapper: function( toToggle ) { - if ( this.settings.wrapper ) { - toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); - } - return toToggle; - }, - - defaultShowErrors: function() { - var i, elements, error; - for ( i = 0; this.errorList[ i ]; i++ ) { - error = this.errorList[ i ]; - if ( this.settings.highlight ) { - this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); - } - this.showLabel( error.element, error.message ); - } - if ( this.errorList.length ) { - this.toShow = this.toShow.add( this.containers ); - } - if ( this.settings.success ) { - for ( i = 0; this.successList[ i ]; i++ ) { - this.showLabel( this.successList[ i ] ); - } - } - if ( this.settings.unhighlight ) { - for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) { - this.settings.unhighlight.call( this, elements[ i ], 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 $( this.errorList ).map(function() { - return this.element; - }); - }, - - showLabel: function( element, message ) { - var place, group, errorID, - error = this.errorsFor( element ), - elementID = this.idOrName( element ), - describedBy = $( element ).attr( "aria-describedby" ); - if ( error.length ) { - // refresh error/success class - error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); - // replace message on existing label - error.html( message ); - } else { - // create error element - error = $( "<" + this.settings.errorElement + ">" ) - .attr( "id", elementID + "-error" ) - .addClass( this.settings.errorClass ) - .html( message || "" ); - - // Maintain reference to the element to be placed into the DOM - place = error; - if ( this.settings.wrapper ) { - // make sure the element is visible, even in IE - // actually showing the wrapped element is handled elsewhere - place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent(); - } - if ( this.labelContainer.length ) { - this.labelContainer.append( place ); - } else if ( this.settings.errorPlacement ) { - this.settings.errorPlacement( place, $( element ) ); - } else { - place.insertAfter( element ); - } - - // Link error back to the element - if ( error.is( "label" ) ) { - // If the error is a label, then associate using 'for' - error.attr( "for", elementID ); - } else if ( error.parents( "label[for='" + elementID + "']" ).length === 0 ) { - // If the element is not a child of an associated label, then it's necessary - // to explicitly apply aria-describedby - - errorID = error.attr( "id" ).replace( /(:|\.|\[|\]|\$)/g, "\\$1"); - // Respect existing non-error aria-describedby - if ( !describedBy ) { - describedBy = errorID; - } else if ( !describedBy.match( new RegExp( "\\b" + errorID + "\\b" ) ) ) { - // Add to end of list if not already present - describedBy += " " + errorID; - } - $( element ).attr( "aria-describedby", describedBy ); - - // If this element is grouped, then assign to all elements in the same group - group = this.groups[ element.name ]; - if ( group ) { - $.each( this.groups, function( name, testgroup ) { - if ( testgroup === group ) { - $( "[name='" + name + "']", this.currentForm ) - .attr( "aria-describedby", error.attr( "id" ) ); - } - }); - } - } - } - if ( !message && this.settings.success ) { - error.text( "" ); - if ( typeof this.settings.success === "string" ) { - error.addClass( this.settings.success ); - } else { - this.settings.success( error, element ); - } - } - this.toShow = this.toShow.add( error ); - }, - - errorsFor: function( element ) { - var name = this.idOrName( element ), - describer = $( element ).attr( "aria-describedby" ), - selector = "label[for='" + name + "'], label[for='" + name + "'] *"; - - // aria-describedby should directly reference the error element - if ( describer ) { - selector = selector + ", #" + describer.replace( /\s+/g, ", #" ); - } - return this - .errors() - .filter( selector ); - }, - - idOrName: function( element ) { - return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name ); - }, - - validationTargetFor: function( element ) { - - // If radio/checkbox, validate first element in group instead - if ( this.checkable( element ) ) { - element = this.findByName( element.name ); - } - - // Always apply ignore filter - return $( element ).not( this.settings.ignore )[ 0 ]; - }, - - checkable: function( element ) { - return ( /radio|checkbox/i ).test( element.type ); - }, - - findByName: function( name ) { - return $( this.currentForm ).find( "[name='" + name + "']" ); - }, - - getLength: function( value, element ) { - switch ( element.nodeName.toLowerCase() ) { - case "select": - return $( "option:selected", element ).length; - case "input": - if ( this.checkable( element ) ) { - return this.findByName( element.name ).filter( ":checked" ).length; - } - } - return value.length; - }, - - depend: function( param, element ) { - return this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true; - }, - - dependTypes: { - "boolean": function( param ) { - return param; - }, - "string": function( param, element ) { - return !!$( param, element.form ).length; - }, - "function": function( param, element ) { - return param( element ); - } - }, - - optional: function( element ) { - var val = this.elementValue( element ); - return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch"; - }, - - startRequest: function( element ) { - if ( !this.pending[ element.name ] ) { - this.pendingRequest++; - this.pending[ element.name ] = true; - } - }, - - stopRequest: function( element, valid ) { - this.pendingRequest--; - // sometimes synchronization fails, make sure pendingRequest is never < 0 - if ( this.pendingRequest < 0 ) { - this.pendingRequest = 0; - } - delete this.pending[ element.name ]; - if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) { - $( this.currentForm ).submit(); - this.formSubmitted = false; - } else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) { - $( this.currentForm ).triggerHandler( "invalid-form", [ this ]); - this.formSubmitted = false; - } - }, - - previousValue: function( element ) { - return $.data( element, "previousValue" ) || $.data( element, "previousValue", { - old: null, - valid: true, - message: this.defaultMessage( element, "remote" ) - }); - }, - - // cleans up all forms and elements, removes validator-specific events - destroy: function() { - this.resetForm(); - - $( this.currentForm ) - .off( ".validate" ) - .removeData( "validator" ); - } - - }, - - classRuleSettings: { - required: { required: true }, - email: { email: true }, - url: { url: true }, - date: { date: true }, - dateISO: { dateISO: true }, - number: { number: true }, - digits: { digits: true }, - creditcard: { creditcard: true } - }, - - addClassRules: function( className, rules ) { - if ( className.constructor === String ) { - this.classRuleSettings[ className ] = rules; - } else { - $.extend( this.classRuleSettings, className ); - } - }, - - classRules: function( element ) { - var rules = {}, - classes = $( element ).attr( "class" ); - - if ( classes ) { - $.each( classes.split( " " ), function() { - if ( this in $.validator.classRuleSettings ) { - $.extend( rules, $.validator.classRuleSettings[ this ]); - } - }); - } - return rules; - }, - - normalizeAttributeRule: function( rules, type, method, value ) { - - // convert the value to a number for number inputs, and for text for backwards compability - // allows type="date" and others to be compared as strings - if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) { - value = Number( value ); - - // Support Opera Mini, which returns NaN for undefined minlength - if ( isNaN( value ) ) { - value = undefined; - } - } - - if ( value || value === 0 ) { - rules[ method ] = value; - } else if ( type === method && type !== "range" ) { - - // exception: the jquery validate 'range' method - // does not test for the html5 'range' type - rules[ method ] = true; - } - }, - - attributeRules: function( element ) { - var rules = {}, - $element = $( element ), - type = element.getAttribute( "type" ), - method, value; - - for ( method in $.validator.methods ) { - - // support for in both html5 and older browsers - if ( method === "required" ) { - value = element.getAttribute( method ); - - // Some browsers return an empty string for the required attribute - // and non-HTML5 browsers might have required="" markup - if ( value === "" ) { - value = true; - } - - // force non-HTML5 browsers to return bool - value = !!value; - } else { - value = $element.attr( method ); - } - - this.normalizeAttributeRule( rules, type, method, value ); - } - - // maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs - if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) { - delete rules.maxlength; - } - - return rules; - }, - - dataRules: function( element ) { - var rules = {}, - $element = $( element ), - type = element.getAttribute( "type" ), - method, value; - - for ( method in $.validator.methods ) { - value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() ); - this.normalizeAttributeRule( rules, type, method, value ); - } - return rules; - }, - - staticRules: function( element ) { - var rules = {}, - validator = $.data( element.form, "validator" ); - - if ( validator.settings.rules ) { - rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {}; - } - return rules; - }, - - normalizeRules: function( rules, element ) { - // handle dependency check - $.each( rules, function( prop, val ) { - // ignore rule when param is explicitly false, eg. required:false - if ( val === false ) { - delete rules[ prop ]; - return; - } - if ( val.param || val.depends ) { - var keepRule = true; - switch ( typeof val.depends ) { - case "string": - keepRule = !!$( val.depends, element.form ).length; - break; - case "function": - keepRule = val.depends.call( element, element ); - break; - } - if ( keepRule ) { - rules[ prop ] = val.param !== undefined ? val.param : true; - } else { - delete rules[ prop ]; - } - } - }); - - // evaluate parameters - $.each( rules, function( rule, parameter ) { - rules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter; - }); - - // clean number parameters - $.each([ "minlength", "maxlength" ], function() { - if ( rules[ this ] ) { - rules[ this ] = Number( rules[ this ] ); - } - }); - $.each([ "rangelength", "range" ], function() { - var parts; - if ( rules[ this ] ) { - if ( $.isArray( rules[ this ] ) ) { - rules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ]; - } else if ( typeof rules[ this ] === "string" ) { - parts = rules[ this ].replace(/[\[\]]/g, "" ).split( /[\s,]+/ ); - rules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ]; - } - } - }); - - if ( $.validator.autoCreateRanges ) { - // auto-create ranges - if ( rules.min != null && rules.max != null ) { - rules.range = [ rules.min, rules.max ]; - delete rules.min; - delete rules.max; - } - if ( rules.minlength != null && rules.maxlength != null ) { - rules.rangelength = [ rules.minlength, rules.maxlength ]; - delete rules.minlength; - delete rules.maxlength; - } - } - - return rules; - }, - - // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} - normalizeRule: function( data ) { - if ( typeof data === "string" ) { - var transformed = {}; - $.each( data.split( /\s/ ), function() { - transformed[ this ] = true; - }); - data = transformed; - } - return data; - }, - - // http://jqueryvalidation.org/jQuery.validator.addMethod/ - addMethod: function( name, method, message ) { - $.validator.methods[ name ] = method; - $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ]; - if ( method.length < 3 ) { - $.validator.addClassRules( name, $.validator.normalizeRule( name ) ); - } - }, - - methods: { - - // http://jqueryvalidation.org/required-method/ - required: function( value, element, param ) { - // check if dependency is met - if ( !this.depend( param, element ) ) { - return "dependency-mismatch"; - } - if ( element.nodeName.toLowerCase() === "select" ) { - // could be an array for select-multiple or a string, both are fine this way - var val = $( element ).val(); - return val && val.length > 0; - } - if ( this.checkable( element ) ) { - return this.getLength( value, element ) > 0; - } - return value.length > 0; - }, - - // http://jqueryvalidation.org/email-method/ - email: function( value, element ) { - // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address - // Retrieved 2014-01-14 - // If you have a problem with this implementation, report a bug against the above spec - // Or use custom methods to implement your own email validation - 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 ); - }, - - // http://jqueryvalidation.org/url-method/ - url: function( value, element ) { - - // Copyright (c) 2010-2013 Diego Perini, MIT licensed - // https://gist.github.com/dperini/729294 - // see also https://mathiasbynens.be/demo/url-regex - // modified to allow protocol-relative URLs - 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 ); - }, - - // http://jqueryvalidation.org/date-method/ - date: function( value, element ) { - return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() ); - }, - - // http://jqueryvalidation.org/dateISO-method/ - dateISO: function( value, element ) { - return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value ); - }, - - // http://jqueryvalidation.org/number-method/ - number: function( value, element ) { - return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value ); - }, - - // http://jqueryvalidation.org/digits-method/ - digits: function( value, element ) { - return this.optional( element ) || /^\d+$/.test( value ); - }, - - // http://jqueryvalidation.org/creditcard-method/ - // based on http://en.wikipedia.org/wiki/Luhn_algorithm - creditcard: function( value, element ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - // accept only spaces, digits and dashes - if ( /[^0-9 \-]+/.test( value ) ) { - return false; - } - var nCheck = 0, - nDigit = 0, - bEven = false, - n, cDigit; - - value = value.replace( /\D/g, "" ); - - // Basing min and max length on - // http://developer.ean.com/general_info/Valid_Credit_Card_Types - if ( value.length < 13 || value.length > 19 ) { - return false; - } - - for ( n = value.length - 1; n >= 0; n--) { - cDigit = value.charAt( n ); - nDigit = parseInt( cDigit, 10 ); - if ( bEven ) { - if ( ( nDigit *= 2 ) > 9 ) { - nDigit -= 9; - } - } - nCheck += nDigit; - bEven = !bEven; - } - - return ( nCheck % 10 ) === 0; - }, - - // http://jqueryvalidation.org/minlength-method/ - minlength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || length >= param; - }, - - // http://jqueryvalidation.org/maxlength-method/ - maxlength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || length <= param; - }, - - // http://jqueryvalidation.org/rangelength-method/ - rangelength: function( value, element, param ) { - var length = $.isArray( value ) ? value.length : this.getLength( value, element ); - return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] ); - }, - - // http://jqueryvalidation.org/min-method/ - min: function( value, element, param ) { - return this.optional( element ) || value >= param; - }, - - // http://jqueryvalidation.org/max-method/ - max: function( value, element, param ) { - return this.optional( element ) || value <= param; - }, - - // http://jqueryvalidation.org/range-method/ - range: function( value, element, param ) { - return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] ); - }, - - // http://jqueryvalidation.org/equalTo-method/ - equalTo: function( value, element, param ) { - // bind to the blur event of the target in order to revalidate whenever the target field is updated - // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead - var target = $( param ); - if ( this.settings.onfocusout ) { - target.off( ".validate-equalTo" ).on( "blur.validate-equalTo", function() { - $( element ).valid(); - }); - } - return value === target.val(); - }, - - // http://jqueryvalidation.org/remote-method/ - remote: function( value, element, param ) { - if ( this.optional( element ) ) { - return "dependency-mismatch"; - } - - var previous = this.previousValue( element ), - validator, data; - - if (!this.settings.messages[ element.name ] ) { - this.settings.messages[ element.name ] = {}; - } - previous.originalMessage = this.settings.messages[ element.name ].remote; - this.settings.messages[ element.name ].remote = previous.message; - - param = typeof param === "string" && { url: param } || param; - - if ( previous.old === value ) { - return previous.valid; - } - - previous.old = value; - validator = this; - this.startRequest( element ); - data = {}; - data[ element.name ] = value; - $.ajax( $.extend( true, { - mode: "abort", - port: "validate" + element.name, - dataType: "json", - data: data, - context: validator.currentForm, - success: function( response ) { - var valid = response === true || response === "true", - errors, message, submitted; - - validator.settings.messages[ element.name ].remote = previous.originalMessage; - if ( valid ) { - submitted = validator.formSubmitted; - validator.prepareElement( element ); - validator.formSubmitted = submitted; - validator.successList.push( element ); - delete validator.invalid[ element.name ]; - validator.showErrors(); - } else { - errors = {}; - message = response || validator.defaultMessage( element, "remote" ); - errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message; - validator.invalid[ element.name ] = true; - validator.showErrors( errors ); - } - previous.valid = valid; - validator.stopRequest( element, valid ); - } - }, param ) ); - return "pending"; - } - } - -}); - -// ajax mode: abort -// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); -// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() - -var pendingRequests = {}, - ajax; -// Use a prefilter if available (1.5+) -if ( $.ajaxPrefilter ) { - $.ajaxPrefilter(function( settings, _, xhr ) { - var port = settings.port; - if ( settings.mode === "abort" ) { - if ( pendingRequests[port] ) { - pendingRequests[port].abort(); - } - pendingRequests[port] = xhr; - } - }); -} else { - // Proxy ajax - ajax = $.ajax; - $.ajax = function( settings ) { - var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, - port = ( "port" in settings ? settings : $.ajaxSettings ).port; - if ( mode === "abort" ) { - if ( pendingRequests[port] ) { - pendingRequests[port].abort(); - } - pendingRequests[port] = ajax.apply(this, arguments); - return pendingRequests[port]; - } - return ajax.apply(this, arguments); - }; -} - -})); \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery/.bower.json b/src/FilterLists.Web/wwwroot/lib/jquery/.bower.json deleted file mode 100644 index 419488b5b..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery/.bower.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "jquery", - "main": "dist/jquery.js", - "license": "MIT", - "ignore": [ - "package.json" - ], - "keywords": [ - "jquery", - "javascript", - "browser", - "library" - ], - "homepage": "https://github.com/jquery/jquery-dist", - "version": "2.2.0", - "_release": "2.2.0", - "_resolution": { - "type": "version", - "tag": "2.2.0", - "commit": "6fc01e29bdad0964f62ef56d01297039cdcadbe5" - }, - "_source": "git://github.com/jquery/jquery-dist.git", - "_target": "2.2.0", - "_originalSource": "jquery" -} \ No newline at end of file diff --git a/src/FilterLists.Web/wwwroot/lib/jquery/LICENSE.txt b/src/FilterLists.Web/wwwroot/lib/jquery/LICENSE.txt deleted file mode 100644 index 5312a4c86..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery/LICENSE.txt +++ /dev/null @@ -1,36 +0,0 @@ -Copyright jQuery Foundation and other contributors, https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/jquery - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -All files located in the node_modules and external directories are -externally maintained libraries used by this software which have their -own licenses; we recommend you read them, as their terms may differ from -the terms above. diff --git a/src/FilterLists.Web/wwwroot/lib/jquery/dist/jquery.js b/src/FilterLists.Web/wwwroot/lib/jquery/dist/jquery.js deleted file mode 100644 index 1e0ba9974..000000000 --- a/src/FilterLists.Web/wwwroot/lib/jquery/dist/jquery.js +++ /dev/null @@ -1,9831 +0,0 @@ -/*! - * jQuery JavaScript Library v2.2.0 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-01-08T20:02Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; - -var document = window.document; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "2.2.0", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - - // Inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE9-10 only - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[ 0 ], key ) : emptyGet; -}; -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - register: function( owner, initial ) { - var value = initial || {}; - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable, non-writable property - // configurability must be true to allow the property to be - // deleted with the delete operator - } else { - Object.defineProperty( owner, this.expando, { - value: value, - writable: true, - configurable: true - } ); - } - return owner[ this.expando ]; - }, - cache: function( owner ) { - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( !acceptData( owner ) ) { - return {}; - } - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - owner[ this.expando ] && owner[ this.expando ][ key ]; - }, - access: function( owner, key, value ) { - var stored; - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase( key ) ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key === undefined ) { - this.register( owner ); - - } else { - - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <= 35-45+ - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data, camelKey; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // with the key as-is - data = dataUser.get( elem, key ) || - - // Try to find dashed key if it exists (gh-2779) - // This is for 2.2.x only - dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); - - if ( data !== undefined ) { - return data; - } - - camelKey = jQuery.camelCase( key ); - - // Attempt to get data from the cache - // with the key camelized - data = dataUser.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - camelKey = jQuery.camelCase( key ); - this.each( function() { - - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = dataUser.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - dataUser.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf( "-" ) > -1 && data !== undefined ) { - dataUser.set( this, key, value ); - } - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
    " ], - col: [ 2, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - - _default: [ 0, "", "" ] -}; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE9-11+ - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0-4.3, Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + - "screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -function manipulationTarget( elem, content ) { - if ( jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return elem.getElementsByTagName( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <= 35-45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "