From dcbc4f3e8d62c78d78aa1e9689c46902e12b4f69 Mon Sep 17 00:00:00 2001 From: dmholland Date: Fri, 25 Sep 2020 09:42:07 -0400 Subject: [PATCH 1/6] I added my entire project, will put a readme in it --- .gitignore | 174 + .idea/.gitignore | 10 + .idea/.name | 1 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/compiler.xml | 21 + .idea/encodings.xml | 6 + .idea/jarRepositories.xml | 20 + .idea/misc.xml | 11 + .idea/modules.xml | 8 + .idea/sqldialects.xml | 6 + .idea/vcs.xml | 6 + .mvn/wrapper/MavenWrapperDownloader.java | 117 + .mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes .mvn/wrapper/maven-wrapper.properties | 2 + HELP.md | 33 + demo.iml | 111 + mvnw | 310 + mvnw.cmd | 182 + pom.xml | 74 + spring-security.xml | 9 + .../demo/Configure/WebMvcConfig.java | 27 + .../demo/Configure/WebSecurityConfig.java | 79 + .../java/com/dmholland/demo/application.java | 11 + .../controllers/BackOfficeController.java | 32 + .../demo/controllers/ErrorController.java | 39 + .../demo/controllers/HomeController.java | 31 + .../demo/controllers/LoginController.java | 37 + .../demo/controllers/PostsController.java | 143 + .../controllers/RegistrationController.java | 53 + .../java/com/dmholland/demo/models/Post.java | 92 + .../java/com/dmholland/demo/models/User.java | 96 + .../demo/repository/PostRepository.java | 17 + .../demo/repository/UserRepository.java | 11 + .../demo/services/NotificationService.java | 8 + .../services/NotificationServiceImpl.java | 66 + .../dmholland/demo/services/PostService.java | 70 + .../demo/services/PostServiceInterface.java | 21 + .../dmholland/demo/services/UserService.java | 78 + .../demo/services/UserServiceInterface.java | 21 + src/main/resources/application.properties | 58 + src/main/resources/public/css/styles.css | 77 + src/main/resources/public/img/Messedup.png | Bin 0 -> 148636 bytes src/main/resources/public/img/favicon.ico | Bin 0 -> 1150 bytes src/main/resources/public/img/not_there.png | Bin 0 -> 27360 bytes .../resources/public/img/notauthorized2.png | Bin 0 -> 172225 bytes src/main/resources/public/img/oops.png | Bin 0 -> 117222 bytes .../resources/public/img/page-not-found.png | Bin 0 -> 15973 bytes src/main/resources/public/img/sad-face.jpg | Bin 0 -> 12839 bytes src/main/resources/public/img/site-logo.png | Bin 0 -> 7450 bytes .../resources/public/img/sunglasses-face.jpg | Bin 0 -> 21127 bytes src/main/resources/public/js/blog-scripts.js | 8 + .../resources/public/js/jquery-3.1.0.min.js | 10872 ++++++++++++++++ src/main/resources/templates/Error/403.html | 21 + src/main/resources/templates/Error/404.html | 21 + src/main/resources/templates/Error/500.html | 21 + src/main/resources/templates/Error/other.html | 21 + src/main/resources/templates/index.html | 38 + src/main/resources/templates/layout.html | 80 + .../resources/templates/posts/create.html | 38 + src/main/resources/templates/posts/edit.html | 39 + src/main/resources/templates/posts/index.html | 95 + src/main/resources/templates/posts/view.html | 30 + .../resources/templates/users/backoffice.html | 63 + src/main/resources/templates/users/login.html | 35 + .../templates/users/registration.html | 56 + target/classes/application.properties | 58 + .../demo/Configure/WebMvcConfig.class | Bin 0 -> 1624 bytes .../demo/Configure/WebSecurityConfig.class | Bin 0 -> 6796 bytes .../com/dmholland/demo/application.class | Bin 0 -> 725 bytes .../controllers/BackOfficeController.class | Bin 0 -> 1646 bytes .../demo/controllers/ErrorController.class | Bin 0 -> 1578 bytes .../demo/controllers/HomeController.class | Bin 0 -> 1679 bytes .../demo/controllers/LoginController.class | Bin 0 -> 1602 bytes .../demo/controllers/PostsController.class | Bin 0 -> 6501 bytes .../controllers/RegistrationController.class | Bin 0 -> 2482 bytes .../com/dmholland/demo/models/Post.class | Bin 0 -> 2950 bytes .../com/dmholland/demo/models/User.class | Bin 0 -> 3369 bytes .../demo/repository/PostRepository.class | Bin 0 -> 814 bytes .../demo/repository/UserRepository.class | Bin 0 -> 553 bytes .../demo/services/NotificationService.class | Bin 0 -> 269 bytes ...ationServiceImpl$NotificationMessage.class | Bin 0 -> 1190 bytes ...nServiceImpl$NotificationMessageType.class | Bin 0 -> 1468 bytes .../services/NotificationServiceImpl.class | Bin 0 -> 2153 bytes .../dmholland/demo/services/PostService.class | Bin 0 -> 3815 bytes .../demo/services/PostServiceInterface.class | Bin 0 -> 893 bytes .../dmholland/demo/services/UserService.class | Bin 0 -> 4360 bytes .../demo/services/UserServiceInterface.class | Bin 0 -> 1125 bytes target/classes/public/css/styles.css | 77 + target/classes/public/img/Messedup.png | Bin 0 -> 148636 bytes target/classes/public/img/favicon.ico | Bin 0 -> 1150 bytes target/classes/public/img/not_there.png | Bin 0 -> 27360 bytes target/classes/public/img/notauthorized2.png | Bin 0 -> 172225 bytes target/classes/public/img/oops.png | Bin 0 -> 117222 bytes target/classes/public/img/page-not-found.png | Bin 0 -> 15973 bytes target/classes/public/img/sad-face.jpg | Bin 0 -> 12839 bytes target/classes/public/img/site-logo.png | Bin 0 -> 7450 bytes target/classes/public/img/sunglasses-face.jpg | Bin 0 -> 21127 bytes target/classes/public/js/blog-scripts.js | 8 + target/classes/public/js/jquery-3.1.0.min.js | 10872 ++++++++++++++++ target/classes/templates/Error/403.html | 21 + target/classes/templates/Error/404.html | 21 + target/classes/templates/Error/500.html | 21 + target/classes/templates/Error/other.html | 21 + target/classes/templates/index.html | 38 + target/classes/templates/layout.html | 80 + target/classes/templates/posts/create.html | 38 + target/classes/templates/posts/edit.html | 39 + target/classes/templates/posts/index.html | 95 + target/classes/templates/posts/view.html | 30 + .../classes/templates/users/backoffice.html | 63 + target/classes/templates/users/login.html | 35 + .../classes/templates/users/registration.html | 56 + 112 files changed, 25184 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/sqldialects.xml create mode 100644 .idea/vcs.xml create mode 100644 .mvn/wrapper/MavenWrapperDownloader.java create mode 100644 .mvn/wrapper/maven-wrapper.jar create mode 100644 .mvn/wrapper/maven-wrapper.properties create mode 100644 HELP.md create mode 100644 demo.iml create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 spring-security.xml create mode 100644 src/main/java/com/dmholland/demo/Configure/WebMvcConfig.java create mode 100644 src/main/java/com/dmholland/demo/Configure/WebSecurityConfig.java create mode 100644 src/main/java/com/dmholland/demo/application.java create mode 100644 src/main/java/com/dmholland/demo/controllers/BackOfficeController.java create mode 100644 src/main/java/com/dmholland/demo/controllers/ErrorController.java create mode 100644 src/main/java/com/dmholland/demo/controllers/HomeController.java create mode 100644 src/main/java/com/dmholland/demo/controllers/LoginController.java create mode 100644 src/main/java/com/dmholland/demo/controllers/PostsController.java create mode 100644 src/main/java/com/dmholland/demo/controllers/RegistrationController.java create mode 100644 src/main/java/com/dmholland/demo/models/Post.java create mode 100644 src/main/java/com/dmholland/demo/models/User.java create mode 100644 src/main/java/com/dmholland/demo/repository/PostRepository.java create mode 100644 src/main/java/com/dmholland/demo/repository/UserRepository.java create mode 100644 src/main/java/com/dmholland/demo/services/NotificationService.java create mode 100644 src/main/java/com/dmholland/demo/services/NotificationServiceImpl.java create mode 100644 src/main/java/com/dmholland/demo/services/PostService.java create mode 100644 src/main/java/com/dmholland/demo/services/PostServiceInterface.java create mode 100644 src/main/java/com/dmholland/demo/services/UserService.java create mode 100644 src/main/java/com/dmholland/demo/services/UserServiceInterface.java create mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/public/css/styles.css create mode 100644 src/main/resources/public/img/Messedup.png create mode 100644 src/main/resources/public/img/favicon.ico create mode 100644 src/main/resources/public/img/not_there.png create mode 100644 src/main/resources/public/img/notauthorized2.png create mode 100644 src/main/resources/public/img/oops.png create mode 100644 src/main/resources/public/img/page-not-found.png create mode 100644 src/main/resources/public/img/sad-face.jpg create mode 100644 src/main/resources/public/img/site-logo.png create mode 100644 src/main/resources/public/img/sunglasses-face.jpg create mode 100644 src/main/resources/public/js/blog-scripts.js create mode 100644 src/main/resources/public/js/jquery-3.1.0.min.js create mode 100644 src/main/resources/templates/Error/403.html create mode 100644 src/main/resources/templates/Error/404.html create mode 100644 src/main/resources/templates/Error/500.html create mode 100644 src/main/resources/templates/Error/other.html create mode 100644 src/main/resources/templates/index.html create mode 100644 src/main/resources/templates/layout.html create mode 100644 src/main/resources/templates/posts/create.html create mode 100644 src/main/resources/templates/posts/edit.html create mode 100644 src/main/resources/templates/posts/index.html create mode 100644 src/main/resources/templates/posts/view.html create mode 100644 src/main/resources/templates/users/backoffice.html create mode 100644 src/main/resources/templates/users/login.html create mode 100644 src/main/resources/templates/users/registration.html create mode 100644 target/classes/application.properties create mode 100644 target/classes/com/dmholland/demo/Configure/WebMvcConfig.class create mode 100644 target/classes/com/dmholland/demo/Configure/WebSecurityConfig.class create mode 100644 target/classes/com/dmholland/demo/application.class create mode 100644 target/classes/com/dmholland/demo/controllers/BackOfficeController.class create mode 100644 target/classes/com/dmholland/demo/controllers/ErrorController.class create mode 100644 target/classes/com/dmholland/demo/controllers/HomeController.class create mode 100644 target/classes/com/dmholland/demo/controllers/LoginController.class create mode 100644 target/classes/com/dmholland/demo/controllers/PostsController.class create mode 100644 target/classes/com/dmholland/demo/controllers/RegistrationController.class create mode 100644 target/classes/com/dmholland/demo/models/Post.class create mode 100644 target/classes/com/dmholland/demo/models/User.class create mode 100644 target/classes/com/dmholland/demo/repository/PostRepository.class create mode 100644 target/classes/com/dmholland/demo/repository/UserRepository.class create mode 100644 target/classes/com/dmholland/demo/services/NotificationService.class create mode 100644 target/classes/com/dmholland/demo/services/NotificationServiceImpl$NotificationMessage.class create mode 100644 target/classes/com/dmholland/demo/services/NotificationServiceImpl$NotificationMessageType.class create mode 100644 target/classes/com/dmholland/demo/services/NotificationServiceImpl.class create mode 100644 target/classes/com/dmholland/demo/services/PostService.class create mode 100644 target/classes/com/dmholland/demo/services/PostServiceInterface.class create mode 100644 target/classes/com/dmholland/demo/services/UserService.class create mode 100644 target/classes/com/dmholland/demo/services/UserServiceInterface.class create mode 100644 target/classes/public/css/styles.css create mode 100644 target/classes/public/img/Messedup.png create mode 100644 target/classes/public/img/favicon.ico create mode 100644 target/classes/public/img/not_there.png create mode 100644 target/classes/public/img/notauthorized2.png create mode 100644 target/classes/public/img/oops.png create mode 100644 target/classes/public/img/page-not-found.png create mode 100644 target/classes/public/img/sad-face.jpg create mode 100644 target/classes/public/img/site-logo.png create mode 100644 target/classes/public/img/sunglasses-face.jpg create mode 100644 target/classes/public/js/blog-scripts.js create mode 100644 target/classes/public/js/jquery-3.1.0.min.js create mode 100644 target/classes/templates/Error/403.html create mode 100644 target/classes/templates/Error/404.html create mode 100644 target/classes/templates/Error/500.html create mode 100644 target/classes/templates/Error/other.html create mode 100644 target/classes/templates/index.html create mode 100644 target/classes/templates/layout.html create mode 100644 target/classes/templates/posts/create.html create mode 100644 target/classes/templates/posts/edit.html create mode 100644 target/classes/templates/posts/index.html create mode 100644 target/classes/templates/posts/view.html create mode 100644 target/classes/templates/users/backoffice.html create mode 100644 target/classes/templates/users/login.html create mode 100644 target/classes/templates/users/registration.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..707d3a305 --- /dev/null +++ b/.gitignore @@ -0,0 +1,174 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/intellij,eclipse +# Edit at https://www.toptal.com/developers/gitignore?templates=intellij,eclipse + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +# End of https://www.toptal.com/developers/gitignore/api/intellij,eclipse \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..fee26ec3c --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../../../../:\Users\dmhol\dev\CaseStudy\Blog\.idea/dataSources/ +/dataSources.local.xml +# Zeppelin ignored files +/ZeppelinRemoteNotebooks/ +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 000000000..efd261bf7 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +demo \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 000000000..a55e7a179 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 000000000..e65307f0f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 000000000..63e900193 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 000000000..48cf38dc5 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..436120054 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..0fb971708 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 000000000..bed0bd396 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..35eb1ddfb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 000000000..e76d1f324 --- /dev/null +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054 GIT binary patch literal 50710 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 EfAhh=DF6Tf literal 0 HcmV?d00001 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 000000000..642d572ce --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/HELP.md b/HELP.md new file mode 100644 index 000000000..263675bae --- /dev/null +++ b/HELP.md @@ -0,0 +1,33 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/maven-plugin/reference/html/) +* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/maven-plugin/reference/html/#build-image) +* [Spring Web](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#boot-features-developing-web-applications) +* [Thymeleaf](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-template-engines) +* [Spring Data JPA](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#boot-features-jpa-and-spring-data) +* [JDBC API](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#boot-features-sql) +* [Spring Data JDBC](https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/) +* [Spring Boot DevTools](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#using-boot-devtools) +* [Spring Configuration Processor](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#configuration-metadata-annotation-processor) +* [Spring Security](https://docs.spring.io/spring-boot/docs/2.3.3.RELEASE/reference/htmlsingle/#boot-features-security) + +### Guides +The following guides illustrate how to use some features concretely: + +* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) +* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) +* [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks/) +* [Handling Form Submission](https://spring.io/guides/gs/handling-form-submission/) +* [Accessing data with MySQL](https://spring.io/guides/gs/accessing-data-mysql/) +* [Accessing Data with JPA](https://spring.io/guides/gs/accessing-data-jpa/) +* [Accessing Relational Data using JDBC with Spring](https://spring.io/guides/gs/relational-data-access/) +* [Managing Transactions](https://spring.io/guides/gs/managing-transactions/) +* [Using Spring Data JDBC](https://github.com/spring-projects/spring-data-examples/tree/master/jdbc/basics) +* [Securing a Web Application](https://spring.io/guides/gs/securing-web/) +* [Spring Boot and OAuth2](https://spring.io/guides/tutorials/spring-boot-oauth2/) +* [Authenticating a User with LDAP](https://spring.io/guides/gs/authenticating-ldap/) + diff --git a/demo.iml b/demo.iml new file mode 100644 index 000000000..2bc1a8afd --- /dev/null +++ b/demo.iml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mvnw b/mvnw new file mode 100644 index 000000000..a16b5431b --- /dev/null +++ b/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 000000000..c8d43372c --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 000000000..e3771e0d4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,74 @@ + + + 4.0.0 + spring + blog + 0.0.1-SNAPSHOT + jar + + + org.springframework.boot + spring-boot-starter-parent + 2.0.3.RELEASE + + + + org.springframework.boot + spring-boot-devtools + + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + + + org.springframework.data + spring-data-jpa + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + mysql + mysql-connector-java + 8.0.11 + + + + org.springframework.boot + spring-boot-starter-security + + + + + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity4 + + + + + + + com.h2database + h2 + test + + + + 1.8 + + diff --git a/spring-security.xml b/spring-security.xml new file mode 100644 index 000000000..bf38e5fec --- /dev/null +++ b/spring-security.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/dmholland/demo/Configure/WebMvcConfig.java b/src/main/java/com/dmholland/demo/Configure/WebMvcConfig.java new file mode 100644 index 000000000..e2054ed02 --- /dev/null +++ b/src/main/java/com/dmholland/demo/Configure/WebMvcConfig.java @@ -0,0 +1,27 @@ +package com.dmholland.demo.Configure; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + public void addViewControllers(ViewControllerRegistry registry){ + registry.addViewController("/home").setViewName("index"); + registry.addViewController("/").setViewName("index"); + registry.addViewController("/login").setViewName("users/login"); + registry.addViewController("/users/registration").setViewName("users/registration"); + registry.addViewController("/backoffice").setViewName("users/backoffice"); + + //registry.addViewController("/posts").setViewName("posts/index"); + } + + @Bean + public BCryptPasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + +} diff --git a/src/main/java/com/dmholland/demo/Configure/WebSecurityConfig.java b/src/main/java/com/dmholland/demo/Configure/WebSecurityConfig.java new file mode 100644 index 000000000..821a40f50 --- /dev/null +++ b/src/main/java/com/dmholland/demo/Configure/WebSecurityConfig.java @@ -0,0 +1,79 @@ +package com.dmholland.demo.Configure; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import javax.sql.DataSource; + +@Configuration +@EnableWebSecurity +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + /** + * Needed to read credentials parse password + * TODO https://medium.com/@gustavo.ponce.ch/spring-boot-spring-mvc-spring-security-mysql-a5d8545d837d + */ + @Autowired + private DataSource dataSource; + @Autowired + private BCryptPasswordEncoder bCryptPasswordEncoder; + /** + * Read query statement from application.properties file + */ + @Value("${spring.queries.users-query}") + private String usersQuery; + + @Value("${spring.queries.roles-query}") + private String rolesQuery; + + /** + * Perform a query against the database with user name and password fields + */ + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception{ + auth.jdbcAuthentication() + .usersByUsernameQuery(usersQuery) + .authoritiesByUsernameQuery(rolesQuery) + .dataSource(dataSource) + .passwordEncoder(bCryptPasswordEncoder); + } + /** + * Configure HTTP permissions + */ + @Override + protected void configure(HttpSecurity http) throws Exception{ + + http.authorizeRequests() + .antMatchers("/", "/home", "/error/**", "/posts", "/posts/view/**", "/users/logout", "/users/registration", "/users/login").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .loginPage("/users/login").failureUrl("/users/login?error=true").defaultSuccessUrl("/") + .usernameParameter("username").passwordParameter("hashPassword") + .and() + .logout() + .invalidateHttpSession(true) + .clearAuthentication(true) + .logoutRequestMatcher(new AntPathRequestMatcher("/users/logout")) + .logoutSuccessUrl("/").and().exceptionHandling() + .accessDeniedPage("/error/403"); + } + /** + * Configure Web permissions (images, css, js, etc.) + */ + @Override + public void configure(WebSecurity web) throws Exception{ + web.ignoring() + .antMatchers("/resources/**", "/static/**", "/css/**", "/img/**", "/js/**"); + + } + +} diff --git a/src/main/java/com/dmholland/demo/application.java b/src/main/java/com/dmholland/demo/application.java new file mode 100644 index 000000000..f26abf8e5 --- /dev/null +++ b/src/main/java/com/dmholland/demo/application.java @@ -0,0 +1,11 @@ +package com.dmholland.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class application { + public static void main(String[] args) { + SpringApplication.run(application.class, args); + } +} diff --git a/src/main/java/com/dmholland/demo/controllers/BackOfficeController.java b/src/main/java/com/dmholland/demo/controllers/BackOfficeController.java new file mode 100644 index 000000000..415cb751c --- /dev/null +++ b/src/main/java/com/dmholland/demo/controllers/BackOfficeController.java @@ -0,0 +1,32 @@ +package com.dmholland.demo.controllers; + +import com.dmholland.demo.models.User; +import com.dmholland.demo.services.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +public class BackOfficeController { + + @Autowired + private UserService userService; + + + @RequestMapping("/users/backoffice") + public String index(Model model, @PageableDefault(sort = {"username"}, value = 5) Pageable pageable){ + // Get the content of the table, TODO. find a way to paginate + Page users = this.userService.findAll(pageable); + // Define variables to be passed to view + model.addAttribute("users", users); + // Return the view model itself + return "users/backoffice"; + } + + } + diff --git a/src/main/java/com/dmholland/demo/controllers/ErrorController.java b/src/main/java/com/dmholland/demo/controllers/ErrorController.java new file mode 100644 index 000000000..44da07990 --- /dev/null +++ b/src/main/java/com/dmholland/demo/controllers/ErrorController.java @@ -0,0 +1,39 @@ +package com.dmholland.demo.controllers; + + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletResponse; + +@RestController +public class ErrorController implements org.springframework.boot.web.servlet.error.ErrorController { + +@RequestMapping("/error") +public ModelAndView handleError(HttpServletResponse response){ +ModelAndView modelAndView = new ModelAndView(); + +if(response.getStatus() == HttpStatus.NOT_FOUND.value()){ + modelAndView.setViewName("Error/404"); +} + if(response.getStatus() == HttpStatus.FORBIDDEN.value()){ + modelAndView.setViewName("Error/403"); + } + if(response.getStatus() == HttpStatus.INTERNAL_SERVER_ERROR.value()){ + modelAndView.setViewName("Error/500"); + } + else { + modelAndView.setViewName("Error/other"); + } + + return modelAndView; +} + + + @Override + public String getErrorPath() { + return "/error"; + } +} diff --git a/src/main/java/com/dmholland/demo/controllers/HomeController.java b/src/main/java/com/dmholland/demo/controllers/HomeController.java new file mode 100644 index 000000000..d3c2ee994 --- /dev/null +++ b/src/main/java/com/dmholland/demo/controllers/HomeController.java @@ -0,0 +1,31 @@ +package com.dmholland.demo.controllers; + + +import com.dmholland.demo.models.Post; +import com.dmholland.demo.services.PostServiceInterface; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; +import java.util.stream.Collectors; + +@Controller +public class HomeController { + + @Autowired + private PostServiceInterface postService; + + @RequestMapping(value= { "/", "/home" } ) + public String index(Model model) { + List latest5Posts = postService.findLatest5(); + model.addAttribute("latest5Posts",latest5Posts); + + List latest3Posts = latest5Posts.stream() + .limit(3) + .collect(Collectors.toList()); + model.addAttribute("latest3Posts",latest3Posts); + return "index"; + } +} \ No newline at end of file diff --git a/src/main/java/com/dmholland/demo/controllers/LoginController.java b/src/main/java/com/dmholland/demo/controllers/LoginController.java new file mode 100644 index 000000000..6b924c98a --- /dev/null +++ b/src/main/java/com/dmholland/demo/controllers/LoginController.java @@ -0,0 +1,37 @@ +package com.dmholland.demo.controllers; + +import com.dmholland.demo.services.NotificationService; +import com.dmholland.demo.services.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class LoginController { + + @Autowired + private NotificationService notifyService; + + @Autowired + private UserService userService; + + + + //Due to using the spring security, login form is not required in method + @RequestMapping("/users/login") + public String loginPage() { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if ((auth instanceof AnonymousAuthenticationToken)) { + return "users/login"; + } else { + notifyService.addErrorMessage("Credentials are not correct"); + return "redirect:/"; + } + } + + } + + diff --git a/src/main/java/com/dmholland/demo/controllers/PostsController.java b/src/main/java/com/dmholland/demo/controllers/PostsController.java new file mode 100644 index 000000000..d164ab8b0 --- /dev/null +++ b/src/main/java/com/dmholland/demo/controllers/PostsController.java @@ -0,0 +1,143 @@ +package com.dmholland.demo.controllers; + + +import com.dmholland.demo.models.Post; +import com.dmholland.demo.models.User; +import com.dmholland.demo.services.NotificationService; +import com.dmholland.demo.services.PostService; +import com.dmholland.demo.services.PostServiceInterface; +import com.dmholland.demo.services.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; + +@Controller +public class PostsController { + @Autowired + NotificationService notifyService; + + @Autowired + private PostServiceInterface postService; + + @Autowired + private UserService userService; + + @RequestMapping("/posts/view/{id}") + public String view(@PathVariable("id") Long id, Model model){ + Post post = this.postService.findById(id); + if( post == null ){ + notifyService.addErrorMessage("Cannot find post #" + id); + return "redirect:/"; + } + model.addAttribute("post", post); + // To have something like src/main/resources/templates// + return "posts/view"; + } + +@RequestMapping("/posts/create") + +public ModelAndView createPosts() { + ModelAndView mv=new ModelAndView(); + Post post = new Post(); + mv.addObject(post); + mv.setViewName("posts/create"); + return mv; +} + +@RequestMapping(value = "posts/create", method = RequestMethod.POST) +public ModelAndView createPosts(@Valid Post post, BindingResult bindingResult){ + ModelAndView mv=new ModelAndView(); + Authentication verify = SecurityContextHolder.getContext().getAuthentication(); + + //So the errors will reject and show reasoning + if( post.getTitle().isEmpty() ){ + bindingResult.rejectValue("title", "error.post", "Title cannot be empty"); + } + if( post.getBody().isEmpty() ){ + bindingResult.rejectValue("body", "error.post", "Content cannot be empty"); + } + User user =this.userService.findByUserName(verify.getName());//gets name of current user + if(null == user){ + bindingResult.rejectValue("author","error.author","Can not create post, your User Name is not Verified"); + } + if( !bindingResult.hasErrors() ){ + post.setAuthor(user); + this.postService.create(post); + mv.addObject("successMessage","Post has been created"); + mv.addObject("post",new Post()); + } + return mv; +} + + + +@RequestMapping("/posts/delete/{id}") +public String delete(@PathVariable("id")Long id){ + Post post = this.postService.findById(id); + if(null==post){ + notifyService.addErrorMessage("Can not find post # "+id); + }else{ + this.postService.deleteById(id); + } + return "redirect:/posts/"; +} + +@RequestMapping("/posts/edit/{id}") +public String edit(@PathVariable("id") Long id, Model model){ + Post post = this.postService.findById(id); + if( null==post ){ + notifyService.addErrorMessage("Cannot find post #" + id); + return "redirect:/posts/"; + } + model.addAttribute("post", post); + return "posts/edit"; +} + + +@RequestMapping(value = "/posts/edit", method = RequestMethod.POST) +public ModelAndView edit(@Valid Post post, BindingResult bindingResult){ + ModelAndView mv = new ModelAndView(); + Authentication verify = SecurityContextHolder.getContext().getAuthentication(); + mv.setViewName("posts/edit"); + //Since this was just like the creating of a post I copied and altered from above + if( post.getTitle().isEmpty() ){ + bindingResult.rejectValue("title", "error.post", "Title cannot be empty"); + } + if( post.getBody().isEmpty() ){ + bindingResult.rejectValue("body", "error.post", "Content cannot be empty"); + } + User user =this.userService.findByUserName(verify.getName());//gets name of current user + if(null == user){ + bindingResult.rejectValue("author","error.author","Can not edit post, your User Name is not Verified"); + } + if( !bindingResult.hasErrors() ){ + post.setAuthor(user); + this.postService.create(post); + mv.addObject("successMessage","Post has been edited"); + mv.addObject("post",new Post()); + } + return mv; +} + +@RequestMapping("/posts") +public String index(Model model, @PageableDefault(sort = {"id"},value= 5) Pageable pageable){ + //not exactly sure how above line worked need to see if 6 posts will print + + Page posts = this.postService.findAll(pageable); + + model.addAttribute("posts",posts); + return "posts/index"; + } +} \ No newline at end of file diff --git a/src/main/java/com/dmholland/demo/controllers/RegistrationController.java b/src/main/java/com/dmholland/demo/controllers/RegistrationController.java new file mode 100644 index 000000000..18faa3001 --- /dev/null +++ b/src/main/java/com/dmholland/demo/controllers/RegistrationController.java @@ -0,0 +1,53 @@ +package com.dmholland.demo.controllers; + + +import com.dmholland.demo.models.User; +import com.dmholland.demo.services.NotificationService; +import com.dmholland.demo.services.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; + +@Controller +public class RegistrationController { + @Autowired + private UserService userService; + + + @RequestMapping("/users/registration") + public ModelAndView registration(){ + ModelAndView mv= new ModelAndView(); + User user=new User(); + // User user=repository.createUser(new User()); + //I had get mapping and used the repository + mv.addObject(user); + mv.setViewName("users/registration"); + return mv; + } + + @RequestMapping(value="users/registration",method = RequestMethod.POST) + public ModelAndView registration(@Valid User user, BindingResult validate){ + ModelAndView mv=new ModelAndView(); + mv.setViewName("users/registration"); + if(this.userService.userCheck(user)){//user exists + validate.rejectValue("username", "error.user", "User exists"); + return mv; + } + if(!validate.hasErrors()) { + this.userService.createUser(user); + mv.addObject("successMessage", "User has been created"); + mv.addObject("user", new User()); + } + return mv; + + } + +} diff --git a/src/main/java/com/dmholland/demo/models/Post.java b/src/main/java/com/dmholland/demo/models/Post.java new file mode 100644 index 000000000..00a99ded0 --- /dev/null +++ b/src/main/java/com/dmholland/demo/models/Post.java @@ -0,0 +1,92 @@ +package com.dmholland.demo.models; + + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.util.Date; + +@Entity +@Table(name="posts") +public class Post { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, length = 30) + private String title; + + @Lob //Recognized as a Blob(binary body), this helps get large pieces of data + @Column(nullable = false) + private String body; + + @ManyToOne(optional = false,fetch = FetchType.LAZY)//This means that without an author, an error will cause it not to persist, also lazy means it will only fetch when chosen + private User author; + + @NotNull + @Column(nullable = false) + private Date date = new Date(); + + public Post() { + } + + + public Post(Long id, String title, String body, User author) { + this.id = id; + this.author = author; + this.title = title; + this.body = body; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + /** + * @return the title + */ + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public User getAuthor() { + return author; + } + + public void setAuthor(User author) { + this.author = author; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + @Override + public String toString() { + return "Posts{" + "id= " + id + ", title='" + title + '\'' + + ", body='" + body + '\'' + + ", author='" + author + '\'' + + ", date='" + date + '}'; + } + + +} diff --git a/src/main/java/com/dmholland/demo/models/User.java b/src/main/java/com/dmholland/demo/models/User.java new file mode 100644 index 000000000..9ca7ba3fc --- /dev/null +++ b/src/main/java/com/dmholland/demo/models/User.java @@ -0,0 +1,96 @@ +package com.dmholland.demo.models; + +import org.hibernate.validator.constraints.Length; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import javax.persistence.*; +import javax.validation.constraints.NotEmpty; + +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "users") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY)//Identity because it auto increments + private Long id; + + @Column(length = 60) + @Length(min = 5, message = "Your password must have at least 5 characters") + @NotEmpty(message = "Please provide your password") + private String hashPassword; + + + @Column(nullable = false,length = 60, unique = true) + @NotEmpty(message = "Please provide a username") + private String username; + + @Column(length = 60) + @Length(min = 5, message = "Your name must have at least 5 characters") + @NotEmpty(message = "You must enter your name") + private String fullName; + + @OneToMany(mappedBy = "author") //Must be a container + private Set posts = new HashSet<>(); + + public User() { + } + + + + public User(Long id, String username, String fullName) { + this.id = id; + this.username = username; + this.fullName = fullName; + + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getHashPassword() { + return hashPassword; + } + + public void setHashPassword(String hashPassword) { + this.hashPassword = hashPassword; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public Set getPosts() { + return posts; + } + + public void setPosts(Set posts) { + this.posts = posts; + } + + @Override + public String toString() { + return "User{" + "id= " + id + ", username='" + username + '\'' + + ", hashPassword='" + hashPassword + '\'' + + ", fullName='" + fullName + '\'' + '}'; + } +} diff --git a/src/main/java/com/dmholland/demo/repository/PostRepository.java b/src/main/java/com/dmholland/demo/repository/PostRepository.java new file mode 100644 index 000000000..304e4d9cf --- /dev/null +++ b/src/main/java/com/dmholland/demo/repository/PostRepository.java @@ -0,0 +1,17 @@ +package com.dmholland.demo.repository; + +import com.dmholland.demo.models.Post; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface PostRepository extends JpaRepository { + + + @Query(value="SELECT p.* FROM posts p ORDER BY p.date DESC", nativeQuery = true) + List findLatest5Posts(Pageable pageable); +} diff --git a/src/main/java/com/dmholland/demo/repository/UserRepository.java b/src/main/java/com/dmholland/demo/repository/UserRepository.java new file mode 100644 index 000000000..0188f6e39 --- /dev/null +++ b/src/main/java/com/dmholland/demo/repository/UserRepository.java @@ -0,0 +1,11 @@ +package com.dmholland.demo.repository; + + +import com.dmholland.demo.models.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { + User findByusername(String username); +} diff --git a/src/main/java/com/dmholland/demo/services/NotificationService.java b/src/main/java/com/dmholland/demo/services/NotificationService.java new file mode 100644 index 000000000..0ebce3d0b --- /dev/null +++ b/src/main/java/com/dmholland/demo/services/NotificationService.java @@ -0,0 +1,8 @@ +package com.dmholland.demo.services; + + + +public interface NotificationService { + void addInfoMessage(String msg); + void addErrorMessage(String msg); +} diff --git a/src/main/java/com/dmholland/demo/services/NotificationServiceImpl.java b/src/main/java/com/dmholland/demo/services/NotificationServiceImpl.java new file mode 100644 index 000000000..5a7c45e10 --- /dev/null +++ b/src/main/java/com/dmholland/demo/services/NotificationServiceImpl.java @@ -0,0 +1,66 @@ +package com.dmholland.demo.services; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpSession; +import java.util.ArrayList; +import java.util.List; + +@Service +public class NotificationServiceImpl implements NotificationService{ + public static final String NOTIFY_MSG_SESSION_KEY = "siteNotificationMessages"; + + @Autowired + private HttpSession httpSession; + + public enum NotificationMessageType{ + INFO, + ERROR + } + @Override + public void addInfoMessage(String msg) { + addNotificationMessage(NotificationMessageType.INFO, msg); + } + + + @Override + public void addErrorMessage(String msg) { + addNotificationMessage(NotificationMessageType.ERROR, msg); + } + + +private void addNotificationMessage(NotificationMessageType type, String msg){ + + List notifyMessages; + notifyMessages=(List)httpSession.getAttribute(NOTIFY_MSG_SESSION_KEY); + if(notifyMessages == null) { + notifyMessages = new ArrayList(); + } + notifyMessages.add(new NotificationMessage(type,msg)); + httpSession.setAttribute(NOTIFY_MSG_SESSION_KEY,notifyMessages); +} + + + + public static class NotificationMessage { + + NotificationMessageType type; + String text; + public NotificationMessage(NotificationMessageType type, String text) { + this.type=type; + this.text=text; + } + + public NotificationMessageType getType() { + return type; + } + + public String getText(){ + return text; + } + } + + +} diff --git a/src/main/java/com/dmholland/demo/services/PostService.java b/src/main/java/com/dmholland/demo/services/PostService.java new file mode 100644 index 000000000..cb5829e2f --- /dev/null +++ b/src/main/java/com/dmholland/demo/services/PostService.java @@ -0,0 +1,70 @@ +package com.dmholland.demo.services; + +import com.dmholland.demo.models.Post; +import com.dmholland.demo.repository.PostRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; + + + +/** + * Implement the PostService and UserService to Use the DB + * Just add new implementations for the UserService and PostService, + * annotated with @Primary. + * This will tell the Spring Framework to use these implementations instead of the old stubs. + * + */ +@Service +public class PostService implements PostServiceInterface { + + @Autowired + private PostRepository postRepository; + + @Override + public List findAll() { + return this.postRepository.findAll(); + } + + @Override + public List findLatest5() { + // Create our own query + // return this.postRepository.findLatest5Posts( PageRequest.of(0,5) ); + //Using Streams also worked Descending order + return this.postRepository.findAll( PageRequest.of(0, 2) ).stream().sorted( (a,b) -> a.getDate().compareTo(b.getDate()) ).collect(Collectors.toList()); + } + @Override + public Post findById(Long id) { + return this.postRepository.findById(id).orElse(null); + // return this.postRepository.getOne(id); + } + + @Override + public Post create(Post post) { + return this.postRepository.save(post); + } + @Override + public Post edit(Post post) { + return this.postRepository.save(post); + } + @Override + public void deleteById(Long id) { + this.postRepository.deleteById(id); + } + + @Override + public boolean isValid(Post post){ + if(null == post.getTitle() ||null == post.getBody() || null == post.getAuthor()){return false;} + return true; + } + + @Override + public Page findAll(Pageable pageable) { + return this.postRepository.findAll(pageable); + } +} diff --git a/src/main/java/com/dmholland/demo/services/PostServiceInterface.java b/src/main/java/com/dmholland/demo/services/PostServiceInterface.java new file mode 100644 index 000000000..4c05dd43b --- /dev/null +++ b/src/main/java/com/dmholland/demo/services/PostServiceInterface.java @@ -0,0 +1,21 @@ +package com.dmholland.demo.services; + +import com.dmholland.demo.models.Post; +import com.dmholland.demo.repository.PostRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; + + +public interface PostServiceInterface { + List findAll(); + List findLatest5(); + Post findById(Long id); + Post create(Post post); + Post edit(Post post); + void deleteById(Long id); + boolean isValid(Post post); + Page findAll(Pageable pageable); +} diff --git a/src/main/java/com/dmholland/demo/services/UserService.java b/src/main/java/com/dmholland/demo/services/UserService.java new file mode 100644 index 000000000..53b69ca05 --- /dev/null +++ b/src/main/java/com/dmholland/demo/services/UserService.java @@ -0,0 +1,78 @@ +package com.dmholland.demo.services; + +import com.dmholland.demo.models.Post; +import com.dmholland.demo.models.User; +import com.dmholland.demo.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; + +@Service +@Primary +public class UserService implements UserServiceInterface{ + + @Autowired + private UserRepository repository; + + @Autowired + private BCryptPasswordEncoder bCryptPasswordEncoder; + + @Override + public List findAll() { + return this.repository.findAll(); + } + + @Override + public Page findAll(Pageable pageable) { + return this.repository.findAll(pageable); + } + + + @Override + public User createUser(User user) { + user.setHashPassword(bCryptPasswordEncoder.encode(user.getHashPassword())); + return this.repository.save(user); + } + + + @Override + public void deleteUser(Long Id) { + this.repository.delete(findById(Id)); + } + + @Override + public User findById(Long id) { + return this.repository.getOne(id); + } + + @Override + public User findByName(String name) { + return findAll().stream() + .filter(x->x.getFullName().equals(name)) + .findFirst().orElse(null); + } + + @Override + public User editUser(User user) { + return this.repository.save(user); + } + + @Override + public Set findAllPosts(User user) { + return user.getPosts(); + } + + @Override + public User findByUserName(String username) { + return this.repository.findByusername(username);} + + public boolean userCheck(User user){ + return (null != findByName(user.getUsername())); + } +} diff --git a/src/main/java/com/dmholland/demo/services/UserServiceInterface.java b/src/main/java/com/dmholland/demo/services/UserServiceInterface.java new file mode 100644 index 000000000..2581dc41b --- /dev/null +++ b/src/main/java/com/dmholland/demo/services/UserServiceInterface.java @@ -0,0 +1,21 @@ +package com.dmholland.demo.services; + +import com.dmholland.demo.models.Post; +import com.dmholland.demo.models.User; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Set; + +public interface UserServiceInterface { + List findAll(); + Page findAll(Pageable pageable); + User createUser(User user); + void deleteUser(Long id); + User findById(Long id); + User findByName(String name); + User editUser(User user); + Set findAllPosts(User user); +User findByUserName(String username); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 000000000..088ef43eb --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,58 @@ +# ============================================================== +# src/main/resources/application.properties +# ============================================================== +# = Server port to use +# ============================================================== +server.port=8080 + +# =============================== +# = Thymeleaf configurations +# =============================== +spring.thymeleaf.cache=false + +# ============================================================== +# = Disable the Whitelabel Error Page +# ============================================================== +server.error.whitelabel.enabled=false + +# ============================================================== +# = DATA SOURCE - MySQL +# ============================================================== +#spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/blog2_db?createDatabaseIfNotExist=true&serverTimezone=UTC&useLegacyDatetimeCode=true +spring.datasource.username=root +spring.datasource.password= + +# ============================================================== +# = Spring Security / Queries for AuthenticationManagerBuilder +# ============================================================== +spring.queries.users-query=select username, hash_password, id from users where username=? +#spring.queries.roles-query=select u.user_name, r.role from users u inner join user_role ur on(u.user_id=ur.user_id) inner join role r on(ur.role_id=r.role_id) where u.user_name=? +# Don't want to use roles for now so set all as ADMIN +# ============================================================== +# if you want to use hasRole('ADMIN'), use this: +#spring.queries.roles-query=select user_name, 'ROLE_ADMIN' AS 'role' from users where user_name=? +# ============================================================== +# if you want to use hasAuthority('ADMIN'), use this: +spring.queries.roles-query=select username, 'ADMIN' AS 'role' from users where username=? + +# ============================================================== +# = JPA / HIBERNATE +# ============================================================== +# Configure Hibernate DDL mode: create / update +# spring.jpa.properties.hibernate.hbm2ddl.auto = create +# spring.jpa.properties.hibernate.hbm2ddl.auto = update +# +# Create the Database with hbm2ddl.auto +# Ensure the hbm2ddl is enabled (value "create"). NOTE, this needs to be done once !!!, after creating the initial DB setup change to update +# This will drop the database at application startup and will re-create the database tables according to the entity classes found in the project. +# ============================================================== +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.hbm2ddl.auto=update + + +spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect +spring.jpa.hibernate.ddl-auto=update +spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver +#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect + diff --git a/src/main/resources/public/css/styles.css b/src/main/resources/public/css/styles.css new file mode 100644 index 000000000..46008595c --- /dev/null +++ b/src/main/resources/public/css/styles.css @@ -0,0 +1,77 @@ +body>header { + background: #eee; + padding: 5px; +} + +body>header>a>img, body>header a{ + display: inline-block; + vertical-align: middle; + padding: 0px 5px; + font-size: 1.2em; + +} + +body>footer{ + background: #eee; + padding: 5px; + margin: 10px 0; + text-align:center; +} + +#logged-in-info { + float: right; + margin-top: 18px; +} + +#logged-in-info form{ + display: inline-block; + margin-right: 10px; +} + +body>aside { + float: right; + width: 200px; + background: #CCC; + padding: 15px; + margin-left: 20px; + margin-top: 10px; +} + +body>aside h2 { + margin: 5px 0 15px 0; +} + +body>aside a { + display: block; + margin: 5px 0; + text-decoration: none; +} + +body>main:after { + content: ''; + display: block; + clear: both; +} + +ul#messages li { + display: block; + width: 80%; + margin: 5px auto; + text-align: center; + padding: 5px; + border-radius: 5px; +} + +ul#messages li.info{ + background: #7f7; +} + +ul#messages li.error{ + background: #d00; + color:white; +} + +.formError { + color: red; + font-style:italic; +} \ No newline at end of file diff --git a/src/main/resources/public/img/Messedup.png b/src/main/resources/public/img/Messedup.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4b2d1b34bc2082f4b4d44fb6194c81e190cd78 GIT binary patch literal 148636 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 P0YA#}8gjKV<{|$NA+D+R literal 0 HcmV?d00001 diff --git a/src/main/resources/public/img/favicon.ico b/src/main/resources/public/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..710c06a3af6663a8ef021727288290586adcc367 GIT binary patch literal 1150 zcmZ9MdrZ?;6vxl6BC-GzTt`Kjyv1dKxro{rwt-Uys8~9%_<%*nc!*F#d9|f2l~&#b zY++CyEh115sMx|QH}?mC zpu@!l(C7uJb^vYwunz?-p_SKlGy$NRchGBW>wkjTYz7p>%3m)xkX6$fVltU9|7LA% z4YTpejF=`n5u>iw(P-c!Mm^v51*_j;u|V5gu>(yTb4)Ou<7D~Og8El5>o0ystlCp` zExdfbzGb}Z@Cg+9g0f`mTxZ(mF{t_&K-n87^PEml1V%?nU7&g=z>MgEvw<6kA1nEY zq%V4(GfH!Rtmgy{E)4M;W;-rJ{}U0wUV!4s6m0xp0D~y^G@Ksv9!Z->JaoVMAl|^- z-7}hx9UjTqAw&^rm_Af(p`UiD_Jp67!CxR#mYTZ(K7de#Nh)`1Z8j~L3wPv zP#kO=;CgUoI3Hkt5Hm1OWzER<{4f_4btg|XTrC%zZLO?vZ{)6Yh)? z0CZR^$bi7NEVmQC9HRfK=FCi`(>Vhh+AmX)=8H7kAS2ODm505hySA_LtRkS{w9LJ+ zWwz2T&kzd>El0q-cmp$6vP&Xo;za~0`C&qLHm!x2iRTlN*}RA^?+Qqa-Ktzy!Z2mK zHdf(pi22qx>A-COm9Py`?0uj$IX}4L(iih>=i=s5tI4D1TQZhWuSP&jRiJd$q^;Vi zsqaP(U42V?Ru$TJN*Pk{wirN^k`JvZG=E`2_OLXac=M-X?C=$3B0F?Ex4S9#I`$h< zM!bNSChei*y`!h^sM0e%Bo}pwXCgq3&lvnprC9ii_p zMbaqYAAO;&no_ct=t6>gh!QwB#o0CffFE+We5TZ%s7vB}u1l7a^z`u7tE{`NS%vXO zmr8LF`V2Ow_xPiqYj6V#RXF(*o?Fip>%BQ0^Wfrq%c+m!(A#6p)o_=zI zs^XRwtdfO!W1-(=E5pXKTO+26f_`g1;<8ll7qnF4xWAuriPb@7_RkJY*{kc?ZTBx< znE;FV6);vhapJOadL5(iQKpRZX}G0sD{-;R*3(Vn!)<1hLt7fNU6RG2<@txfgFdBA zdlR$`5*QQry7o~kL|tUg&0cDGu$&`s8WprTcI6a%w`a1;x+q+wqO^WbKdb7EZ8N`k zwhVXJH$cB_#Y?xB`9Dl3};s!k?>>EVx?zW-0|^(tU) zWDKLOyX7rq@Iq1VQ6;bW!+YHW+mscJ|7q7C02*%qqcx)xqN;-z0Q&R*kFp=d`X2$S TX6-QoJl_KF=Qei(a30% zKOEdj6eT$YMSe)qLPTVM%i+T2rtN%?6cwuSLWc`igkw~0&d2+f>9T+wBA&ST=HU%- z+xg7Q)Qrzz&S6eYhPYs&*g_r!7MS{tp0YuHA&>I^`?7F5k+%Lejg(+gi2%+5r|%%T6;-FnrB9975@Bq1ZaI6FH# zISFx8Q&Ypi!!tx(m(|tP_4a=G`}gm*|Hs??nfAuI)N{$LOym3en|FB^guc8y8abND ztbINioQ$+IToA>M@LJ#$^gqbq0)y>7|Gu&^c#E0I$zWSJxDh*cn6T;3jEraJn_VoI z|3>4bP2bZN>qdE#RmX5uRaGHaS@ZwJhH}%>R}>YId`lT0FB=*fij9q3U0q#?4K#Sv zL>;F6{5dr>b(u3hqW{3PcyIvd@R=Ew)B@HOiw%*2>zNmW~bz1%7^@ z3nn&pEGK`Mxw5iy{xMAY^UF&E$xe^=gOgKZUm=P=E%Z4HJ4<-+>ATF4WYhcoS=UY? zYXE-mc-jOzMqauHG8{}oWWUR6(@n$@->2U-_ieVn1Rq5LF!=9sN(ra1UUVyz=JerCu8bf-pWW68{kEW_B;y`LZ{PuXl+Re=ksgPgH%M>-EfUi4f zyVrMpYb!T36^R4m@+ynq+rjy{owB8Vfn&zB5Y=P^3wR<)1I81Y+v+G>hwBNwN_L_y5vqR{CO~an=cx5KgW4P zgoLw>U=0loeYn^j_4P|iP3mO^`}+Fw@T|fJzi#!qfkm>7h>$5Ii6aVuv{N3H1sY$WFx21xN zjNFeO)E-WjytK68e{z{P-w;4~0^XpNmCM-lEg+^S@bRB%X1Jx~^X;|6`7D=VBoT5n^|?>7!ipS=8n@+&hFio0;W#(wMX`M~wbQq_so6iHw2JWJ&1 z>1l3mZebxG3^S&^lxayx37L>zhy_}^Lf;^Um*WcTw6hA3o!x$PVDj?m1oQlUb5ldB zF9)emk!=B34n{^I%DasGyFk+S^z{5!&;~qz&K=KG7a_B`X%i9>dcEA+y1R2tjo+$A za!lRl@P$5tD}dZDoyD#9dpOr!81Iq!A(VM{>~+02espA^uCD%)?A6H|4)+Wc7xRa*@qtn_K07-aj20x_*3yF6cO{IM zn3l!|Ru`X(FD)qqEIyyRX zfCM9aU}15QoVmvXGXI|hn{L7;h2nRZ@IfIkH>AD|A2Pj9ZmF}44N9e-tgNh^{Qc1w z!ntNrYJi_A=z9QPbB6^7q1Spx1pGvx65R?aDk{t6>!GostI%N>vn`us)6tpw>bM;%R#jd1YrjrN7KQLVDy##1ZjXgfS zd_jSO9?~`wpb0F7jU0YPUjm{Gh#nw!fRtRSQiq0m-PF;ouBoX3s>}2=3cR17H;--Xzh*?-zh>Akn z5mGaXQG@VQnDu*se2j^WR8vtE^tz=ZA=w1ZFVJ52lYyz3nc&P24F!eY`>Ew>^x>Y# zY_O^6%y_nt^ZBV|#Vpp-SHWKFZrb(+L9b+JjnTO9%*@PRzZO?l3GT5H92^!uAInfS z^m13$)Sx0DaC_f>B}e_Z$fPmla69h)9SBw&1F%5g!M{;Y50Cb^`bHoj zRLF{XJuV?=XlO1`j$sE8hf_GML9chq`Usdo%|l~jbd0_~l)k?=-_j#G&i@jD;@`;r zIyJ@ejki;@pkSalS|kE9@~#etBRV4^`8 zCRZs8>bvPQ^7W7q8wo!6_y$dee2&@L$~r%HlB(lUJCh2tlZ)}UlCTPOvPa3MfoiL& zrq)gMCiR*oX5>2%6tS_s4&LAYJv)o8BZ7p7jlH<=C!nwY2q>$LD>IDva9)aI6yEoz zJoWw`1)|O2=wxPwhCFV`&~ET7q!AZL*La+NR8eo6mEd>{M15_=VR`6I79HV-{utt6 z;^N-j9;oH6|AtR&9?JseaM10%0rbS36s*7!$j5&cZ z$rYG_v;W(?9<S(-pk2p(A~`<)Z||U}R!tZaC}Eg=zsmuIJL50=-N zm4?aiUHMqVC0M;y2hrKh?a$KuPj&UBg`dmIOE5%7mYDTjidA&u*a2u^sBjB?xw-Q8 z_ULw>q%%cZi{z^?pUb zmd@k|h(hq;ccKb)XN#}-{u`yu@iBFiAf&cgCYHH*F;2{MP*wigG?xX`L zs`D^1%0cixt~3<&cgDw~C$?R`u>ZG9K?e!|h@I`k{IR_?69(bfEg-O=NcVPJ?AO)8 z@yASHn2Ef<&lRjDBQx2+x}aNsi1XhmuuZvul;{K)7#N_2ukNqzIXGD}x;$(sobE-?AVu>v^QBqXs}x=HU0z%$JK z{afD}w*{r~;FcG6T&STSsiNnX%I-Z7gL1pKw-*-|_kY*J2n%90Z(x}9TS?5xvAsE% zro#bhoq9XZXUok0cASc;$m{tTrdq#4HiCQW-EYgRG}?y?GQB)36AN-*gG^|q$@j$# zSGDEJ8@rw7{Y#I}lN0dI$jHdRAit%hq_niNyqu1T>K~9_@9*zsDvfPz_7)b8E#JQU zmo;Io0#G1Vpwa#p0xbQrBNN2&$A$QxD@zJQfEqxnfOG}~{!~WO(E$(o@9zJ=z5l!C z>*LkRiiW+tf(&xLj&oT(3l9&X;yuu@Z*N0zOaRzyVp0tB{CtPwsSI{XO3ICmjq2)Z z0B~JiX=6T}er4 zXJ^OI(9qA%ueP>UxT&|dH!5nP!}$;>l0XBCBj$nHJR1mxCmA~(lXa0I{2CQ-Oq33#c!J90Lfar>NuS#%C-3qMDKC3j8sHa zBvN!l_C{Zx6VUV7*x20M+~|@E3WK_vn>o3|Bsh#0R42da~u91^5X$!uE(Csxw(kibANDW zZ)<$os7`e_9DFDD>JZDKv~Ky%*Wv=@$^QX^k-Ry{`^>19R6=yq&{ut0 zf|FgcA*ox}mRlDN*OsL~GdWaTS56vETyfkInaVFnCzU@SxPI!u!iGlUnai=(d7gVDS&xi-3*1x$t8XXp<1@x6i<|RZ8c%q`)Lqig$?zXl=7f_(36ge;N8m|^1 zuhz+>hOQhecWQ?NsZk^l_L11MlTc zbg|L^&Gx+3VjW2I6-=(Br3Elg6B9o+r22|O8`17>-q67qIfn8E4~>RHa1qMc+1chZ z+4Fz?G`BY1-rV&%?N8KbBYJvz#u)>m%zP3`T24m@a5|SODtO zFDlU0!qzZ6Qddw$rw<>DPJ8}aLNXf%E2K6eCI)5jp;Au!V;4)JI3=w@gPe{TX8(o^ z%+0LA@_okQ)m6mmNs!P$S55639UX!&IwE30QPIEs{T}B-G`my%g|_+8J4H0ZHg)5t57LLpQt}8x55q&4u;U9b z75N2xS8+T3nhr20i92!`g}}hN*=+Y7V6Z!BVK<$ z@VlR0!Wg6rrlBDpU)OVHW!bM^_IiDOFP{QNTyZq=zqgN1F-X~Aj7x-tXW=n>`sYwl zQPR=VOII^D8f@3p)hWn`Hr*qj7w$(qmKs0yMoK7mecDTzR~EU!A37NFT~LBf)Pl=UR ze|rUUZ+A&;Z{*JXa7kyVQ87u+_OA1-9^_9__V&znZfUK4s33rldN^IZ!RzBNawmzb zpdnB9sEerN6%*$PE_mYe^8ncUf4i# z5BwAm?0a+JvN5qJ=%}c-cPO`R4{ok5uFbB^-`WbYB6x5fdr)J=lnlSS?A^^JV3?ZH zNF@~*rWv+6l9^drS2Up^;_|Y)x!tGO&|;KXP#X@k_;jX;tNv1A|EsC4tPD&m;eCBV z5aC%{-9eqbilE?NC>z_a&74b*kB^<}+F|f7l3{SA-t~QLb!Am;T}@?GMO{rjB*Cs! zofVL}`ZE2i4{j>Ha!;EJjSIVtSS!%``v)eb=4QoZC7)@xeniA~c~Zd<;}Mbgy;(^) zK=@dB@$$|X69df=N-b3I_Bt)GA0NBgLyZv~&Dl!t$fP}D7 z<{Hnjn&@P0O+&YXSR{aZD;>+izN(;9Oj2?=%I;CV8hR{c-!#R2a^go+)CJB4{n+H} z^h|G#BcA}H04D+XKcfB05y&OT!-xn3VVk{Ju>laVo_qjTZmnVU<( zdowV|07XL-8XDmKfN=$Z(a8z#_iwS|V{}$_vexEi{Fjni+qb7`(U9My7Qubw0Yndj z$>h3YV`J4c>oFE9hR^eRZX!N-d+j6p<}JiIIj?W5;VX=cQx=xxa&mH!I_4T6Lv@F% zK}~+}r%#`5>PbHlo}M2RhK_?zpLjA7+!0yc3c-~ORSXlXssvCHS2+uXgN1|LgWaba zr&HNeF4ZbYzwBr>WTn~>ecgWI7Y>frx3zt80r-D=X`&%Brf0ZUO)-NxqGp z85{=@KK{|kiAWk^-pt^})Y`=0$lAon+5(gos6`g(h7+uONmX=#Dco`PZrWDc;5`v(W9DJkDL{s3YK zQ1*vSFk9=#HYu{$F43e5&TIk3}Ca;&o}jc z`%dL;X=$~sBf#G!COHFFF_fjJwtEww% z?Cp*%Y^>Z|T}$%w5m1oA;4;UkiUFcC!nGVUSL5#Pj*FKD6Rr~`;*=e3jfc94bWMWr zo5^JT++VKOdHR0y<(R-z;SvEUN9hgS- z35-lbWBK5BW*&lFaamc8?QBg=jg9{q*z<*QC0hlo3v0{Bh>ITsEaD(#VRyHWkqqT|qG69(b;N5+mu1$4xHZa}XOqK{u zX1|LK;2@5F{^GW6B>}a75$=Gp>!HseuFQ)Vp1s7f;$oa9YxOcIbQe=ij3Z@0GCVN> z&|W&qIw4vAJYfk&#>S4o8lz|^p6W6x0GEMGC?YF^5YI25tD8-(i%(QgdX7m>OHWTv zO+7p?FfcZTfQjrq6O)_U+w=>YBPns7wSs^L$XGeKquecuzqsV2eGd*Mw}Scno57<0 zV7mRHyE6%!MhsYE%{hOytVF@ry4tJS{f~=jP_ONqRy8#+MUwGY zo|*l>Xch9Yb?Lx?kbaMW0CN`SpwfBpQeN`=*A5fdc4urH4z~=w#_xnHcqGoG(r**=gB9 z!BB6pG4DNtT9PulGNP)Il0>^*Jv~&N9X(A|ZB0#eUEcX+?)7c<2wyDR(fRxTE-eeO zrClMs%>4V;U_*A6VGQU*A)as1 z)$s7J>6w|k;iIdH>dGP;TU!MMn43bE>=d6D5>B0Okbr>~UIyiVmkj8U?hogi01YpN z0H_zi&~Jde1+OFgaG`*La+{W#3T2WEUy-Q$f@#N!z|%x#CT*kZ_Jp>J5ox%2^BL-n z=*7o}D$EIuf^M&B{2LJ=;mGhX&fy_f(L6w|tTdSzYF*+v-CtfhczbKx*_|g+N#38X zLg$dBx&n-ehW{M$u9=tKbf#hNm=^$gh8UJ?xT|&4#X&fV>Tt>P z*tktHg5M$DECcdR} zCQfIG>E^dr{cYC^I`ZpBnyZ5mGL~lGV+rMQ6sv%>7?07X0E9_$cmntHb#xkj8k&-} zHoQ{K4@dm~TsKZ&?EQeS`wFgy4@faLHU{Vxq77kZFjxZ}6*2n`$r>R48Kzy4PS=m@s)K+vkmvIXSP~A)DNJ#-BZFp#CNp5anO^vUk z<1xQBNzALAXG(fHJ`WF%o#U$&pu}QVG&Hc5zX2nBnY{E_p->D9iKx63C00~KBdift z1h<$$6z?nNrSM)12EFN26+F7i0xMJnfQ}Rg9jTs^07|5#xmm4N=lJLdp&A|zu27K< z7{kW!74rO^wEH`N#plG|)z6XR(ZU1!&G2O`BOTw={Lo1A)yf#s*6z5v&c4&TjgpH? zh=+!el5%2}8R8j|ghUrs+|<((7C2ZL83tNfb14_WExlgBEkXPtGG?GlmE&1iS!HCb z3iOCJ9ncx{be8IAN@HrBq%rI7))7910@B?ml9i9=(`G_~!CwUliLjSp#2??}Lox{r zcg4~>SV~P-NBVtY!Ve2$Vj?4@Jv=-V6wuG7hmQdc335WcPS4iZmgH|d5A@WZ;q<^< zG;WW}zmRtM9h`VzmRWUk^02v`vii#U0LBaH&+KN z9{^PJ7t+_)N9hHW_e*Jjc8XOD^YZedgZ4F-e1QN=I>R~B|R z)Rs21c9xTGk4z|wh(N{KWkuhOl$x=#|6c>!=m}4+gpzEu7ts| z$;Cx>8X5w)PtaQZBFMSb)Tv~Lyx}f0u)FzBUp_&?qT{HZ%N9{UA zV4V(PsO64^Btbq33l}EKpJg?*PHJXmGE!1R!(fQ7l&JPG@qMryL?>V#zO_&|STS)O znTWo`#MGp`EZ?@~;@Vci%|CN7c2?DOHI?n!YC7Dm3*WUCYO+|BFw;bXprK!lim0j> z&I^gGh^)QTdp6dh3%rJ?Dy`81IqvKY$r?dVx#4&MTNiDGBG_gzEPZlKP?gysep{>;@<+3J3H7IF{&C z!ej=}<>4}6kJ-ygaGA!f%B#vN=>QE+L^TX95qP3aA(r9ENg|xT=;`-vt(;t($++9& zojJLgE(}cHp4avj{mU|XY#Hu z9qOtoPAtApPU^P%y?IHRUsP8s&=Bni)Zd(V{K^&=UoiQ7{I&8izp+J9vvUAuk!WlG4Rk6h}`p&?7Y^Nm**E1 zF^o-HSytB7Rdi!I{+=f`Ev%`g@xKq^79t~}+9Y)v>Dfzi**oO9ue>B#z%%`pcHoe( z!W)nc3Mo;+l>`ova+xk4Xq+pM`4L z8ZkZ@QIh0SSkW**WK>qwtWGbDZ!QruPRN1=NOF7;+mgQ7tN}qu9H$vx(J_DH z_Td32Y0a&zZtm`Y@n+~(J4M7C*)Z?dy2Dw07q>eIu;SR}CTsP}%gdF6Gdnw(n~Ot4 zWbDoTePeTd!ml2O*GI<)-g>=)nC~K+ovsY9u)pum_}tDn#O36icVU=aW=BRw?Ck7- zh?kL`rT_Z1vd;eK^aK_r@ZicD{V#K>Sv6w&lZ3G*GaVhE8;5*q>grL|(NGM`iwrQP zJS%p%9*)G;J!1s0+hqY^mX?`mPnS74JG=AS^Bv0y|7aqfQoV}r)h-QAKEN&S?iv9g ze&<&ZPM6z7{>H4|Z8^a8ot7A;$(R(q0SS}r zljycs;qoH}wc=ug#~RM&3ScEAeg6EJMHc741lny-l5$d%?N=oJCH5mo@QT^LX;XEv_^ z$3gCU;7;H`Vu9h5=Q?!o--dyL2C^77*7I|MkRCaCGq^ohPH92W#5z;m)U=%3#*Pji zX6E?l=&Hs_I6=;V=Kgw)^Hg;a9z`W3&-YgzyB(%h2%RHQfLH`v7zOA3U$h$nQJgn4 ze;auUH%k4W_qG{Wt6!H=Ih!yVUzi+!=!s63@TPN34rQ>?voxK zOT<;XAtV0TEq7}$nDMJPouC3;$4|PRA785OEkwpYn9M0C2=Kuxb;ZW4Y;2UD+dmGf z)zwuebht+c2eF8;7FHtQN*gppBcT)|3BboyZlvz+56gc*o9&o*B)F<7>j%v=XIORAM5fZxj=pj+0gs)@AvrGVcVrzj@mlx$}s<3RUlvBmZnH3=R z(Sz7o^TSOk%>2f7iU5`!Fl&y)y4$_YR110C0+xfwvoTC>@9?-8I}O$C2r3)WV3k7| z&Tj=n{3K_;3HX^E3AOn)XF7hVC~B#0LUe^DDvg~#7)S*@Fm(dVFF=Uk8v#OP*8H_o zqgIj*3nzHLQpgt!ip;Y`bBFG3P!+OnHR~`+OejnGdN1_RZt; zc&a=q$4~z#XeRBCydGLZQR)FenFdKwKg2ZlnymW=;`sXpRJ{}H8kdX{aOUqB@z>3 z)#a7Ljl}p!e#kB-+UWRcyO&v3+T}sk;W%#mYu&7oWc;{W^ZORD_=K2hsRlHu{@J2l zYn-O1c>m}Fm7mLLZ)K&HgQBppZc9^9Peryy!1MCo^Rmx24pBF2EmZ;}H8ChC30VL! zZIARYsvxfz%~$<5;{AkO@8IEbECf(E>e|e8UBv_P>W*oonQ6X5#YH*> zghf0(VFL)bzq2?*!^C9x&j8(^07d=Q>M9;SK0@{K($e(v5v+;krP|SbZn1;DJD0}zz^Tj!*$9EICv7^1IPDeSNLgz07(r8mnlb( z5zr~#U1_lfyMRKc`{2}?!joCseU>P&PpjaCGI#DWn`0Tp=?-?VkxiyZ%h!8@5*}@g zYomQDrZVl_{j{tSlPKtx(c#`}M|!|je|~m`8rphdXKC{2%COW#iu4LYjQvkoPRW`; zkjNVO$gzdvC*bqU)aEraC25p%alxtAQ&ePmn;RAScwJmy{FRl3jfG`oY3Zn?_57ED zcaNNE&(n12^rXyIo7KjU5SUkr`}cRh2m!ie3V5!EOx+iZFK{7=&^!E* zM_uGhN-93)JC7q&aS!VCaYBC)ia75=ErD?g!&!1>JJl5-8R8jmlvh<+eH!My_37~y zb!Vuoxy4o4=Mr)*$PG1C@M=a(;dt{h$T0?QR0j(j>9s4R9ouzKPdoFK)t9+P7&vVk z83=H4s!B`K3(+$0F)S*-1>Nz;1CiBSS2_$#`n9cQ`ee-Ncx9cPr5V-10Kenxj2v)h zycQ*MKd)FVQs_USt$d^o6H*koy?H zfGr+k0C1B_k;XWpQF+O;hvYnB*&S9Rx^#pC1@VFE)wNQc^bSjqwHd@o0tK^P40hv{mY+o^vc4Zziv|SW4NOnNDkXVRo`>vHJ|%AfU`=2-L(j$`@Nrc)&|BKd1Qe{2Uh}k5S#Exe40(h2uLd@ABYnFCu}+Z`HaS zX-^~YyRzLGhm@8}g>>b&Pr#sr0mGWZGJ`wel+rzc{Q#fZfj_3-Hkyhhr5vZ5bW9-&D|a}yH&esU?wh-^sZAcGthTT_sG@9@Fjo!e^z=2UankQ2K~K@&!H)--Y| zQ*Ou8f2Rxq-9xOSy*;A)?(|~H>&K4?B{Z~*XeWJHWEP0d4yv`~_sZet4z`Eln*t0^ zt0kEQ(k($@Hxm=;W=C=H1bbFM>WKstMZouhfWo$*imX&j#<4BV0+%gtd{J%}b@Q#F z*7ETlAG+(SsAzItor0XHXMSINWKeNkB@5)}Ft@PEPlXs7YVPtLg6W|l-~EXc5J*1A zGBD8fC=8IIS=x$wOky5C?bto zmT&ldK$@ZenXM6q!KSo8e(xtvyJ@CwSa#pGZZ(9Ox54%fU)UMUzr(+qbDlO5 zljQIVY}jY9G@@1-6Z$E5^*>(b-DSft}(>!`!+N` zKM%eq6}Ay!ZI&y#2Y0i8uHY{MUGv2D%Ktt&9}*ItI9B=S0Z4rLr+OZb@AFiKbB%4f zcgC!-0TYh^-`vrl%IGTelnj^E=psj0XC{DpD=I8q?_w{Rf{f`eXMve*Vd1*C*hEe= z`8b0L`qNMJQ;X+m^wt78FbZ1o(b??JZTFjnT>OkPB>v<|B&TtD%gxQVMaf1*Xz=&% z1952gfM?*!k;{g|RCnL=zlJ@awF^3Ik5z=5j=dY9gZ>EUe;!#?z&-+#IXS!Qdu!od z_1v97nu#Bs2`It-7f~qSfxI@RfGx&PJWe9w;w4>OME`p#+S*w`K|vuQCUR$Z3xk(q zJ>^7*b`!5n@c0VPf=wi?QQe@p83KYfBEkdy5U6%&RK>rxwx`LD=;67P3JL23&W59$ zmQMZ^wt`rDXd>E58(Gb(Aj^hY+_kR3)v5Xx+thO5?!ddp$1Gqv@?6bmTU@H2yKYMOa3SzUVvEA(%}3tU}C_PAqH zNWgJNj3G%MZQ#hCb0nw7^n!w&;bEBnO=|$60D3bfW@48+!-2hmq{M|TB63qg@!May zhlPx1GTJqB`DXMpi;=J8&(mmb>0~HEP4c?W<>77iwwr09-%t$f&6s=)Y8bb@_ypO= z5~l~Sw0*?C=?k=Q9-usN9@iKuYeP}D60+1Fax7bmv|)Dpeh-^X$@v9X?SJK_Dkr2_ zm(`gtO@HraO+*7FCZ`H6{ZuEx!uh*<`cqFY^rKjqhd<1YlZsDr$fAGk*Z2m`Twm?~PzCN)(i zbThILz{C7W;+`1L)7K>+!3FI6Y93`UZYlxXVb|w@Yn>xUS#4sjN)b^sVNI5Rwiaow z`|5^jtuwD*khhI|lW!TUxPaw(;WKwJ^}M%NTv9><_zr&jIN`5`W-1tg=UXz*^y zVG-}oAW3BFa>8*}JHDu6TiLdDyiB3hz3s5g*m-B6PXBv`>}sovjXry2tv+~SRaxVL z%L#Mz-}nfbxeI@PR$J4Zm6}>uQj(F9vmD=nQBhUeO3x~wy|`e;(D%p|9Uu-v(*5o0 zFR&UtB&bR2)D6}5H0J|o)6RExKkV)8H=f^<{LDf6eSUy`F*Y$sOn}LX4pt2F-PE~_ zv+wmi_K#%4`CA-~Gmb}Zmt7RW7hW;SB$7n}`)zz)Ndrvy^CuUEsJZ*BflmHV3cE@A zjg^ntErcM-`76;ss2+r^J6AjV3jY5vIVc{ST#eSAxzh7bS%HodIaW>I zhWOowcMzT;DJ4}7@Lz3>eZ|{(u7Ezw#r5!X^!snArMADf1o!bpO9@aTKz21dUp*sY0GTPl!2UW1kOVLI`gm2gv5Mz~L^WSX(zzDavxJX8lb&-s3L({txS{d@=l+`s6b4!C);HXo!0t!Xm zx1o8c>Nkz)z-PScKdpwnJeeb0TiC4}f)dvRtI^J_RP{{sH2cRpfp*pIZcd7+)c22_ zWrYC)(!7=jwm)5(am-c6Wck(CLMiN&BJ?Q_SdihaE~I!y3fh+SXQ>Rl)S@?Q%_5mc za$3>C3eO3H=g3&uzL5};4%D17A9I-tFfzsl2a9Sw-@dw%tWD3`kGJkU?&@@l#nW@bxkA$v5ctt~CR zy}bUYsXjh=oJ>x6{)kzp5d=4lCMzi3u$`A29;~`6*>=^^WRyHOWf=_rgR8ZI+SM?w zc+S=H=J`e6n+^fioX*p0L34fyn7x1n#rh^dyPThsD&%2#xAkmiyCOIP-Kel|_ofLA zkO<}Ee>8NC2^_lwB*<3_9OZH=ZnAR!t)w|6zzDLlgKu2t^J3EPJvk?GVPNg(DEar} zXLi<3$28i!bcV|N>bt4Y1MLEj1UQrXhEpHECbucz4H@JM@glL-}ia0Pj>^e zeP zyDvAPZ$iY5*};qBwI(^Tb=3V{YB!~722i~3J^jy0fx##-6%`fjoN^(+y0fz8qoSgq zphTt__1`B-yUbYxSO<=%@7U9VVFKQ*6*}9_n~T)ouQ~6-8Q5T}ZnBFsQ$EWKw0hgF zWSqTyg5U0EaSnbTkJh_bIXPm0YEYh* z%?M;9q$IVUJH6zzhBm%~WB2(%2X>yEY`8cFRiADkhIyc_t|9GuP;2!R%S&escGnyR8=Fj7sV{b8{UE2mVju=1e*PJdwUDWNx)sy!b+=q zll+&QsD5R7m6mGAWesi}QSc@i&U8{3a zt1fRRF6GQI1};Ca3iTt0jq2+5)cb;#xHcKLC<>cZcqtH+gny-*pP}?idyq}WH z=jhuENQo4zNNzaOP%unYhWlX~kVN?Zu?UCAZK@)7i;d+@XAL?d*5@wySf;E~UcdWN z`OxKQBj5)2=GwWd1Bz(iWK2v9Ky-=}AOYk*@O4yFr{|3sz#cm~UTt={ z15T!S3m0#1Z@}T;@BaZ@iN72hdxJ+O}|2)AwbQ z2~UH4adC~elj5kY*@dG(+scY);#>^}=M!**WhEt}BO|adFwbzh&OKPR*q?0i9aNXt zFS~y|NXwXiV=U4&$Hf?ziAX{${1=k`WE>|hEQ%dr0=>kJI+1;!lU?siR0PFY%ATbsUvgTrHTp|O$u@NXJw>J31} z0`94N`=$oy=&`YkRR6x=$Urqxh#P6lG_9g zW~Ut^0}~w$kxF~nLhDCV@En+~4}()Z5Bb{+*5_~8gke7y8W9$i_R6`PB=D5jByV+D zW%+bQv#Ut>Q&g@-PAB~J*51v2=}vz>IEA=c=aj_y@qrCuHm8~}L-;)dcpu6wxWgjm zk_>=*%PKlLP^)5bml0HzsS&xzh5G?xghuBFUOymrQbfwpso>EJyUG5k{&WFX91mEd zExd_KH`zT1c7L>4UwpWo>vq{55=NbA)KPEyCA_8gwD~LBDS4?GYN;72o9QW=338+6 zjx&6A@pJU?N)5>l%K9^+Of~X_J@pH_S~ap#48e0a8_E%zB8rMx%%XXrK>ebW5iQpZ zY0;v0HV$154!VXuzkyrakB_fC*T+S|NaGlP<6l1QzGI7l!{&OJ^AtRoAv*dMIh> zM!LHjrAt7%8x*8VQW&JWyF*gxE&%}v3F+?cj&D8h@%@xP?wMouUTa(8pB zvXx!xIkj>_wQxfh`M5q}V)FHh{L^p}fg5(*#jtAjlDEN^VW%@oQaI#?HZi(7rCSm7 zyOdKw8BJ_#t^1gwskjSoLSr78y2Dx{=(z#(T&kj%LwtRMFi=32Dw{tpz!klNV+TztG$(BJCk zl*t4i0Zb?V!*B&|Ic57yd~sP4(=dh$Y3~pHYA9JMcBMw5Pg;r5n2}Z(Ki68`#`Jhl z8R5s*a&zUFC}ZmgwO)TzSvo6hZLP9Yq+4+tu4Mdl3@!eimlv0wKHuH#2V&^~ET?+_ z@uvJ97-&>lG zz7J<7I|qX|4{ z2cui8VOL~VqP^|rH=%Uo=rJoNIYRjyZWk7jASN0A_YYLgG{6ia$gdCS@^*d_I0(c>i8@qIV;U=H_0O z{v8Ni_|HDCKljF|_w@GB6yWmk@PITBFku1#-)6?FpVkV%)URjI31vhzA{a;O-_5%% zv_dVV5--1>v`e(kF_PyuT!-3u8klnQo$0LJ-}{Pk*_z9~S9lcKnbf)2v^m}`-{LI- z2-|!E6DhR+%%kEY<9@5`{9FN)!DM9z07BVA0kKX@ow{s zE(I4xH0JIv6Zi*iWbo#R!>Z4a5B2#dZIa&R)a}aKmC_TIk4N^$BzqLip{&c3ci9dM zYm=%4T|dZiaAe-SOOA^>TmOYdDj{>Q^Ya-nRVXMZo26K0xKeKp4yr83j0W>k6ZVqo zX3gu~_=`g}2BF`6oGB#F{-K`Re6Q(VFDpNJmEN#eTs7a&QMJ6*9XK(;IMitqgr-}p zLlKvV1!|*UmJj$xcnr$?s|#I7mXI5&sbI88)k0Q^+hJf^*}#MO2^RPeoYwa%neOLU zzauPl3Sm4x3(ZY`>@WTDJJ_spA*tW1o~=l^@n8XsSeRt~0SWRB3Xy#f=T9*S0DHbP zay2cDF=EjwsNn^bOjp%+%8FcEc-0p!8WEhp}O0 zKa@mSr!yC2_T4uUc3qL;IB_k&%hQIOOQ+i+e=c}~&xGPSq^6Ht-c+&IEChe@$ys$T* zGWZ;q7eN|yyd+F2gf5{^bM=}2ohuFahFWcSz!bk`n2(!F~Purg(}NQ=njYMmeVrBrZPkFSZSNle4^f@ z-copT(lsF^+GqCD7AEQlA=e^q{*3)}A&?;gD3xt@v42kwr$YAaTTqdsww^+c7G%3n zq}Gr@adJsb2aGLxQc}|9))pw@tx=fmj7|>OqxRvrsUYg`6r>AQ5w_yXKmQYG;!X}- zUiM@4IZ0wkKP80@iWD~qmsT(Z2!HQrFDszny16}_-5nR-S^sxkClr0cc5cBSRwG?vFQ@2Eo^p)z{3d!9tMB{?W--Kc8Kl*dnQ<~_WQ9@cHG zwwxTmZ`qlaN#uQ<*DBNkfj#h1Yb7|jx$nX<>8L906(=E{u(KPou&~(J*f4fNK>AMG z?G4&4pc~+PF0$^1J9f{N^6d}H031AgS!pT2g9CdXe*#hh-IeFfRGok$&I1{fvGU+CpYokwJ-nwYnv&+PV#hr!yYSR7lNKW*` zb-+D2+_h@s*G|>tH-sO_7Zc$5V5CmV$_i{4$Bu2NUh*{i!?|-wvo4_}@ z?&0ut9nRMekBp2A3_!4Qs3}a%%_o1j(P{9}z<87AjFdiyENCdzKOc6v4w}2xhMfN{ zvPw&mq*a!8JM!8+ZawmSWeESr5Po+w@R}TbF;=xE8)H0%pYyG+l_Ki#@m@?+d#&S& z7`1X{uAO7f3h1ITEzJHI4-?PmpCH> zgG!cAk(I5Y4|StO7WS5Ia$0UcJ?rdabf&>t2DzSjYUGWc|85e z4S1RTEkG~6{9U` zxlOad62AUQ96WDpb4hVMft|bkKg!M6?m+C*k*w$U+;7|%X2FGWizACnF8)2<+wwhK z?FQtI-&Nkbwq(?Uq@>q?Klzb@7hyl~>yIeo)saI;J^r(HH2D?>FE3KZze@cQAnI~6 zR8m5h&{o$JaFY)_j3*~@N?|o)1tYQ?y)!c19F#Nb-cbuxi{<6PM_i{6YlkEQIVN@0 zYL3BjuHj0jmdRD4`Av;wQjLY|l_}kszuJ+F#cFKi$r7D%uXl}Q;^a=~$Id>reroH7~jbrL$}3JJ6xEeC(8 z$}u25r4yhegCis8ZlVGLa^PqtCnsm9_4dzS6@ks<@jukl3tCKR(+E0amJCPCY^uKs zi3He2IH0kSol=e`=wpZ!QLL*-1DiRKtu%f=cMaZ`nRyH9uom=il=L%nE?3knSGUb| zwh87Hi?-&`ROc1s7nS6-SJ&I;cKQ>Fu`mDZpE3S->eOFS)t)*WYm|Gf>W>z%JhKd% zhc>pRDjwfH=;&COt;1p@I*z|LeFAfLwFW@}f&2pV;+4A6@2x9~i+^WkK7dsKIRq8? zR2#SxlEr{A$E&r5r?P>ys+>2ke9OwvN5YqW=GiT)gO|*Rmn>Vuz09VbRdVB#Mi9PI z`!I<|D1XCggjkXeb(UuMO~_Ph%HQE`)V022J z<88Mzh<(<8Y}1oLAOr6pvbE3w@n^!pF)oS6kbJ)r*pKLwx{&b&;TAO16RfKkoq+n0=FtOF3! z#|~Rsuw7rj!olJe;fhO3EBgN3-pZ=Hu+YTP66lO(mbhUekc@sASc{z)IT!o?%&g&g z#T;i+tICh>8no8hau0I}@T8g=4o1e`qCVFWh<#^gfApj(HvFUODk?}(-}qs}jI&mf zfrGq=$fAfyYR+Kb_0-~`2s3kQW&3x369f&*(6E*%M8{dTSkzMwUY6y!i3fxT-xieX zWsWbZCzKYKrJ$wvUHc;o>)h-tn?aMrrsI3u0@}WN@t3xmpDrfW))C>6J+kgP2v6|6 z(a|dB&IG`=2Ld>_VhabW@`^%2JUsO39uAG7tk1Ti<~pz1C#w>vye3|~4mU|t<-aU= z>33xiN^RlROidtpP3*n&Px$YQ-YqgSo*RJ1Nl7E}X#0ea=dl4$PfKfgI7R~7r?zV9 z0Yp`x-4Fkbgop^pQS?$XkZvCYg@vVqz{3oK4_(JD)&&`V_Yq14=l3hNttp#n-=zv; zx0oZ>pS;Q1rp?8KM{v!mElfT9vMjPUaujcK#C`?{i6SGh9`xn932t0eDn-0-zlj`}p zx8JyItw#?b=>d8B%0K=u)uo4V{t`lzDyk`ey0cvpX}%tPTTNyK3ZMT@LG23@k9vCl zqx2>w;zB}bIXQ`vIZK~R5Q4tOSA?<9^;Bp=wKFt_ESMI&$_KnsEf*kprmfnFBr^JnG?3snbj{&V> zTOFeIGdjAuzE@YWF1EI{|B2&DOH1J)7^UUql7;X;@^sZddoyUH8wPMhAd)#y9 zUsyP=O3J=&GG<{7KUAA5%f;;!8z=uQlcmLF=X>?)P~rZE%*FR z`iPL^#65lA?|gKP%bbX2>-9jDC<5yk78Yzrx?_p!IC#I!AV4vW@@Tk zQBj$dl?5u2Kw@?O@bbiE=4~s>-&j{)4-j^Kzdc++F3hqz_HZhH=?Fn&PO|6k_TGsJ z;zT*8Ow{X^p9k&5Up%(APqwzi6vF*+aD8d$gs9)>{Q8qL+$~0S$%5g|T@JtSp&GhA z4S>x8Q}y~yolrsz9i1+(NNEKHoPGY)EU)Vh1;u14#RT>|iA$^@QQ%@+Q8G(){jtkAld~hMcvsDJAPhfbr@ss%ghG z#rW>7-NpId!Wzvluj*Rm-F89ZCOyg-J$28~mp0nW0T>6k@oFwItNA8LtoO?56J}3b zq=8`9eR}rz^aRq_Y|-9Fq_ZxG&ayC0aGOe+Vo&XXj2iS60D%Xt!jYZb*pXco(*xua z0Pv)s=xn%l2y%mwq-fCrJ~AgKr@_mlBrVKswxb%>IB-%rrszHu6_{BN<}sKQa4*^P zbDl4VttqKGW~a>e^y&2Yd~0EU@q76=;pZehz3hnjr^=M~@f3YB#t{)ws3fWvDwwt6+yrb&~Gp-tu8Lc zsF0R${3rvo3?w8OAPUY?gA(uWqoSgUiFIJTFV0~=f(m7&rGY082}vt3Fz)Z)-`|UV z;h{g6HE*9BkT~xoC;ZhbI=;whFv;;j(_36@t$X^Q>qb%IXXB8{@3UcHMu&$3zyNel89^g+klxGdPD`tv zwKD5gI#lA*S{Aj|>(`)B^z9am9e^bb2@3smlyyTPLY+(M_}+G)6|$PmC31XnNG8)5 zqd6V5vy#@7^yo30R6=f49T`a({$*YCSzc~6p>z;pyLU6MN0H~Z!5Hf7VE!~A@v>B; zNbyT1Cp>&nm=R%%^j-z1U{tJy*A+d!kxB~0kcXr`v!t!QQsOG87+g2)BI##pUf9q zFf$8y)-pQIPb*`*_WAJbN^JvtThGrAoIqssGEqdv=S)fRe2sDCc6H@(iNTi(Q5ceS zMk9Yytb`QW(eUH`4f~C}99Hj*yrd0Vp2`Lb)w7D?ML{KNL#%(@&j%aJyWhxH^2%2Q zg?%JWwVffVGZZ_4L$4&p5WP8Qp3Yb^fK`owjm__B|8;cONkPuYJ@B1Tc70rEP}b7o z<>8s??UmNk^M1Mq^=(%`;H!0NSL#g%JAj}W8w(2y7gs}FJun>OuCKozNly!)pt2BQ zhP&G&?UeweK5*lJym<{ammLu6^!~Qb)oE5n1Q$NUsr{`UHJv}JJKI}3>v3<%1Gl+o z4xB7T&`4V4ZTCFX8W8U|#TYN;4GxVvO7t~16Y{$0R~P=SCxo3r$g*yne^C7TwfqfP zH5~Z{?Npi-l8$oQPqN!N)W^`^OQP9W`t9^&Dn{j>sufv}5O{ik-?>amZfzpOhJ+Ax3gz_^ynZeH z+vD@+fP8@ZVK%LFWFaPH1f1+;hjUJ*-inH39d@jBWJ``Dv`e>VwLkqi>eX_?O>2(n zrO6Q%=+Mx7>>GOsJD8=1?NFueNllarxH3RmG&NzkrtXQ=S(g7Mj{ACVZD%+=#kry& zEp5}|WFGWz8doR- zX=-7CaJCJ;^sTKewRvDw0Kz&ziHoWkj)ZZrN49&E!K9rd%I9aSf`Pkb zs#)VTJ12;NKI-ucX1VMB^6XLXn5g5Qs5gauu6J&|OIzK#slxqaK!7$BdZL>1O!?+i zQfafGl*1x224_8$o&78u_E_r4K&kGo?`+X_<$BB<=82B^=ilrli-Q@-HiO+0KEDWX z%>Xe3St)2e!{mba84VlJnGf%y&3nKc0x2c(u#~K9Xi(y*c=2pzei#6;N5p+UL7#oRw+#O@!)D+**@e>*i6vk`rnTP1ieqjVCUr?C-oa zFFsmTjgG!NG}Ix=`gDAlc2iO$o|y~{kBA_`YVD4I(|t8Z zmmPBV_t=o+L&fUWR)|*Q#%k#9&dwE(q=9WMXjq?TuR1xqo}QgGd!AAE34kXfA>T8lh&CBZS2HN|8}*?d_z8pFk@$ zKK{KaJmt2mVwYk`o%#NywRsE-MxASPlD6t5o=8)Opvd{iZ=xE%qN-~>mFvpPL*X>E zld+uMSXSCFSYoa)kPk;_Hd}kEspY0;d{4d5!Ej3a3VSJlZ#8Eq+*oZ)&&v90?!1-U zG_x#cLlfNuj&C ze(dYZ5pES}Cx517+%j@s_EguEbf~JRh)gIjm-}3^=|!YSa8rDpZB*({gZot`6Bp@j zr#0D~($gI?8azHRdF!L6_@W7xLNL!MIk$9OM=VUnxgi5PbaZ1^SH}ChZ8K9}3d-+4 z$nSxz9K_ZZ-NlSLCs@^N5DHnz`-pq{G?nr=?hUu4Hq2=Z{|CmK4Ssh`DRk^;R;Af1 z0hHDZ4VN&H$iNym0Af~s;1dPXC1+RH;BRnVSwJ9`k-;pE>0&?gaB~876BJ9W+BO^S z%+t_7jm!HU+Awe@Ca>t9nBr4Ve61jRgN;i2d(1Id>hAu&rMcNQJZxo3R#Z+QYjA{! znTh0kX82Wg4TV3I>Ll zWQXnh(ZcDuxK2u}MdX$IaIksz2u`QE&&rCnxHW$6FifG*Y-oFXuQuA*QM`UFW+3o# zmWW5^2QyAs9P(mGEb{f&iS@4V1L7@7%!Otbahi}|oaazCj5iE?`z9Z1%Tg;^1}Jak*SR8N-pr*?xyabG-lJ&nrCJ|i-?+YJzW=EE?_!Zzhq^+FbESQ_~Ir|loYL~4yR6I zPI6@z7MW+JKi_^>@7>j@82Bnhj))+Ng8XIu;H7W)AuQto*ZQBlY>72r!^`Y^4|;$x zF=5-xgjYf3lceF%*S5uh$-k-Pk)rXeJZ^Fb_9EjeKUMrERNuZuLcA5e^&}|H9G5h?}tN8*cipX*X3!%Wz2Lr{v^wYIdZZ)}9j zQ2izqa+TA$Ei4HQjcZP759Xtbw0cCgQD=#sIOfqRxvZFm)g#QAq|G`H6|F zyZD|7c2aFh(3iJ6vQPHE8i;Yey}L)pz*zloJvNSG_5@gBa0mn;WMX0>!w72!2Nw^I zg{i4-r{7bNVoL5QHwVY*#aT;}fWELmb9Txn!BLIRiM?5>5>oedot^$bBN!d_TXz{( zkUqNCA;skNIt$&sk;-vG_A$ieXAH*mOZH$O?|6)qX$MY@${S9))FJk*n0OraU%$vB zkYi9$;I`aE7O^y8W~!x0?L8flX}&HVXW6H)gIQW|*2RAwX#0D5Ta;RiAUa+V5kP38 z3^fBuNlc7~jZNv-ukb7^rMqAr^Zi4mnYFMPdfDQjj;_q&F>(YOK}u%1m5vVKM?!Ba ztM?*{Wd@lEYP!}H6aJzhbXYIysyAe)R~WgC^>;Sb58dq8KApI z2Hd8`n$T0QyJpThUUecmaU@>Ie887wVxkJKe7HUg+yoKIUHh0D)jM#C#QOLIxCO9H z1P0XvXbWgOfA7qpz`_*$4(0-yzM$Mc7eQcQIqHIXiZ*O;difbR$gVEW8@PBjO)Xi) zMla&!-kWl$#}VXHv$GrA=9b+_Dqd9n;F7`a>Gq?M?(?Rn!Wf3w!BUD*b{P-%8uoah z5A&x6%!d#&s0#LYUvU&*({7C>F`LpKZf?51JU_kdbiO>O+th)ydp?gHUDiE4+(=Ua znRHVa_BOE{!vg58N(Kf>bT+4zWmRegbW#+$0IQOR*x>Of*yzoQp`eM?~o! zs6@<_qxOVpU>iPx4=vlZfzsu&JQc_$+UO}mq_>P%`nn|qBk7|<=91IHT@I|kOp!qz z2p<%Kohy>54|2hl0w~lo($c`Aw9>E@pIUgknDcxTxgiq)+>Q!6_bRyr1$ zTKxCI+h{%F%QaYHa^K7k_+{`I);8!v#_6M_5e9Z}Pa9@BCf`i~b%m6cF z9+U6VSgF4@tNKhWkb)Zm*H~R43BQ93mc?A6`{8W&@87>iM}hwSgQqhnrvfcHR>isa z%y?YyXeHQQ4B4)c*ux1C{Ne~B#ke+k2Q|+aOr{!)K3V{(a-d89eBc;nD-V?2a4*1* z12mM9{!)-F z4#1u(At6DH8_2GKBpejcfx-}wLFnoOlanr2KP;yXX1f382r%*px{YTAL>m87D__Hn zLPK#sJL4nUfvt!Tj9C(N$IJ9jgkK#^4|S2ta}gFtPY=8<)64J#%LKH!AOadlM`58au=G^bDSNSNSI-qQX+5-e*e<_ z^Jm&Kvm_!1Q^BMY<|P0|Jon=Ar~mqgGw1zSirc_b`Bct|+JWaTEUBRqF{$5pi{r}M zD$EO5O(i};i4pd*u{F3+)~4?Hd18&`!b|s8KybZOYx;GhnLAE>0$9AjkH&aC(fn%o zC&vBl*#>BIo-8)gfYWxpCE9R*6deSkt0nLX0s0#0JF5Gc8e(1uqD@T(?2Oi;0k6p7 zsvi0A{f0=5mdUHvb*ce5U0>lIW1&0z9~CE8;C>N`t9*W%3a-&WNUyzs;pvSueRYB2 zBFsFlv%&aSHJUzOwJM3noj`UaDe;I*G}rC+ve4=^8G=Ue#n+dci%Ty(gPuNzZLW_? zqZ9tX6MS``YFSfLGw!%N(rWp0w4+@+4FjG+$GaGp`@1RO;dUS=L^v2>mIJkzD4X#< z9!x?=W;-`Bd%l_Eb4NjrAtXM>r~=TCxzOj>`zk}6P5owm$9%)i z*{>d@zu7f%uAu}US?05jSPCY$9$8`hQoTlSP-a$Sq{D-|k%I%ce&7-WIyj(cKJiG& zrzlv7a;pFhtpHDZ`vWin`7!>NT(4cvnIvR;xxK26CvHTk#;%q&(`4!8I=f>-L9B=P z&j@MHAj}u$lR00zhlYereWJ#XR$2FgY~Uo#&)*2RHXvbje8FC#&0k4ytH>7jU!I>2 zZ-;8>=%fZhp-#Q`lM9VRYVYUCXDLP`D296?x5(|`xcuNZ#EA*7Ipk$^deSf-#?|yG zW~=KRPeQVU5gHuwmfF&Qj4~(ZWwF^sNJt3OAi%U&t;hed9&be-0O+2QmQn?rH&NiV zA{)T?3f8K{8d$jYo@_&WNZFUYUFy^{939>F(KRZe@Ja!rIQ-osy;hlnLvR$Vsd3$D z$^FUqxolfvdt?i<{0_Nu4XjIOKtK&K~ka46ysPjsuZJxpA$j^qmGafbm6>_XYa$Z1^ABC84sR0bxovLn0-3zFabj>|u-F;8Db37`IV2)x)x$(U_Zlrt5+O(@X-z-KqR#V=`0d8(deXpdwnguF7jdJ*M9}l#+xFh5CbP!*G zH|*?;W<6XV0ikWsXJ;^RO;0CgSnlkrJw3@2Pr2F)I!B`7rKX1S=CZTfe?`Jq0Sxs( z>I7Eh`F69A@oi=A#0N?w15>l$p0vIp)ZG#?(?6*~zY!FvTzytNrx4!--FJPOT6=*#o@3~If8}JJ@lfvAc@C8kMt!7#v(+S4NFGqM?sPC z`-kBaUTI+e?>L*!?QrCg*YX2CzU5mlprr=tW+)U2+={ctl3UPG9I?@ptWE;pQT~a{ z0BZo=oq@9W_;j-ZGDzUb2FGcB$9`~51-70&jgsivTJ_ktO8t&6z2UD{qnJO$R_fH+ zZVmleG4T|RM2IA#kNk3U-s%2vX=tR2()%3P$n%qura@IdcLnG@ZSCzzC@8?2kEjk4 zpYL`kW@SvX<-d&4;2g-H5P}5g3f#s2tsT3dM|E?34fhFnX2HIMpP%3s4g9HV5w?4H zrhlF= zRD)6vv*3^b^fv+m0(^W(wj`?8Cmu?tJ`n(VK`m#Dg*-}fL75&_yPs-nC)U>Tx&vWn z$zdj|sz#%Ug6Ms`TTBCNO literal 0 HcmV?d00001 diff --git a/src/main/resources/public/img/notauthorized2.png b/src/main/resources/public/img/notauthorized2.png new file mode 100644 index 0000000000000000000000000000000000000000..88875ed45131166a06e5cb67586777c106e5c60a GIT binary patch literal 172225 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

xZQ})%-t8w?+zLS63{XD* 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 JPDHLkV1gSvHGBX7 literal 0 HcmV?d00001 diff --git a/src/main/resources/public/img/oops.png b/src/main/resources/public/img/oops.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe0efaabd062867c6b29b5c91cbb23d8cf9cffa GIT binary patch literal 117222 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Π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 literal 0 HcmV?d00001 diff --git a/src/main/resources/public/img/page-not-found.png b/src/main/resources/public/img/page-not-found.png new file mode 100644 index 0000000000000000000000000000000000000000..51e8f702cdd89c2a857c72b660b3b20c52d62b94 GIT binary patch literal 15973 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/public/img/sad-face.jpg b/src/main/resources/public/img/sad-face.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7e693456dbd5fb07364a82a16ec952825fabd40 GIT binary patch literal 12839 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/public/img/site-logo.png b/src/main/resources/public/img/site-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..64f5f91ef5fd8c5401abaf41d8fc8a00bc677ae3 GIT binary patch literal 7450 zcmV+#9p&PQP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 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

    `rP-rejX7Eh<@Ilv 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/public/js/blog-scripts.js b/src/main/resources/public/js/blog-scripts.js new file mode 100644 index 000000000..9883fd9d6 --- /dev/null +++ b/src/main/resources/public/js/blog-scripts.js @@ -0,0 +1,8 @@ +$(function() { + $('#messages li').cick(function(){ + $(this).fadeOut(); + }); + setTimeout(function() { + $('#messages li.info').fadeOut(); + }) +}) \ No newline at end of file diff --git a/src/main/resources/public/js/jquery-3.1.0.min.js b/src/main/resources/public/js/jquery-3.1.0.min.js new file mode 100644 index 000000000..949e9d0ce --- /dev/null +++ b/src/main/resources/public/js/jquery-3.1.0.min.js @@ -0,0 +1,10872 @@ +/*! + * jQuery JavaScript Library v3.5.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2020-05-04T22:49Z + */ +( function( global, factory ) { + + "use strict"; + + 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 ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. + "use strict"; + + var arr = []; + + var getProto = Object.getPrototypeOf; + + var slice = arr.slice; + + var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); + } : function( array ) { + return arr.concat.apply( [], array ); + }; + + + var push = arr.push; + + var indexOf = arr.indexOf; + + var class2type = {}; + + var toString = class2type.toString; + + var hasOwn = class2type.hasOwnProperty; + + var fnToString = hasOwn.toString; + + var ObjectFunctionString = fnToString.call( Object ); + + var support = {}; + + var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + + var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + + function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + } + /* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + + var + version = "3.5.1", + + // 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 ); + }; + + jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // 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 all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // 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; + + // 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 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + 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" && !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 ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // 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() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + 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; + }, + + // 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 ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + 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 flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support + } ); + + if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; + } + +// 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: real iOS 8.2 only (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 = toType( obj ); + + if ( isFunction( obj ) || 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.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ + ( 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(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://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]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // 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 + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + 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" ) + }, + + rhtml = /HTML$/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 = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) + try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; + } catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.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, 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 ) { + 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 && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } 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 element and returns a boolean result + */ + function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = 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 && + a.sourceIndex - b.sourceIndex; + + // 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 :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ + function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; + } + + /** + * 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 ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); + }; + + /** + * 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, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.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 programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + 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; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // 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 https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // 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 + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).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 + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.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 ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // 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 ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.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 ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[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 + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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 + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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 ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + 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 + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; + }; + + Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); + }; + + Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ 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 ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; + }; + + Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); + }; + + Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; + + 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 += ""; + + /* eslint-disable max-len */ + + 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; + /* eslint-enable max-len */ + + }; + }, + + "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 || 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": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( 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 ) { + // eslint-disable-next-line no-unused-expressions + 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 > length ? + 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, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "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 ); + } + } + return false; + } : + + // 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 ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + 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[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; + } + + 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 ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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" && + 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( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; + } ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx + if ( !assert( function( el ) { + el.innerHTML = ""; + return el.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( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.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( el ) { + return el.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; + +// Deprecated + jQuery.expr[ ":" ] = jQuery.expr.pseudos; + jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; + jQuery.text = Sizzle.getText; + jQuery.isXMLDoc = Sizzle.isXML; + jQuery.contains = Sizzle.contains; + jQuery.escapeSelector = Sizzle.escape; + + + + + 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; + + + + function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + + }; + var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not + function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); + } + + jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); + }; + + jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + 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; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : 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 <) + // Shortcut simple #id case for speed + 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 ( 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 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + 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[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + 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 = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.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 ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return 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 rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones + function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], 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 = 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 ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( 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 && !firing ) { + 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; + }; + + + function Identity( v ) { + return v; + } + function Thrower( ex ) { + throw ex; + } + + function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } + } + + jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).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 = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + 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( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } + } ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. + var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + + jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } + }; + + + + + jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); + }; + + + + +// The deferred used on DOM ready + var readyList = jQuery.Deferred(); + + jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + 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, + + // 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 ] ); + } + } ); + + jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method + function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); + } + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 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 ); + } + + + + +// 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 ( toType( 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 ( !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 ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; + }; + + +// Matches dashed string for camelizing + var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() + function fcamelCase( _all, letter ) { + return letter.toUpperCase(); + } + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) + function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + } + var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); + }; + + + + + function Data() { + this.expando = jQuery.expando + Data.uid++; + } + + Data.uid = 1; + + Data.prototype = { + + cache: function( owner ) { + + // 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 + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // 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 ) ) { + + return this.get( owner, 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, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ 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://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + 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 getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; + } + + 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 = getData( 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: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = 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; + + // 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 + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + 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 || Array.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 documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } + var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + + function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + 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 = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + 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 defaultDisplayMap = {}; + + function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; + } + + function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; + } + + jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } + } ); + var rcheckableType = ( /^(?:checkbox|radio)$/i ); + + var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + + var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + + ( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // 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: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; + } )(); + + +// We have to close these tags to support XHTML (#13200) + var wrapMap = { + + // 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, "", "" ] + }; + + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; + +// Support: IE <=9 only + if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; + } + + + function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return 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, attached, 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 ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // 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.0 only, PhantomJS 1 only + // 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; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + } + + + var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + + function returnTrue() { + return true; + } + + function returnFalse() { + return false; + } + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). + function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); + } + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 + 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 elem; + } + + 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 ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + 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; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, 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 = Object.create( null ); + } + 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( rnothtmlwhite ) || [ "" ]; + 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( rnothtmlwhite ) || [ "" ]; + 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( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + 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() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + 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, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && 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 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( 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; + } + } + } + } + }; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. + function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); + } + + 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 <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // 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 || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; + }; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://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, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } + }; + +// Includes all common event props including KeyEvent and MouseEvent specific props + jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } + }, jQuery.event.addProp ); + + jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; + } ); + +// 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://bugs.chromium.org/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 + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows + function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "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 ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; + } + + function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle 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 = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + 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.0 only, PhantomJS 1 only + // 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 && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + 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 && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; + } + + jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://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( { + 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: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; + } ); + var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + + var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + }; + + + var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + + ( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); + } )(); + + + function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; + } + + + function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; + } + + + var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined + function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } + } + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property + function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; + } + + + var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + + function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; + } + + function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; + } + + function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; + } + + jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } + } ); + + jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; + } ); + + jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } + ); + +// These hooks are used by animate to expand properties + jQuery.each( { + margin: "", + padding: "", + border: "Width" + }, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } + } ); + + jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } + } ); + + + function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); + } + jQuery.Tween = Tween; + + Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } + }; + + Tween.prototype.init.prototype = Tween.prototype; + + Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } + }; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes + Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } + }; + + jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" + }; + + jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point + jQuery.fx.step = {}; + + + + + var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + + function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } + } + +// Animations created synchronously will run synchronously + function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); + } + +// Generate parameters to create a standard animation + function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; + } + + function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } + } + + function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } + } + + function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } + } + + function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; + } + + jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } + } ); + + jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; + }; + + jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } + } ); + + jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; + } ); + +// Generate shortcuts for custom animations + jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } + }, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; + } ); + + jQuery.timers = []; + jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; + }; + + jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); + }; + + jQuery.fx.interval = 13; + jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); + }; + + jQuery.fx.stop = function() { + inProgress = null; + }; + + jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 + }; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ + jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); + }; + + + ( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; + } )(); + + + var boolHook, + attrHandle = jQuery.expr.attrHandle; + + jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } + } ); + + jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } + } ); + +// Hooks for boolean attributes + boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } + }; + + jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; + } ); + + + + + var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + + jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } + } ); + + jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } + } ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop + if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; + } + + jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" + ], function() { + jQuery.propFix[ this.toLowerCase() ] = this; + } ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + + function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; + } + + function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; + } + + jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } + } ); + + + + + var rreturn = /\r/g; + + jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } + } ); + + jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } + } ); + +// Radios and checkboxes getter/setter + jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } + } ); + + + + +// Return jQuery for attributes-only inclusion + + + support.focusin = "onfocusin" in window; + + + var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + + jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + + } ); + + jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } + } ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 + if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); + } + var location = window.location; + + var nonce = { guid: Date.now() }; + + var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing + jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }; + + + var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + + function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } + } + +// Serialize an array of form elements or a set of +// key/values into a query string + jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); + }; + + jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } + } ); + + + var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport + function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; + } + +// Base inspection function for prefilters and transports + function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); + } + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 + function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; + } + + /* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ + function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } + } + + /* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ + function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; + } + + jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } + } ); + + jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; + } ); + + jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } + } ); + + + jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); + }; + + + jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } + } ); + + + jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); + }; + jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); + }; + + + + + jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} + }; + + var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + + support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); + support.ajax = xhrSupported = !!xhrSupported; + + jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } + } ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) + jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } + } ); + +// Install script dataType + jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } + } ); + +// Handle cache's special case and crossDomain + jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } + } ); + +// Bind script tag hack transport + jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + +
    +
    + + Home + Posts + + + Create Post + BackOffice + + +
    +
    + Hello, + Permission: + + + +  [Logout] +
    + + +
    + Login + Register +
    +
    + + +
    + +
      +
    • + + +
    + +
    +

    Welcome

    +

    Welcome to the Spring MVC Blog.

    + +
    + © Spring MVC Blog System, 2016 + +
    \ No newline at end of file diff --git a/src/main/resources/templates/posts/create.html b/src/main/resources/templates/posts/create.html new file mode 100644 index 000000000..5b0f76d07 --- /dev/null +++ b/src/main/resources/templates/posts/create.html @@ -0,0 +1,38 @@ + + + + + Edit Post + + + +
    + +

    Edit Post

    + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/src/main/resources/templates/posts/edit.html b/src/main/resources/templates/posts/edit.html new file mode 100644 index 000000000..49b60b898 --- /dev/null +++ b/src/main/resources/templates/posts/edit.html @@ -0,0 +1,39 @@ + + + + + Edit Post + + + +
    + +

    Edit Post

    + +
    +
    +
    + + + + +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/src/main/resources/templates/posts/index.html b/src/main/resources/templates/posts/index.html new file mode 100644 index 000000000..8acc1eb54 --- /dev/null +++ b/src/main/resources/templates/posts/index.html @@ -0,0 +1,95 @@ + + + + Welcome to Spring MVC Blog + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    IDTitleContentDate CreatedAuthor IDAction
    + + by + Default Author + + + + + + +
    +
    +
    + +
    +
    +
    + +
    + + \ No newline at end of file diff --git a/src/main/resources/templates/posts/view.html b/src/main/resources/templates/posts/view.html new file mode 100644 index 000000000..8bd28371c --- /dev/null +++ b/src/main/resources/templates/posts/view.html @@ -0,0 +1,30 @@ + + + + + View Post + + + + +
    " "
    + +
    +
    +

    Post Title

    +
    + Posted on + 16-Sept-2020 + + by + Anonymous Author + +
    +

    Post content

    +
    +
    +
    Parsing error for footer
    + + + diff --git a/src/main/resources/templates/users/backoffice.html b/src/main/resources/templates/users/backoffice.html new file mode 100644 index 000000000..c1d0e35a7 --- /dev/null +++ b/src/main/resources/templates/users/backoffice.html @@ -0,0 +1,63 @@ + + + + + Back Office + + +
    +

    Back Offcie

    +
    + + + + + + + + + + + + + + + + +
    User NameFull NamePosts
    +
    +
    + +
    +
    +
    + +
    + + \ No newline at end of file diff --git a/src/main/resources/templates/users/login.html b/src/main/resources/templates/users/login.html new file mode 100644 index 000000000..dae842e9f --- /dev/null +++ b/src/main/resources/templates/users/login.html @@ -0,0 +1,35 @@ + + + + Login + + + +
    "Header"
    + +

    Login To See and Create Posts

    +
    + + +
    +
    + +
    + + +
    + +
    + + +
    Invalid Username or password
    +
    + + +
    + + \ No newline at end of file diff --git a/src/main/resources/templates/users/registration.html b/src/main/resources/templates/users/registration.html new file mode 100644 index 000000000..32976be0c --- /dev/null +++ b/src/main/resources/templates/users/registration.html @@ -0,0 +1,56 @@ + + + + + Title + + + + + +
    + +

    Registration

    + +
    +
    + +
    + +
    +
    + + +
    + + +
    + + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    + +
    +
    + +
    + + + + \ No newline at end of file diff --git a/target/classes/application.properties b/target/classes/application.properties new file mode 100644 index 000000000..7ecab2bfc --- /dev/null +++ b/target/classes/application.properties @@ -0,0 +1,58 @@ +# ============================================================== +# src/main/resources/application.properties +# ============================================================== +# = Server port to use +# ============================================================== +server.port=8080 + +# =============================== +# = Thymeleaf configurations +# =============================== +spring.thymeleaf.cache=false + +# ============================================================== +# = Disable the Whitelabel Error Page +# ============================================================== +server.error.whitelabel.enabled=false + +# ============================================================== +# = DATA SOURCE - MySQL +# ============================================================== +#spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/blog2_db?createDatabaseIfNotExist=true&serverTimezone=UTC&useLegacyDatetimeCode=true +spring.datasource.username=root +spring.datasource.password=BLocktoe1488!!** + +# ============================================================== +# = Spring Security / Queries for AuthenticationManagerBuilder +# ============================================================== +spring.queries.users-query=select username, hash_password, id from users where username=? +#spring.queries.roles-query=select u.user_name, r.role from users u inner join user_role ur on(u.user_id=ur.user_id) inner join role r on(ur.role_id=r.role_id) where u.user_name=? +# Don't want to use roles for now so set all as ADMIN +# ============================================================== +# if you want to use hasRole('ADMIN'), use this: +#spring.queries.roles-query=select user_name, 'ROLE_ADMIN' AS 'role' from users where user_name=? +# ============================================================== +# if you want to use hasAuthority('ADMIN'), use this: +spring.queries.roles-query=select username, 'ADMIN' AS 'role' from users where username=? + +# ============================================================== +# = JPA / HIBERNATE +# ============================================================== +# Configure Hibernate DDL mode: create / update +# spring.jpa.properties.hibernate.hbm2ddl.auto = create +# spring.jpa.properties.hibernate.hbm2ddl.auto = update +# +# Create the Database with hbm2ddl.auto +# Ensure the hbm2ddl is enabled (value "create"). NOTE, this needs to be done once !!!, after creating the initial DB setup change to update +# This will drop the database at application startup and will re-create the database tables according to the entity classes found in the project. +# ============================================================== +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.hbm2ddl.auto=update + + +spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect +spring.jpa.hibernate.ddl-auto=update +spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver +#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect + diff --git a/target/classes/com/dmholland/demo/Configure/WebMvcConfig.class b/target/classes/com/dmholland/demo/Configure/WebMvcConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..dad7b20f386abe8f17c1e0bd9d9652076e0e7dd4 GIT binary patch literal 1624 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 L09)ie?K9vGS`E4J literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/controllers/BackOfficeController.class b/target/classes/com/dmholland/demo/controllers/BackOfficeController.class new file mode 100644 index 0000000000000000000000000000000000000000..bd75bf0c80ff7d7a12b5b2e68d610cf90fa36223 GIT binary patch literal 1646 zcma)6YflqF6g|@xTA;pAQ4kehK#MTGAE_}xjnSm20mTpcW!jy>O1o2cXF>m!CPt$l z`~m(bc6CE$eO_T`SsGE32CfzuUR$8&@=nWIE$%a-@B3r6yP5f4>-UB(GTC)+xIv{NStuPAh zZGrrBWm%wb*91&#UpgFFRPALIhi<=hSg@-h!(a84(KL~bS(lCz zc}F$Z9=BSo>Td6pvHQX(&~F4@PJ8oDL%G0g+BNTOpsbRC>8LQ0Pt=NbY1JzAS882J zlDQ(6tfRw)={OXD6JDHN6oFEA3rC>p_4USN0M}IVF!^7Pn9;~?GT(N$34QQi2)BHE zXGLy`rgob#_Ah9=YJw-q>A`0C`DL=98?wPp>{Q62ex2&XE~svIi^Fx*PAP)}GOJZK z*in;pRN(Y(W%eTOlIYx@D{~2KckrHWskCjGe<3lkWlvnZh$ZAXVtoRGOD2t*`hMs{ zIqDPEoRfgSj5lCHCbY3+T<(x!8GEp|i~$T5akNtyk1Fhi{|0hdqszA;$Pdmh2KW&*dN6V&g-N&7z6|{ZTPZ003>-}7v zGw5)DYkAWF!#K#Dz#$w)A$$A=dHw=MsvnR${}K5|GsA`1&*;nJ`EdU`-sIuX_R<1J znamh5#xvCF=F2TqV(@b$i!?&d(Jb{n^gqV8<9zM17+~UKIL?z3JQ>LGiGxK}pR4F3 mzY{MY5^`{w=OZ~T0%wSJHak9tiHDfvc8V7{O!t_n06zd{E7F$$ literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/controllers/ErrorController.class b/target/classes/com/dmholland/demo/controllers/ErrorController.class new file mode 100644 index 0000000000000000000000000000000000000000..d19d5228064fb2718de18ea5a570babe20c7c188 GIT binary patch literal 1578 zcmb7ETTc@~6#j++y|5})6mNJ3K`L7XZ+NXxBBr!ti;czyvTaAY+V0lfDfn}I^HqJ2 zsELWM{w8DmW?QflOyptb^6fcuzVn?k^W)c-ZvbYnkiZ}&qevytgUJD0##9_8(g_Y% zVz{c|X^qUpa81wGW4IB+%@{_bxD~~06t@NX?>Mfb?g>Q3CrSdnb6!;n9LPDY%(oh4 z>95%3I+0|~tJw9D?K^tk0ee-=2?Wx)iq|l!jha`l+iumY%7$lFJXiSyq#u}B-}n5v zZGd41YBa3N@Q1+D@!U&$-F{;R(qFGjW!98xnvXaX+khp5rsoFo_C(I}*UX^lJMP*G z-)_ha&wpiZ$nv)95)-Ir+-k{@8w?clJFWu%9Ynxrbe$qFwb!Woips9MTC$s=P^^)_ z;F44|uexk&){3eK9J5-kavHMa1P(>bxUQ#c zDfg}0^%hIkZ%VB@vssfWRC?J~HG!e=iBN8n#ac6qN^42CMA2*c6}jN(au4k&*_5u& z-dF{ytKtTdI3$qTOZB3-W8g0CMRDK217r+b02?(PQZr}LGX@@F&cHk}UFfudY!`4X zoo2VST|8Bjlw)dd-OAGG?GA< zL-2ks3Y_09?w{Mzv5n^oE2|5IC;54S(Ony9hl{?EfmHg=nnPmZ6dNX`5CVM<;&!M}WPXf=XUWP6%t4WRcYMxr<~G~7pJn7g1IaE{-8TA$~4;WlSLXOQ=XEd=JJ$tBLSnE$AiSH;UPquK)l5 literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/controllers/HomeController.class b/target/classes/com/dmholland/demo/controllers/HomeController.class new file mode 100644 index 0000000000000000000000000000000000000000..1ea46bfd168e75e692f75ce46799d61cca39439e GIT binary patch literal 1679 zcmaJ?U31$+6g_LlR%)wl>Xwv}wDb#bk|tYH3W0=_kW%{LlupBh2cBeWlWeiHMp`BG zU%?DBB|I=Z^P?EfTB>7HH=ePscklN(_sakL`{!Q(K0&L7DJ-7CSuE8daeES1>-ZSU zb@;ebp^5vH>$JRE!>9Pn{aW$x`6RASV%EbK9##eFJ(JpPl^p1f5?F3^OeDi--*me{ z9Li8dMy9zomCue%AH`NByFo`W#HHt1Y;~k|bgJ83wGqe023DIm6jm(-uov4sut7|&ec3q&{oZAtY*fb$4JloQ-dYVOT zm3$vCn?R#wIze|QNVGc_mlJkhGrb(wPshYIVS_43@F)Ev>?`1R1FKSd*CEO>r}AK#)m_=rsb#3b;!a^P zJ=)~U-s?t}|L3|kuH$}LIe)9`3_i7`?7j(~1&$FC`BtJ1Ra>@+$S_CG)z2Ag-wJxY zqU(d8n~?}1iGbWEq5`#TlO-MXKs$!ckD|QfkP}!K3sTB*l(B434)NmS9ZdT;hlYnW zA75hK!#y8gVZ+DQ*z|DU$2WN3;aeXM@yN$xJP|n4r)Yqxz~Y$ce)}{Kr(=%4Yrjw( zD{y;Eh!YotE4E7nTRGtz*Jd#~gStq_?6@s?J!>3>APhGwr>vb>;(5RM=I{;O# zPYTMU)zl^`hy-RvO3H8DP*X{>i^nLAs7Q8KN1B+-HXjf7G-Aa7Gj9agblc~apMzJm z#*I9eW?U5mOUCg!xf@9+0O&(lq&v18Ud;jvT;pqUitj^#lA9vR^E_24FHn{!IbeKV zlEn7DO> zN*O;;R9!~z2&c;U1GOX6OZXf9(}l+A#oVTG=2yCx;Zk0K$LBO^41Ix#FEinFrd(pe z6`ouv^Le_W6egzE`z)!(|AMRRyF}~L^t#5FH~P^^h3@7+caypgsH>0#3J1+OhWL=* WkA6fcMKi@5t>>vIVPSyXE#N=!9>7Qd literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/controllers/LoginController.class b/target/classes/com/dmholland/demo/controllers/LoginController.class new file mode 100644 index 0000000000000000000000000000000000000000..9b7f4301121ae43dd35dc9507bff3719c1a34e23 GIT binary patch literal 1602 zcmbVM+fGwK6kSs&ZE3k*R8S~hDJTPo%2h*%hKGWNA}>BoPlqzlp20bDzHdkAew&A;0mF1T5RK6saUCJ4{cnq^yZHnC6H_9z;8&Q^r+U)VX6t2g&g=4j;a8VE7 z%f8iz%E$txP5M-~4lHvau-7N96xp(vAq7@Ajffm-XxDp#)i<-9bTf^af) zXSE|rTf(T|Tr)P?9Yw$=8`X2PYYj0YjmNXPsN9vhfyyRIf$5bfQtIB(Om^( zdCms?lS{Mk?GD3qLsmTL_(s_ZceIfK6+4o6t+GwAZ8MyVYQJe>iq{KowUxEUF}xN+V{>4P2nG$nf4xC8+oDi-Zj3f-((}Rr>>E8lf0-?e&^wrzs`q3iOb*mpnM_jP~f*C$JA;NFS|10#LesT2oaAT)|a3(esD_Di#ELVOe10Ga|=m zV#tnvL-TvIbVrZIKGGIDMm&P<#1T0+AxPYhD6IoXU=W?SPB@0>8x9NgQ#wjkE0mye ngXF<*gRF6|AHm=ah5faYb(ntXH((w`L~xUQBDhuW{xM79{ literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/controllers/PostsController.class b/target/classes/com/dmholland/demo/controllers/PostsController.class new file mode 100644 index 0000000000000000000000000000000000000000..8fb8986d353cb92afb23ebfa0551bdcb166ae03d GIT binary patch literal 6501 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 literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/repository/PostRepository.class b/target/classes/com/dmholland/demo/repository/PostRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..f519dff677757881ab968ac12a8b9850caa5bfac GIT binary patch literal 814 zcmbtS%Sr<=6unXV@LjDB+|AM#W}~Z$;G-^Nq;)ESE`->*j;S-rkYp;wKXc&+_)+5R zC|X5Pa1oM_lXK5G_dY#8JOaQbES6xd1oI_WU{JZ1D)faz>$aNOI?G^t+1DoGHZ@X3 z*G43Gr_C)7g%do~iI9pnMTFui#@dSC5naJECu8nQ>uSV!jP6E3l;JZ6U`GHVr+TeM{S3sECrczGQl%xC8^z2N;~1C zR-}plY_gLIZZOqWI&FIVBtz39wnA6L8OdI6)&2VZsh4i7dWS*d*dwH~Ug|Z1gL>fY zozn}2h2BBEwa;Lj?8+|YEW?yPV{reP8VQeha{|E3iK`F*ZH1Co!-fO!U6KMvfN zUVL(2WWZpERvzmJgApjuxkw=w7?fx$(;9+N7^A&Hz;U`wSeS&V3z#P8>w5)ea@=f= JD-x~>@B%2?{YwA< literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/repository/UserRepository.class b/target/classes/com/dmholland/demo/repository/UserRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..585c06fa1a1afe51ff285642265dc4508fc279f0 GIT binary patch literal 553 zcmbVJ%}N6?5T5jJ+p4wV$v03GbE&6_pa&1KqO|BeZKm7Q-OQ3?E5$eS-~;$j;;e#O zp&)ojh8Z&7U*11n-vD3$dlB>^*o~kspf@vCU#$v{&Z-Or3=ZRkS}K_;o5*o+#wNp~ zcuJYn*_=`yYpF3KnUTiS%Lm>Z3h3Wrn3KL&j!^LDin?hUe@sMCJUT~ zVN5QOJ}xQA}*(f^~MsRJbW#o0O&O zm*OkH)6%$rgHd6F$?(y5GfDB%S_&!{vh3-2qg2m^k-{oRS)no6$%fe0-27(e46ES3 wgAs7{uVh*R1l0J{`M*U&Km(fGwYX~vh`7|D&36qt(EX}gu+6o_k9Gh)0mfafZvX%Q literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/services/NotificationService.class b/target/classes/com/dmholland/demo/services/NotificationService.class new file mode 100644 index 0000000000000000000000000000000000000000..e6b16ae5df9daaa9fac96e4b5ee91e16e7ab5ceb GIT binary patch literal 269 zcmZus%Sr=55UkE?lPKy%$S1^$bIC2|1O%gj1@GfbXER}E8)n9QTn>JKA0>7W6vSgy zSJ&g?^Yjj2fy)Zh3KxVc>-|HwlMUx=8z$V&9}o6uO>4Wx)Fp+kS>C-6ZZ=%@;|ShyWngI($$=f!SVe$fnc0OWKCR6O{=w9ZL1a1DDFe6Abubelwi^dDFq)VyJIqCKg#a5=)Y31 z2tN1&{88eW-GWQaljLFV%$&RTocl5J>-UeJ0Cw=8g*sN7sNs$=cO9%d*bu1YpO2M; zdjiXQNv=O?U*46-FL^^}Sm*JsIwK<=IwS21Cj>Q?33H0ZcE}O70RQWUs-pf=* zDpx5*or%iJ;p}&}<|SnaDOYe8BUvK%jG?qf$w}&~H`=sjwOW2<;Ezq9iz~SAqJfr+ z%WxfR3cQ`u?O|X3=C(gRQa&%yyE&1Uy|ugMR&4(VCpP%V>U?h{UEzr65squ z3W*qvhG&12@y@on*1|M>h3z!IM4prWi}7IPX#H9Xc~U|xRA zECzL&G$rCm79-LwXn4w?R_mJ$h8uN1vJY*GN4D>6i7@1CvHSK!Fc?+O6T!N}!%&0_ zTQ$pf&6a!QI}Z0+W=puf8H(W4wnS(qqcppNRrkaxCdU)eD-7w4ot?%GgI3&oQG2z~ zWT?OHbBfFfYoQus4HLw-v{M}BLY2ZV`4K;6l#*q$A&GF<-) z;c9u0v=SZJ1k{Vd>$t^k^uey<2QAy<4nwYKw>=(p0?MqEf@xiSmg8x$BRW6ma1-cUqx=56@ z2}v0sORRzXq-+(Z-%UV^fR!JNL@mCPaa(*^v%R`1;USG0;w3kL{_fQ z3+n7Aq%WaLeCi5*l17X!3R9RS?+3o3U}#$hTePek|MIWk0Pa%CDo}!`OJTTx?j+g3uMociyd8!oq_aMno`b4=lkjz p2Abz!GI_V`p_tPswQmfvX-Y5413V;53MCAa)d{WQ5r)<#egXv6d~*N* literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/services/NotificationServiceImpl.class b/target/classes/com/dmholland/demo/services/NotificationServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f2f42d1a03628e215006a241739657b241f2bd31 GIT binary patch literal 2153 zcmb_eZBH9V5PsG+95zRwkT^h6LfSN7UUF^IByOQJE(PM^mlPu^+7IY#FXj^a&bnJC zsN}6nC?m`v>{b)c1w(eCK-Du8nWuet5OMlmvnUA3yR;f1L<6&YB)1eTZ|h1o{4PT!a8YBlQ~dR_Xj%)d#Ujw;#+ zY64?^ba(q!qUjUS63v8 zckLV=cXDCgV{P{><quY^^vMW#Xb~E(G))PpS zyp~^)n~tuV>%9c_T>l;2BLee%D>vZnN>6iXbxc-Fe25tnkFaDSg#{B?y_&+bz}*W} zpTK0`DA^m_D|QWhZ({dCO<- zNU{7xR_M!mM_&Tl?`WZWvtM-WM=zEwY!(FuHgpq7$+C*FjRnrV2c5IjPecvQq0aR|eG@dbhnxITj6vW7L|8gWT;+O_AC?G= zP%_Q^HSPyFU*{a-%(CNngFB0};5@K!0`V&s5zKPb%HT)lW;lil_y`|!CvXd&P)i$U z5akMpFZ_nc;t8T>0EzHm5<`qhgCyIE9T1w}b{Od#&j!dLCpJ!BbkG;4j1r%YS3|1rqxw7%nWofVsc8bb^snT#Deww(9aJMx)Rv z#xToqnk<14k23lR%#q|27U|~!N1gIQ+fO&;H04Vnujw%P2rW}s#vQU~QQzcQTk(Y+)wZ~PN~Vj#>wzy&Q~5z{RdPYG?V}U literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/services/PostService.class b/target/classes/com/dmholland/demo/services/PostService.class new file mode 100644 index 0000000000000000000000000000000000000000..ec9738f2cfe91989d65b915e00657c8718ef6c2a GIT binary patch literal 3815 zcmb_eS##4?6#lNWh}a^eVK0<5K%7v-+Cl??BtUU%mc}7%X-j)!i$p}0j3kHBh3@;l z{{s5NLp#%coJvSQ!az2@N_qcp2=Vog*3)+Q9X@ocvcZSm&WtBq~Qg1cu_4crO}DYYI#{L zuc$?)F@d6nk_J=56@ku*>j$GIS1WM68v=XsMYn8}%2TdwOQ&R%%(82EH3H*89sPj7 z`q8QrSY>nE@~sKm9C92tkb&hozQEzU>rEPd#j~8rE1oQy*IjSgm@uW|8&_meNi<}Q z!5FFr?sdyEON4DdYB^RgDA3ZI9T#XFaZ9GaioE5R=c?ri(;JhNCeWRCi_#vKo~6$5 z%hq7ZqWEkhTYS@-v5KZ2T2hD(l&4*>oYIhO6R|g&zba>>Q4K8H$XkBE&m9G8(vd;c zqsW7c2#z)qRHnvuBxYcc5E&&QF9XvL4hbw%r{Np9lED7nNFMz?Y2;mJa-gB&Nj!m+ zMb55;jC^(045r-D1*zN}m>%8GUi3_g6&UVaO3x+)x2lX0*s>H9V`i2tQl{w!Y7*JH zaFjdF4! zDdV-Q60->OHN_Lc3k3hWGEJq|DqEH(O0p-BWj%WZMwWEwQi06o1cc;&g0U>PRj+8C zwp8hLsa_CQ&>mGW0*y`gnTMtu+^CqwT*2vh1ec-F1Xw(T{x!W8axfYjsR5+Gdiy0RUJ3*8hcxP73;|2bq#Om zcoR1THZ|yTi4xQC7H;Y|fVXwLgLiejr?w%@>2LxdSur&tV9 zqa+S(2-%nzNi7yp#=0a@iOjtX{FPMtd_@gqX_K^jUf;R5^nmM~vVHn*=f4BhOKkP! z4Cz-lqGwZIHfaW9R-ih?syWL;fI^_|1Ik`f47(-XIy(5o=|AOq0^3O3Aj#v}yvX8; zSx<&Tt$tjqcl?|v{fMd~PLDBHU~UG5Ar2X`ISpUx_zK_YIErJ`VZK%^XU3g2jeOW$ z*@I+!ap6GcfSo&O_<=6WyY6(gBB19S$Mi;Q>H8)J@Lx#}#duLSJHsoMZTdYCV=}*E zCnYkzj&Y35G)dn4$4KOZd6NkiBacYiE?9J~h93oXEb>nydzkVMro&bi?^>{C`A?~7 zzsz(IahV4ADF<}R(6!Srz z6kWRSH>76KBJc}ONrcS_gmjFsGo;x?&fXeQ0WBd?Rw1>t-9_sx+ESQByTCnY;M1}c z?xJHB=@jlGvry2kgrMvqL0R<0Dxc<_q5|DYQ2#9S6vQ1YzmLv^i2Whrnut0^Bp>>* zo2ouaj5f{!ZoJ^rjgd!&WBAS(euYwY5%j(UbY~5^6MM059(r#Gz5hQ#A8H=@0OJ>F zJrZl3iM8%ZVLlbo{0JOj-aL`O&eYV-H1fzHJQibLjiI zT5h-Arht|(?;>G?OxoiKVH<10HpV`BoE)u4t*Zqh@)oZ-1X8Jae1SDV6`$Mnfy^sMj51Ikik_yox071xg&+a pE-K4^D^BoZ3PZJG9p?F4{#C(#jqmXdi#gA;s>ic5^Bm6O!aqGr&XNEC literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/services/PostServiceInterface.class b/target/classes/com/dmholland/demo/services/PostServiceInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..5b9ebefcc0d3f4a9f3ed6bbccf54bf9c3390db67 GIT binary patch literal 893 zcmb_aO-}+b5S{Y1fL{oHp+_%pvBuyDVosTXjaMMWj zu+*on4*hm>6CZ)fldxmWd(5yvSYaXp8Hr>C&j{2Y&}nQU*+L~Z#qJ5@1ebV}@k6MU zc3oTVdVph;(SWJAk;~2cuLNEit~Nf6rbdSTDE`a4HgA+O%P7|YlOgRfU$CJPIF)Un zIO*baQ9{7}JO5U@F8B4!c;Zni+(bRLKwp@-^h7trU5%J0u40Q3xc*fRJ6-Tc-At)WLeH g0*6afT3ChJGL;r);RuBn^vAJE(#Z+pPLtc&FI-dfGXMYp literal 0 HcmV?d00001 diff --git a/target/classes/com/dmholland/demo/services/UserService.class b/target/classes/com/dmholland/demo/services/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..e49adbd2a471cc8a3e310c8d786f8a0e91fc0ee8 GIT binary patch literal 4360 zcmb_f`*YmX75?tp@y4>Sm(8mQ1Y!upkJJi~v~it>W0Qy5O=7Z1S^|As?_S%AwbCMK zotQpD3oR|Q&_W;3C(mE_fzEWyI6pA`xx?SY@Lfq>$=*$DW;&jgbal`9&N<(CT={>W z-~JT9VSH%dK3wX?9+Z1<8CUe>s$PEEfPwEAcpBIA(=&SG**v~$aPND1@qK;yfnHKc zVx~yE`5xG~t}hD)9MrU?tK~fXRM*1K=_lVnfH03n9*cS05HNgI_X0cg{3U^rQpKxT z)!Mx0IMS_JRaNt>RKU6tDF0GZeoSEZrG^{YHFebv>={R$a$PT!q3yYWz|oTD&sjm; zx81o}U)IzO&tI@+lyn1YR#vn{OEwj(Q;pEOVf(5|*c~&I{!%@hmO((J>S?#)Rh2I= z(H1gLm4mHt z2O+n+%l4cr!-h|jhg$@WwKG(s$4+c!>;xe$4YcK@Dnn^iy_&RLYg*1J9md$;rbG$4 zwVtR53~fp$f)^;9SK+)@ot8S~q4LRA_<#3rQ?wWrU&&DEqGjm}Y{X>SoMx$Jtu!L6 zeH%fst(YN3AKTtG5T~6zHD{GPcWz7h4?=WJ>kF~|kx zK$lgg%F)Bkf|VGM!XaJB*_TGs&aoy^!`Hv zN7_)m5z~W27dM%+ve)n{>WrM#7Pr>!t*9h=%+tx@BU)qExasnpp8#tvSl#Si>L~t zp1e47T~$KTwn^nF^62vnW1bGSQMu!Z$zx_th38~2zk0L@Y+s%Ekta!a3XHcqJip9I z$AeBq=O%s37Ukr;WL-Vi;HEweQWBb``-1g8?#KeH4iJ5I26B-cJeu8(xm<&syrM_( zROA8QPJ@75r01eb$li2B=yQ@gtQRF~0{5-*6&<4STZ=w%bIico`0E|e`7yNzf1}T# z(s*k|>uN|b8xinq!>#BK8EcxKBzA@82-|8`>eU*!61CM zo+W2&U;DRnO_&$!+860isF?b&`j+NB|Fjd3x2+^F8N~OlL5K%!G7{4{*h6_eY2vA< zS7#cI6OYSGgTw^U4hu&*K^}iM@ejOf;#(*QJd_rZ?Jjx?$|^;(k=-qmFFk=CehsXy z@_3(ECC^)E)CJ5b*X1yF__e2afP9v%jRY^A6X*C%>Zo9UtT@(MyO}p@6fbi+X2mzZ z8JoPjZnlXMc0~q9;AAcAouvR|ImEJRk z{)5~KIs`uEDu)!|{tSYVARLTjz8WEopd&&$Nv#~;_h_Wy6?EoWp!y@Iov~N~MFmE1 zh)|DFd5hozi18oi%O~hz?CBNS(fE6ZX<*CnGP;(LU&hwNTz3xtg^@aMM8XHqM?0E= z*y`S<)x9`^uccOxP(u7ot_wQNfew@80GSIzE=w2MpLLZNyd1@xmGJ)G^*1f|V;rZ_pvEK16U`K@4{Ci*;-F4uptC`> z$;Tv~OsZ>?RyAKb@!QiZ$B0j65Lb&_mwO9hTvw-wb*4$z`nuiGTDMaf{GKKmJvf^s z<7`C6IZP#Kcq*x&qR{2Da~ZqdN51nzbas41$&O5il``5$4q>ep z3_Yb2OUILhchk;SnDpJ+K(>WPGX}b&6jA`)IN$65W@@}pzgf_qTRcRr>P-{k>i5+YaI9i{3yiO zsZ>M}Ez+J6&pf}Gd2jsk`t%F{hpQ3fp8b z6{#c_wrh~V;Q-($jCICk*3oGya>*rTnrB*KTJXOGn&vT4T-8Hu5?dai&Jr726|rFv--DW339=Sj2ikHMIdB!M&Y^zod24+c@g%LV2A3)0lt z{jN@AoqOcZ5W}hE+~2ODRJLq*rnh1(U0CvIe*|Irdl;cx!|1zrzVgfU;Wu-(9M^SO zj$Ctcm;DEk?wT0SR7z5;J4l4)Ud4Ex)4H`qjJvK$278|quRo}kkhO!{+`{%Uldpcm;rJ{3@E8fFOEOZ@<#&@9aLL-Rhg o0E-_(OR(Gzt$5VxAlFY=>sKcFUgdQvv+header { + background: #eee; + padding: 5px; +} + +body>header>a>img, body>header a{ + display: inline-block; + vertical-align: middle; + padding: 0px 5px; + font-size: 1.2em; + +} + +body>footer{ + background: #eee; + padding: 5px; + margin: 10px 0; + text-align:center; +} + +#logged-in-info { + float: right; + margin-top: 18px; +} + +#logged-in-info form{ + display: inline-block; + margin-right: 10px; +} + +body>aside { + float: right; + width: 200px; + background: #CCC; + padding: 15px; + margin-left: 20px; + margin-top: 10px; +} + +body>aside h2 { + margin: 5px 0 15px 0; +} + +body>aside a { + display: block; + margin: 5px 0; + text-decoration: none; +} + +body>main:after { + content: ''; + display: block; + clear: both; +} + +ul#messages li { + display: block; + width: 80%; + margin: 5px auto; + text-align: center; + padding: 5px; + border-radius: 5px; +} + +ul#messages li.info{ + background: #7f7; +} + +ul#messages li.error{ + background: #d00; + color:white; +} + +.formError { + color: red; + font-style:italic; +} \ No newline at end of file diff --git a/target/classes/public/img/Messedup.png b/target/classes/public/img/Messedup.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4b2d1b34bc2082f4b4d44fb6194c81e190cd78 GIT binary patch literal 148636 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 P0YA#}8gjKV<{|$NA+D+R literal 0 HcmV?d00001 diff --git a/target/classes/public/img/favicon.ico b/target/classes/public/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..710c06a3af6663a8ef021727288290586adcc367 GIT binary patch literal 1150 zcmZ9MdrZ?;6vxl6BC-GzTt`Kjyv1dKxro{rwt-Uys8~9%_<%*nc!*F#d9|f2l~&#b zY++CyEh115sMx|QH}?mC zpu@!l(C7uJb^vYwunz?-p_SKlGy$NRchGBW>wkjTYz7p>%3m)xkX6$fVltU9|7LA% z4YTpejF=`n5u>iw(P-c!Mm^v51*_j;u|V5gu>(yTb4)Ou<7D~Og8El5>o0ystlCp` zExdfbzGb}Z@Cg+9g0f`mTxZ(mF{t_&K-n87^PEml1V%?nU7&g=z>MgEvw<6kA1nEY zq%V4(GfH!Rtmgy{E)4M;W;-rJ{}U0wUV!4s6m0xp0D~y^G@Ksv9!Z->JaoVMAl|^- z-7}hx9UjTqAw&^rm_Af(p`UiD_Jp67!CxR#mYTZ(K7de#Nh)`1Z8j~L3wPv zP#kO=;CgUoI3Hkt5Hm1OWzER<{4f_4btg|XTrC%zZLO?vZ{)6Yh)? z0CZR^$bi7NEVmQC9HRfK=FCi`(>Vhh+AmX)=8H7kAS2ODm505hySA_LtRkS{w9LJ+ zWwz2T&kzd>El0q-cmp$6vP&Xo;za~0`C&qLHm!x2iRTlN*}RA^?+Qqa-Ktzy!Z2mK zHdf(pi22qx>A-COm9Py`?0uj$IX}4L(iih>=i=s5tI4D1TQZhWuSP&jRiJd$q^;Vi zsqaP(U42V?Ru$TJN*Pk{wirN^k`JvZG=E`2_OLXac=M-X?C=$3B0F?Ex4S9#I`$h< zM!bNSChei*y`!h^sM0e%Bo}pwXCgq3&lvnprC9ii_p zMbaqYAAO;&no_ct=t6>gh!QwB#o0CffFE+We5TZ%s7vB}u1l7a^z`u7tE{`NS%vXO zmr8LF`V2Ow_xPiqYj6V#RXF(*o?Fip>%BQ0^Wfrq%c+m!(A#6p)o_=zI zs^XRwtdfO!W1-(=E5pXKTO+26f_`g1;<8ll7qnF4xWAuriPb@7_RkJY*{kc?ZTBx< znE;FV6);vhapJOadL5(iQKpRZX}G0sD{-;R*3(Vn!)<1hLt7fNU6RG2<@txfgFdBA zdlR$`5*QQry7o~kL|tUg&0cDGu$&`s8WprTcI6a%w`a1;x+q+wqO^WbKdb7EZ8N`k zwhVXJH$cB_#Y?xB`9Dl3};s!k?>>EVx?zW-0|^(tU) zWDKLOyX7rq@Iq1VQ6;bW!+YHW+mscJ|7q7C02*%qqcx)xqN;-z0Q&R*kFp=d`X2$S TX6-QoJl_KF=Qei(a30% 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 literal 0 HcmV?d00001 diff --git a/target/classes/public/img/notauthorized2.png b/target/classes/public/img/notauthorized2.png new file mode 100644 index 0000000000000000000000000000000000000000..88875ed45131166a06e5cb67586777c106e5c60a GIT binary patch literal 172225 zcmV(`K-0g8P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&|D{PpK~#8N?EPt< zWJhx5hkCA&Tdk<7MgzTp-Ry-NF0)ITO+U>S>kp+D_Z!?h(v?Kb=w1$~;SAYiH_!kI zwdJ0XnR@<@nVoYYG9ogvP(T%cd?M`lW^TT_+wtRZVnw)Y?=Y0Vv@OQP#YNf{V|8^k zZQpEMUM|;c%kovdz&{;_HmG)(C66%tO9pMRY`X6{-gJL?)AjPE-oFI zw;A+3=7V7$WNu9B0GF2+?yH2+7ol)ZGGAPro2UGXcL>66`|~#kwB&7TeFHH)IOk#6 z!HDuuyt4*%nM@Xeei8s{Ypbb%thDp<^Yp(i?d8eUwrV-g&zJ9=)$m_db zFYk8#Zt?8}Jx^*;I0U;_R=Yk)pEI?XBa1WU%}}Ze*qJZSG*`-zzJ0$P_TP$si*E+p zUTL3;VP{wlH|3v?H@yS3th{#}U*!%8?Okn-|1fNIP5yFL_;{>I0mz9D{%dP%@*gW+ z1ic9?+Xv@OKGX5v)+80pwp>}3!&O;drfhGkUY2d&W%0Jkaf@#+7`hv)>ZcbdPU>SK zdhHs1^k4P43x%=5z&qrD%00w|;$3FnpVwz^`|>vnDBjn$STy-faPt_qc)MWW*20Ea zcKrK69gp~Gw+dgZ$!a(A%li6yJ3D)`O4YKMw>VGxFRNV75%=0yR^C!o*D*~B{U%Pr z^V;ooak~)R;!R^sw6(t4Ry21oeN+#l=eqmKqh^(LF|!E;PlZe0ni#2L(WSJnbE#m% z{yLm{hvqH58MvZU4I6y|a|0&PJso-jpmQxd+0yZ@>wIr|;{K*!*+E(LGhI)^!M&nM z0Hq1V>U@0R&VwQa3wC0%o5da5WY1cJ>)Yj~WdMuXdpUVa7hri@U(~>jl74fK2bLWp zZz{dQvgt01H=Vy*+ybR)q;9$%&iN1zy_qgZw`R`7&Za&)SZfkQ?>v$FLLTEeN)^EW zwl9CPureBLTxqdc6WlVB9)d2;(WCb~o-U+tp{-xr4K880jw$du<$V(ib%=O#b-lEtrOF#O9oMnmr0$S+UA-ZX zb8~MJZ=$V+cpKy67T<25Ol^v`qzG-wvazw@qYgEy>BFnK!(3Ti)s1GHnOfgixBc|& zv>hHCIE;Ak?jMia^TV@tdb#R3ls+3WP`#oL7v18UgO&H5+`k-7Xfqc>wdsH*Q67DR zV`GP+`oNVa34%Fu(=i%zxZ#=AsRqdt>PJ#D*uHuU6P+%@oUktM6)q3_W|eaWRKxAk zgD^c7;0nti$syMKSdT1}+@6uPXP|Frf_VJoz4p;ZKk;Pp{Q2|t^5v_xzkkqPJb$4( zv2$^+wzIP{=g}xJMmn4}b`$~}Q<)LUXCk^V^uH2Io)?!Kl25nL_wAmWK5qZcOA#tg z`Z=0teN7Ww$2S90@r*(G1XPgQZON_Nr6m2c)|f~iNJ?sTDt{+B*W zH=V@@c|8p0pf8Qg*z4xyCYY7R8!X9N!!qUiI_mdb0!r1Ebf|kf>+Rm%y>@qZr)_Pn zwT;!wwytSneQl+!ugk4@a(8dHZAkOl+S+o(?Z4V@PoF-uoYBUn`}-IBC++|ItKYO& zC-JDTn;BNuRJZX6DU>Qg`r5wQzwim)80X)$mU*|Z^5h2(E_s{-Xh0g91+ymCXjGaQ zhrOh2Yw2W9Q(#x(l1Dv2O#M?IEX2)#x-xmn@BAX~bY+iF5VlGimlyf-3#VgV=Z{}p zND0t~ow06bWPp+}jp@mI9$#DLO%q~q{$xd}WtV)(y%1I1Rh`1a-3mD8Ft<$ZWbh}P zpV$KP$*efYLMFg(xr6E%&$43SC9XpTe#oT{jC~G@^dgOO)h+qP&E3`g2Y1{3`+Mz= z{`i*;`}pHeG+7*2v3mOXvvz!Ps%jH6eM6C)lH^1kMY{5^ym*rbcWAKm`A|sQ?NxrO zZ^>OI@wu}LMX8{!XlO5Pg66^0-dY zFx>Vz5vC={MdCGrIuMn3V$Xo^8 z;_YE=`|ifCIRoQKcSVg6?IXyp0e$H~Et2VlP+>NU2!mgC^Ga)nysjoyPoS~cNw9)M zTH=qzRfK6fyeSJ3KjB`6$YROHjeqiCc9ila{ECQM_CZO^3|tjZ1*Pn4I%80Adiv=`yTxrUJ8e9PrWpW3$qnYFW{oVHD$%A%!demOLcqZj)+|JHU+wsv+8;{QvM-mmsN{Uz9D8I{t zEW#v@Ma9Z+`bXZ9r`l-fCmEfIUn(b<@Hv?F%DS|oDmk!((n`44l`eU+@=6}NG{|Sf zMFw^4cD2l`hob2^Qhe)b&PV#0FY49)&IkTU=200+W*0VeN8W~E6K=_f2{iL*dxm3* zkRN5iKjWJszr8z&0D~}Hv!2bL@!huOr>|1aS-%lMM0kMu?*eDgf}pG9EGb=?Gs9nl zxJ>&Mfv69aFREiEf+ui2Uoa1%EI=0YjpKTu(;TyM{gq_x9S3bV+FWhB+Z%0nbER#z zv$nl@)^^v&ZF}vkZLOZP&DGPkA#?TeSmv2%+}18n+U4m%TNxj zlhgAymPS>>Mk7uwAG=jOqGREs;XE+8>c%%+F&`}Ggtz$0v0Be^t0BDT$PfQ`l*b|% zCU7&WXT{=frhk&qFw z=OIED5|^c*a^;;nM7^@p6Y-;*)ebE7eVYV^^&9Py;n&bm#&v*`dSqvzOm=JlJ8SI3 z;J3ZKZS(Z>teu>kICHLlGFgN$CvB+;$B6d331;PVExdb_i?({{E-ZF4=8 zq@FYMOEMCEyye7N`@dy5nn-svar*6?$1|-qNokAxv)8(>==E<1>%2J4OMV*AG ztZ%tpX9_b9K3O!o;3M1vHTW0NjUaioIF^D@kA-btTi0a3Zq<(6>`HNVD(YT&QG0`k zFX9m`a#Ciski+HhE|TYp3W@R<)0tP^!VF^(qHfD9oIJP zLd2~2&Xiq|x8NkH-kq_rCw2biHcy2iT>>WZ3*f0J8OL5jp4lKy@l9|#y^w2ke7!`x z`n2Tle1+fi$4rsIpli_W0A0`eR#By!mC+j%_ZIIe)OKfQ{4nP%m8vz(eNv`G=TfM+ zSw0){mh_lQVr=sSVpU4ihR<91h=F(hciNrZ-L^9twGG|B_OlXm!7hQ$fQg?y)j=?FR>05x=`JY+``~ZF9dJB<=799Bgd(l~Ok-lQ zzXr47gIav*^X3ut=sI)p25z7vQ9w{+7)ag1E`OI#U;NlH;=E5pB%h0DIZ$5C%+wB8 znWW)*5tXvRP8CV>>o54gcs%ax?n9zd%v=PCa;;(sCWSF^FpXrmgCgAZpR5=rF%11@ zff}i^e#j$BK66*)5h`C%t_Uk0?-F+W6=y+$1DGq*m<57NcG$}Ze`U0b8|AD|dQG@H zIl8($Ds$9()PI*2L>;8Uy9}zHEKjm)VW?ee;5%q4TfoQu70=f|_@^U5xD})+|3z5z zNbOxkWceGI@mnkeEy{1KP^?g*E~QkRU#@tE>YOJKIo>>8aBH4CJ3Vb9wkbQ$1sET(_r;@oZa{}4DnK5F1g6bfygjJRm^|YSzFxUcL&hX6 z;$yqGnOwWcGd{q6BJ&9D7)y< zeF@ZJ5g6JR0lsBN^On#xnOQ3_ZB!@72?f&75Nk)3%p|D57i9$p{I<#`q=kJG?s=-nx=)T;srBUS3( ziWp&6#e|^5GP(RFDpZBYx@*F=TYNj9F5gba=k4TFYZ=Ovl&Uz<7^fP~)$!}sv5Y6? z9nKQ7JH_L_&CS@YVw8+H%syIgTN`Ws1tE$R3e~0N)5~++ta8JOrj`S2R!=IwSz)*M z`k}dz#;pd)X2}I1sJzmm#^qD6od!382Ujc_5!M9@lGw?d3(`$%FEi6AVI9My{F`EO z0V_M^BB8IBV3&2}o%*y}WFg%Ip;V*9#!gPPy_FNW z*+JXPp9rH+@m?zO$YVgxR*^Rn>%RdZ{0J&VYlw19mTn62itu!# z;rin)F!MqI;%+a>V>YwL&RdjIWbI3k5#<(j;Ssb5A<`MB1SUXU9h9FQ_%jU`Pf&m{ zFv!=yO`g)`I_w@7J9!>4>N8OexFg155Qix}Zh+i|)TIzgXvp_XREq2JO)MDt0O!Y+ z#4ra#`#gM;6{-S7h+=#T3Udq33AE(t*|;6*X7c#-%t{qIRva)tzu>=5Fa1mCy7Bbx zl;(79L)e{SF11p%qOkMRwyuu8xwg_a#K3_I$f@MGp6ELoIOU^cGsL6s7Vii=-MWDW zcbo>3s0`e(+pxIdA}l%JB@Pqwpkpw}$HE#1peNvjM2cr3O6Q+;GUSdl@DuR95r}RY z2Zkl~hIpg|VJ~;ev70U5PynEaqi~o(SAVffpn&TM!S%eQ%z1ty^#WgG zcPa8mRv>n(Mx&9GCQT%oBt1kQkPi}H(;kem>*Ee;ZuQj(z zk&0Kfh-9bpk57);+6BK5M6r@WCGoXmMM@fNx`Id-9?3h96e*<_|p{t{;bC1Gs<6k=@DwN}ZN(HY_sv<06Ev7)(dY@T- zeVL;lpg2W%5K0t>EyI7sJ6D|ls$Vivue30)eW>=jS_-#dl%)?8qE)^$N+$U+Recx8 z6O&%{F%i7ZlL$`u2|w@JW=W7%TKkLy!k@ehLf{uwQxgWk5cP*|m_=MVx5I2nq{WFv zTBc0B2Yg*5p|?Bz#E=6K4in*Db?SVgG~-)5Z@w@if*Hcycms$H(J#dUj#A537q%iB?y6lR7t)F<(O*QfL0;SARSTTxsWRe0D7E zaT`gCvQnj~-#bykxSJ3hxM{ELr%bLRJ0)<<03t+Fe-YX&DfA66FrF zms^;!lhjhl4da#EsN<4f`L8sqexRz8ZgEO}hckkOVKypTMLm>;zg!}{^5bHDT}oN= z0tpeUaL&ZBL&cW$#%BC21IjnNC{^5jC96Q(*xn}JslN4e14%?i5WeHsw5^_)YOh+XjPF@#m)GEn{2^OrD)IsG;O|eQ4}!NSe4Qrspt{7*yVxnG@=~C;INglj z)lKoGGcXx9V|P5)DOBct8&I;OJWb2urg4JrCMn#M`+8J<-?ZFsD(IS=m%>DMI@6qX zd?uwz+SJJz#~v6b>Y+S|(U@e+c%wo@9d2!n{9@3}(a7_tC0?9Kk-GG|ueLTqsnU=W zf2Bg)MT3H{A>HC_V{P}|=+`u`7f&xNXwZPpp~Z=b5f8POCp3MT#A_j{us|pQUcl6m z05ZKmIh2bQYWcxq$dd({cOvn#eNV*Mak(g}Wm>>A6b>h!>4|iEic@^%O?SbuGpyq=VlnI#8x}2ES@Mq$U#Bkr@!~^-D{5?J#6nideDCN@jtY~gF~0;KqhZhSE|l3 zkKbHwefirO>{iw)O9ILZeo;T9AAwx)g4g-OkGOpBEFmF2EQ0y+LRrm9**c2tcIqAU zc_NbX%ZKz73~!u!U`){Yf|q)Nmm30pN?rLQQq^}{0rDc90zA$a6ds)){OQ%@i?~4! zN?tQ}VL-l)eT6qa#YJCJ)wmB^$>OUBod1~IK@FMFM@4COnB~I2c-2^yS17BQrYJ;6 zmf7MlNR2F@Z-K_PERT*pdy<~`~pJ+asi_hN|4 z*GZZW%Un`+!K}J0j8YY~6r71EniMds`|k!+2Q?;Ca&{!vRxYdvY2uUnylt$rBc&Tp zlqCiDWz7m_eS2{KzIfN$@yT&JJ~|fvS{tA0Mw2tBm#gheGWL%yWlCXVOd?iXnAIno zg)j!d72}E+w|KkAmWW~Rfo!)h*=jwmjH0WI?sQ&=6ej-Kfx)ba)ry=tD5#wT4jI?v z%|z^laBfDv?0_crkS0Oahv8%^%9^~vFatyW9>HF5GJJwZVPcASEZF*F8q|p&cjAzj z>lJ^?NmBh4IzN%?TI5|A%&EB8W&yTPQ2O>l!8$!TX~)OMK7>h|a!8%?1+_4vxY3qF zrKVq;BkcmocRO-&$HGMsE06G0K5vMO*OwDS9wHxuyiCi_d=~F8U)WV7yAgpwotEN& zeKOvFs0&e)i*nOuD!am}p2!OIw>&Zxk(Ujd%!#suQ=A3Ig3TVstKZYmi|{QVajQ~oysaU=e4uCE2eZkI*m zA{NJD5Vxw1x~N69>V+^b2$^W`7!mv_J7x;%;ws#ahNx@&a^W{f#`&o9 zI&T9$>A0ON+JeV@C#R>L6#OVpanDZqg-bQ!!)XX3Jyk4W+7xm9MUi4a}fwFj>Vkc zRP^Z6vhlxxTcfqMy~Wd=XaQC~=3U=#5lJ$;$Kz=_D`CCGJA$}1j<0|v zsrNK${&OSZNE$Y%?HQj5HWtoUal6jpg_d~Y?&KpYtwzWgrr!ZS2TcWbepCLS^PUkl z4^bFfT~-VY0++3mv%I`2H*nEhH;}!ePDH)zL^_8HR$$sa8wzeLxRA8s7UZ;Sp@p-*-Ol@pli1Pvkq?2y+gDxM=i-S8L!)AW?Ud`=dL_K1O zxGt~1*Gn>w`6qduXDen=2GRiGAEZlfW@^LmAo(%d3X#vutD~iYEqBSk7QQP61AaX0 zS$<)b595*;Q6+lFQpFlZKO4&u`uDcX_^C&#zg-raaTyWrTo0+rx`ry~) z$KfGu2za<=F204JCc>PC>&bLA?5jf6ciC<+1FD)lsnG3Ko$1E&OgES)RNk$URwW%u zeLHq^8Sho2C{`#~%%eLyyFR$i9`P1m z4^V~$k6;hvf(JDp`(JIXXy(MAt>KK$6caFZIv9_SAUX&Wupjj?K?_W<4rg*l`EYjV zoc%c;qw?fbCNawoI4|{?%`yNCB9(_CnSBt4d@iP~B=9Vr7O4`qPEzE%oSew@FmZO&khg=vrntXyt@ z>B)LAmf@*$)iilcgsoZ9Q?FulZd}o7%`6elgGIbH)38kc0 zzzFM=+3Vpdi>OW@6o!70cN)k~yURHP%7w$dOP6&V3gf!nU0sW!-!6mN#Zz8XC!zRq zZY|_^CsgTn?S3Q7D2wt>5h;hqoYIUNm?#6)LRi#;t1I&m?N^U@Jw8Ql2C>q_$U-=I zkH@^>AIf&*KP1H!^fuBO_{-kW1XlnbhYaFehY6YUXhvFZ1FEXLhVAP@ls;IAD_zq^{6~nI#ITW zUos+{u)*IGaBd=T`>`N<;Y*W6uJfaw*$EUMi>Ln#S!=nP#Z<{!K7+nXS{J7g=}L!C zyj3eyyiS4q9vtjjHtBiCDxUs%;;;TI0%_rL29Q132E#l! zPu=Hhfb%nl2(}&DR|}`r*}i&2-F_`K{4Il3DP42KstTn;`4J#D6g&~&&z4V5pi}?K z@8tNz^Ck1J6)P)Y@gpFf0Pt%;KM9bDQnfYW{eQ#$-}jF4L!rXnQz%xqc>C}{^==@` zz-Cu^F{^|%n{zM$UV$ggsIDKC~< zS-N2w-I*C-SpF&^VcxleWm>eoGps{6Dm!5g7}Dyrya?9aPb#Wbf~suTlbsiz|P}z(f*h08G-Ua+YFTGCSZ%vVSFBrE$E@H3+{3U4&jPQ6oQ4 zF<^#FhubD}mLBB44%~Z3D$9gD+{G8XSmG1z36h`lqHp-2;btCmsd@|L>r0?3M=vLK zEYjY2MYtg8bp#@Gx4t=4^g*QYuNRkbc@jQ`o#qRC;Iya{AIwAT!8xNbhSw)#bsp1t3JPkmp;=EP2J1k&y4-g>xrhn2c z-VJyb&9;iG+$P)YX$%`TI#!s&#wrtai1k;8-c>Cpm>ljscvtsR*6l z3_-x&bHWzDGL^Z=E_RGeeQpM?A{LOadlAWnx?g01r+Xx7o(fZ3jn;{qm*Cks^?bd}nG3;WZiHJgI`JE*wA0U*!eJ zcRtClKjEGvvt|mB*FXlm7N+7(i{kl&YapFvRfI;$| zS(tX;;_V<;1gM|%X&!s|BbQWT2dUM<7L4JqMayP<2=lLn&d2`qUmg|V=Y>d}q!y=; zF-4_{n+iiasB|VV%dZ1vi?li=TdqE?Gw$3YBPOL*s2#W2W&RfM;!Yw9@uATiaQ?Y@^Hb z#$Po{9m^S2BU0IbE+F{@)kwR=+s4|~-ukamc4DHBDYF`0%Oc!hB%{Bng6OWkj8kJ|RmR(ts1 zUfa8~(+&?_wNF0zo!_vI7+z?1ay+)2QjjD$aw3l=q#1+n##S zO$qZ{_67Q(|A|5C-G&WxM@zPRZ*n-X65J#7>0=9+Yi@LBq$36E)dtf_H=J z<3~6O`IjoNz+AkThc${A=@;tdnX{%tFV&Q#h*!FXkJG*0hzCQN&CPr z7L*uNu_)sob%Y67m#{niG9P%?0_4R(6lEp^$Si9I@mL1d2&{?J$#w1l~ zzlhp4WW33h(TTXqca?VP!AZ zm(2Wk6skQpJoU(pEc-{?1ji25+4)*KJzr^O7pqc~E_}|4`GlKb=Fk`ux^W$!NohK^ z61BFm(N;It+p6D9#jezeq@A?wwQ<{)d!#5MCCM#n%m_|?V)_WGQ0NwK6KDZBarBMh z@y2A86BgHC(RDD1;T}?fE;k<$-|QlIBmPx+_`S=ZB;BM=X32B7Tu&2W1K=8#(~4~> zWVIU+T%mNK&<@e_Ohf(?K_R<#cAS>wNvrmHUQNTfOy2(oZTNKx8*OW}(RO#X;_=`{C{#>s9XV}L2l-aucd|v^Ev&NT@5cou zyvhV_C8PJEg9J@r=pWxJK*lhMp>+FCN3!R;3$okQL)KxJ<*ExH|9VU}q2!>16i>oC zUjr}4o552}HXj7mVk|15435HQSJL#nr^!7eiQRli0Gdi>{1EMc( zyhPuhTo*ENcQJ>VeN(6exx615 z8Up9sI+XvcIDug=_-=w4h`NjU3p+QO-HSjqpYqINPUQdd+V&ZpElp5O~gSF+at4}1CJHLOqP&lLPY;Xn3| z3aIaBXCyGlIU~T`6ui8biaRaxjtsyVfhbdy7X^rNRz85kY#Rc8!iXDPCAfvo((~Y1 zQpg+m!EHbB<99Pya8eoi$P)PtPwKEJFqIBrX?>$eq2$XKrxR^sKhS6Djl%WINAkNQ zu=m!?13t2J84@DHqQ1SRf!x7j=jV<7HOSnBguz!tt+ovGEd( ziy53f#L^Am_&Itk*zv1CxwS%vKMF|ry=e?5oD>|&M->y#8T9~S5 zQ~C{wb|We#Zkmu?DIcah<{eciR7@0c2S%PdB`p)RpP0N0YKpT3K97~WJVKP%9*Puw z274G+fPaROR>x1e&da=rSK+)yb|>Jb&$3MRgK77hz#N(Kvj3n?>MUFM*~@kMrZFo& zogYRQP9~I>v=w^ypgjkeSzZDEWoQwGp`?8s>5|;vE<`(F)U`kfsf{%V78 ze1}nW)Yk_J6=Tt_R*>?ds}TwI+&boLt|=PwB`fynwzCm#rZB!dAh~hhSt{M&Qmmy8%gcc z?_ynwC&L+dax(ylQ#)70fiD`kzlOvF(fBBCEw=R-sdiDqKNn(|?>d}snbbunB|ILB zK~{?Z6L^)&by^D~VHsXKSd$YygHm#`9)fp@1%xQc3~M?K(xHw`8ti^0K<1_Dpa1A9 zr3!x1^RHMoH{{2AR>poiFmDQmhdhO>NCS7tE7L&J4vQ%5gS=0dW4Pc2*;hnehE2YG zAv1nRPWel~(bZQ&@gwiFW3(m8OB}EdnkQGG&eKg%?LGuv_D{1ufbvE?1Rv<@<|{&E z$T_HdME1&6ZIKveChfgX#Xv@Hf75s!$%9;f?YP?4XVdF~`iMH2RWp6)5caiq-_C*R z3%95?;TpD>>sbYuF3vRdot$#k6h(@&Qy1;*jGe38v67or(yuPj9Lp(NH3X z4+c4I8a56#J5-+v!O+!Y&yeRHU`Ns*JOYf8^wpu#|8g|Zk+ZygaVEpu@yjp0%Op<4 zLpkfh1uL2*CozAr9mq~ND&C~cC*3_VU-k?;nb{n1U~;5^&rkOGrQaDsp(Q(hEftrAbeRZX{Ubj)0H7IQ+!rV;d6NKAUgn4S_`1MXi7GCe=!dN?0p{l;Lr z3opV=cxNH%rfR8g+ur{w`lbrb*<9aU#9ls@XdTaam?D&?6HS#UR6O#tQY8~R#EmIR z6bcn{+{+g)+rj>U>inYd&lRkv7nftrfn&K>+RpZR+uhcDETw9FmERe*wkBoDYp=-n zt=s@!qR5eh+tzy9@EJ^$mC3BbPCEIoz^vO@AVw`ZQ2$H6h!ZtG zP@H1ni}PP2DO4lfB6+7uVcyMR_lkkP!Wk=ZY7A3E%4y}=X&@^SisE-ukYJB+JFPTq zjr#H-erTfZlG3Z-^aMvYrWlq)7b`90o+-_V>Cz`UX`K(m#LP*4x}D7u ze53`#kOfzlmx++C1EhCNnq+-Ib%?rlX#A+o^_GjEzOK7;hhHcf@z@N?xROzI7`Yhc zCHz70Tm|wi-u8%2-l$LHD@|pOfseiFx!+w1rH+A(LWK$95v}f?q-^>Bs~Fm1M+QF? zj<<8GpC~Try5*3GY?QSuTTrDr$b(bCff+KYhg`1@NRpqfTPySb(?l%$h`xWCb=Ja!2_%Fc2 z`Jelbmg_HT_{WNivF1s+Ia{^2yBALfm}l2k+s68e6|3Ft^|rYl zJ5_6)Vzs!B-Qw+G?e4v;Uk}gH04DH$F@c&In2krlGi8K(v1N4?a9cqTKOM}CtxL_r z1^;3}G7uAHe?S_3+_nqEWg)ISEJCDnJ>NV`FHTv431k*K0@Q(bl7`VU|Axz0^|>I2 z#g|SJ!0lfRa;V((5_Lm8_w5tFzo)2EsFUNv={Q)R@l)el84AUzOq3v$seAV{z_&+j zw6!i}>9QT49JPakqjqQSemgum)*aSeyO=rnDk=6Ns_QEAFdWa)i9>d#9`ze_l3qr!M7lwNuuS;b9Q0YCvnwoQRi9i; zuLEL1bptb`D&H&+QlVm(g9xj+@aV0md@4ui7W12E1s$na%$fH+g-$A3KfOFGj{U%YaG_gBR{GTIpVX7E&s z6gRn#A3tdiq+s!Gz)j7!Tbpa%t=ik(Y`eO_O!F=CLLDJI@}-Dg}ukFBH1OVus9^%vo4MVUW9sI7uaIO8nOcB~03pgF!9^ z{*}8b8y^=qtIm8bk1gr5EX3=$)Tc~VJG(Pji28{S{N*-(QYd0`(8(fJm@bDD#Mn`a z1L`PJ6pMq9>-@p;`i3TfXhX+x)~rt9vfToS1gH|^rcwlO(=V#7mIXO2`Bm@uxzFiC z8<2FBzo$t*JZuWYu`C?;XJ2#}{;mr`Bg}nQ!Ck!6$Sk|-$BvHofKQZ4Snb%s=BA}8 zD~=!uY5NkWw6Q9W8@#cZzZ~)}j3WKYOHYn;i(4#&`&3xJvzS%>p<*?bC6p>23G$0+ z6f3zEz%Tw#q9C4husd~hc+~js)kp6=YL6d1Y1>;{-p$&PGPSd{(Y8mcGS{SJ`GKO+ z@0F@pW68lS-UX;VV&Vm{7{tN=?5|5rz;3uf>oNJm%R*yPuL*^z;_Jggl9M>7g((Dw z(L?dPDE0K#K+WUtF>=V7iW+C-gA6m%|9Qo!+}4lP69NH4=NJ7yu%@A6c< zaWP9Fe1_pN)GiFrcHN9?Dm=>I{B}v&(|&c+kiHo;u9e4%kE;|KBO_o? zg{2U`QIM9tnKBwUt38-3I8#_R1CGZ8(6t9y02zdMMM&wxCcl`dqmx}iXw zN=Z7E5`|)Q$&Y)i21y-~2meliB6WIt;&t=n__Q4#pR}#fc6;#PVcXr=m3>pn)n?n3 zVzsro(ss92+xF&K+mt57VGXHjk|wE2Gwu3QmhZlm}nIc}snE+le7U%$;zaT+7m zcS!!2~(?WVE54H0W^;XJ+&z0e(&qV~sA%RK)e^;r%WA3;C&{U{6#Em>hIQba10Y=3g z0_k0T#ehtoM^vA2oM19hS17LGxfs(dxGOIcP`ca|bB7%1Mw?;hy*Uu}x*2+xk<~O4 zRmZO9Tf9;9y=tm&eP>a93^Qs6g~^JQT<0Pbs`&puxR^UQ6RP=C;|vAr;NYN*H6}S% z%9uRZKWzK24%_DXsO?Cp@^00}n*XY1OT{e-x$P`J*XD4Giof$9`L0=r9 z52q;goZo-ysR7L|QD{rHr#WB6P8DUQJ*^Pv(=EhKOZIw}B{QZNQpt4aGbB_|!dMC@ zIH1Z@%KWgLi1uGYcqgqCmr#r#`=veNIh*ne6Dibj1jNo!r2`^PU+?A>2#>m#A5tnm zd=%#0S;;}3GdVyxF(yNnLtp+#6GZa88@W7op!}4*$`k#p%Wn9;P9_$htAlIkrg+2I zd<&oi%h20LbPuk5pZYGMYM`fVpQ;uOq)@B^C{y*9H5zsz)Ai|4-4QSbLn9!Dx( zy*y~Y`|Zc=<%?HVtnS~vC%WTDfIR*~nS%HwATI)q-Kv0x(7VxHzVle6p-~Y)w`lX| zM-5GHVJV{%&~e;uy1-dR^eS`39}{OP>d?X+Zy zjsK?F-rn*#9K`y6sm{kzwl=M(Fd>i~(!>Ojx~^gA`bN1)rPAr^l0ax){lJ&D35M`5 zFV}pg!!P!#P2xOQPoa3qls^Tt41{#DyUdb;!a^yuTXv5FnaJ?@GTj`&KpQ(3WJ8xO zKbc1pc3mt}JhA&2(lrb^Fdk7_9q9(JBr=c)x2=Y<+y#@q%do!TU-k0#eB5Rj#90K& z(-&?wQHQpFMfeIue=W#rnoI8jqB|_vDZW$i43T!hgNyM4$*SSR&04+m)9FA-}}`I+uJ+}yw@JyzuWHYZF{%MZ&qKw)R^VHRVY_$ z@oy*ZQm6TjW3{>lyHXsqqf>Z+wmX>IRvA{~E8>MRRd@751%Nm#E>@6ACNbbOPx1}O zkwB&~uzdZfJWXLDzk(N0h`dhJPx0E4KFc6vTM=`8QeTsGRGM-hku4S$a#dwbCA7J(5$TW;qi^|A&LWzhsRqCdO;dgX&+@3vq;n&xkD-KH2-M!s*|K6Rp zvomU2TO7;K{LHU;Z+0Jai?0c+3TX{6(XwPtbeg=Q2415v)dOq}KCGMGp{NBzvaN8a z^-Dr5Oz@B?_g=aw%hxpriv9 zANdM5`NAFXXCrwBAbsbTh{VmLTwdhqV`)w&DAF9deT_H{OF8I-0$$|14$!L_Wz29`q6SrS7g-DZjBq zzkXD`-Qvq5x&hZk9fFbZ4el^s8KU0kk0@2AXV5rqM&%L557?dJu^>DCngeoNUTSe= z{y`BtIX-EJ2M6usWPCN$O;%Ejpyh=cc#9SJ^zjnTF@php#Atqf~D3l!* zYr$l`;;k@!WWjFGCtwwSr4#43z6Pa=w2jD_ zVZU;VCfq$31fje@=?Ppo%E&Gq2h~HVoQjViL5);Q01p)-e%&rV}Ll`l80hsY0_U5I}RWWbHF94axn721&|0dPww-all?bTmL$LKqF zEwW*c2^p4{aP2D^bRu;q6pLI9IukkE$*&C*i|$dD`Qfz$QKad`lJqMN?yP1?B%dz9 zFDTeDlaEELWF$xAQ6E2w%$UxmUgOfbgTg+o8qVlhJmZ^A*E`iQ&#mUNPsX&4k zmBJf*{F_Ncs)H;4s}^t=$7SO|;awFW4@q{JDb^~~p*C`+a-%{G|^)tJsD_ zIRETw)nRwuPVV~8GTUmBzw3$sL6*HP$ND<;5}w{I%`lMO?r$hparhf~NO6ru8TDbOkN)7c z*N1p&DVNQ4pbv0ABaWQJjXO^Anu#VN8&N)Ah=5$2s;8bmIBiqj$ZOaccPLV^EYN3o z({tSn5yhtMa-^8ZDgL-gC#>lcrt?DVD68whb&_F88Fdoo?RggQIZI-hMWBm^dq9XS z41;E2I_+t<xDa7z$WK)2YwHthkfJXBh<7H1DihVT@h`)JSw~!6fi-B@}GiOrqk}C5++Y8K`O(9@*-eo5L)T* zLfr=<&3}EOkI#kW;?pTn7NqX2H2Ozt@>02DaK}O#2wvOZF(U2+lHFp$8nA!h-e`Wlp(t5NxRk>xxUyBRV^n;NK$ zRK?!d7`aZ4Pfj%K`EzAS5WiJfr8#jh-4rsTjDwPrAGsmygmj@1MMfti>KU8c<0{2Y zV3P8q?-bF-Y0AwR^)jg=lV(0207c1ioe_t$m9R1wHv&oL%CpQ%e$j(Mg^4?=U-s~G zyfm37Jp|xWU4c>p`}!{u%o6_fv0FxzTXy9?y%R(V;?pDT^pOk?J5j^5sPv1zL^@dq z_!32VryLG*oCtF`SIVKVN+OeSSY~|EJ|tu49@qzDv9b=5m?XlAeqhYqTI9c-BI$*!nE&orM)iv-2pjev=jlg00ZC3 zP_+g-Rm_d+{zK)ni?#S;W!{CJY_)cBlgkgo_zSUB9!*@Hi8x|$=A#y;r{i{bbmI3~ z@&Bu9YZq;2w9@X~*=Tq7_!}JMgk&X8J=JO7;_bpc!-FITQ78`CIkJ7~oYdrGJ%AfE zjfuFrMBkBr%Bb)(u7iiK^0gRr$Wp2@y(B>V3J1NvNaY47epZ}hXF`d<48y+`M94vs zNq7kxLjD?9z5Rrht+823N zsx~&-#^#29?Z)h>f}_N_U2J z7vhNARGz@dTetxRtg&O4%B$*feS^1-Q~sFXs4v<#+J3kzRsA?*h7!fOB+f@fxPS2} zlXrXB?0ASa$gTkDx+%hv3fkR@>Pcd1u`> zIudr?3EkF5`3B05@(NiIcKF`U>Ik$HzQB)E8p!p~ue*qM#`8I~KnCpeh0 zEW}gwbX0P}pKW^HNpqeQ?og^q5z7Or3X6%d%Fvf5K831NSsjkSMc*oy!-B}>kd_AV z69aJuHQ+YBA}~{NSn^CD%26d6B=P2uS#UNcou-?htN$WCQ+~Q6w~z@;ry5Eyh4GyAaey;F0|{^axJeD>@>>N`_4dC zLGe)9$RD<}XJFm6^-2kCRCy1=KNLts%bmG+L`eB#N2}k(bPw!965OVkMY>GnZ$Lv#y9+hOJ5rs_qKR~T znL)ZxA6H~f(X2XKgjq=q=_XhP+F9I26tEwk9Btbv#th>Y*P0=i@V(wHvORG~DNBKC|Ux3r;U~vTpHq zq4lOFf>@M1X|XD~O{0U@4e-m4zk~-%huR&Xb?FSHrSq;M(qKaJ|H_fh1VyI`Gl&aD zc@REfFOUsS0(4=5BM+rWfar{&JcV2QELN0RZj=w?QXKr)Ss)xZd_cg(MurogssuC2 z&!#TJyk5aDZp5i*w##A>=~w>LCF$C)${IxwqAtik&QP#WB>FIm=>&!`8jbwO&v!sl zu zV;E8at`ZzjEo5DkKXsAulrguyOn>Mv)UjBpCr3$&HiLzox;Db1bS4g(OP3O@ zgn7X^UJ<)iylO#AjG0Z%wXC7c4fw_G6kwd8d@=7sC|D7uoJ{(d$CSeGla+WT`H%$+aUg6fy93aF^Ah9?744k=LFRIeo18w3v^)3`kxRZqX3a?rC)W zsc5QC6)g+Od`0FIMZ3KnESo>d?Di}7G|jB-TNLQ2syW-4RnEqj?M&L#rN%Oc*yYr` zgkq&I&8sKJ$5yU5g23Dln3Gi1nv1z{bbkGCa8Zup!Liz|0K=C_jMP`A%#2PL!+48d14~J0%342zMtJudoT>up1Lzn?d2% z+Y4Qrlp-()&k*wvGz=@=J`LP3UHT7{j7uu4A}r z;X~Z8 zU*#Br43uIsP;T~iG5W!+0km(bog6*TqVA}RS5pb5^_?O;K{%?(o*MDxoY=;GzlXfN}cU2 ztgLjzaQ;G;!yuSNPDNq$cvKg2xPAulb@d0c12QnC?3Rjn`%I%`3<%yS3iLdsTva&? z>eu0uAbKaqve=c;;AHS}u1J0i;!>(MH~3@awRU)T1hWx$@Nw=6*i^jeGxk~@nZ?LT z^u3bnR>eL+F}X|=^>4)|`)!mj+Nvm&ABF2v$`$e4zT7qvB?;J1U-;`v9>PDuN@nf) z@+u6U+Y)PcAl^L0&1ey|2aaJtT6;TnA_3SbuI&hfz|cMg#fi{4;R))Y`tq>O@acAK zB|=^Ug2&Mfcp&pWn#aWzCNPQLva-877>&@?Y5SYisc_t~__-JmS9$W0DqeNPTl- z&C1p0I`1iD3@|B3bGyY`hm=3+S+PPRA0D&uSo_gawSy z`~i874vj39nJ%Bn3(^=M>L~)!4l2SB$wPikM)cTNI<>PSX%W_jH)k46;mF$*Qs~$n7%s(Ogcov&%y?fv^Y< z8z1G^t~ZIg59=rsnDE16NmQTeNcB65hM+EHgL)GG67)7es=OT~hCp^h^!3(*)!mpIUpo|x( z_-b}tLa}0NHRJ=8&}G1dS0@h{kmZ@x2!A@i99$~UbrBTh4dMzauSNFbLVaQk;&zJG z1QBMI4v0xn9mqR~at)aAu^Yu@#e?(V!-qbQ&Uq^2{PwrM^`Z4gj~+SAzy81fCVv{- z*DJpWBroNTz7c)JvPsJMihQIokrk8HPZ<%P|UX5fRK7eLLKd7*e8EV5@nctew4=7l`_~ zN|C?o0dLGA`I(Yaq|2mx4hWehE-9j;%AO6mXJNS#^q3=N3CxOl)6|#8Jjs!ZS$V;4 znvgQ29uuw^ZMAIQ`0Am&F;}@$VB~m?5JSB!KH?+W>e(W0+WEJJi?+3iBE;WCX>D88 z7#g2=rwJvgZjQK#9c^#5&Cym{<2Z)K9O*Fku4``I+#G4>ueYO<^LBK4-u90$6|U%P z8H7r9i?@YU7C|P?Fk>;qZg=kV@C$?qcT(_1ho{jy#iJt!sk6Wnt5eA)2!6+bM;DX* z%TAZP3V0v`#?EIE1?mnv(uh2=OazBgBd;Q-pW#D9St?g$FLyz1;&l}DG)u1mXc-aLdd(yNLLW43keE~jN3{LR9zL-!VZ}|48wL^qVLIGbDqq|L$)t|$wPZ! zmqio^H~EXa*-Sh6EO()lCSE;JyHbdttc2khe!@+-2sxrMCn!O>vMeAloqo0N zn*zy9Q(Q><`VW|nzYHzHEdDn^Zwj+yL*HZ!dsS!e3KcUfs~skPDRZWAdw#iUx)3ot z`KHe|VDe|YdQ2*Y1fo#Iv5Yk-RJ=zo#-jhflW9hhG3E4Y6>jnN;rCR9!c>YzQdJO$*C6QerUl!!Wi;wde+CP3E z!NQBfGR^DKT02IWI`tUhJTX%ZwQq_ac2>-dv`#2x{?O@EMo9VA_JAt zDPHc1I779u!LLj<{GU@N$H7Yxqd(AIlp)GwS;0cZn9=o;{=ub>SRo~uaR)Ga@Vj1> z22OZ}#042P?bhTX3)yFq>69!;0i7N4C(|#NlhhRDbSKHcv|Ze)*HB`Z*n*HpSX!nK z>BX3s!y?!}(;UOne% z3XcPMwE}xs%+bubJf%U=lAprk1)&<>ip#kxZr(OWoAFER?X5Q2+Vo8@gPRn5SUpp_ z#oNUyleKprXuz~HNuxA*(oThnp2Vm4@i(8`e7rQdMRl3evhXRAJ3=91hue#2eWnyF z;*`CQeRI?z9$D=3+Pi~r7fploouxtkiZV3FD?rMdCO!@-Gwn`s3Bs866HUgShst9@ z`Q(vbJO&NLY&<^q+tW9tRB;z|!mm@txoaWO6pdeM*HgqRyB&5bAIgw-+)%7cRli}vYy-KLT>?bu*QG0pxJAgIr0Ef{Y=_;b z_#PurdL~LKh}c(wzr#{aFRx54VWLo-k2MB;<|@)6Z`FqWIM4FW{93x&jl5Y=6MS{T zFya7Vw=C+g0$hNI2k;H~19w=Ba=#JMCG7J*Fctq*D6BI2y2$92#x#9dgp6L|n~-^n zH;1leJOui2FcWUPP`{W8IfH(3cJ5azSgE>zq+t1-RZN$DP-x!qn7^mt36aJiM+-EW z@zh}V&R)AC;`KL-OY*>6ic;m|Zt>Qk_Ml@VVZ=okwi13gpx}*3Id-qNqZts8`SK*9*~7{^8bij5@KnHj2{Y%yOO+cxwOYx1Tc^kLyiLNrT`yDme)=`?h4U1Zeo zOM4QR@?S`UIP(aQp4%g7wj8cy7e%%m9%fo@fC>4&%phHcb$kitU7GEcF zj&^6^-BfYr=|poXZ&&xP0X2rLRH0;v7{`t${xb#m{{j`Cb5!hBZD=mu+e4|kqxopf z^9#~zcm5Xd23T(5le2~=1x$~^aC;*2q7sBZaHq)$H+Hs|fP2!#e1K@391(|^dCPkI zN-xjoV4lZWojB-@92So>-8G%4uE@R_S%UI~TtB;3+Q^Q4RyjE%6Mq&QrNrNs0KBA6 zln#{!AZ#Mgh{bh4xma0{<&n2(x$}|HlBoZnN&jT-aK*!5K<@1B_^`DkxbAtK0tY6y zwzuux-``ih#Z0{n>thCHr!pJJjQ_-o3}aS53DTs2fdfRPUno#kgy`9j zR@BHYCOHdYLZTl;zs-7Q=Z%yUkvGM!t*m$MVcKTa*Ya%2$Z}X_*MA4Z1WEl(p=4Ta zUZ+vMSw$11V)x2Lej+UD(#o9(PhC4yz4aJ|%B46Sn;xezHt{oC#&w#NZrVZTpYCNa zj5C)iox#T~BhR9E>`O>|;GTuze-{wBn4j0>Q1Rze)WVH>`{+ zji(hJ`-w+RyP2gJW|~Swx@aOBZEgGJ7Nu%;ceicx?-papI6ZZXax=`$6R%g@`?{rrBk<-e*ysX|F9Ww&Ho5hU-GR8~@yC(6{-uPZU? z(#nA3kxv!hW|SbP`T4&HL72!qZOW{r|$oAQnjbsFO)#!TJLfzvUH)mb~$Jjx3|SNv#i-8}w3K>49yF%&sp z#TS&L@xTD`Y)s16cAYBm~@#mkFb zEO^zNW%JZer|^P5g$aQc+WRFr7FHGtf9y0(LYy;_m>DwUI#epMURUp66$IAnGCxg{uNKA`7+2mRQQm9 zziP9-ohxk+hB?Y1;1+OqerYAXjb0w*Pfxp(Ey(@LUe`l>?pv6AREQ!_*XVzdUy_aq zxa>;Lj!;0Yn5u29=w(JiX0&(7uCfr(KDvmjvxmC}b=!sMQlH*F$-fxIeGO$^L2nb3 z?QTpahT*nPMEHtuqcoz9W<{cyMYnjjQB5>#su)GpAqlAw(Vwg0zW_Z<>APxZxV=`$ z(>L1kVP5egK!x!nVYD^!(}Oh;^D-|4#m!n=$)$0Nw}@35)x<}ZvIDLWjz2pp_Q?UC z6Lv?TF?XiOe2NhZg)TYa*W<4go+|=`L0aMFgD1|o%tqg37o&KbCoCjW`Jp3YrxVLw zGNTOoh_}c{lki})t1KZq%R*T#$92-vv|?(r;x9z<3M@YJAan`}S_-h4 zH!Wd=M-(f}3CQhqG0P%!d9t6q!Y}JOhrb`Ia!n+!rq2DqV-6^O&4;m!cR&u|VVY5h4&63SJN$JRWbEH<)B*3SP;e%2i;H!yw7RjCu`zlm;GSO;Wt$sE7qDSIuiE zcwA*k;a8+DeDZhwL-H)@kV%C?!?S&PxIR!6#{QKFj|Dljesp|74A&p|<}slaFvWF? zWzrTQiX9qJD$JE?DBLoYH^_^-Df2Aq>n&su-+?7WFmJ*^6`7bSaJQRB^tf0ICg>Gf z=iV~lqvcDXf_w-+DH27t!qi9Dt`B02C`{og9#>pUgyGR8AFzK06hnu|*U;X(i579I z{dwgLvgvtLxrrg`yhf_7hs*(zCa4RNOD1VmzbHl9bpk?4nDlYu z6{aqdTkB&WBA6#Xc15OTO&?5C?6B42k8VH!=XnN6R*4HBe;6imy#&)hV!({>_GBpi zA(5XDoqhtc{mVK>#5?MmT_MtB)KV7glyvbYltWe-#Pf{4+9xWtwGG|z?C$Nh`}gj( z-JKo(sq%>i@~5AD+J5w-ANiLifA@F4Y5(=V{k}<$YUliHg{&sgw)79|QOC}<7dC?| z+b4kCWlV}<5+3=*W+khSBAIHpf!n-UU!)zx*#ycNN<@@1;*vKLMwZ)cNNOpUp24^J znyX0GI`2jwDp6*ryxYtP)9F$U{AiyPLJYat-6I@(O>o5J-8FzKvE}J}<8~hLmm_=< znKp-6BVG{b%{cT5s*R9?L@0J-BMmJ)y{P9*`PG zApZ14VC7kE!hClRUsejrV$Dn3?c+Yz{1)X2x9dVIPLB{|DeIJtAbHs=s`{RbE_^ZL zMCdR96Mj8mT;-WV%km1>6~$cUPsbt>u9NrfBl_HtjOX z>h3`TU5up2;v`M;7(H)w#@W132Bq1t4k0$i+oTBUg*rkJWYB9Np!thf+hZ$(isAqKZ z+d?_nX^LIRAb#N%G)}@^Q2=(gPqh(skoDlYkR6_AqfkW1D1PLNaPmSsSVmHmCGr`( z$fqx)T@*X1$j^`cu!%=eO|s)QSzbVFDSrU`gld;aU4U8r!n;(8Ls_~<<1)!%{O?#O zIn{2S6DY32NeVlBvAfNk_qi4a77COo`rKL@@h|%*VM=y$eO+!TU{Y`bhk8u9rlHh2ipyeHzA~^3EsJG1mzQ=k-ggzz6s~RC zhAlPe>k%$OL61I3X!xS|#4gpz#acU)$xfBuu&!{v(f_4bsY9)*&t7W&J$kj@PLEGL z-!ixC=tg+&&Yo^!=&9#zLvc1mx;1H1q1?A)4C%`F82C)1e0mexRlZv+2Wr`1yv4vv zkE&EnD0syr8^4G$5tT6FF|lZ(Vd4#iAe6C*LF`FzND5n`-OLi1!_qGTQxxH5@udrs zE6hkYeBNDn5tA9kQ8}n9eY%O!p*JbRY+f%!KqkK~;U~K+R{VVa^z_VW?QHMZ4l&TV zn~%I@J9DN;Cg+M`7qdi8r78am8dwIPjJa4wc_R&Mv1rrRf|c@EzWE{@(zT*zOE7Yc zx+=h1`5O99yCzY}Qz;ddhUNQWw#c`$MV=WeA{Kv_338TQPJo;um!udxrc%DsOscd* z*co#uTZQWDb77eoc>$(FD~~a*GarfAQS4g5Cgi^2FnqOCtSU@R$m0qYfps2PY^`fy z*lv4!JL-Q@U@oP2t*~IAI7tR^w5Jv-#l?>}R@4wFdznrGdCI@Zf}u1-WmmA#$nZE17GB1{zD!a#hJ<=ToTArF z%)2#RT!s7tvg()eK>2bx{B@dqr;>K!N4eUQ zQuW~B-L|{CC3$D!94n5L92N&H66TlkbjcmRl`CXNTAd~%Gj`2szX)GfeBz-*@zeu5 z$`pTMyK1G19m;r6!dyj(tpHPwDvQk?*u$;1_GjofX$Q7fH5V;HhEK~`7SRW$SV9zJsXjrBFt4u86=&d#ne=H^C> zMTQ+o&us16KJb-;6~q>`pXR7)iX4CgWs3ExCfQJ+Ao)3-CR@mpZ75SIFwKx*$+>9t z$iO-9ggy)MC+rGkFu+|HruZhIn(}p;{82e?G?_VS@sjsJX=I%!;~;1;h~sODSAJNS zGG8oioTG|el@&j?KRrFMqQze!pirHjoJM+<(<5Y+G7@%75{kS|@^`@B<%m$OC`2fY zZZoI?Fv=}dzEK99mJJb{B@i;ZZH6FUWMK#$CY=o6Ux@=CW(o6m*zgapASmwhS?bDe|uP#xqAjUZP zWr|lw=7~t&u@i+7mGz^bdI_P=hp1n{P7~9|IcqpLg7GD|GwzgJ&%|TS^Jtk54c6Lo# zNdTklR|jj*aDlQH>@qt=3$HXgI4YMZ%_ud1WoYguyJk$U_^e)ve ze(|gJo8SCH`_13~LpwM)u>yvYKwJ*}(#GsaSlRH0{|^(1!1$u_dT z+@*Lzp#(&nqR1aY1;+`0v4wwHLtadm1=tD$s{`9ifFfl>F!hu1aIA=nAG zQ|%uLR4Ja^E%VMC^XN*sEyr4e+^QaeT}|>oQ$O0--e`M!yGn{T_P>;D@*rhKO3-Mu zp+3kCDsp4TiN1DvQjh(Vj))|7cSr5+ogFJ${BjD#=u*nt?#@3Ysvmtfpt5G07iN_{IEuG0S@YD}`pQMy+gi86&kkx32h~Hl z_t;7?yqgLo3q_1Gu4kvr!|Uz%c&s^DeR%Mxgq&>!IXq$Gc0e*+ zfg|;pavG8|E4F;L<|wBP>2@7n2UJSO2ks=PCigVcS& z3vr}Fdhk_WGUS1uVN13F{#ic9%_x=|99kShW+*CjHj4?4Gq^yD$YK52EHywiGb}41KaLM2G>~Q2n zK5-QH1d^|Vn2}{(i-~lqPefXo9%1;W87VQ*2S18Ov=$C~s*F@pEf=cVdQ z6$%V|zWdf9u(P`+WoTD^EAkt+k(3=PIZ|js!HOSEaHmcj@-Wg0L{AO36sn!I_Vb_r zwEf}F{-8a1{9e1Wx6|(5yVE}W;Qe+-vNt4~pPav^KK=(k`B8iP-ov)NrF0~VM~q}X zcGlSWq94aD90$}(S#(`c2a%+J8vfX2r$9? z1`&1hT|qxCx{6-{!8W`Gc!|Q!h+QW70^{q#b28nM-BQL{oJ~|89&I`@htx-#JVn^m z4avQBd~~WC;nQ{^x(OrZ& zX}zPM&ZB-+OUk;-)m0|-8joeV;#~tr6-Aq7U081132khwYoKyaIOOuk3j6Nvo=x7Q z&OvpeI^6*Xw|LAXUHDD{@3hX$cb1h!CVJZdgxQF`M&@x3)9ghO5+-@*(+pc03FJiI z?bCo{H>I5q_J|ZfwyEFEwWm<=L-CCGlaU4D#wDW-7%B`a_M%kUGRVdt*{c}(%WmGV z#$^yr>XFm9`KhqVmBX`K-k}n?e>#-OnSQ|;t1wv@IKQ;6z7+}6z~8@rPm0u* zXr*m!5`M0`>=Tvm%nH+;ovn87?yl+1-gevF-V|T#RM9`~Nm1hQ-pu_@6ww*B;!{ z0;P0D8|)sa@TzOd#*P7xRO;~{>Ltn;y)cL#6jxK$iKnpv4ePoPb$1<>;|f$li|Hm3 zZ?OdCRA|)p4phxY8??(J^t z=3u1$r7+FeE4mRGajr`JRre77m8})C%8lZ7#}63ebMk$QFAwG^qnk`^;G2Y>%uuRi z*5c-#5#ii4`V0m#G9Fjp=zzxLgK7IbD5N46T4DE%;L=g@zXjiKXOr~tW@DGH-m1>-zR7g@9plku}1yj(Xk)Z1e60eeJs9^f0!Wt zpy&g`6gy0KO@@cwmS=%2h!-mq|~V4{m0gx1A@orr+j0D!X1hSXQ@V8n?6L# z{@Wv7D2v}iDOdO8w9PXdk@)sQv7xKWabu;RjNj*4o+WVLLrJP-afsSay^ulqp_}c(nhl{q2AK ztM<2l^Pk((&wi(JpGcY7ky7?VdD)W^rgB}5y=%aN#BPDIr822pYHQvf#3REfGhx&P zuYW+ngx16pySt+b~H;2;<>s4f4ViD^>8&rC(V^I`C^~or4EVhdA zG}}VZqOgWCEQ%0A&&mI+L8W;EckjX$Mvow+IdlF=7l(xE)ic)6JT3kk9l~ssj~ z2BqB0;-|XV{rGpEs{fv}(Z){OzH_&|&`q$FH0B*V(&{CPBxLX8&w=aU8o+TKU*)70{SJyYbQUagkT2wi zGQ-dy4y9O}X2D!4@TwLl$5UHeYLxk~v;z4l`+M)*_ky*(wdvO>{PwrM(?Yq{{>Oj! z?-hTo{m=jN|EqoS$!8k;TkS}TA&Xt*1&{{kPpH>ebZFZ?+)x;0b^CU1$`Sp|UKu}> zH~7?V*!m{FV%+re9K0PX3`3UA9+L=878wW!i(V)?5k}l72eOMI%o!n`OjJky3lisI z1V_BkHph?rNYh10kPinXhISk=LINQJOBi6tjsrI`r^g6UXAK)zT_+IX$>TgCMkVGz zEC*qE#Re}I+!~GA;laKp{PlKrcB(t(V=GhV=Vz`%ZlY)p-fxDOot=^T)O&u^M}K)N zrG=k`|MnmLzJ2!T7k>2j-h+GX2OoUkKF2SZ*zLsbd?-)sOm0ch+T@=eHaFX7dt2tn zWnI@iH9l1w%`@zJefZ%Ax?4X`zx{jPwX^f;vssdLqC0rE>c{wB263c-4+iB}<*`==ijq z$&7dR#SeY_Hug0Zv*@1?y}SCMD@f$_abdFw;KfjY-BSq8`RHUJcmbRSmIVSWOL7=4 zZv$^B*(FgGH>|+Qai8;9)jP|N6_=gV2X|K5<9nm_U{5zBYvXojNy*{3 z+4SgChxVa$_Y;v!W?|37nf)+$$Xz+62WQ|dmcrWZ&ib#t;3sNevbgyU%zmoa8NI?@ z-98064wY9bu&I7Oq5Zsr{O1&WhovIW~Dm=3YtB&&BrY6$@FA) zW$!WNoI)S!#W+(Llx`_7B%)ra4i`=mkag*u0CuT%cDLO=r&@px5961AKl{U9Xc2kY z{^oD~wjCaws6T9IVDs)Drh>^5BbNAuX*XHMS(8736c;1WP4L|7e0-@xL`p}daV&W|5IZh!F6NA1Cb`|bCieB4f@pm-h-ot(tE zso05&vqtRx@K_H8o!zFhvy=AOXP>pBqoelp^QW5lpSRIyt^M?)pGcwle*6BD$9@F( z@ZP=ly+;q*lSl9QF(129el*BqLiNL4Eh5O>k&?yF#xJad#i90{?M?4Oy?pV7&9yw} zYf}r*D(}6L$$?;gF~}j1@c5cDh9mD(X*@}hiq|CY=v}<@XN^_=4HS{otJXJ0 z?fCet9Ubrw7*ex#_N0Mrwx^o64|PMssSSCjT4W)asy&Q>&!EeeZ|`%9<*~NCv-a!Z z#N934aza(D6+T_jop++#zU#^r(G!Gbn_(EfLl72eT=jn)%!@Y9KeH-KmhW{@>2#(G zn2yA}yaf7C;=Z<0<*HU3+5_EK_E0FKRBesg9W5^GDzIR3XV0PZd-v|QpZ@d@b@%^C z`@6sU`*xy%ySmCxde1$ut6jk`H-s6JhAp-$-7w=~L$b&Y_Ai9yCy%5&-EH?!n55+JIBt(~ zSpIvNH7_VECNw*5jAjIkQE2!fg_Np|4J|tCnCV8~zOji2STbVdFIncP#fza=BMPu|g^1kUR?<@4DiR?{_suXv*`8IB&=fs*-XY zT8R@y|D>}q=2S7+o`7=TA6?j&1omQ-eP(!E=aMc%HyFBy)M3IA=)98I?zGRP-uRB7 zO1oUCuj3*dqF;>EpZSr+w)&uE+P0w^1O6|w#sTfjD{tJ-uxmcPd+&kz<7(UAKh$_T zQb*fttGX%T{{Rn;kJ|Ccr6ffUL#gT&s{%7f^uGyj_)NEW9du`^pjr%kM=IE*i@klR z31Bc|2$Ky`=y|*#R3k+T_mQ~W!+^(rlfug9CKON?lISa8Jwp#?A@cF2P|0*AWt&QS zR#tlSp~QV%rOHqgD?<9BP+6%`8}Im+R(GsiA^%8=5NSPr^tk=#hd*wA^;iEziq*$j zbhr~=*J2WncD=ZUSOd|BB+TWsrwBjnWn!)H3h)&M;>tn1A_4xPqS8YQ$uk6hh0*~Q z(QsF)@>ofAr!<`l**m8!V!&Bm^Wd0H12g=hPT~w&_*VdzUSj0I)(N}wVsLYkR{8aI zKp*cS45R{FLFG>tJSQiWD8j2=eCS$p0lP6TUOaD4Kl>~ub4~7bUT8F87n_Nl_nfW! zG2DIkqfIL)2m7z2*c|)O;fEi5(0=;SNA1u4I6rlIa;W?q ztE=;pM8#vbN{SD=SL^`rx&)u~WD%2_zxv=D3;z|!0s8HoksoKGU{djZhn2!&H)Zt+@J+umOJb-cjQvrZ0p zH-QJW7bJaSagcSXx`sCfcr}hEocIQ&1UZ=*!tuH4J0F$KTuciy`=SW1hf1b1vmS?- z&dMbEP~uh|t5%l=%}Uy-JjAa@nAk6Tm>8vsb1NJ;J~-HK8ygy|?|)y4)syxYfAOE% zXP-T7(xt3a@xGw=AwuLX@+HxsgLkODVkEDv5ow|XC8zv|iabpG$m_(8Pl_)7nv@Fe z$C$~1EYh_+ne^uf!xN6Q7t%^lg$zRHKoY$Z8=S*2gdKmUOL&^a&&Ph2f!)#^uVi(Q zHTpqOAW{t=!V)YtWTx0DKQmfP=dZeBXOlF?Qf&Ceksm9t9VJF4cmD!VCd4@?Kbqr( zno`VZt1q5@?l(Tuw|@DHpSOSWul`m0Cx8Cu?N`72xet(^O8Mc?`04RMJC*Wta@ML(K8nyt{gt$Lwx#eW-LVv>Ln(4&@%sM)Rrmh4 zf8~{U5W8CZ%FwTRP&qj@!plE-EXYnRj|EY>F0`QWYpM$=V#uQ&+@+8yd7L$)to*VO z`6nm5IiGrwg1Nn+JhOnQ%@w5x&|26rubfvhQ*irJZPfWrQeh?!jhUDZ0l+ zO$?k^1HSq53kz!Lf;_dBy!hJ{XySE*~8Rfw#CZ)^_*e z@gEiK9f({6{4N@1PJLry4;~CJr8uWa=y@@i9I(XVVlO_!MKa+DBA6#I5WNsyY$Ay( z=)%-FEvp3DdrqV;iAti&`>aCDO1i6qJ_7Yp`HX3Fc~IA`TRvIG@o9dv!7jrF&+PzLct+-8=1n`49hVd->{6ZKw1vw6y6Ch+T_e#<9_~WIJdofB2PkVCk(> z{E{^xj|Ff>e*whoa}ucYV+CZDSIERsN=pRzDu2Qz9PunLS|3mxYvrl|}WLvbx56M|Pq>!*X#Q7x@8x);(Ic}#sx;s6xGK2z! z@zi z%-H;*uA{!AUTM0rdVv$F&M~76GExG+K32edN%Jt5M@~zV>5%y%mO~dG%aMa`v&?O|3HUAl`G&xh6dJKyaBB3Y_G(bDjH9d2$L>gJWh{E z!&);<6XtY_#Dc(pCVm9gLSdx;wCIR4?Hl5+`p!U#AEH}?hG7;qgSns};?2s-O;E8r zb6TF#nVCYz*M}0f%5u|*rye<&__!_j`TLrG-Q~AVYXM@nYF`V_-rk+|`)ojfBGlw z-~Q`=ZS#9i9!nx;t6sIEgIDcDir2Z6E*|$iP@hAA;$2b@2g`ZUrXSC#Z&|Ur7;6nV z^Mb=!Ck~2pNOwa@-+S*pvf{%p2VcE>-d>8>dGhYnPAF6mas3F9Ury0y`4eU3pWQDM zEzVl;N3}1Xf8m4p>|*iQZ|s+mO2J|$Y|4nVB(@5nKF48tsK5R6y)CiNdM z88(lC`%TchkILm#ZkH^;Gz;$fd#jDLi?*e4#Tz|V)c;nc%&%*_`DL`~d%XRh`7r(- ztV!7yKL^uS*4ihZeBM6&^hI0I_&8SITUp!mub@xHV=4LSuS%g)s_M8yWkzOMd*A~N z`tL24#@g0)`!$2T?pOn{fO^pB5@yZ>T}6j!uZkuMi${nl&sX6?E{kw zMprMy>Ewu%tWARDAKWk$Im(0ym@{y~U9!D1noP(ccfCs=v2}UxE`d;g76W#_vY~@h zpU9sH2kGR*W_QPvmIV2UJOyuW3-rE$vPC@1IQLZUuKcQtdK4Mwu_7i{{7|Y!TU(wF zP+Iu4TPUTWB=Dbn{GT5E27Vro-M@dg{j-1iPujo!SO2R0!B0Q(FZOt}hSG9;xUb65 zU3czA@gANX-IYtTk^B>_4!jLI4w#>xinN$mxzd6{y7W`dG5JxT7Lo@KA6a?fEELMz zt5+|qAhG+zZWjOT$Jr+of6i0!3I+1bs}@+kILv;0bmTv#<=+Eh?xP0SG30d#eVI8& zMxW;u50o{y0I!Hq-;kec5Ic3G1@6<&q@ZylLfuA`tXqvD&#|a~A;ltf3DLn!EmtbQ zELSK$a$E`HLYP03VM9#2oezv8Fm%r*uHPk8d8f*KgK8MEV&_-Ybf#7H*R{*jw#lD{ zd#7q_g^EXj^ld+Om$~Y#tJcmm7S`8wXCu|?>C@-!*|S$>+**(jhBy-Yt(*XwIx41FXLey$M$f20v!*3Wq;g^UBBHfN3jp2or1zcvx)e!8$ z*pTdHT)~y}ZjPF`mIwT=pWeHQ`q{giRG>Y0Ji#3geKX1mj?aMg40ghzynI^Lq>u|LqZY@DS+(Yh-okpBhbktUB*I4{Kx7B5`H zpI;!dlf|wY>F|DQ9zC9&9QrZh{rh`<#CP}3w)pwQA~zz8hjW#cmxn%U&!0V2nmnqB zDz3f<(vTUA*M+BVj|jJ+at=eV6T{{(U<#IvnY@MYd$;M^4w|-yN}SEDA=eI%qy!yk zY@Bk#!Q7pFKn)tNY@zpPZed;3=irDxzd!IeU6*c#ByJw~kqMlYXe}*7u zWHHWfF<>pO%j!gtu)`ZJ$yEDR(FAzyM`tKd1_gvqTx&5RmPKam0dn>30W7q#KL8xGRNo0yy!rX&>CQ zZ127f%-oSc^fh;%smRe=Y`G!k2%HIbzH1O;2x-^R+rzBXmnqvMN(y~~_;d$$rM9LOlM6w2h4B><#Q*kj#S5 zd`#!t(M*$Nn&tyDyt)aNJoIT_&4b%V-Vm~@4XKA((5*-jCObb~=fBCk>!a_(2Y1@N zd;IcmP5kG66hizDKm3svseA3O{_4NBzx~^PkYDU%A=j@f7<2>YN~RyLk#^?i+!g{O zyyHu<({@UccFAC&vqFUjkx~W*Ie^g%lk8Eyk*4D#NZ>3`^i}1!GK33j*FQ6kLjd`3 z3ZXy|E_;lENYi2zhHUICj(+5azvE&dR*>`QG10MzR&__}+=q z^oMx1g$c|i;No>rJl3-KBnv8mW>$)l$s5J-suu{Jp798Q^HH0wH{N`XfU)j$Y3lDi zdD#B>KmYUg(~o{ACFY<#`{L7fd~(q4-`i_XzW2EOn}7GO+b@3k^R_NUgI|sw`<+my z5^-szgx3^oYGGh8pdwCmXMG@r3Iz)#%CA+BVuP~9?hp$H2f%p=r_WGvSX{C=@8p+z zu1N_}7Wpv+VG$?JVDTO*Ud_Ov`ByKVx8uVDrLpC-c|6EDsyn+o_T#---mOv`4x;le zE_T+~>3VSgK8>rs!uzaLPpU5zz;()`ba)NKuJXPmlbx;IogI&(t?f}eJsr14?|siN zWIR2Q!lkjp%SGu)oWojG{&{2lnKUnc@Zm>`MKpA_75&ctwWvCDKc_n=B>FLz#k4%=>(_sR^LqMfFqFKoMi(NaFjknWQS{ZfHI^RS zyWjPJP4z*>BK>`XM$uf&zdUFaQ#aL(!Pc(E?Mgd5ITf9?OYxtgT&>dA*uGkAhX<#g zYZyOk@;_r63@}ZSi9uth(FNV&=2+X=S@nCW=%}?2#2}zr10FbX_Z>Q`+Zw>Y?ubmO zQ+!6bGt4pr5o5@aB$-{8UC?(ug)9i4#I(%HD^?b384$gE8BDQt@uBnsxTi70Yc}Hy zc;THYG%hCEN}oyDgTrg3KGdfgn6SHd_PkrgFaJ=q_#7x z`OJ$k8Rd?i$(>Y4CpMt@kl!Q;t{t4n1NIC`bHWbDuMCqT**DFUqYr6z^1#q8zyqQ$ zS1zMYGUMrhH=;+3KCj`n(0=~&pSC~ylRs)d{?P~R@BjY4wcq^R--vhIe(;0$+b@6li}o-6J&p_SUxY#w#9<+r8aApK(EvLQ&*x*PKVBjEoC@9r<$qReSoy zQMjadqd-t|GT6g&`&qi7udDhv_1N>l`QqE z%S$O-8(Z!0^sK!)&NHgPCbl8OXSSoSR~qG7oq{VU~6!SWhC05kL$3fB!Z&Hhj*CyY}b0+lPU8 z$*J`%>O211jKD4^`iLtrWLI69%0E~mO2$PD13ucrA?Ej|;=4U6_VutFM1{Bn89?gm zVwi_Muak&Ld|s&QT4hl-#F=Fy4)yB#jCk?dg(Un4D~VYrwWF8Og3J*7(}W_$ZU}El zXIF~&q(hfrXNX68oRi`J`XB!M58F?F`Uma{|Lt%8RtnW`9G}-E{P~~$S^F3N;-9x) z{QMVw#R0oOC?6>B+oLThRHN8sav3F@vsq&fpO5|4=)1ey?T+H1oN(98^D>$@{)PxI z4z2T855-UA)SWkHL;Nl^r9oN;`!D@+PyPyr!}RQqkq`ct(7)%w8 zkT24rm3VpR9_PgPvBu7B+fm;6U%@l~M2_6`aI)EeU&qjAbzoW>0ht% z&j1WJ%>wSbJmStSc8jk7Qi!8=X)BgoHJk08j0vDI1})&Q2r+tFVA?$o=F=tkxz3_% zuq4|A=#?|##gxW`7OpP`;-?HNSD^foI;CrhmMl;GX)7SlLjr`sW8f!uiH=<^0Vc=c z5y`24N{?b?rRv%930c_PH{=Kk|6Xb#BC*4T+#r0Nki!76rek)1E!iF49!nwxJFnpr zKvtSJ!myq6t+Edh&Qhq7;0tfZF8DDIz@M_=?km$ErdrojKlbQZifwsB>G&^N}7VKXcyTwhh+D-nt)Nl_(E5~FWJjGXbyTv!Oe;pt{nc$7#NsUg0 znSK-SBzF_xi^}}f)yHHONoPm_c(}VUrM+4au^=?xhL2-VHN!5>e zHTn8Y;*!My@Vj^KddH<+t-&7}fBO61x4)1w_1Ay(pRIuX>X*N0|J}d*7ww<@(|_7N z`pHLDFi= zhvPk0@%WJ)xQF-dv>$%(xV`s)7mf0kh(jw@JKOw0v+7xCvTLVmvP=%l8`+Gdxbx{A z+v1aEKz4YI&f@-4eX8dj!U-hZ;$4H=m@%Nnqc5oIwL>XNK3TWQ<9QS-`Rj)0Y>UV%y(u}zQJxXbTmnvaURo&nn;c{p|VnmK0g|V>kP9H6Dn8`<{jj&GXs(4w7ddohx%hz<|WWeBtEJ^B@+6k6LYfjiIGQ5?$Skg63Xnf_}b$}mBs8D}h_Y09scVTtMHeNrgNp;)o|b*_n) zzbE1Vdnj7$27zbKzGxgK|AU|WxcyK6P?jBNI57aqI9e4V)DD{thECrH7zOHArBfqTTEEH@r0r0ejN z2z@6(yK@s^MLXw(O^ua1nwvFrbo0Os#5q0FHy~ZrsIO=k%h>Q=(VU!}ThUq{ZCL@M zzafslu^ElF+sjw`?fCSJeJb%^u;mbC3wxKYqFY9pLM-yOPGQ<}((P!}XS!3| zMEw@7`XuHCOoCK8xk?8c%`}l#r5~ZThf=lO_U`QXS4%9k{6)iKBPo%~9$vrR9aKWl&go4=DX!Xa@fEhrR{$zgGnC4TM4g2109^Af|I zbt!a5uiE~LFWQSQKJ%{8;r`T-LP9 zh{jJYTOAfY4o?iMUka}!=S?L(f$N1$vMN0i_b8FkbzUFM;nF9C);Ih9DG&U z#9+BbLoPBoByGdDt=M&o4@~U``f?$oqrw1xf@58+*mleB6X-F z2neMkcB&#Py}}T8;gLrc`LZJcqw;Qa*1j%>;S;<9T%>I7$U;C)ctc8tO+X>ZGYcLM zT_p;NPu&JTX=b|aSHVve*bk46k1%_LSMuQL{0-8#%@LB~(ji#cS7E0r0$%E`LoDP-*3sx2SBe)9Oe_QM~1(0=-pAGODi9{8_fUcGqH zKKb~!?dj*AslObjLKS~Rd?qD{M{OKLe|Z0{7KM#=e*CJP?0?Z-J^iG;eD<^*ynNoy zj(A}wj|q9tQz$s>Frnm-2lB=46ptNIth}>qD#eO-O+~s^!qlHprs7N%XQfb1sE_#9 z03O$|i-!LQrRhldlyb!2c=+If2NDV*yHh;=c6%r-@&c$I#tVOcLmUnOQ>XQ)oc1SA zc=}MW6ejXa{^<+*`@EnLKMB)?1&^J{iW5e*6)Z`BFve@4`~$&1L>DjVrg)t=uNUb$ zEEeieDrX5ytP}4fvfb%-GU+DLpR7>v|CpRbT=R_sJEl<SxT`KJYGHlqz z(-l9&YgIgvNN?!4Lf2qPwhrQDlIqG>kttr5GsrVw%AQwn{1;TpSBZ%-&&osZ$07w7 zi2hX>aplF`HopR4F~Q%DShNuE;>VXSUpk5URT^>1Br+1Or0THb*NCk;4nZ+t5R>{1 z1wf>{1z+DL0dr39&PZ`4Bqg#k1D2qR#oYuFm^td)LkykMX-Aw?svuWR@@1K$&-Fx` zL^<*^5E?w8Xs~#PyZomK{~)nS5{K2}3=$On;*(riJ!Z)~q{cFp`4QWWq1x#QP4@EDQajQ^bfnV7i9CP{p-rAy}@O z%*$3d?uKN?k21JvWdgEN*>MIDG~!@*-}efj=T` zCRLtFzKw{~dm7k@ob`;oW8)HB&a&B(&%BFpH8e$C!8|!`?|G2~f+mPQA!(ir@lYNy z5Mt8^zoAcGR?-Xq>GH`LW*7#3K6^1i9M_I~$FD&LHw*)!9gmKVtwf_F#91F6`DxWx z96#cc^78o6L;3S-zH{$n-n+A>G*;S)6raO``eWq7b}1!;H;j`yXQZBg@tGg*U7Sf# zlcL1obo>urK5P5WKX2#9`#vXfcW2bzyML!Wet54vdU(Ixmwc2r6ck>Mpv*=dm9Hq@ zitRkA(O@2?v7=1fB&lzxGxB0ye(lFjlnA{Qm8at`*AXgRlI_M*MMl8OR1v2 z0{_BQq8Z!#I<{^?NQgclTl9;rGP9S+U0z+#EpCLhjnU<=sZ343_MkyS(PA;fgGS_+ z1e&y%xR|Kn^%n-Snh%1{kiC|QP+(Z`gSQ@)R2o6prwA54Q~r*c{$|2mVdMOpX%5?V}6fb?6j?>~K3S;e2xE;R=5PMi|36hb zTMz>oI9Z{pFfIkk8stb>z+lO%jNq|Txzh(Uh+8q#J8*-xM^1u*@8<#fQa3yl5N5} z1w}s8AWD<=#50GNAMHgPCROz%Mdat$+uNJEYvl|OkFNNiJSOO|6&L;>nb#>$pX?67 z`@;{v-+ubhkEQtRwinNzw%>pJ+xGm~=T<^c!1$FQ3KnlKKX~<`jgODoPk!`a+g03y z7th+~pMKm<_N9pIe<5XRz1_dN=R@w^Rq|P`Xa5Sx}bAy${Wck9NiFGD(JiJc2yOiFU_|yT~2`z*DH;X<8OT zSws6G4D&XR@?!q$LCTAX4>Bjlk<)lr5Oaibl`gfhth6}9uIug=yRI6`E9xVc{751u zVs}sV1r#suTIIW}RyD4fudHb0<3FB2?CkCNjMe_Zq0eAhimThB30Fe7p!%G%Tf7cD zqlF?BGZdYU%Jjl4igN;L0y-nSuK(o8j}@&XV1rAMxwGLaOc*xhOhjUHLE2v>EWMJL z-kHccV3(&aH_8lm{#X5Q4vENR4k_L*LS1HfB2uS`V&HWQCfvmnZ3xehje!POX!(gc zZ>478X3=7?h+lqP`m7AEQ~<;)&^@>*j}+!3@&LaUBgqei&^eL3BtfWT``D;_?uE$7kEi6&kCteDpXjNDi1F@d^=6sG$=N5xA6 z_xE4;uU~k50FTRf?00`}x4nAyMSJ%2vv#!q(vR{U+}mqAn`=^}UbHVh`?x**{qNfT zi>F!`l!pA*SrpDs{j0xo5y}}mODia6MQKZNpzw%>eh;vfj ztx|tPf#OZ-=i?K_i8rOAKq1GbBC=DpO4_UxC^6={^g&=A<@ryUdAz5*kS=%n^~wnr zqmdNQot>SwC54c>=Fg&0n&3qNmBmUNuY*8gL?qU4$k#l28n6Ic5Zdncb1>Xt>6*dk0i@>z`&Bw5WvuW{6_3j`>K0UBVH$3t< zVh^J`)KgIUsUSW>- zdbkodo%k=3+lLn|0{P{dsQR#-OWAW5qx@vD9^{%3OzBtlqAt!9McfFCJm?~4_z3c( zF0EWxsp#Vx#7Q3JWQPwJn5Z|kps>S%GR;EaohmJCq{|)q>1iCstqMSn&$(zc+dpy@ zX<;VHjtNIC=o3uNPv+YhTMlkJ*c~s)9^qI1%OLWX*{VDyLIn9kV7Nh~P*5b7$AC{i`+a+rx606FxIP%8mM6C?vc$YEufyws)(%bEN{HK*2}eQLa#! zLb0TX%u*0{?>xrjJk^F38+PG%B*)80F$p6+uX*5IR+NLsdz{gNpT~IQBa|5wcPVdj z`*vMk)FQ--aoH{7=j!Ze;YZyv25CtiQ}SrgufkBE#P~5OisSA!J8v3yN|UGMV7tW>gO84x` zSow}Wj1Id+5mt&*0Y6CAD0RqNObJ;@KC>Vh`dA*OT_In=&J#3+lICy$S>8Po`A|9| zP+=%l?4<48xno7mZ|Btr=21TjTut<`3zAZ8L{G4-EJ9bcl~*!QnMfeVYgi}YdYBh> zj3Rr4U-{n@j*<~0o8;Nfu6}Jok?0i!k6T4{uCqZ@?>4b;T9hLOB`jW-l!m|wn*0QY z;|n$`+!ZDpii?`hX|wC{;K6-AilbfG`Qfe>Ws4VGzW=?)?fV}*@#DFZP0)) zf8k&1p%m~dBpw5v9PaxJmGm?J(hue775y+ zhmwRsS>l zNDpx+jqFHK4iq|euGk?$B=?E*M?zT{rkZ0YDS28HBccWtABQ18%_=&u-s~?--?fhn7QP?*T!#=-=zFF{$pxzLV@=nL&cC7w&s{S^nk5MLdARbTGc~}~j{?5&W zhP3Zl=sVu6rGKkW@!y_|Kl&kO4e5W>Ow853+~N&lwH{aXJ0E=|N5{+^Dq;2_>E;RI zn;m(gz0$wy;~9S_WhMscFu@EXOuOe{k`GHc%H9P|fUG*twgH)9tt@%ElXAuGfTa*7 zvnD|7%(M7kJr6V=)Dh{{nHqo$HIWBQou?pqLX%|@VsL&ceesk+6?Zp02GUfXZO<8w zJ1AAM`_YEt@ZKVyFJar6GakuL(uUK`#7V=Sgxn>Y{MI8o@=HNnYyF2`c zUOi&tFgS|I&ele|!&}ntN~Va%d>qie6yF;E^S5@{Hqk5;2PFu_fqeQgmnM6^#zAg& zWKf>`w=^`vu+xGJSe#ZjK4|6n@*6i?yg4^$s7*ws6GzNEsC=i3BV zEB#^#de=eQ(r7M|KFqM(pEHV2)t}fEMY&>!lzvD!_w>X$XFRIku{_tSQ0PzeamEGX z0lV%K-1mo%`w;=koWyM3TPz3vP0chWJ7tg;$0CQB)dQD~5tDl;U(3L@mRX`d@? zBwiFM7A*eq1G^U+EmZjJ?e1ye)Z(TE!u(t$AlkNH0H;B+gxMTse99 zQ@|eYp^CA{nLpCwaR9`B^*w$1d3*U1rRmIh{Qza^PyeL->}Nl<(#0c%@!4@ZJltaJ$sZ-m3X{Uv)xwTEWW)jWapQjqZI{C51x0CD$q|nUMUXVDJgLv4 zD5WCAL3HFs*NnwBQjx4*s5;oT+X{9z%>v z{+M~4{L%olwerM{nIFGsVUq|eT}s+@LQ|n=Q8r%83uwo6-PlC$n1q5H9%fJhtDV`u zhGE|(&}P>WZ9N!f?;w~bm{ZARk$tUL@#=(=(=#7LXQzrCQa|pePYLeh>f6lYjCsz* zj(p5dJd6YNMHDOg7Q3{h<#T)V8O4vT!MG|{?|X~ahvu=El$p?K0MceO914^Vs=Fbp zF$pvmmw@9%d^*IyD?k**&AuT23b-CbvCN7K(vE+93e)bz5Z|1v#6r~vR-J?y6#l7r zh%jqF+fThW{D@aMi;q0)hgnqCP+l1r$s;iFnv|uI8=tA_40f9tHRVP=H+=SFON&7K ztp;lMhN|B9cshX-M#fxpwU)Y*vqC|}BK)d9<(Apx!j)lZZU*~>t2tjse} zRy~EEO+M*=9g1ac87w=km?l!_LAj8SK^+D2G~h+Sf%?7xoCjSHSM3=d{+bp6{!SjG z2-J5dRdP5CC1cgf679gj>|-fF>=xaPB`4oAz5mQ>`)$dn@XVpC{$Zg z@_Csi$~|>hN)YuDj|Aft3*40-9w`4l1g>y>ILCzYV}ETS#bWtv_;@*e;nfN+~o&ki8x^|!T>{WBP|Rd z2)Ap|c?nC%uTSuFfG5o^PJ*)VSPzAYMWe0zjn`M)kK0vX}#(@2U-l_N_-7)CNB%K$kBV8_U4 zM!Fe*p(Ka5>pkUOhbn*VO!gUIJjch6{-k&y*GjX9r0(6j+kXCwKWrcUXK!*eejapo^xNx;E&lp*3$DEc!B6nq8uU3TjP z?{=ARMfzvFS4-ta=jCs4Hb(q46TbkIANiAP)*H^V)GwjAVc6D6wW$RR#fnFP2m6Os zkhV6r+NQ@Cf7%>71<}508xfoN98Tw-3^q74EO)h;Utl)u^Auw9s38DfsapmFN?Dz;K3|JTVcka!?d3!Y~TIL6Mp|`toV6H74H3meJfQZ3xhJSz_6%M6#G_Ygn@O! zK`nJ{Zpr}if`Ms^eXoUkO!8OUt``mbm&O(5%HSmMoe0Tz;a{Jgr|J%vwUTj$84p2z ze4D$(5R8^30kJ!H11OIBoBLcSASJ^)L7G%~JXWs)U}uu|O#Si~KX327_pnRz!TtN5 zgr7b8yuEt$!jm#_IlO&xeB{?IFvWAoo!1B4yL;FCbPOJAaTbe5TpYr_yyS2!9aZ^} zQp1jDDOY|xZsh?DOl4P{p?I*n<0Ay*NBsW(GT!&(tsE&F;wDd&i5*uKh{${LN|_3! zDjsWssOzY2`o4FNoIdSAQnA?he2PBQ4RGy|N2P~C#rvmlv#?31&sFVc+-!>!AcgbD z#NPq&*p3}E9f$-=LRjxpGDk^|584&$n&I+}C z8big(@xLXYtW{U@=$$X`to9lZeUSSB`do|`m5UI4W37!{Xj!_O33$5xz?jk)fr!Ho zH+VmCTzKe5Bf^lUlDt@}lpAC_Ak&qpp%;#Xld5V95nk~Im~cc29TXOA0x33befn}l{@Ds~ys9&i zbE*pzyuEwUKT7ZJs5YV<{b);VyVB0JxUaPBEff&a3Z-O6O3|Z7@A+4N>?U!p=l%B| zwV(X>2km&D7kM7E-O;+=e17lFt{(|-RXEuF3i0^st>Az4Uvi_yr*U zs?VD^a{F z3Pr`QUJyUKMu$g-?cngR9ZBiq-CHz=`-ICHj}D>mQyrkVtxCQUK*{qim%t9(xs*=b z=lgGJ*3{XtuT#5fj}g1OtCGVTu2S^r1v$;GwY9l3dcX!kt+!?idyHdX7<_~oF zzA9Dx`HIHc>Snv-FKaH>b)%v7y@>HoJal#5k+#B)G0K(}Ad@7OG9RxI*=)PIA@Y1e zJd=1J^{c+tif(aJtZnbC{o0dFYQnTLI}@Cv>h3JFZtL#Xd^xadA;awkMkxp%`vo7Q zreb0Xo9`Ie+Gk<}-a%1(4&{Yc9Mp80k<tW|q=cG}MFmIoMr%R#;T;upWtgum7PkN@L8wJ*MSsRe;IS1YdKd*LTRWdb*k zP{?2`{z`**@^#}=H(Zk+3m?)dBx=H73q6CkuT++ou^|dLEceQMenO0a*oMorR4V8(@~-{ z`SbTlyv~3^@fLIbm-6(Kcd4-}HKry!m%!)8fl{DQxTw#1B+49eCWX#zNkzJL!j23S zGTt`NZr8!Vq30snpT3VGMby`45vy>LE@N2PR6 zMOWJVa*Ov`NkLNG^Rsqdc*;V@FAsUSDUS+wIa9`*sC;GIbIiCX$x zKAGe(x=)k~Ur=Vj?yQ3$5sj%Mqfe4BA!jOlI*pkSAMDp-Ij+KW+%+9eW4ipVgSP-u zMS*7~(=01@Ej!^A=%lzBj1(w^ov*WXJp3c1pEq|J`W=GTf7eVVaub7?JmK;EsF@ScG7pLszHv0x-$s zkfK`k?UuZfyNCi|hC3*N!fvVV({d9p{R6%GimBPdAL5j~++sm4)#C%QcecIbz^)aC zmbvr)`5*pL1M#x`U;pVZ+l%K~BsEE^8#rFycJz-N@E~X5NC%HhNaT2Um0b>q1%mjY z{HnFh6ud)wTrgybuLRXn68>RM5^&pf2;bliTSxlBNtsNYfAno88_eie5GXU^4t@KO z-t8AbN?y6?Hr*pG`^gtUmAZI+V1;c6CBV)jz!jIh@}?xgy7G@AF@CjAPhP zqS=Mwl?0qqVwZ_u`2Fdh{-gGT4?mEEi}r&be80W_{U=(ukK1ql_P?|{>LZWt?Y6xg z-VQD$=Ed`T>-ecB@w<0+rIfwb4qrWQUwr=i_UhSZ{+~boJejwpOXspO#-ADUNYJlO zP(+taW#{pl6=}(e*LBbzq!=lCghXSAMv8Ulix5{OFIJC&{8dqE_NY@Qi=q zmtqDVXG}N{Uou@MsxQA|3T0LKp>LyX#oVVFR6SCc96qOAP*^#Xj?&^sm=`Njt~UMa zzt|NEg^jaVD0F@;!-bSH)g|Y&Xl7m=K|OPmN+K+ByglA|R{s2JN2Ni2DM`HIf%b|v zL|MF4KB%X)wKzXU*#Y_G;IhXe9mGp6P|obelu=}K7K1WGoY`=gqD;sck}x+c31ixC zCdK8=;wupOroc$17f12q12A2us(qT8cbwgk($4$cR@C2CA;Q$g^aSPtcB#3?VA}8t zZ)M?CCiDQPKv%zgJkMlqjJDb~zffJPWN>mv96!@;zC)*! z{ACRX)%g=;&Y}SFOWiBy6Xjr%pC}4-=#L$~P6Jtx6Hw=EtK}4&xh{tjuMAYa zJq717!bFT$@9q*LH-E&+JW6!RQj7kcl%Ze!>KE;w{j-14e)01^^qHvpcki@^5AG}4 zMLXDk<=rUGN%3nul(1JXUbN?5JZrooiafKRqXe8vdHMABpSI6G|GYhW_S`#7^c~I_ z(Z5hcd2zDwFVzHn&VDEcH0fyV#TqAp-pcg^C>`_hEUH$CG1z zu^I{&2gZ4~kCi5rAzqRwg=9^O$Y``Jg-*(hle_>RaWfSWfHNgMq83gpPzKQAq$^ND_cBn9o3<9c;wH!tWYqiPyEJGTG@eM z*Nb1`^7wFLGY%U2k*F3_xjN_}y416Qq4idDzw8uuj;@j!6of|VFZ512jTlzd=? zP6Vuo(Gy++m3B-wbgTGuepME-05ADSe?CUAFNIhruA^jr3vh7-7Aqf|)g+D5T0cqW zr|i(HSFb{;GCz+N>TcfA?eDrPcU2MwWeitmM%*HMM1UCJhR;5T>|{>DqWMsPCOo)+ z2ptkvD^bu8UHp<2e%|4cY30j&J>i~{tr?11pyCAS8sEGGhW!GV7ru!~=o7#e6J5q5 z&j}V|c5xzZJUZ8$tA$=;Si=XRZJ#`O(mwj=qxQ#t{6{i>((c^R-KxUA_vDcemhZoO z>DMegdhb0eRP0tC9UQioFJ3x~$71}?9Y1IwL!W&7NqhSAX*)bTbe_C}B1LCwE8aNH zB7oAuLI9CR%E0Y6N{VmblB~Qd|0q0LQhfMT-HvFR|JzgEQTj*RVe^Phiv=Ym9&$*7 z1MsdBEiB~2aulC9p{Vhng7HVqOfT$0Id7tP2hh0{C@ZF9krcFG;m0C&e2n51V+F8# zhHZzx_aQAQM=WHt4>vH}xUjo~!V_iVfB)i@CH`fW_&6tq`<|5A4Jl0Q0^(0SVWM1e zm>9X$FObEq1CJ8{^QIrys3C)eegRD*;`iuzst?XXg_>;+VZ1RYt1(|(L;ig8F|50) zQot@%jQ9X+qm_L6JY$KDob|wsfR6xd#9uvasqgS4f_XmP=@tqVyTv@}=lml7mH-dk zk$Ir%GSbYHX^Sr87B>O9lLsafg71brNL8KHdCT6_uc};iUJFBv%WVFhsYCI>m|Siu z-({IU?&{)<2zRgP3Vf09wn!fHz?E`6i1{O?Ho#0$Z#2KB`;wg7R2$V{3am(VH!hF&Tj1RNmCX= zgGpdv^ou2P$AaMCk8o->>cz{u&CZZV)ja&zVq0H|vf5HsEz+&sxw|8Ct?lmZ`Z3=x zfBB2{XMgsO+T+LXsocCQ^C)+v_8N!Dd6_5YpP-YYBmeS_M+=)MDY~8I{Wd(dL^?}aveL~EC$^9MoHG!d2F_6Kg~EUqj!s>wD1Sd z>}F9YcA=2lL?YpuN-$2W28n zvd;}4Z>RTJs@Zl7AIZ94@(=SlIc6LzoR1VF3jJdl~szxKujlv^# z;ZW)E*oH+~ z^m}*qba%?m$XTD(Sqk-sY?0U4a> z;Fo_qDx^O>P=C5B-VwLF%okelNTjogzhGriXO!y zJTecjcj^?Eu>0G z%>^2S_qkD$X_ZR-OVF(oKR7&T`-jKs zW9RDU3RfIU$@DE%G9p*ExCwkvorWy(AXQ~{cgvdCYQQ?omav291pa#RPgWR`H~IKD zJefmC#7+MQO98|eIbQf&3&#g3nw0Shr741#?D3CFpSIyR5wY{T1{ME08e-@U>!f>< z`zk8@ikWiD?IOxSnfS%g?%s~yF@%!C!pI|xAAb15cK^Y{_8HMZ)NxitPY}bMO6gt~L4tAHR<_j@7 z4)*Lc#B;mpgEz2WSQ8ZzyeJP8$~?L_HtsAWg<3 zatUXW9NG8b!w2ojlSi`0xru-D$A9Dl=?@>?YcF0rZ@arY?fdUPX?wg9;pnhE{rvas z<@2ZN3S%os{3qSftC#*c_KK96-+%mZ``vHG7fhdb+G4kK%jKclpxo4>K@_Fo!SZ_F z6=$y4xfze^MWN!+$4ZoxssxDC_4%jc~Uf$jGG6}TCwwo0;G0l z-t$hD6g%=kIx^h?lu2I{HkZ#$PwJe-ipQ~)UkC+>2ysw<%kQ>AxgrnoI7iBy|LSJl zuZ`f*CwA%r<&T5KJicMvQioa}Q}K*4I}g*C_L{*0D9^Q+6L(oS`cg7nnzS##QkhPC z$-I9pQ2VLNMX~5NsR;S?9P;NE!yCGIe@bo6iA8#B{V_RXl-a=1>H9M28_{3X$2A`? z)>b_3Hg&_bCuRSly?k|GrJcXSaU6(wCG!)LE3;>fiNR#|Fl>1^){KairtP+fl#nMQeesL@BvYT=YtiLHhiFIcmNC-hb$~WPCql@!?a@Hu>_A*cznSj-{;StTahx4`T_Yanb?PlsX-!H zXOZ4y#s*d1Wi9d%Zr4jKy2H#DGBSpVw2*m)n1F&{ENPaQZbSBtsDiY2uc5%1W`V3p zvMHE`Gz9gf!34kKV1^%#_%*C3{i08V)J|T8S+P>Rgpdl3DX;3l5I=3n>jijR_CQJ% z3-Zy?QG4{{ar@Cvekg@&tv&tXsg#AW--6B~0sbWU^UptR`@Gy!Y4M7MkrX8Eg6s7O z&%XG)eev`&|EV%@_9P#LiLmkMv3I7%ywX6#W56TD<1y7Szqq3hQ9jyMO1Uno?%0)K z=Otbb01G=<@pgZ|uE1qdJbmc1l#8+)O9A5b3GCqT2n;1_EJcKRa6Q70HYB^>NhNtG zZluX$z85cFsScjCFLcB3?D{pD(&Ih|z~Bqa?^q9>^Rwm^>ckj2dTMs7EWyYPWS&%hsmyD$y*8{_7g)U7VNV zl?xm?CRtv4!Y{cv_lA-r|b2uLEhUO~JkcRds+?3)k0%9a>{7a1gei(35jWs_uZ4sqsZ=e2^HhXqCR!+}( zAYj~6yVV$W$@aC7X`|M?H*vxf5z|YE{uGuKtWW@mcbt9vCQUj_!g}mC zgpldz;IHg-VNi7(=rF*|19+31!MTceH4FU8xju=fyp54O z3FXZs27NxV%l$v>-8+@qK_r7LNSo~@>>g^4PEy?ipfh{hs>&H<0j3+@*w9Y~32V@( z**1L~K=X6~qfmo~d5k2H=~!*HzvcQJ#2}o0Tv8D0jTI#=%$K2=q7n&SO{w zVvE5mOXAC`P*N&TtWZ$est;|9NuX<&inmh2>|sdTWJQW?zxJsbUaY`RnOTYA;5^FY zoD@kEvq>pv(1JFrJNx^GWmAgO!-tQ{=bt|;Po7Cp+}bHGq*(b}6-t$OVP%S~zBA2M zzD!Yk#$^1nVkn+i^`Z|@J`^fsy|;fL8s}E109K;l3okt5Kvo_k_rxOpud`A*gmd+;@#SuAVI)uQW#pi zL>|vg=Gz9*B)=~+KO~@DT%>Ay1aLh`QPMA4&_}1(@_W0QGqG$jvk*dC;xWbnt;23>?imtz?>(6BD@UL1aM}< zpL3ASc3I-VL)ZvCmEh13cb=RW6oIC=^a!9Zs786C(g^k-%D^du+o;5axi^BQ2(`T1 zgbvi8(5miMrUq`vHS%iQ>mcR1+32S?6|PZs6hCdE92lV4S738Lw1PZxs-u(>W}YUYFNMf#TtpNyzO7V}-2N^}z5ul3d{Mj`%3_ z=~^myQCKwzuW><4_|R>~6*Gj+A37uT=zv&&bCW-qHD5qZ%M9E>T4;IeijlB;fT2!s zK$^IA7+HUkx9J!M`Kw*aI9vwV^13~jX+C<)cHI|+3n)30^ZVcbu6*{{CqAso8-E;p z-rd_SM@Rdf!0+F^?XAECDM`osd*!JVup=o}tcGxVIt_=jRNTINd?@AN^hE9%pP@QC zKC-evb7*5lUe`uJIn5TB81qIK7P6x3 zzD7aH8Rw>)pXl<2-K==yusDa(dHI6;*bbyEZ*A|CFCIRUc__v5u@uW^Wt&y1oxQRp z#cFp?3gq!gIXOG`YSzIKXG^3UDo=RkT*|P`!Utms$}4BM2-}xpwYRtHZAHpW8uO)c zg6noe;bo8&s|8ck8*!Fj*2KnShv7SlOAE8YKNp=zzZpnfa;FssjTIr9S%F~1 z3k8c6E93$`Jk|ymL;e*yXN!IV7$*6qU>aXB-yaQ7Z&z&U%SImLfyqONH0klF@={9w zxgG#m!NRb5#bYq|UMW@rHw8Huvw47`U$aWZN71oqi)wyqoAfD}WLb(iREWQDGsZAyy+|9H>xtWIJzvgZ~4Z>mj zy$W3#f$L*b)ICA|sSo9wix-REJmMp|Oho=T?$Kd+_uY5P{d@QIH2Ngg*w@l3YFBn=ZJG6^rKQ&6LDfe#vU5O(mONj!+j zi#&-BtqcQEQWU7jCVRrb!!$6xN&|F~;|1Wc;TnhX)X2Q8CLpQg4Y+JIEf#*uLtt9` z;nz>cpZ>w6I9>TLxZPHqtC56$zEka#dYanrwIR1|FXt;+5&eMOJRctvsbuj2im3iIVn*`Qn2zC+Psu5(p}b9 zv1c`bpPe4b9D9If5cVW5)1Hj=?>2S>9Vt0&)rZw96f3Sf0E-nZ+E_c7&RHUF1*)9L zjq)N}4!rZ37|QAc-~OW>dDWc5-Y0I)Y+*ls^27?&^UY1Ko>_Wc3A?o7MBUKtI3IOz za8&jWPaH4D^Y2EI9_8Q6VX+ zeU!to6(lU&MtMU(zL*YLz*X}V;LFf^_P!$F*8(;47K7?J#l;>iH+`!;v{84Qdz_b& zO&>%tFEXtUVmwx;S)5(4EuFr@<+grE6Kx(`W@qPprt19sW!YEzKRD9Eh1_kmtPU$_ zE13NJ1YZFrX6xI3tvaa~D!~4MJbm2(lCEJE`V}DF>E))+yW?MJCzA4;LzU!cdt8(;tLch-=tn0U<_2v0D#UuO< zpb5N^b57t9)@-0UT3uim;JG@1H~(0%;N!Y%-MlBIYJFp)eEO$P%fI}~A6;kA=3$4r z%Vehz(M0}COn4k-CTh9ugx|P{r%f5ph4V_d+qt8-_T_85Q%=6&r)n;D@7^kl3$xx*;(+;s2X}p-_1Tk0 zWnYRF=O|bqVGHnB=2FVf?#>G-Kzn6pV7FJbS*6M`f;zFQAsz97ZZ#X)601VoZRHO;E2)isXj_zlH}oiS6j3Q?3PaYk zUzB_v{8$AueH0YscO-f{ySv`L=KK_^P^?z5>a`?gb8T(i1~>OtEi5io;PJ{fumGcIO@~fbBreF0!J;t?87X ztxZ3~3Lo0!4{cK&1 zJeW*P&03+_**z!+yaCA8B7Ky0U+?eCR9y(ejB8a<~Q#(k?m9m0}^MC%=^64j! z)ajt5=~CrEaba>XR5qwvJh5?6{^V|6<#wFgK*Q@51TYit1oq>`i?5Qh3~DS1Jke<$ z@+8jTU6ht?;#H!wrQq8ZzU#h*H-1H#2%DBCrp4NCGQo*k6F#&O>fo#S#hP_e;(BjXZ9E&#F+`6Ew*mr3OXEJc(A6 zrYXk(q(dR2kC;wX^7#%M=cmq9K4>8`?$SchX0-~La7{%nQ|0YPrB^ug%=ZL#-fldV z4EOf9EuJ%KYX6ES4qEg}M2EcmfFb^ouazou7{J~9Zcc7EUjx2wx~~o2d4_*EsC_y= zwcOM#cK1X3mrM1_0}?Mi@EItz1S?v!Gd^DvB#kL*vtH4bzqRA`H4PLiwh?#t4t@Cj z=!A=Kd5DNoMWUuyVfAC@Pw=MDDOIkUgc%T~2Qx{Q_y!s5V_$doRJyQ=W2kP$4B|!& zznxq0!RvxL=!TDK8TW?2{8#rI!syWSC16y3lEy`HUdfX|F#azG(&kB2DF-arE#sgX z9yI+V!)q|a2_8ge0NY*gF2x%MZzxmVa0AiZ8z90Fl@%tsJg6pT0o^odvjKD+b~`zB3qfsKU-sjC#(T7Ck?i7 zkmZ=1&Z@MtSaqpztF_4XI&{sT>i=B zfSlby0V5qZe(&yX`=U<{uhTZTM~Q7i&I3UYB@0?8>8yNOTB zcSxaBWZR1;>a3(1ls0eqNkLFNg#*v4MV=h$ijnA|c(EM^Jr3uyUB?BY&|<4>Rmzkv z4wajy^Y#fHR>L?zj{<{Y#8W>?6F@%x<{*=lgxywwn2>l&*4HY)3w5YA3Qe{Qn^MMC z{%5@fD5X&4AdLEkck-dG{AnHW%Q-W)8oBZTI+PpWElJX$n4X+ms$6``dD^l#)8xlJ za>$s~F8T>&qwbOO@F57m*S8i0*YK|lUpL*?hVMMXzZ|$z+o8(p%N-YSZG>@C@)rHv z^pwv@jj1nUa-NYkt1*Q(tu}~ZRn-qAYEP_`@-hc2-KS?4R;qZL@a!CgO8r#b*DFYVFzPV;Z<1}p?choxN45AN-YWoF7|wif z`6Gt6hYk+*{Up!!A6fkS|KmSs0zIyIS4Be|oGlxkl3ll||L%NIwNeiQHXHK_@HSXH z4z_Yxqp{Sto!)8nV+F0I!R?nBh^(|(Z6l=>B;o{3VFj(7TdL?8pD>E#634JUY*#%l z40e9X1jG4HXpJ<<1PWRTOrTqR!6OsmJD^t7)NL8SSalWTNo5`wY6otI4locQ@Dn;?~_L`Mr6h5Ay zQPi3;QtMZ7>9bLcn_`2~!D>)PN3pp+omlehLrgR%mhfgo|A46^!(0!98P zRsdyaTaOqn4uwuT6GdWpX4Q)^lB*(6B&UUYDckif!&W;t)Vr?qph8PS5hQQuCN0-Z zMDawa!=G|d-h65Zf$%a33yu_l7a>`ZWc3YZNbmLs;aW!Ig=yg6uLEB<-PeZiJj1^j zxc_(Mt>a%jfjW@2a2|Z-^kAG1p40cFb*sO7_7(!ldcK^|UiwfQS6d=256bkV!$Y>A zPqXF6fp;lZM^fOWv%9^}(->jX?}jbtCwLQ>n4KMuQYGml#0at%C2^Q8yxLbGjRQxl z4vd~gVQ6^Jd4x@8 z{_o4_Y30${4qX%l#?li+$!4xoQ!s0kw$%f1PCEE?o5H6bc(B2PAHHNr@AhOr{3-!J zxaDS#gP_;WjDXkOAtbPzD;?A91QSTQDz2Id?#?(pp#tJ<@T6S)biocFEO{YoQ|T&% z-18Try%{8paXqzA06c(5|HsB*PoPUrn99bM0Jo`gmTG>13n?$l>e`aG2~eQ6x3|O! zt38^$4-b^)qTJb7&+F7uk~Y>>eakwxu=AGCix->a^DjQLGKMrcL&YI@lr?1~x?I93 zzXt0I4eS8-EAcVrrNu?HH9qJ%SLPQN%G&yRSy;+9?kFEyi9A@Nyo@RDrugtAok~jm zc5MTh)XJfqwZr3V#c`bhN(%?Zo1()5Ac|G$g|=)8m4pe~-IQ}=gi>YsDx7vmAHfSB zC_b$8dixFq%}Ng!e6mudxaqt>YktL-*WARHYF4sR7@ejXS}SFOXZU1`#;XL4jta|dM=(zec*K@SH&s@){cdvpffcC|>>oc@!XMr)bC6sek zHr0=1P^yjQ(h)Rdw zI5R*1NzYFo);oG22(2i!nvBoH#+F7yNkY#4}X`I-L#?oHs> zD@3mHYnjXTAPmUUNITB%CNE1)1Mi&ARH0NMjGf)>^1+86Xd=B`wzjs)fA|mo3?--a z*U!0ENcC@46c(l93Sayw0ilj_bj?>_g@>&wd1)6+a#pHpWiTl)fuV~K8r~DnuUDQ7 zw5?Gd@F&b(a#bEV;}Rg>ii8iPO18cF@rs4g)Z~JS7pr>Vr}8dDnsyGXvz`N)wD(Nj z0bDVpy~zx4a1X<)F_0k^VRqQtLBsVVt$`55Xl7=z%+2!&7Y?Jcg28=Bm%d*LhXTSIdwgJdWo=!`)uOlId}y2PF3Az)s+T{C6k&BmM~Vz#-Ud_{21SZ3 zGFD4bi0~87mLhN1(KeV!xY~dft9FC>;o*_bTnTQL8_c9xgvcF07dOE-Xz_ ztb*m9sVG&HhjEBzIrqKRKj$((<{SvGFNi{lM0yNy@N#wX!-Tv*z~qVryIcWeaooFcJkVZ6EOX z+zb89;Y$1a^TT(Z;a>!3dHr8sYTN!v8yX2$pQakQ$a7k4SC2bx!(5L*#rxhj{%CLN z53C%s`b*nZi}F@8V?3)>`QGKY9!|#8#?H#A+Ew&8|JV%M&rk4Xz_@7fMRKVOYtO1V z)EW0s8*q%&SmOktiTBm7_aDw#=`u9dE7&i#!zbbff6VFOVCM)ooj6G=x zNEx2lzI1M;@9>&OgM`T>sbLroZS#gDw~fOG{w}Qf=~&{)MtoI6ISfYbog+{cs*W)s zKo9du5FTY`g$3YA)@P2S5TPJ|(0D`XV6bIU=llg*!^ngSEjKqe%i|}H%8M7zeMJEm zh@wcMaH#erPbnRu%V%jAZc)T|`C)}`>d9ucsqucIMQ)GiExx2pN$eaS2=8LZ%ILXRvtcj zSU&yiGn>!9_`E!N{8&oJmfsMBzG=$#y-%8%kRiD|a-`Ka!n;B5xldD;gsIt)npAx7;?O~#7%zWNK- zf>?=C`!JsBnC^0>v5^n0bA*FcRFr=DpvP6V$^A!yj0^Nzw`&a_j3Az^6#i3_`FfBu zRT7|Ap7@g_ac3;kkNz_t#~Z^iOq_m+w>$Wbj zu>4=`n@mk(`_BSZMjc%Be>s5edVtSC+MzrxQyJr^^>=vqo1=qF>b%93l`1|5^3s#n zuYUClpU3!Ilg)qnm(MgQL}_wzO$y}Wr+PWC)fe5N8*gb7R=X7rW27T2!vZ)R!!->^ zX(0|WE+YY!-GXl0gJcRDDoX(20KA$86A?y#9yC1pGa(1pVKog2a67GN5?n1lgjYno&xfCmSF*Fx;YjvEe*r60BmBQhJ z+)_B4Oi#O)tR5*`q^%sx&$89WZOyso&JSbNumyF@N{o2qJP{K=D_Cr&p_m|7pPv%2 z8ile%KCEbQ9t3Hj*feD=XZ&9JfI3RifhHCXsRLZP*_1S{Sil?{9F)EN6X9`YiF>7_ zz@2cV1KVwqk9hQ}=xn3NMmg~f@v=j#6c%*{(FX;SAg`2Cdu zH68jZEtfT2IJ(|~euCG*#MJc5-!Lh)fslGcl$^hy0;p)mF@YvpMt}17$=iX|ZEPw| zP8nB*en0`Pr?19-;s;?v)6&=#aCLY2@Y*~4ReTwsrSTtOGM+?lFhqB8z4clE#|>F# zh;QEft3L_Da(n}Vpjc69aupy;sPSXD0*YbhPc{nMX5D}VgMLrr9%&(g5(?;*7_#8zBY9B3jy_{7uj5@(*2FEL*AA`C2wWULB= zCt2caB>6NvXbtPtd_dE2$beM@rm{@VKJ={AOqiZmz{jfj*k4VWx_;y_A2QG+Z?|OV z+g84<>`KJ90$pC&DQk^)dQu1MB0dg&0+kt*2gjL41^eT~CO#&Cv`?qTtMrj~XwA${ zlsVNg6E1C%6(tlV-b6%UqAU!sFV9b2tuN0{>DO5g;E(PF} zTlV!-%z<`V1co=<#*ninea>W|q%qjj9wwv&T$mqN>>p^}5>%uD{r2gMWF`w+b3!%7?%p`!RqNx7w+vi|48`^XjrP73F^ z$_g(>@OU95Q+cACQbzhb%HQJRqGi7M{JE6J1XnPZjKfx%jv~zaqeD25%T-Bh<_up74;3=DJieLQlmzu=R%Wr@C z`|{}FrV^M%0ZKx6P)_m7ogev9k)}=AhYD4AOWB)3mGBxT!^GC(DPfbJ0C|G%vnPu5 zq#!_H;*BrMx`JbzG(3)K4jE!vRo+0rX(r_~Fer_^0i70eP%*Wy^}I(L%h<> z8*Z%f0?YKOC^t^nocJf%o4}N8w+oRiRlJ9srIre3rhero?`}=vCI5=R>_MP7l@Sjv$| z9IIaD78a}=Qf^kr7MJGB?%tmKQjTY*%Es;6qMgIYKG1%ab2p3$j1h8LA-)R3b_5Ll z%{_txp)25^tAxH0+>pr)K>u=|_%d|ke7X6{K=NhuO0Vvv-is6*d=-bYi0Y4oN{{wg zN)&2u`??%zRkSHx{Lf)m-UnN<)tHe)5!|dz*Ih zxJiCBcEtQxVPa;k{00di7*`$xh((EDnpg=T4m={9z>}PU{3OK^Hcy5|9zakLe3X|w z)e^zKew6N2e=U7=3OdIqC^-C^Mbiv!!>?|vI(Rkc8nY7ydj6`Zv~L0@tI@XfWBmN% z;n#!pmqBDKe6y2up(1IBPBRXbZJPRzOeKFtVaK&ptWJ!Vr6o;XnrwM$=1G=Mg?#wI zNB$PtZ-4u{@_chgG@Mir+4F}=VO}tov;^!(%y`O(j!B0#SN<_pc#wgv`>j0q1C2%x z4WBYmo=k3vuwC8P02vsi;xLHdNnG-*#`rxrKj9Hh(QOFxUkw+Ml_^b5R-P0{`H3Yj zLv2ibzOC=b4D$B?1_1`WB)JhFM>NVrB^MxEH1au;=Fe3M;4^@-ZN@4F0`Y1Os~_T@ z?K=*pGtqMcGk4qU?`=yN$VXOrlaDPxloS-Ib15u5(J~P)O6i$q1xhlY9vNy`tzsLH zd~^1QEl0NBxC8C9ym-D-o<7|w&$n1@Q8~t@)$T6Kv6OgL#JH!*H;3!tjVEtbQn@D! z<%V)kO9?@#q6{d7Y|C+>=JD~7=pT4R5;-DHWXeM!%wSJxlA*0Xc<`XCuB~--cWdL0 z%DW``QbN{lmD{)OFvG~4l^Mx^)v!FMT$sN5lp8KpP`4pvP}HbPR-MlD#Lra}^KTHJhnAsQKj&n3H3B(`#? zaQZIW_k4ngo8%7;k32E1sEi!`N1@^@SG$hEeMqw-ZM?Pb2CYfm2$WX_Xn4)0y@B8s zZV!DW_SZ9`yd)&QuLEO*nJ4t;!cR_WVJPmO7O&u#r4XB0>Oo*3g{ zM>yj=bW4F(zxLd$f7*C^IP`fwH4wErZ!z<^8n*ukzI-{U9;Wez_yHRO>nC^xAbQDH z)ghs0ysj0DySDgLm_nOS2T~2Teu-`-Q3Hoag?N`wi!!YN-Uv8cKb4PHLKi7ys)FKb8+}KzvwfsXPIZUkp%#GpP&kH{J

    xZQ})%-t8w?+zLS63{XD* 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 JPDHLkV1gSvHGBX7 literal 0 HcmV?d00001 diff --git a/target/classes/public/img/oops.png b/target/classes/public/img/oops.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe0efaabd062867c6b29b5c91cbb23d8cf9cffa GIT binary patch literal 117222 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Π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 literal 0 HcmV?d00001 diff --git a/target/classes/public/img/page-not-found.png b/target/classes/public/img/page-not-found.png new file mode 100644 index 0000000000000000000000000000000000000000..51e8f702cdd89c2a857c72b660b3b20c52d62b94 GIT binary patch literal 15973 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 literal 0 HcmV?d00001 diff --git a/target/classes/public/img/sad-face.jpg b/target/classes/public/img/sad-face.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7e693456dbd5fb07364a82a16ec952825fabd40 GIT binary patch literal 12839 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 literal 0 HcmV?d00001 diff --git a/target/classes/public/img/site-logo.png b/target/classes/public/img/site-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..64f5f91ef5fd8c5401abaf41d8fc8a00bc677ae3 GIT binary patch literal 7450 zcmV+#9p&PQP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 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

      `rP-rejX7Eh<@Ilv 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 literal 0 HcmV?d00001 diff --git a/target/classes/public/js/blog-scripts.js b/target/classes/public/js/blog-scripts.js new file mode 100644 index 000000000..9883fd9d6 --- /dev/null +++ b/target/classes/public/js/blog-scripts.js @@ -0,0 +1,8 @@ +$(function() { + $('#messages li').cick(function(){ + $(this).fadeOut(); + }); + setTimeout(function() { + $('#messages li.info').fadeOut(); + }) +}) \ No newline at end of file diff --git a/target/classes/public/js/jquery-3.1.0.min.js b/target/classes/public/js/jquery-3.1.0.min.js new file mode 100644 index 000000000..949e9d0ce --- /dev/null +++ b/target/classes/public/js/jquery-3.1.0.min.js @@ -0,0 +1,10872 @@ +/*! + * jQuery JavaScript Library v3.5.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2020-05-04T22:49Z + */ +( function( global, factory ) { + + "use strict"; + + 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 ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. + "use strict"; + + var arr = []; + + var getProto = Object.getPrototypeOf; + + var slice = arr.slice; + + var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); + } : function( array ) { + return arr.concat.apply( [], array ); + }; + + + var push = arr.push; + + var indexOf = arr.indexOf; + + var class2type = {}; + + var toString = class2type.toString; + + var hasOwn = class2type.hasOwnProperty; + + var fnToString = hasOwn.toString; + + var ObjectFunctionString = fnToString.call( Object ); + + var support = {}; + + var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + + var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + + function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + } + /* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + + var + version = "3.5.1", + + // 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 ); + }; + + jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // 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 all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // 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; + + // 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 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + 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" && !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 ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // 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() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + 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; + }, + + // 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 ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + 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 flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support + } ); + + if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; + } + +// 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: real iOS 8.2 only (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 = toType( obj ); + + if ( isFunction( obj ) || 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.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ + ( 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(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://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]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // 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 + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + 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" ) + }, + + rhtml = /HTML$/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 = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) + try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; + } catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.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, 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 ) { + 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 && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } 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 element and returns a boolean result + */ + function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = 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 && + a.sourceIndex - b.sourceIndex; + + // 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 :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ + function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; + } + + /** + * 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 ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); + }; + + /** + * 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, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.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 programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + 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; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // 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 https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // 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 + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).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 + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.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 ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // 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 ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.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 ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[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 + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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 + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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 ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + 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 + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; + }; + + Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); + }; + + Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ 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 ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; + }; + + Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); + }; + + Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; + + 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 += ""; + + /* eslint-disable max-len */ + + 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; + /* eslint-enable max-len */ + + }; + }, + + "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 || 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": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( 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 ) { + // eslint-disable-next-line no-unused-expressions + 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 > length ? + 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, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "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 ); + } + } + return false; + } : + + // 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 ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + 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[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; + } + + 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 ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + 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" && + 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( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; + } ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx + if ( !assert( function( el ) { + el.innerHTML = ""; + return el.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( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.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( el ) { + return el.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; + +// Deprecated + jQuery.expr[ ":" ] = jQuery.expr.pseudos; + jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; + jQuery.text = Sizzle.getText; + jQuery.isXMLDoc = Sizzle.isXML; + jQuery.contains = Sizzle.contains; + jQuery.escapeSelector = Sizzle.escape; + + + + + 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; + + + + function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + + }; + var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not + function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); + } + + jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); + }; + + jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + 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; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : 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 <) + // Shortcut simple #id case for speed + 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 ( 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 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + 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[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + 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 = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.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 ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return 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 rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones + function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], 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 = 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 ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( 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 && !firing ) { + 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; + }; + + + function Identity( v ) { + return v; + } + function Thrower( ex ) { + throw ex; + } + + function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } + } + + jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).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 = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + 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( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } + } ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. + var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + + jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } + }; + + + + + jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); + }; + + + + +// The deferred used on DOM ready + var readyList = jQuery.Deferred(); + + jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + 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, + + // 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 ] ); + } + } ); + + jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method + function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); + } + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 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 ); + } + + + + +// 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 ( toType( 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 ( !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 ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; + }; + + +// Matches dashed string for camelizing + var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() + function fcamelCase( _all, letter ) { + return letter.toUpperCase(); + } + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) + function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + } + var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); + }; + + + + + function Data() { + this.expando = jQuery.expando + Data.uid++; + } + + Data.uid = 1; + + Data.prototype = { + + cache: function( owner ) { + + // 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 + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // 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 ) ) { + + return this.get( owner, 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, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ 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://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + 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 getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; + } + + 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 = getData( 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: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = 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; + + // 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 + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + 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 || Array.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 documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } + var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + + function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + 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 = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + 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 defaultDisplayMap = {}; + + function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; + } + + function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; + } + + jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } + } ); + var rcheckableType = ( /^(?:checkbox|radio)$/i ); + + var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + + var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + + ( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // 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: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; + } )(); + + +// We have to close these tags to support XHTML (#13200) + var wrapMap = { + + // 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, "", "" ] + }; + + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; + +// Support: IE <=9 only + if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; + } + + + function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return 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, attached, 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 ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // 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.0 only, PhantomJS 1 only + // 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; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + } + + + var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + + function returnTrue() { + return true; + } + + function returnFalse() { + return false; + } + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). + function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); + } + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 + 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 elem; + } + + 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 ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + 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; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, 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 = Object.create( null ); + } + 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( rnothtmlwhite ) || [ "" ]; + 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( rnothtmlwhite ) || [ "" ]; + 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( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + 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() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + 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, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && 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 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( 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; + } + } + } + } + }; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. + function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); + } + + 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 <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // 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 || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; + }; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://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, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } + }; + +// Includes all common event props including KeyEvent and MouseEvent specific props + jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } + }, jQuery.event.addProp ); + + jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; + } ); + +// 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://bugs.chromium.org/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 + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows + function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "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 ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; + } + + function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle 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 = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + 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.0 only, PhantomJS 1 only + // 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 && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + 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 && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; + } + + jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://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( { + 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: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; + } ); + var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + + var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + }; + + + var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + + ( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); + } )(); + + + function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; + } + + + function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; + } + + + var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined + function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } + } + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property + function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; + } + + + var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + + function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; + } + + function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; + } + + function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; + } + + jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } + } ); + + jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; + } ); + + jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } + ); + +// These hooks are used by animate to expand properties + jQuery.each( { + margin: "", + padding: "", + border: "Width" + }, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } + } ); + + jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } + } ); + + + function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); + } + jQuery.Tween = Tween; + + Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } + }; + + Tween.prototype.init.prototype = Tween.prototype; + + Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } + }; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes + Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } + }; + + jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" + }; + + jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point + jQuery.fx.step = {}; + + + + + var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + + function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } + } + +// Animations created synchronously will run synchronously + function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); + } + +// Generate parameters to create a standard animation + function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; + } + + function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } + } + + function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } + } + + function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } + } + + function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; + } + + jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } + } ); + + jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; + }; + + jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } + } ); + + jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; + } ); + +// Generate shortcuts for custom animations + jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } + }, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; + } ); + + jQuery.timers = []; + jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; + }; + + jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); + }; + + jQuery.fx.interval = 13; + jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); + }; + + jQuery.fx.stop = function() { + inProgress = null; + }; + + jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 + }; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ + jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); + }; + + + ( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; + } )(); + + + var boolHook, + attrHandle = jQuery.expr.attrHandle; + + jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } + } ); + + jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } + } ); + +// Hooks for boolean attributes + boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } + }; + + jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; + } ); + + + + + var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + + jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } + } ); + + jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } + } ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop + if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; + } + + jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" + ], function() { + jQuery.propFix[ this.toLowerCase() ] = this; + } ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + + function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; + } + + function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; + } + + jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } + } ); + + + + + var rreturn = /\r/g; + + jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } + } ); + + jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } + } ); + +// Radios and checkboxes getter/setter + jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } + } ); + + + + +// Return jQuery for attributes-only inclusion + + + support.focusin = "onfocusin" in window; + + + var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + + jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + + } ); + + jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } + } ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 + if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); + } + var location = window.location; + + var nonce = { guid: Date.now() }; + + var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing + jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }; + + + var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + + function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } + } + +// Serialize an array of form elements or a set of +// key/values into a query string + jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); + }; + + jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } + } ); + + + var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport + function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; + } + +// Base inspection function for prefilters and transports + function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); + } + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 + function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; + } + + /* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ + function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } + } + + /* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ + function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; + } + + jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } + } ); + + jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; + } ); + + jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } + } ); + + + jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); + }; + + + jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } + } ); + + + jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); + }; + jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); + }; + + + + + jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} + }; + + var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + + support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); + support.ajax = xhrSupported = !!xhrSupported; + + jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } + } ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) + jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } + } ); + +// Install script dataType + jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } + } ); + +// Handle cache's special case and crossDomain + jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } + } ); + +// Bind script tag hack transport + jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + +
      +
      + + Home + Posts + + + Create Post + BackOffice + + +
      +
      + Hello, + Permission: + + + +  [Logout] +
      + + +
      + Login + Register +
      +
      + + +
      + +
        +
      • + + +
      + +
      +

      Welcome

      +

      Welcome to the Spring MVC Blog.

      + +
      + © Spring MVC Blog System, 2016 + +
      \ No newline at end of file diff --git a/target/classes/templates/posts/create.html b/target/classes/templates/posts/create.html new file mode 100644 index 000000000..5b0f76d07 --- /dev/null +++ b/target/classes/templates/posts/create.html @@ -0,0 +1,38 @@ + + + + + Edit Post + + + +
      + +

      Edit Post

      + +
      +
      +
      + + +
      +
      +
      + + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      + + + \ No newline at end of file diff --git a/target/classes/templates/posts/edit.html b/target/classes/templates/posts/edit.html new file mode 100644 index 000000000..49b60b898 --- /dev/null +++ b/target/classes/templates/posts/edit.html @@ -0,0 +1,39 @@ + + + + + Edit Post + + + +
      + +

      Edit Post

      + +
      +
      +
      + + + + +
      +
      +
      + + +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      + + + \ No newline at end of file diff --git a/target/classes/templates/posts/index.html b/target/classes/templates/posts/index.html new file mode 100644 index 000000000..8acc1eb54 --- /dev/null +++ b/target/classes/templates/posts/index.html @@ -0,0 +1,95 @@ + + + + Welcome to Spring MVC Blog + + +
      + +
      + + + + + + + + + + + + + + + + + + + + + +
      IDTitleContentDate CreatedAuthor IDAction
      + + by + Default Author + + + + + + +
      +
      +
      + +
      +
      +
      + +
      + + \ No newline at end of file diff --git a/target/classes/templates/posts/view.html b/target/classes/templates/posts/view.html new file mode 100644 index 000000000..8bd28371c --- /dev/null +++ b/target/classes/templates/posts/view.html @@ -0,0 +1,30 @@ + + + + + View Post + + + + +
      " "
      + +
      +
      +

      Post Title

      +
      + Posted on + 16-Sept-2020 + + by + Anonymous Author + +
      +

      Post content

      +
      +
      +
      Parsing error for footer
      + + + diff --git a/target/classes/templates/users/backoffice.html b/target/classes/templates/users/backoffice.html new file mode 100644 index 000000000..c1d0e35a7 --- /dev/null +++ b/target/classes/templates/users/backoffice.html @@ -0,0 +1,63 @@ + + + + + Back Office + + +
      +

      Back Offcie

      +
      + + + + + + + + + + + + + + + + +
      User NameFull NamePosts
      +
      +
      + +
      +
      +
      + +
      + + \ No newline at end of file diff --git a/target/classes/templates/users/login.html b/target/classes/templates/users/login.html new file mode 100644 index 000000000..dae842e9f --- /dev/null +++ b/target/classes/templates/users/login.html @@ -0,0 +1,35 @@ + + + + Login + + + +
      "Header"
      + +

      Login To See and Create Posts

      +
      + + +
      +
      + +
      + + +
      + +
      + + +
      Invalid Username or password
      +
      + + +
      + + \ No newline at end of file diff --git a/target/classes/templates/users/registration.html b/target/classes/templates/users/registration.html new file mode 100644 index 000000000..32976be0c --- /dev/null +++ b/target/classes/templates/users/registration.html @@ -0,0 +1,56 @@ + + + + + Title + + + + + +
      + +

      Registration

      + +
      +
      + +
      + +
      +
      + + +
      + + +
      + + +
      + +
      +
      + + +
      + +
      + +
      + +
      +
      + +
      +
      + +
      + + + + \ No newline at end of file From c68388474d510a39a679fcc8db4a62b5fb31884c Mon Sep 17 00:00:00 2001 From: dmholland Date: Fri, 25 Sep 2020 10:04:08 -0400 Subject: [PATCH 2/6] I added parts of the read me. I will most likely delete some other parts of the project that is unneccessary --- README.md | 82 ++++++++++++------------------------------------------- 1 file changed, 18 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 8cdfa1bdd..2d347ed28 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,23 @@ -# Full Stack Web Application +# My Blog -* **Objective** - to create an implementation of a web service -* **Purpose** - to demonstrate the construction of a full-stacked web-application -* **Description** - * This Case Study is your first foray into building a full-stack application. You'll be building a Spring MVC based application, which means you'll learn about what it takes to build a functional application from the ground up yourself. - * This is exciting! It's a lot, but we've given you the tools to be able to build what you need, and you get to decide what you do with it. You also get to be creative in choosing what sort of application you want to build! - * You will be working individually to design your app. We hope you'll exercise creativity on this project, sketch some wireframes before you start, make sure you have time to run these ideas by your instructors to get their feedback before you dive too deep into coding! Remember to keep things small and focus on mastering the fundamentals. -* **Additional Resources** - * [The Original Case Study Document](./case-study.pdf) - * [Case Study Outline](./case-study-outline.pdf) - * [Case Study Deliverables](./README_deliverables.md) - * [Identifying Plagiarism](./README_plagiarism.md) - * [Suggested Project Topics](./README_suggested-project-topics.md) +* **Description** - This is my blog that I got from https://nakov.com/blog/2016/08/05/creating-a-blog-system-with-spring-mvc-thymeleaf-jpa-and-mysql/ +* **Features**- This is a skeleton/vanilla blog system and it allows freedom of speech. -## Minimum Features -* `RESTful` web service which consumes requests from a front-end web application and caches each request and the respective response to a database. -* The application must support a login functionality. +### Project Configuration +* Ensure that you have mysql database installed on port 3306 + * Go inside of the resources/application.properties + * Change the user to root + * Put in your own password + *Set server.ports to what you like - - - -## Developmental Notes - -### Tech Stack Selection -* Select at least 1 technology from each of the following categories: - * **Version Control System** - 1. Github - 2. Bitbucket - - * **Wireframe** - 1. Mockflow - 2. Balsamiq - 3. Lucidcharts - - * **Frontend** - 1. Java Server Pages - - * **Business Logic** - 1. Java - 2. TypeScript - - * **WebServer Implementation** - 1. Spring Boot - 2. At least 1 [backing service](https://12factor.net/backing-services) API - - * **Data Layer** - 1. MySQL - 2. PostgreSQL - 3. MariaDB - - * **Web Server Cloud Deployment** - 1. Heroku - 2. AWS EC2 Instance - - * **Web Application Cloud Deployment** - 1. Netlify - 2. AWS EC2 Instance - - - - -### Installation -* It is advised that you make install each of the following technologies to ensure that are at least accessible - * Install [NodeJs](https://nodejs.org/en/). - * Install [Angular](http://angular.io/). - * Install [AngularCli](https://cli.angular.io/). +### Problems +* Project will not run on same database of two seperate deployments, will give errors: 'User name does not have a default' + * Passwords are not set to be very secure, so it is up to you to make strong passwords + * Google will say 'Passwords for localhost:8080' + * Put in your own password + * Not set to delete users + * Permissions are not set to anything but Admin, so anybody with access can delete other peoples posts + * Need to set up permissions over posts. This is done through setting roles in spring security and changing permissions on edit, index, create pages. + *Visitors can only see the last 5 posts. This can be enhanced. \ No newline at end of file From cdba16999fa1937873130f0b35578b03977caf3d Mon Sep 17 00:00:00 2001 From: dmholland Date: Fri, 25 Sep 2020 10:05:01 -0400 Subject: [PATCH 3/6] Deleted other readmes --- README_deliverables.md | 52 ---------------------------- README_plagiarism.md | 20 ----------- README_suggested-project-topics.md | 54 ------------------------------ 3 files changed, 126 deletions(-) delete mode 100644 README_deliverables.md delete mode 100644 README_plagiarism.md delete mode 100644 README_suggested-project-topics.md diff --git a/README_deliverables.md b/README_deliverables.md deleted file mode 100644 index 4bb20a97f..000000000 --- a/README_deliverables.md +++ /dev/null @@ -1,52 +0,0 @@ -## Deliverables - -### Trello Board -* To begin your case study, create a Trello board -* Please ensure the instructor has access to this Trello board. -* This board will be used to track progress and evaluate required effort of tasks. -* Ensure the board has at least 5 columns accounting for each of the following - * `Ideation` - * This column will first contain cards describing a potential application to be built. - * Upon concept approval, this column will be re-purposed to describe potential features of the approved application. - * `Backlog` - * This column will contain cards describing work that **will not be** done in a near-future, but **must be done** eventually for the product to be considered completed - * `Upcoming` - * This column will contain cards describing work that **will not be** done in the current-sprint commitment, but **will be committed to** in the upcoming-sprint commitment. - * `Current` - * This column will contain cards describing work that **will be** done in the current-sprint commitment. - * `In Review - * This column will contain cards describing work that **need to be reviewed** to be considered **done**. - * `Completed` - * This column will contain cards describing work that has been reviewed and is considered completed - -### Database -* MariaDB is the suggested dialect -* This deliverable includes creating a database that reflects the website you have decided to create -* Schema diagram: a visual representation of your database -* Database file creation (`.sql`): Queries used to create the database - - -### Core Java & JPA -* This deliverable includes creating a back-end environment that is composed of different Java classes - * Models: Java classes that represent an entity and are used to transfer data related to an entity, create multiple queries, and represent the database as an object-oriented model - * Persistence.xml: This file configures the Java classes that are going to be using JPA to interact with the database. - * Persistence Java Class: A static class that allows the application to create a persistent object which can be used to interact with the database. - * Service Class or Data Access Objects (DAO): Java classes that are composed of one or more functions and have direct access to the database by using JPA persistent object. Each function in a DAO class interacts with the database differently. - * Custom Exceptions: Java classes that allow you to describe an error while the application is running. - * Utilizes: Java classes that hold constant variables (Variables that never change from its initial value). The value of these variables can be requested parameters, Database queries used in the DAO, name of HTML pages, or URL patterns to forward a request to. - - -### HTML5/CSS3 -* This deliverable includes creating every page required by the given case study -* HTML5: Use HTML for static and dynamic pages and markup the structure of every page. -* CSS3: Use CSS3 to style your HTML pages and make sure to take into consideration the knowledge acquired from the visual design lessons. - - -### Spring MVC -* This deliverable includes connecting no. 1, 2 and 3 deliverables to function together - * Spring MVC: Responsible for responding to a request made by the user. This can be login, registration, etc. When using Spring MVC make sure to use at least the following functionalities: different type of session management, annotation-based controller, exception handling, models, model attributes. - - -### Junit (Test all DAO classes) -* This deliverable includes creating a test class for each DAO available and creating a test case in the test class for each function inside the DAO - * Junit: A Java framework responsible for performing unit testing against every DAO class available. There should be a test class for every DAO and inside the test classes, there should be at least one test case for every function inside the DAO classes. When using JUnit make sure to use the following functionalities: Suite classes, Runner, Feature life cycle, Test, Parameterized classes, Java Hamcrest library. diff --git a/README_plagiarism.md b/README_plagiarism.md deleted file mode 100644 index 5b071dae3..000000000 --- a/README_plagiarism.md +++ /dev/null @@ -1,20 +0,0 @@ -### A Note on Plagiarism -* You are encouraged to ask others, including students, instructors, and StackOverflow, for help. However, it is NOT ACCEPTABLE TO COPY another person's code and submit it as your own. More importantly, it is detrimental to your learning and growth. -* All of the following are considered plagiarism or cheating: - * Turning in work that is not your own. - * Turning in someone else's work as your own. - * Hiring, or paying someone to do your work for you. - * Copying words or code without giving credit. - * Building or copying someone else’s idea without their knowledge or giving credit. - * Giving incorrect information about a source. - * Changing words, variable names, etc. but copying the code or files of a source without giving credit. - * Copying so many ideas or code blocks from a source that it makes up the majority of your work, whether you give credit or not. - * Failing to put a quotation in quotation marks. - - -* In an effort to not plagiarize, credit for this content goes to: -* [Plagiarism.org](plagiarism.org), specifically the “plagiarism 101” section. The content was adapted for the code. For more information, please see: - * [What is Plagiarism](http://www.plagiarism.org/plagiarism-101/what-is-plagiarism) - * [Types of Plagiarism](http://www.plagiarism.org/plagiarism-101/types-of-plagiarism) - * [How do I safely write code in my own 'words' and not plagiarize?](http://programmers.stackexchange.com/questions/80167/how-do-i-safely-write-code-in-my-own-words-and-not-plagiarize) - * [Avoiding Plagiarism: Writing Computer Code](http://www.upenn.edu/academicintegrity/ai_computercode.html) diff --git a/README_suggested-project-topics.md b/README_suggested-project-topics.md deleted file mode 100644 index 9b2ac965e..000000000 --- a/README_suggested-project-topics.md +++ /dev/null @@ -1,54 +0,0 @@ - -## Suggested Project Topics - -### (Suggested Project Topic 1) TCP Application - -#### User Stories to Fulfill -* As a client, (not logged in) I - * can send messages to a _peer_. - * can view default channels - * can view all accessible channels - * can view messages live as they are received - -
      - - - - - -### (Suggested Project Topic 2) Blog Application - -#### User Stories to Fulfill -* As a client, (not logged in) I - * can create new blog posts - * A blog post can consist of images and text - * can view list of all blog posts - * can view blog posts filtered by blog-tag - * can view new blog posts upon refreshing the DOM - -
      - - - - - -### (Suggested Project Topic 3) Application - -#### User Stories to Fulfill -* As a client, (not logged in) I - * can upload new videos - * can view list of all videos - * can post simple text-comments on a video - - - - - -### (Suggested Project Topic 4) Money Management Application - -#### User Stories to Fulfill -* As a client, (not logged in) I - * can create new accounts - * deposit money to each account - * withdrawl money from each account - * transfer money to and from any 2 accounts From f4e36e2fe544ed90ee55ae66e044021b787cf647 Mon Sep 17 00:00:00 2001 From: dmholland Date: Fri, 25 Sep 2020 10:32:07 -0400 Subject: [PATCH 4/6] Updated read me --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d347ed28..f496902d5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # My Blog * **Description** - This is my blog that I got from https://nakov.com/blog/2016/08/05/creating-a-blog-system-with-spring-mvc-thymeleaf-jpa-and-mysql/ +* **Things Added** - The tutorial being old and largely unfinished, I added security, create/edit/index of posts along with controllers. * **Features**- This is a skeleton/vanilla blog system and it allows freedom of speech. @@ -15,7 +16,7 @@ ### Problems * Project will not run on same database of two seperate deployments, will give errors: 'User name does not have a default' * Passwords are not set to be very secure, so it is up to you to make strong passwords - * Google will say 'Passwords for localhost:8080' + * Google will say 'Passwords for localhost:8080 have been breached.' * Put in your own password * Not set to delete users * Permissions are not set to anything but Admin, so anybody with access can delete other peoples posts From 3c7cd19528f302964ff5e84da7af97893770426f Mon Sep 17 00:00:00 2001 From: dmholland Date: Fri, 25 Sep 2020 16:15:02 -0400 Subject: [PATCH 5/6] I changed the readme, included a gif --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f496902d5..9f4d0d0e2 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ * Change the user to root * Put in your own password *Set server.ports to what you like + ![Alt Text](https://media.giphy.com/media/YrnExxa2632SRI56aN/giphy.gif) ### Problems * Project will not run on same database of two seperate deployments, will give errors: 'User name does not have a default' From f6d3002d3e4a75467a9a8175760468f086724ae0 Mon Sep 17 00:00:00 2001 From: dmholland Date: Fri, 25 Sep 2020 16:23:16 -0400 Subject: [PATCH 6/6] Last push. Added gif of it working. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f4d0d0e2..b49268125 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ * **Description** - This is my blog that I got from https://nakov.com/blog/2016/08/05/creating-a-blog-system-with-spring-mvc-thymeleaf-jpa-and-mysql/ * **Things Added** - The tutorial being old and largely unfinished, I added security, create/edit/index of posts along with controllers. * **Features**- This is a skeleton/vanilla blog system and it allows freedom of speech. - +![Alt Text](https://media.giphy.com/media/abL0rXbqwWZgX383RH/giphy.gif) ### Project Configuration

    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%0A(S87MdJK7M4XrJw3CBoBka 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%0A(S87MdJK7M4XrJw3CBoBka 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