diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2a3040 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..a45eb6b --- /dev/null +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,118 @@ +/* + * 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 0000000..2cc7d4a Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..642d572 --- /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/mvnw b/mvnw new file mode 100644 index 0000000..a16b543 --- /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 0000000..c8d4337 --- /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 0000000..c36beed --- /dev/null +++ b/pom.xml @@ -0,0 +1,228 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.2.4.RELEASE + + + com.codesdream + ase + 0.0.1-SNAPSHOT + ase + All Staff Education + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + mysql + mysql-connector-java + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + + org.springframework.security + spring-security-test + test + + + + org.springframework.boot + spring-boot-devtools + true + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + commons-codec + commons-codec + 1.11 + + + + org.springframework + spring-test + 5.2.3.RELEASE + compile + + + + org.springframework.boot + spring-boot-test + + + + org.junit.jupiter + junit-jupiter-api + 5.5.2 + compile + + + + junit + junit + + + + org.springframework.boot + spring-boot-test-autoconfigure + + + + org.hsqldb + hsqldb + runtime + + + + org.projectlombok + lombok + 1.16.10 + + + + org.apache.poi + poi + 3.14 + + + + + org.apache.poi + poi-ooxml + 3.14 + + + + com.alibaba + fastjson + 1.2.61 + + + + com.alibaba + fastjson + 1.1.71.android + + + + org.mariadb.jdbc + mariadb-java-client + 2.5.4 + + + + + com.h2database + h2 + runtime + + + + + com.google.zxing + core + 3.2.0 + + + + com.google.zxing + javase + 3.2.0 + + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + com.github.java-json-tools + json-patch + 1.12 + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + ${JAVA_HOME}/jre/lib/rt.jar + + + + + + + + + AlibabaMaven + Maven Aliyun Mirror + http://maven.aliyun.com/nexus/content/repositories/central/ + + true + + + false + + + + + diff --git a/src/main/java/com/codesdream/ase/AseApplication.java b/src/main/java/com/codesdream/ase/AseApplication.java new file mode 100644 index 0000000..9130640 --- /dev/null +++ b/src/main/java/com/codesdream/ase/AseApplication.java @@ -0,0 +1,13 @@ +package com.codesdream.ase; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AseApplication { + + public static void main(String[] args) { + SpringApplication.run(AseApplication.class, args); + } + +} diff --git a/src/main/java/com/codesdream/ase/component/ASESpringUtil.java b/src/main/java/com/codesdream/ase/component/ASESpringUtil.java new file mode 100644 index 0000000..e4b44cf --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/ASESpringUtil.java @@ -0,0 +1,22 @@ +package com.codesdream.ase.component; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 手动获得Bean的工具类 + */ +@Component +public class ASESpringUtil { + @Resource + private ApplicationContext applicationContext; + + public T getBean(Class tClass){ + return applicationContext.getBean(tClass); + } + +} diff --git a/src/main/java/com/codesdream/ase/component/activity/ActivityConverter.java b/src/main/java/com/codesdream/ase/component/activity/ActivityConverter.java new file mode 100644 index 0000000..5d2783f --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/activity/ActivityConverter.java @@ -0,0 +1,178 @@ +package com.codesdream.ase.component.activity; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.exception.innerservererror.DataInvalidFormatException; +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Attendance; +import com.codesdream.ase.model.activity.Period; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.ActivityService; +import com.codesdream.ase.service.AttendanceService; +import com.codesdream.ase.service.PeriodService; +import com.codesdream.ase.service.UserService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +/** + * JSONObject-Activity转化类 + */ +@Component +public class ActivityConverter { + + @Resource + UserService userService; + + @Resource + PeriodService periodService; + + @Resource + AttendanceService attendanceService; + + /** + * @param json 一个Optional的json对象,用以转化为Activity对象,此过程中进行值的合法校验 + * @return 一个可以被直接存储在数据库中的合法的Activity对象 + */ + public Activity convertToActivity(Optional json) { + if (!json.isPresent()) { + throw new NullPointerException(); + } + Activity activity = new Activity(); + JSONObject jsonObject = json.get(); + + //设置活动创建人 + int userId = (int) jsonObject.get("creator"); + Optional creator = userService.findUserById(userId); + activity.setCreator(creator.get()); + + //设置参与人员 + List participateGroupFromJson = (List) jsonObject.get("participate-group"); + Set participateGroup = new HashSet<>(); + for (int id : participateGroupFromJson) { + Optional user = userService.findUserById(id); + participateGroup.add(user.get()); + } + activity.setParticipateGroup(participateGroup); + + //设置活动标题 + String title = (String) jsonObject.get("title"); + activity.setTitle(title); + + //设置主要负责人 + int chiefManagerId = (int) jsonObject.get("chief-manager"); + Optional chiefManager = userService.findUserById(chiefManagerId); + activity.setChiefManager(chiefManager.get()); + + //设置次要负责人 + List assistManagersFromJSON = (List) jsonObject.get("assist-managers"); + Set assistManager = new HashSet<>(); + for (int id : assistManagersFromJSON) { + Optional user = userService.findUserById(id); + assistManager.add(user.get()); + } + activity.setAssistManagers(assistManager); + + //设置活动类型 + String type = (String) jsonObject.get("type"); + activity.setType(type); + + //设置 + String startTimeFromJSON = (String) jsonObject.get("start-time"); + String endTimeFromJSON = (String) jsonObject.get("end-time"); + LocalDateTime startTime = LocalDateTime.parse(startTimeFromJSON, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + LocalDateTime endTime = LocalDateTime.parse(endTimeFromJSON, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + Period period = new Period(startTime, endTime); + period.setEnabled(false); + period = periodService.save(period); + activity.setPlanPeriod(period); + + String cycle = (String) jsonObject.get("cycle"); + activity.setCycle(cycle); + + String description = (String) jsonObject.get("description"); + activity.setDescription(description); + + List signGroupFromJSON = (List) jsonObject.get("sign-group"); + Set signGroup = new HashSet<>(); + for (int id : signGroupFromJSON) { + Optional user = userService.findUserById(id); + signGroup.add(user.get()); + } + activity.setSignGroup(signGroup); + + List informGroupFromJSON = (List) jsonObject.get("inform-group"); + if (informGroupFromJSON == null) { + participateGroupFromJson.removeAll(signGroupFromJSON); + participateGroupFromJson.addAll(signGroupFromJSON); + informGroupFromJSON = participateGroupFromJson; + } + Set informGroup = new HashSet<>(); + for (int id : informGroupFromJSON) { + Optional user = userService.findUserById(id); + informGroup.add(user.get()); + } + activity.setInformGroup(informGroup); + + List visibleGroupFromJSON = (List) jsonObject.get("visible-group"); + Set visibleGroup = new HashSet<>(); + for (int id : visibleGroupFromJSON) { + Optional user = userService.findUserById(id); + visibleGroup.add(user.get()); + } + activity.setVisibleGroup(informGroup); + + String remindTimeFromJSON = (String) jsonObject.get("remind-time"); + String numStr = remindTimeFromJSON.substring(0, remindTimeFromJSON.length() - 1); + int num = Integer.parseInt(numStr); + char unit = remindTimeFromJSON.charAt(remindTimeFromJSON.length() - 1); + switch (unit) { + case 'w': { + activity.setRemindTime(activity.getPlanPeriod().getStartTime().minusWeeks(num)); + break; + } + case 'd': { + activity.setRemindTime(activity.getPlanPeriod().getStartTime().minusDays(num)); + break; + } + case 'm': { + activity.setRemindTime(activity.getPlanPeriod().getStartTime().minusMinutes(num)); + break; + } + case 'h': { + activity.setRemindTime(activity.getPlanPeriod().getStartTime().minusHours(num)); + break; + } + case 's': { + activity.setRemindTime(activity.getPlanPeriod().getStartTime().minusSeconds(num)); + } + } + + Set periods = new HashSet<>(); + String[] attendanceTimes = (String[]) jsonObject.get("attendance"); + boolean attendanceOnLine = (boolean) jsonObject.get("attendance-online"); + if ((attendanceTimes.length & 1) == 1) { + throw new DataInvalidFormatException(); + } + for (int i = 0; i < attendanceTimes.length; i += 2) { + LocalDateTime start = LocalDateTime.parse(attendanceTimes[i], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + LocalDateTime end = LocalDateTime.parse(attendanceTimes[i + 1], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + Period period1 = new Period(start, end); + periods.add(period1); + } + Attendance attendance = new Attendance(); + attendance.setClockInPeriods(periods); + attendance.setOnline(attendanceOnLine); + + attendance = attendanceService.save(attendance); + activity.setAttendance(attendance); + + activity.setOn(false); + activity.setOff(false); + + return activity; + + } +} diff --git a/src/main/java/com/codesdream/ase/component/activity/CurrentUserGetter.java b/src/main/java/com/codesdream/ase/component/activity/CurrentUserGetter.java new file mode 100644 index 0000000..cfebcbc --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/activity/CurrentUserGetter.java @@ -0,0 +1,26 @@ +package com.codesdream.ase.component.activity; + +import com.codesdream.ase.component.ASESpringUtil; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.repository.permission.UserRepository; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.security.Principal; +import java.util.Optional; + +//获取当前用户的用户名 +@Component +public class CurrentUserGetter { + private Optional user; + public Optional getCurrentUser(HttpServletRequest request){ + + Principal principal = request.getUserPrincipal(); + String username = principal.getName(); + ASESpringUtil aseSpringUtil = new ASESpringUtil(); + UserRepository userRepository = aseSpringUtil.getBean(UserRepository.class); + this.user = userRepository.findByUsername(username); + return this.user; + } + +} diff --git a/src/main/java/com/codesdream/ase/component/activity/FileUtils.java b/src/main/java/com/codesdream/ase/component/activity/FileUtils.java new file mode 100644 index 0000000..656d3d2 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/activity/FileUtils.java @@ -0,0 +1,129 @@ +package com.codesdream.ase.component.activity; + +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.imageio.ImageIO; +import javax.imageio.stream.ImageOutputStream; +import java.awt.image.BufferedImage; +import java.io.*; + +@Component +public class FileUtils { + /** + * 得到图片字节流 数组大小 + */ + public static byte[] readStream(InputStream inStream) throws Exception { + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len = -1; + while ((len = inStream.read(buffer)) != -1) { + outStream.write(buffer, 0, len); + } + outStream.close(); + inStream.close(); + return outStream.toByteArray(); + } + + /** + * 将文件转换成Byte数组 + * + * @param file + * @return + */ + public static byte[] getBytesByFile(File file) { + try { + FileInputStream fis = new FileInputStream(file); + ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); + byte[] b = new byte[1000]; + int n; + while ((n = fis.read(b)) != -1) { + bos.write(b, 0, n); + } + fis.close(); + byte[] data = bos.toByteArray(); + bos.close(); + return data; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * MultipartFile转File + * + * @param param + * @return + */ + public static File transfer(MultipartFile param) { + if (!param.isEmpty()) { + File file = null; + try { + InputStream in = param.getInputStream(); + file = new File(param.getOriginalFilename()); + OutputStream out = new FileOutputStream(file); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + while ((bytesRead = in.read(buffer, 0, 8192)) != -1) { + out.write(buffer, 0, bytesRead); + } + in.close(); + out.close(); + return file; + } catch (Exception e) { + e.printStackTrace(); + return file; + } + } + return null; + } + + /** + * 获取指定文件的输入流 + * + * @param logoPath 文件的路径 + * @return + */ + public static InputStream getResourceAsStream(String logoPath) { + return FileUtils.class.getResourceAsStream(logoPath); + } + + /** + * 将InputStream写入到File中 + * + * @param ins + * @param file + * @throws IOException + */ + public void inputStreamToFile(InputStream ins, File file) throws IOException { + OutputStream os = new FileOutputStream(file); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + os.close(); + ins.close(); + } + + /** + * 将图片转化成输入流 + * + * @param image 图片 + * @return inputStream 图片转化之后的输入流 + */ + public static InputStream getImageStream(BufferedImage image) { + InputStream inputStream = null; + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ImageOutputStream imageOutputStream; + try { + imageOutputStream = ImageIO.createImageOutputStream(byteArrayOutputStream); + ImageIO.write(image, "jpg", imageOutputStream); + inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + } catch (IOException e) { + e.printStackTrace(); + } + return inputStream; + } +} diff --git a/src/main/java/com/codesdream/ase/component/activity/NullValueAttributes.java b/src/main/java/com/codesdream/ase/component/activity/NullValueAttributes.java new file mode 100644 index 0000000..dcd93ea --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/activity/NullValueAttributes.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.component.activity; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Data +@Component +public class NullValueAttributes { + private List nullValueAttributes; +} diff --git a/src/main/java/com/codesdream/ase/component/activity/QrCodeUtils.java b/src/main/java/com/codesdream/ase/component/activity/QrCodeUtils.java new file mode 100644 index 0000000..e18de65 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/activity/QrCodeUtils.java @@ -0,0 +1,225 @@ +package com.codesdream.ase.component.activity; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import org.springframework.stereotype.Component; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.geom.RoundRectangle2D; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.Hashtable; +import java.util.Random; + +/** + * 二维码生成工具类 + */ +@Component +public class QrCodeUtils { + private static final String CHARSET = "utf-8"; + public static final String FORMAT = "JPG"; + // 二维码尺寸 + private static final int QRCODE_SIZE = 300; + // LOGO宽度 + private static final int LOGO_WIDTH = 60; + // LOGO高度 + private static final int LOGO_HEIGHT = 60; + + /** + * 生成二维码 + * + * @param content 二维码内容 + * @param logoPath logo地址 + * @param needCompress 是否压缩logo + * @return 图片 + * @throws Exception + */ + public static BufferedImage createImage(String content, String logoPath, boolean needCompress) throws Exception { + Hashtable hints = new Hashtable<>(); + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); + hints.put(EncodeHintType.CHARACTER_SET, CHARSET); + hints.put(EncodeHintType.MARGIN, 1); + BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, + hints); + int width = bitMatrix.getWidth(); + int height = bitMatrix.getHeight(); + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF); + } + } + if (logoPath == null || "".equals(logoPath)) { + return image; + } + // 插入图片 + QrCodeUtils.insertImage(image, logoPath, needCompress); + return image; + } + + /** + * 插入LOGO + * + * @param source 二维码图片 + * @param logoPath LOGO图片地址 + * @param needCompress 是否压缩 + * @throws IOException + */ + private static void insertImage(BufferedImage source, String logoPath, boolean needCompress) throws IOException { + InputStream inputStream = null; + try { + inputStream = FileUtils.getResourceAsStream(logoPath); + Image src = ImageIO.read(inputStream); + int width = src.getWidth(null); + int height = src.getHeight(null); + if (needCompress) { // 压缩LOGO + if (width > LOGO_WIDTH) { + width = LOGO_WIDTH; + } + if (height > LOGO_HEIGHT) { + height = LOGO_HEIGHT; + } + Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH); + BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = tag.getGraphics(); + g.drawImage(image, 0, 0, null); // 绘制缩小后的图 + g.dispose(); + src = image; + } + // 插入LOGO + Graphics2D graph = source.createGraphics(); + int x = (QRCODE_SIZE - width) / 2; + int y = (QRCODE_SIZE - height) / 2; + graph.drawImage(src, x, y, width, height, null); + Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6); + graph.setStroke(new BasicStroke(3f)); + graph.draw(shape); + graph.dispose(); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } finally { + if (inputStream != null) { + inputStream.close(); + } + } + } + + /** + * 生成二维码(内嵌LOGO) + * 二维码文件名随机,文件名可能会有重复 + * + * @param content 内容 + * @param logoPath LOGO地址 + * @param destPath 存放目录 + * @param needCompress 是否压缩LOGO + * @throws Exception + */ + public static String encode(String content, String logoPath, String destPath, boolean needCompress) throws Exception { + BufferedImage image = QrCodeUtils.createImage(content, logoPath, needCompress); + mkdirs(destPath); + String fileName = new Random().nextInt(99999999) + "." + FORMAT.toLowerCase(); + ImageIO.write(image, FORMAT, new File(destPath + "/" + fileName)); + return fileName; + } + + /** + * 生成二维码(内嵌LOGO) + * 调用者指定二维码文件名 + * + * @param content 内容 + * @param logoPath LOGO地址 + * @param destPath 存放目录 + * @param fileName 二维码文件名 + * @param needCompress 是否压缩LOGO + * @throws Exception + */ + public static String encode(String content, String logoPath, String destPath, String fileName, boolean needCompress) throws Exception { + BufferedImage image = QrCodeUtils.createImage(content, logoPath, needCompress); + mkdirs(destPath); + fileName = fileName.substring(0, fileName.indexOf(".") > 0 ? fileName.indexOf(".") : fileName.length()) + + "." + FORMAT.toLowerCase(); + ImageIO.write(image, FORMAT, new File(destPath + "/" + fileName)); + return fileName; + } + + /** + * 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir. + * (mkdir如果父目录不存在则会抛出异常) + * + * @param destPath 存放目录 + */ + public static void mkdirs(String destPath) { + File file = new File(destPath); + if (!file.exists() && !file.isDirectory()) { + file.mkdirs(); + } + } + + /** + * 生成二维码(内嵌LOGO) + * + * @param content 内容 + * @param logoPath LOGO地址 + * @param destPath 存储地址 + * @throws Exception + */ + public static String encode(String content, String logoPath, String destPath) throws Exception { + return QrCodeUtils.encode(content, logoPath, destPath, false); + } + + /** + * 生成二维码 + * + * @param content 内容 + * @param destPath 存储地址 + * @param needCompress 是否压缩LOGO + * @throws Exception + */ + public static String encode(String content, String destPath, boolean needCompress) throws Exception { + return QrCodeUtils.encode(content, null, destPath, needCompress); + } + + /** + * 生成二维码 + * + * @param content 内容 + * @param destPath 存储地址 + * @throws Exception + */ + public static String encode(String content, String destPath) throws Exception { + return QrCodeUtils.encode(content, null, destPath, false); + } + + /** + * 生成二维码(内嵌LOGO) + * + * @param content 内容 + * @param logoPath LOGO地址 + * @param output 输出流 + * @param needCompress 是否压缩LOGO + * @throws Exception + */ + public static void encode(String content, String logoPath, OutputStream output, boolean needCompress) + throws Exception { + BufferedImage image = QrCodeUtils.createImage(content, logoPath, needCompress); + ImageIO.write(image, FORMAT, output); + } + + /** + * 生成二维码 + * + * @param content 内容 + * @param output 输出流 + * @throws Exception + */ + public static void encode(String content, OutputStream output) throws Exception { + QrCodeUtils.encode(content, null, output, false); + } + + +} diff --git a/src/main/java/com/codesdream/ase/component/api/QuickJSONRespond.java b/src/main/java/com/codesdream/ase/component/api/QuickJSONRespond.java new file mode 100644 index 0000000..69d2db0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/api/QuickJSONRespond.java @@ -0,0 +1,128 @@ +package com.codesdream.ase.component.api; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.respond.JSONBaseRespondObject; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + + +@Component +public class QuickJSONRespond { + @Resource + private JSONParameter jsonParameter; + + // 根据对象构造获得标准的JSON响应字符串返回 + public String getJSONStandardRespond(Integer status, String msg, String info, Object dataObject){ + JSONBaseRespondObject respondObject = new JSONBaseRespondObject(status, msg); + if(info != null) respondObject.setInfo(info); + else respondObject.setInfo(null); + + respondObject.setData(dataObject); + return jsonParameter.getJSONString(respondObject); + } + + // 根据对象构造获得标准的JSON响应字符串返回 + public String getJSONStandardRespond(HttpStatus status, Object dataObject){ + JSONBaseRespondObject respondObject = new JSONBaseRespondObject(status.value(), status.getReasonPhrase()); + + respondObject.setData(dataObject); + return jsonParameter.getJSONString(respondObject); + } + + // 根据对象构造获得标准的JSON响应字符串返回 + public String getJSONStandardRespond(HttpStatus status, String info, Object dataObject){ + JSONBaseRespondObject respondObject = new JSONBaseRespondObject(status.value(), status.getReasonPhrase()); + if(info != null) respondObject.setInfo(info); + else respondObject.setInfo(null); + + respondObject.setData(dataObject); + return jsonParameter.getJSONString(respondObject); + } + + // 根据对象构造获得标准的JSON响应字符串返回 + public String getJSONStandardRespond(HttpStatus status, String info){ + JSONBaseRespondObject respondObject = new JSONBaseRespondObject(status.value(), status.getReasonPhrase()); + if(info != null) respondObject.setInfo(info); + else respondObject.setInfo(null); + + return jsonParameter.getJSONString(respondObject); + } + + // 获得标准的JSON响应字符串返回特定状态码的和解释息 + public String getJSONStandardRespond(Integer code, String msg, String info){ + JSONBaseRespondObject respondObject = new JSONBaseRespondObject(code, msg); + if(info != null) respondObject.setInfo(info); + else respondObject.setInfo(null); + respondObject.setData(null); + return jsonParameter.getJSONString(respondObject); + } + + // 获得标准的JSON响应字符串返回(404状态) + public String getRespond404(String info){ + return getJSONStandardRespond(HttpStatus.NOT_FOUND, info); + } + + // 获得标准的JSON响应字符串返回(404状态) + public String getRespond404(String info, Object object){ + return getJSONStandardRespond(HttpStatus.NOT_FOUND, info, object); + } + + // 获得标准的JSON响应字符串返回(500状态) + public String getRespond500(String info){ + return getJSONStandardRespond(HttpStatus.INTERNAL_SERVER_ERROR, info); + } + + // 获得标准的JSON响应字符串返回(200状态) + public String getRespond200(String info){ + return getJSONStandardRespond(HttpStatus.OK, info); + } + + // 获得标准的JSON响应字符串返回(200状态) + public String getRespond200(String info, Object object){ + return getJSONStandardRespond(HttpStatus.OK, info, object); + } + + // 获得标准的JSON响应字符串返回(403状态) + public String getRespond403(String info){ + return getJSONStandardRespond(HttpStatus.FORBIDDEN, info); + } + + // 获得标准的JSON响应字符串返回(406状态) + public String getRespond406(String info){ + return getJSONStandardRespond(HttpStatus.NOT_ACCEPTABLE, info); + } + + // 获得标准的JSON响应字符串返回(406状态) + public String getRespond406(String info, Object object){ + return getJSONStandardRespond(HttpStatus.NOT_ACCEPTABLE, info, object); + } + + // 获得标准的JSON响应字符串返回(501态) + public String getRespond501(String info){ + return getJSONStandardRespond(501, "Not Implemented", info) ; + } + + // 获得标准的JSON响应字符串返回(401状态) + public String getRespond401(String info){ + return getJSONStandardRespond(401, "Unauthorized", info); + } + + // 获得标准的JSON响应字符串返回(400状态) + public String getRespond400(String info){ + return getJSONStandardRespond(400, "Bad Request", info); + } + + // 获得标准的JSON响应字符串返回(404状态) + public String getRespond400(String info, Object object){ + return getJSONStandardRespond(400, "Bad Request", info, object); + } + + // 获得标准的JSON响应字符串返回(400状态) + public String getRespond409(String info){ + return getJSONStandardRespond(409, "Conflict", info); + } + + +} diff --git a/src/main/java/com/codesdream/ase/component/auth/AJAXRequestChecker.java b/src/main/java/com/codesdream/ase/component/auth/AJAXRequestChecker.java new file mode 100644 index 0000000..77c9bed --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/AJAXRequestChecker.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.component.auth; + +import org.springframework.security.authentication.AuthenticationServiceException; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.util.Optional; + +@Component +public class AJAXRequestChecker { + public boolean checkAjaxPOSTRequest(HttpServletRequest request){ + return Optional.ofNullable(request.getHeader("X-Requested-With")).isPresent(); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEAccessDecisionManager.java b/src/main/java/com/codesdream/ase/component/auth/ASEAccessDecisionManager.java new file mode 100644 index 0000000..ae22d9e --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEAccessDecisionManager.java @@ -0,0 +1,42 @@ +package com.codesdream.ase.component.auth; + +import org.springframework.security.access.AccessDecisionManager; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.access.ConfigAttribute; +import org.springframework.security.authentication.InsufficientAuthenticationException; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Component; + +import java.util.Collection; +import java.util.Iterator; + +@Component +public class ASEAccessDecisionManager implements AccessDecisionManager { + @Override + public void decide(Authentication authentication, Object object, Collection configAttributes) throws AccessDeniedException, InsufficientAuthenticationException { + if(null == configAttributes || configAttributes.size() <= 0) { + return; + } + + for (ConfigAttribute c : configAttributes) { + String needRole = c.getAttribute(); + for (GrantedAuthority ga : authentication.getAuthorities()) { + if (needRole.trim().equals(ga.getAuthority())) { + return; + } + } + } + throw new AccessDeniedException("Access Denied"); + } + + @Override + public boolean supports(ConfigAttribute attribute) { + return true; + } + + @Override + public boolean supports(Class clazz) { + return true; + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEAccessDeniedHandler.java b/src/main/java/com/codesdream/ase/component/auth/ASEAccessDeniedHandler.java new file mode 100644 index 0000000..0c3350e --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEAccessDeniedHandler.java @@ -0,0 +1,33 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.component.api.QuickJSONRespond; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +// 认证用户访问无权限资源 +@Slf4j +@Component +public class ASEAccessDeniedHandler implements AccessDeniedHandler { + + @Resource + private QuickJSONRespond quickJSONRespond; + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) + throws IOException, ServletException { + log.info("ASEAccessDeniedHandler Found!"); + + // 对无权限操作返回403 + response.getWriter().print(quickJSONRespond.getRespond403(null)); + + + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationEntryPoint.java b/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationEntryPoint.java new file mode 100644 index 0000000..296cc2b --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationEntryPoint.java @@ -0,0 +1,29 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.component.api.QuickJSONRespond; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +// 匿名用户访问无权限资源 +@Slf4j +@Component +public class ASEAuthenticationEntryPoint implements AuthenticationEntryPoint { + @Resource + private QuickJSONRespond quickJSONRespond; + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) + throws IOException { + + // 对匿名用户返回401 + response.getWriter().print(quickJSONRespond.getRespond401(null)); + + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationFailureHandler.java b/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationFailureHandler.java new file mode 100644 index 0000000..d90a784 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationFailureHandler.java @@ -0,0 +1,43 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.json.respond.ErrorInfoJSONRespond; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Date; + +// 认证失败返回 +@Slf4j +@Component +public class ASEAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { + + @Resource + private QuickJSONRespond quickJSONRespond; + + @Override + public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) + throws IOException + { + log.info("ASEAuthenticationFailureHandler Login Fail!"); + + // 填写异常信息存储对象 + ErrorInfoJSONRespond errorInfoJSONRespond = new ErrorInfoJSONRespond(); + errorInfoJSONRespond.setDate(new Date()); + errorInfoJSONRespond.setExceptionMessage(exception.getMessage()); + errorInfoJSONRespond.setException(exception.getClass().getSimpleName()); + + // 认证失败返回406 + response.getWriter().write(quickJSONRespond.getJSONStandardRespond( + 406, + "Not Acceptable", + "Authentication Failure", + errorInfoJSONRespond)); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationSuccessHandler.java b/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationSuccessHandler.java new file mode 100644 index 0000000..f73d445 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEAuthenticationSuccessHandler.java @@ -0,0 +1,60 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.json.respond.UserLoginCheckerJSONRespond; +import com.codesdream.ase.model.permission.User; + +import com.codesdream.ase.service.IAuthService; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.security.core.Authentication; + +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; + +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Optional; + +// 认证成功返回 +@Slf4j +@Component +public class ASEAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { + @Resource + private QuickJSONRespond quickJSONRespond; + + @Resource + private IAuthService authService; + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) + throws IOException, ServletException + { + + UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond(); + respond.setUserExist(authentication.isAuthenticated()); + respond.setLoginStatus(authentication.isAuthenticated()); + respond.setPvc(authService.preValidationCodeGetter()); + + // 获得 JSONTokenAuthenticationToken + JSONTokenAuthenticationToken authenticationToken = (JSONTokenAuthenticationToken) authentication; + + User user = (User) authenticationToken.getPrincipal(); + + Optional tokenOptional = authService.userNewTokenGetter( + user.getUsername(), authenticationToken.getClientCode()); + + if(tokenOptional.isPresent()){ + respond.setToken(tokenOptional.get()); + } + else respond.setToken(""); + + // 认证成功返回200 + response.getWriter().write(quickJSONRespond.getRespond200("Authentication Success", respond)); + + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEInvocationSecurityMetadataSource.java b/src/main/java/com/codesdream/ase/component/auth/ASEInvocationSecurityMetadataSource.java new file mode 100644 index 0000000..3c1f359 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEInvocationSecurityMetadataSource.java @@ -0,0 +1,65 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.repository.permission.FunctionRepository; +import org.springframework.security.access.ConfigAttribute; +import org.springframework.security.access.SecurityConfig; +import org.springframework.security.web.FilterInvocation; +import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; + +@Component +public class ASEInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource { + + private HashMap> map = null; + + @Resource + private FunctionRepository functionRepository; + + private void loadFunctionDefine(){ + map = new HashMap<>(); + Iterable functions = functionRepository.findAll(); + for(Function function : functions) { + Collection array = new ArrayList<>(); + ConfigAttribute cfg = new SecurityConfig(function.getName()); + + array.add(cfg); + + map.put(function.getUrl(), array); + } + } + + @Override + public Collection getAttributes(Object object) throws IllegalArgumentException { + + if(map == null) loadFunctionDefine(); + + HttpServletRequest request = ((FilterInvocation) object).getHttpRequest(); + + for (String url : map.keySet()) { + AntPathRequestMatcher matcher = new AntPathRequestMatcher(url); + if (matcher.matches(request)) { + return map.get(url); + } + } + return null; + } + + @Override + public Collection getAllConfigAttributes() { + return null; + } + + @Override + public boolean supports(Class clazz) { + return true; + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEJSONTokenAuthenticationFilter.java b/src/main/java/com/codesdream/ase/component/auth/ASEJSONTokenAuthenticationFilter.java new file mode 100644 index 0000000..f7f54f2 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEJSONTokenAuthenticationFilter.java @@ -0,0 +1,114 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.model.auth.JSONToken; +import com.codesdream.ase.service.AuthService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.annotation.Resource; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Collection; +import java.util.Date; +import java.util.Optional; + + +// API请求验证过滤 +@Slf4j +public class ASEJSONTokenAuthenticationFilter extends OncePerRequestFilter { + + @Resource + private JSONRandomCodeGenerator randomCodeGenerator; + + @Resource + private AuthService authService; + + @Resource + private JSONSignedGenerator signedGenerator; + + @Resource + private UserDetailsService userDetailsService; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + + // 用户名 + String username = request.getHeader( "username"); + // 客户端签名 + String signed = request.getHeader("signed"); + // 时间戳 + String timestamp = request.getHeader("timestamp"); + + // 服务端API测试豁免签名 + if(signed != null && signed.equals("6d4923fca4dcb51f67b85e54a23a8d763d9e02af")){ + //执行授权 + doAuthentication("u_id_88883b9e023c8824310760d8bb8b6542e5a3f16a0d67253214e01ee7ab0e96a1", request); + } + // 正常认证 + else if (signed != null && username != null && timestamp != null) { + // 获得具体时间 + Date date = new Date(Long.parseLong(timestamp)); + + Date now = new Date(); + + // 限制时间戳有效区间为60s + long dtTime = 60*1000; + Date maxDate = new Date(now.getTime() + dtTime); + + // 检查时间戳是否合理 + if(maxDate.after(date)) { + // 从服务器中查找token + Optional optionalJSONToken = authService.findTokenByUserName(username); + if (optionalJSONToken.isPresent()) { + JSONToken token = optionalJSONToken.get(); + + // 检查token是否过期 + if (!authService.checkTokenIfExpired(token)) { + // 生成特征随机代码 + String randomCode = randomCodeGenerator.generateRandomCode(username, date, token.getClientCode()); + + log.info(String.format("Determined Signed: %s", + signedGenerator.generateSigned(username, randomCode, token.getToken()))); + + // 检查签名是否正确 + if (signed.equals(signedGenerator.generateSigned(username, randomCode, token.getToken()))) { + // 执行授权操作 + doAuthentication(username, request); + } + } + } + } + } + + filterChain.doFilter(request, response); + + } + + // 执行授权 + private void doAuthentication(String username, HttpServletRequest request){ + // 查询用户的相关信息 + UserDetails user = userDetailsService.loadUserByUsername(username); + + // 生成用户权限列表 + Collection authorities = user.getAuthorities(); + + // 生成授权柄 (储存上下文信息) + JSONTokenAuthenticationToken authentication = + new JSONTokenAuthenticationToken(user, null, authorities); + + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + + // 执行授权 + SecurityContextHolder.getContext().setAuthentication(authentication); + } + +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEPasswordEncoder.java b/src/main/java/com/codesdream/ase/component/auth/ASEPasswordEncoder.java new file mode 100644 index 0000000..95c66c4 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEPasswordEncoder.java @@ -0,0 +1,18 @@ +package com.codesdream.ase.component.auth; + +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; + +@Component +public class ASEPasswordEncoder implements PasswordEncoder { + @Override + public String encode(CharSequence charSequence) { + return DigestUtils.sha256Hex(charSequence.toString()); + } + + @Override + public boolean matches(CharSequence charSequence, String s) { + return s.equals(DigestUtils.sha256Hex(charSequence.toString())); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASESecurityAuthenticationProvider.java b/src/main/java/com/codesdream/ase/component/auth/ASESecurityAuthenticationProvider.java new file mode 100644 index 0000000..fc70128 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASESecurityAuthenticationProvider.java @@ -0,0 +1,77 @@ +package com.codesdream.ase.component.auth; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.authentication.*; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Collection; + +// 普通用户名密码验证, 用户获得Token +@Slf4j +@Component +public class ASESecurityAuthenticationProvider implements AuthenticationProvider { + @Resource + UserDetailsService userDetailsService; + + @Resource + ASEUsernameEncoder usernameEncoder; + + @Resource + PasswordEncoder passwordEncoder; + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + JSONTokenUsernamePasswordAuthenticationToken authenticationToken = + (JSONTokenUsernamePasswordAuthenticationToken) authentication; + + // 获得JSON中的学号 + String username = usernameEncoder.encode((CharSequence) authenticationToken.getPrincipal()); + // 获得JSON中的加密密码 + String encrypted_password = (String) authenticationToken.getCredentials(); + // 获得客户端代码 + String clientCode = authenticationToken.getClientCode(); + // 判断用户是否存在 + UserDetails userInfo = userDetailsService.loadUserByUsername(username); + + if (userInfo == null) { + throw new UsernameNotFoundException("User Not Exist"); + } + + String sha256_password = userInfo.getPassword(); + + // 判断密码是否正确 + if(!passwordEncoder.encode(String.format( + "PASS_ENCODE [%s][%s]", sha256_password, clientCode)).equals(encrypted_password)){ + throw new BadCredentialsException("Password IS INCORRECT"); + } + + // 判断账号是否停用/删除 + if (!userInfo.isEnabled()) { + throw new DisabledException("User IS Disabled"); + } + else if(!userInfo.isAccountNonLocked()) { + throw new LockedException("User IS Locked"); + } + else if(!userInfo.isAccountNonExpired()) { + throw new AccountExpiredException("User IS Expired"); + } + + // 生成权限列表 + Collection authorities = userInfo.getAuthorities(); + + return new JSONTokenAuthenticationToken(userInfo, clientCode, authorities); + } + + @Override + public boolean supports(Class aClass) { + return aClass.equals(JSONTokenUsernamePasswordAuthenticationToken.class); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASESecurityInterceptor.java b/src/main/java/com/codesdream/ase/component/auth/ASESecurityInterceptor.java new file mode 100644 index 0000000..f8ea470 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASESecurityInterceptor.java @@ -0,0 +1,62 @@ +package com.codesdream.ase.component.auth; + +import javax.annotation.Resource; +import javax.servlet.*; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.SecurityMetadataSource; +import org.springframework.security.access.intercept.AbstractSecurityInterceptor; +import org.springframework.security.access.intercept.InterceptorStatusToken; +import org.springframework.security.web.FilterInvocation; +import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +@Component +public class ASESecurityInterceptor extends AbstractSecurityInterceptor implements Filter { + + @Resource + private FilterInvocationSecurityMetadataSource securityMetadataSource; + + @Resource + public void setASEAccessDecisionManager(ASEAccessDecisionManager accessDecisionManager) { + super.setAccessDecisionManager(accessDecisionManager); + } + + @Override + public Class getSecureObjectClass() { + return FilterInvocation.class; + } + + @Override + public SecurityMetadataSource obtainSecurityMetadataSource() { + return this.securityMetadataSource; + } + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + FilterInvocation fi = new FilterInvocation(request, response, chain); + invoke(fi); + } + + public void invoke(FilterInvocation fi) throws IOException, ServletException { + InterceptorStatusToken token = super.beforeInvocation(fi); + try { + //执行下一个拦截器 + fi.getChain().doFilter(fi.getRequest(), fi.getResponse()); + } finally { + super.afterInvocation(token, null); + } + } + + @Override + public void destroy() { + + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEUsernameEncoder.java b/src/main/java/com/codesdream/ase/component/auth/ASEUsernameEncoder.java new file mode 100644 index 0000000..c4dc157 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEUsernameEncoder.java @@ -0,0 +1,15 @@ +package com.codesdream.ase.component.auth; + +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Component; + +@Component +public class ASEUsernameEncoder { + public String encode(CharSequence charSequence){ + return "u_id_" + DigestUtils.sha256Hex(charSequence.toString()); + } + + public boolean matches(CharSequence charSequence, String s){ + return s.equals(encode(charSequence.toString())); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/ASEUsernamePasswordAuthenticationFilter.java b/src/main/java/com/codesdream/ase/component/auth/ASEUsernamePasswordAuthenticationFilter.java new file mode 100644 index 0000000..3297622 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/ASEUsernamePasswordAuthenticationFilter.java @@ -0,0 +1,85 @@ +package com.codesdream.ase.component.auth; + +import com.codesdream.ase.component.auth.AJAXRequestChecker; +import com.codesdream.ase.component.auth.JSONTokenUsernamePasswordAuthenticationToken; +import com.codesdream.ase.component.auth.TimestampExpiredChecker; +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.request.UserLoginChecker; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.authentication.AuthenticationServiceException; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Optional; + +// 普通登录验证过滤器 +@Slf4j +public class ASEUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter { + + @Resource + private JSONParameter jsonParameter; + + @Resource + private AJAXRequestChecker ajaxRequestChecker; + + @Resource + private TimestampExpiredChecker timestampExpiredChecker; + + @Override + public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) + throws AuthenticationException { + + String timestamp = request.getHeader("timestamp"); + + // 检查时间戳是否合理(60秒内) + if(timestamp == null || !timestampExpiredChecker.checkTimestampBeforeMaxTime(timestamp, 60)){ + throw new AuthenticationServiceException("Timestamp Expired."); + } + + // 判断是否为AJAX请求格式的数据 + if(!ajaxRequestChecker.checkAjaxPOSTRequest(request)) { + throw new AuthenticationServiceException("Authentication method not supported: NOT Ajax Method."); + } + + Optional checkerOptional = jsonParameter.getJavaObjectByRequest(request, UserLoginChecker.class); + if(!checkerOptional.isPresent()) throw new BadCredentialsException("Invalid AJAX JSON Request"); + + UserLoginChecker checker = checkerOptional.get(); + + if(checker.getUsername() == null + || checker.getPassword() == null + || checker.getClientCode() == null + || checker.getCheckType() == null) + throw new AuthenticationServiceException("Request Data IS Incomplete"); + + if (!checker.getCheckType().equals("UsernamePasswordChecker")) + throw new AuthenticationServiceException("Authentication not supported: NOT Username Password Type."); + + // 获得相应的用户名密码 + String username = checker.getUsername(); + // 得到加密密码 + String password = checker.getPassword(); + String clientCode = checker.getClientCode(); + + if (username == null) username = ""; + if (password == null) password = ""; + + // 去除首尾两端的空白字符 + username = username.trim(); + password = password.trim(); + + + JSONTokenUsernamePasswordAuthenticationToken authRequest = + new JSONTokenUsernamePasswordAuthenticationToken(username, password, clientCode); + + authRequest.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + + return this.getAuthenticationManager().authenticate(authRequest); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/AuthTokenGenerator.java b/src/main/java/com/codesdream/ase/component/auth/AuthTokenGenerator.java new file mode 100644 index 0000000..8977670 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/AuthTokenGenerator.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.component.auth; + +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.UUID; + +@Component +public class AuthTokenGenerator { + @Resource + private SHA1Encoder encoder; + + public String generateAuthToken(String username){ + Date dateNow = new Date(); + UUID uuid = UUID.randomUUID(); + return encoder.encode(String.format("Token [%s][%d][%s]",username,dateNow.getTime(), uuid.toString())); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/JSONRandomCodeGenerator.java b/src/main/java/com/codesdream/ase/component/auth/JSONRandomCodeGenerator.java new file mode 100644 index 0000000..fe2ce6c --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/JSONRandomCodeGenerator.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.component.auth; + +import com.alibaba.fastjson.JSONObject; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; + +// 随机特征码生成器 +@Component +public class JSONRandomCodeGenerator { + @Resource + private SHA1Encoder encoder; + + public String generateRandomCode(String username, Date date, String clientCode){ + return encoder.encode(String.format("RandomCode [%s][%s][%s]", + username, Long.toString(date.getTime()), clientCode)); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/JSONSignedGenerator.java b/src/main/java/com/codesdream/ase/component/auth/JSONSignedGenerator.java new file mode 100644 index 0000000..b67a76c --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/JSONSignedGenerator.java @@ -0,0 +1,16 @@ +package com.codesdream.ase.component.auth; + +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +// 用来给JSON生成签名 +@Component +public class JSONSignedGenerator { + @Resource + SHA1Encoder encoder; + + public String generateSigned(String username, String randomCode, String token){ + return encoder.encode(String.format("SIGN [%s][%s][%s]",username, randomCode, token)); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/JSONTokenAuthenticationToken.java b/src/main/java/com/codesdream/ase/component/auth/JSONTokenAuthenticationToken.java new file mode 100644 index 0000000..92bf5f9 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/JSONTokenAuthenticationToken.java @@ -0,0 +1,62 @@ +package com.codesdream.ase.component.auth; + + +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.Collection; + +// 关联Token与其他用户的相关数据的授权柄 +public class JSONTokenAuthenticationToken extends AbstractAuthenticationToken { + // 客户端签名 + private String signed = null; + // 用户名 + private Object principal = null; + // 客户端代码 + private String clientCode = null; + + + /** + * Creates a token with the supplied array of authorities. + * + * @param authorities the collection of GrantedAuthoritys for the principal + * represented by this authentication object. + */ + public JSONTokenAuthenticationToken(UserDetails principal, + String clientCode, + Collection authorities) + { + super(authorities); + this.principal = principal; + this.clientCode = clientCode; + this.signed = null; + setAuthenticated(true); + } + + public JSONTokenAuthenticationToken(String principal, String clientCode, String signed) { + super(null); + this.principal = principal; + this.clientCode = clientCode; + this.signed = signed; + setAuthenticated(false); + } + + @Override + public String getCredentials() { + return signed; + } + + @Override + public Object getPrincipal() { + return principal; + } + + public String getClientCode() { + return clientCode; + } + + public void setClientCode(String clientCode) { + this.clientCode = clientCode; + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/JSONTokenUsernamePasswordAuthenticationToken.java b/src/main/java/com/codesdream/ase/component/auth/JSONTokenUsernamePasswordAuthenticationToken.java new file mode 100644 index 0000000..14cc5fd --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/JSONTokenUsernamePasswordAuthenticationToken.java @@ -0,0 +1,38 @@ +package com.codesdream.ase.component.auth; + +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.core.GrantedAuthority; + +import java.util.Collection; + +// 明文用户名密码验证授权柄 +public class JSONTokenUsernamePasswordAuthenticationToken extends AbstractAuthenticationToken { + // 用户名 + private String username = null; + // 明文密码 + private String password = null; + // 授权柄 + private String clientCode = null; + + public JSONTokenUsernamePasswordAuthenticationToken(String username, String password, String clientCode) { + super(null); + this.username = username; + this.password = password; + this.clientCode = clientCode; + setAuthenticated(false); + } + + @Override + public Object getCredentials() { + return password; + } + + @Override + public Object getPrincipal() { + return username; + } + // 扩展接口 获得客户端代码 + public String getClientCode() { + return clientCode; + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/SHA1Encoder.java b/src/main/java/com/codesdream/ase/component/auth/SHA1Encoder.java new file mode 100644 index 0000000..9216ab9 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/SHA1Encoder.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.component.auth; + +import org.apache.commons.codec.cli.Digest; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Component; + +// SHA1算法不可逆加密 主要用于JSON签名 +@Component +public class SHA1Encoder { + public String encode(CharSequence charSequence){ + return DigestUtils.sha1Hex(charSequence.toString()); + } + + public boolean match (CharSequence charSequence, String s){ + return s.equals(encode(charSequence)); + } +} diff --git a/src/main/java/com/codesdream/ase/component/auth/TimestampExpiredChecker.java b/src/main/java/com/codesdream/ase/component/auth/TimestampExpiredChecker.java new file mode 100644 index 0000000..667d801 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/auth/TimestampExpiredChecker.java @@ -0,0 +1,24 @@ +package com.codesdream.ase.component.auth; + +import org.springframework.stereotype.Component; + +import java.util.Date; + +// 验证时间戳是否有效 +@Component +public class TimestampExpiredChecker { + + public boolean checkTimestampBeforeMaxTime(String timestamp, int seconds){ + Date timestampDate = new Date(Long.parseLong(timestamp)); + long currentTime = System.currentTimeMillis(); + Date maxDate = new Date(currentTime + seconds * 1000); + return timestampDate.before(maxDate); + } + + public boolean checkDateBeforeMaxTime(Date date, int seconds){ + long currentTime = System.currentTimeMillis(); + Date maxDate = new Date(currentTime + seconds * 1000); + return date.before(maxDate); + } + +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataExcelGenerator.java b/src/main/java/com/codesdream/ase/component/datamanager/DataExcelGenerator.java new file mode 100644 index 0000000..c11d01b --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataExcelGenerator.java @@ -0,0 +1,84 @@ +package com.codesdream.ase.component.datamanager; + +import com.codesdream.ase.exception.notfound.DataFileNotFoundException; +import com.codesdream.ase.exception.innerservererror.DataIOException; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 利用数据生成Excel文件 + */ +public class DataExcelGenerator implements DataGenerator { + Workbook workbook = new XSSFWorkbook(); + + Sheet sheet; + Integer colNumber; + String path; + + public DataExcelGenerator(String path) { + sheet = workbook.createSheet("Data"); + this.path = path; + } + + public void setTableTitle(Collection titles){ + Row sheetRow = sheet.createRow(0); + int idx = 0; + for(String title : titles){ + sheetRow.createCell(idx).setCellValue(title); + idx++; + } + colNumber = titles.size(); + } + + public void insertRow(int rowIndex, Collection dataCollection){ + Row row = sheet.createRow(rowIndex); + int idx = 0; + for(String data : dataCollection){ + // 限制表头与表体的数据数目 + if(idx >= colNumber) break; + row.createCell(idx).setCellValue(data); + idx++; + } + } + + public void insertRow(Collection dataCollection){ + insertRow(sheet.getLastRowNum() + 1, dataCollection); + + } + + public void insertRowDataALL(Collection dataCollections){ + int cellIdx = 0; + Collection dataCollection = new ArrayList<>(); + for(String dataCollectionItem :dataCollections){ + dataCollection.add(dataCollectionItem); + cellIdx++; + if(cellIdx % colNumber == 0) { + insertRow(dataCollection); + dataCollection.clear(); + cellIdx = 0; + } + + } + } + + + public void save() { + try { + FileOutputStream stream = new FileOutputStream(path, false); + workbook.write(stream); + stream.close(); + } catch (FileNotFoundException e) { + throw new DataFileNotFoundException(path); + } catch (IOException e) { + throw new DataIOException(); + } + } +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataExcelReader.java b/src/main/java/com/codesdream/ase/component/datamanager/DataExcelReader.java new file mode 100644 index 0000000..794f8c3 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataExcelReader.java @@ -0,0 +1,123 @@ +package com.codesdream.ase.component.datamanager; + + +import com.codesdream.ase.exception.*; +import com.codesdream.ase.exception.innerservererror.DataIOException; +import com.codesdream.ase.exception.innerservererror.DataIllegalTableFormatException; +import com.codesdream.ase.exception.innerservererror.DataInvalidFormatException; +import com.codesdream.ase.exception.notfound.DataFileNotFoundException; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.ss.usermodel.*; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 读取简单表格式的Excel文件 + */ +public class DataExcelReader implements DataReader { + Workbook workbook = null; + Sheet sheet = null; + short colNumber = 0; + int rowNumberNow = 0; + String path; + boolean hasReadFile = false; + + public DataExcelReader(String path){ + this.path = path; + readFile(); + } + + public void readFile(){ + if(hasReadFile) return; + try{ + FileInputStream fileInputStream = new FileInputStream(path); + workbook = WorkbookFactory.create(fileInputStream); + sheet = workbook.getSheetAt(0); + fileInputStream.close(); + } catch (FileNotFoundException e) { + throw new DataFileNotFoundException(path); + } catch (InvalidFormatException e) { + throw new DataInvalidFormatException(e); + } catch (IOException e) { + throw new DataIOException(); + } + } + + public Collection readColsTitle(){ + Row titleRow = sheet.getRow(0); + colNumber = titleRow.getLastCellNum(); + // 表头项目个数不可为0 + if(colNumber == 0) throw new DataIllegalTableFormatException(); + Collection title = new ArrayList<>(); + for(int cellIdx = 0; cellIdx < colNumber; cellIdx++){ + title.add(readCell(titleRow.getCell(cellIdx))); + } + return title; + } + + public Collection readRow(int idx){ + // 检查是否获取表头数据 + if(this.colNumber == 0) readColsTitle(); + if(idx > getRowsSize()) throw new DataReaderRowIndexOutOfRangeException(); + this.rowNumberNow = idx; + Collection data = new ArrayList<>(); + Row dataRow = sheet.getRow(rowNumberNow); + // 检查列数是否合适 + if(dataRow.getLastCellNum() > colNumber) throw new DataIllegalTableFormatException(); + for(int cellIdx = 0; cellIdx < colNumber; cellIdx++){ + data.add(readCell(dataRow.getCell(cellIdx))); + } + return data; + } + + @Override + public int getRowsSize() { + return lastDataRowIndex() - firstDataRowIndex(); + } + + @Override + public int firstDataRowIndex() { + return 1; + } + + @Override + public int lastDataRowIndex() { + return sheet.getLastRowNum(); + } + + public Collection readRow(){ + if(rowNumberNow >= getRowsSize()) return null; + return readRow(rowNumberNow + 1); + } + + private String readCell(Cell cell){ + String cellValue = ""; + switch (cell.getCellType()) { + case Cell.CELL_TYPE_STRING: + cellValue = cell.getRichStringCellValue().getString(); + break; + case Cell.CELL_TYPE_NUMERIC: + if (DateUtil.isCellDateFormatted(cell)) { + cellValue = cell.getDateCellValue().toString(); + } else { + cellValue = String.valueOf(cell.getNumericCellValue()); + } + break; + case Cell.CELL_TYPE_BOOLEAN: + cellValue = String.valueOf(cell.getBooleanCellValue()); + break; + case Cell.CELL_TYPE_FORMULA: + cellValue = String.valueOf(cell.getCellFormula()); + break; + case Cell.CELL_TYPE_BLANK: + break; + default: + } + return cellValue; + } + +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataGenerator.java b/src/main/java/com/codesdream/ase/component/datamanager/DataGenerator.java new file mode 100644 index 0000000..4a9f061 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataGenerator.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.component.datamanager; + +import java.util.Collection; + +/** + * 表给狗数据文件生成器接口 + */ +public interface DataGenerator { + // 读取表头信息 + void setTableTitle(Collection titles); + + // 向表中写入一行数据 + void insertRow(int rowIndex, Collection dataCollection); + + // 将修改保存表到文件中 + void save(); +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataGetObjectFromRequest.java b/src/main/java/com/codesdream/ase/component/datamanager/DataGetObjectFromRequest.java new file mode 100644 index 0000000..3d59371 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataGetObjectFromRequest.java @@ -0,0 +1,8 @@ +package com.codesdream.ase.component.datamanager; + +import org.springframework.stereotype.Component; + +// 解析request请求,获得对应的Java对象 +@Component +public class DataGetObjectFromRequest { +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataModelRepositorySearcher.java b/src/main/java/com/codesdream/ase/component/datamanager/DataModelRepositorySearcher.java new file mode 100644 index 0000000..3844039 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataModelRepositorySearcher.java @@ -0,0 +1,57 @@ +package com.codesdream.ase.component.datamanager; + +import com.codesdream.ase.component.ASESpringUtil; +import lombok.Data; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Model对应的Repository层查询器 + */ +@Data +@Component +@Scope("prototype") +public class DataModelRepositorySearcher { + @Resource + ASESpringUtil springUtil; + + public final String repositoryPath = "com.codesdream.ase.repository."; + + private Class repositoryClass = null; + + private boolean present; + + public void getDataModelRepositoryClass(String subSystem, String dataModel){ + dataModel = doCheckName(dataModel); + try { + this.repositoryClass = Class.forName(dataModelFullNameGenerator(subSystem, dataModel)); + this.setPresent(true); + } catch (ClassNotFoundException e) { + this.setPresent(false); + } + } + + public T getDataModelRepositoryInstance() { + // 确保可以引用 + if(isPresent()) { + @SuppressWarnings("unchecked") + T repository = (T) springUtil.getBean(repositoryClass); + return repository; + } + return null; + } + + public static String doCheckName(String string) { + char[] charArray = string.toCharArray(); + if(Character.isLowerCase(charArray[0])) charArray[0] -= 32; + else return string; + return String.valueOf(charArray); + } + + private String dataModelFullNameGenerator(String subSystem, String dataModel){ + return new String(repositoryPath + subSystem + "." + dataModel + "Repository"); + } + +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataModelSearcher.java b/src/main/java/com/codesdream/ase/component/datamanager/DataModelSearcher.java new file mode 100644 index 0000000..0493d1c --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataModelSearcher.java @@ -0,0 +1,70 @@ +package com.codesdream.ase.component.datamanager; + +import lombok.Data; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import javax.swing.text.html.parser.Entity; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 根据子系统及名称查找特定的MModel + */ +@Data +@Component +@Scope("prototype") +public class DataModelSearcher { + public final String modelPath = "com.codesdream.ase.model."; + private Class dataModelClass = null; + + private boolean present; + + public void getDataModelClass(String subSystem, String dataModel) { + dataModel = doCheckName(dataModel); + try { + dataModelClass = Class.forName(dataModelFullNameGenerator(subSystem, dataModel)); + this.setPresent(true); + }catch (ClassNotFoundException e){ + this.setPresent(false); + } + } + + public Collection getDataModelParamArgs() { + if(isPresent()) { + Collection paramArgs = new ArrayList<>(); + for (Field field : dataModelClass.getDeclaredFields()) { + paramArgs.add(field.getName()); + } + return paramArgs; + } + return null; + } + + public T getDataModelInstance(Class dataModelClass) { + if(isPresent()){ + try { + return dataModelClass.newInstance(); + } catch (IllegalAccessException e) { + this.setPresent(false); + return null; + } catch (InstantiationException e) { + e.printStackTrace(); + return null; + } + } + return null; + } + + public static String doCheckName(String string) { + char[] charArray = string.toCharArray(); + if(Character.isLowerCase(charArray[0])) charArray[0] -= 32; + else return string; + return String.valueOf(charArray); + } + + private String dataModelFullNameGenerator(String subSystem, String dataModel){ + return new String(modelPath + subSystem + "." + dataModel); + } +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataReader.java b/src/main/java/com/codesdream/ase/component/datamanager/DataReader.java new file mode 100644 index 0000000..4b9dd21 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataReader.java @@ -0,0 +1,27 @@ +package com.codesdream.ase.component.datamanager; + +import java.util.Collection; + +/** + * 表结构信息读取器接口 + */ +public interface DataReader { + // 从文件中读取数据(在使用上要求这个调用可有可无) + void readFile(); + + // 获得表头列的数目 + Collection readColsTitle(); + + // 读取特定序号的行的数据 + Collection readRow(int row); + + // 得到数据的总行数 + int getRowsSize(); + + // 得到第一数据行的序号 + int firstDataRowIndex(); + + // 得到最后一行数据行的序号 + int lastDataRowIndex(); + +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataTable.java b/src/main/java/com/codesdream/ase/component/datamanager/DataTable.java new file mode 100644 index 0000000..97d04f5 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataTable.java @@ -0,0 +1,89 @@ +package com.codesdream.ase.component.datamanager; + +import com.codesdream.ase.exception.innerservererror.DataIllegalTableFormatException; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.*; + +// 描述一张数据表 +@Component +@Scope("prototype") +public class DataTable { + Collection titleCollection = new ArrayList<>(); + Vector dataRows = new Vector<>(); + + // 为表添加列及列名 + public DataTable addColTitle(String title){ + titleCollection.add(title); + return this; + } + + // 获得特定行的数据 + public Collection getRow(int index){ + if(index >= getRowsSize()) throw new IndexOutOfBoundsException(); + return dataRows.elementAt(index).getRow(); + } + + // 获得特定行的数据 + public Vector getRowVector(int index){ + if(index >= getRowsSize()) throw new IndexOutOfBoundsException(); + return new Vector<>(dataRows.elementAt(index).getRow()); + } + + // 从DataReader导入特定表 + public void importTable(DataReader reader){ + // 从文件中读取数据 + reader.readFile(); + // 读取列信息 + titleCollection = reader.readColsTitle(); + + int rowsSize = reader.getRowsSize(); + int index = 0; + for(int i = reader.firstDataRowIndex(); i < reader.lastDataRowIndex(); i++){ + dataRows.add(new DataTableRow(index++, reader.readRow(i))); + // 检查是否列数一致 + if(dataRows.lastElement().getColsSize() != this.getColsSize()) { + // 清空表数据 + this.dataRows.clear(); + throw new DataIllegalTableFormatException(); + } + } + } + + // 查找有无相关表头项 + public Optional getTitleIndex(String title){ + int index = 0; + for(String dataTitle :titleCollection){ + if(dataTitle.equals(title)) + return Optional.of(index); + index++; + } + return Optional.empty(); + } + + // 导出表数据 + public void exportTable(DataGenerator dataGenerator){ + dataGenerator.setTableTitle(titleCollection); + for(DataTableRow row : dataRows){ + dataGenerator.insertRow(row.getIndex(), row.getRow()); + } + dataGenerator.save(); + } + + // 为表添加行 + public void addRow(Collection row){ + Collection dataRow = new ArrayList<>(row); + dataRows.add(new DataTableRow(dataRows.size() + 1, dataRow)); + } + + // 获得表的列数 + public int getColsSize(){ + return titleCollection.size(); + } + + // 获得表的行数 + public int getRowsSize(){ + return dataRows.size(); + } +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/DataTableRow.java b/src/main/java/com/codesdream/ase/component/datamanager/DataTableRow.java new file mode 100644 index 0000000..ca07c1b --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/DataTableRow.java @@ -0,0 +1,21 @@ +package com.codesdream.ase.component.datamanager; + +import lombok.Data; + +import java.util.Collection; + +// 描述数据表的行 +@Data +public class DataTableRow { + private int index; + private Collection row; + + public DataTableRow(int index, Collection row){ + this.index = index; + this.row = row; + } + + public int getColsSize(){ + return row.size(); + } +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/JSONParameter.java b/src/main/java/com/codesdream/ase/component/datamanager/JSONParameter.java new file mode 100644 index 0000000..c87dea7 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/JSONParameter.java @@ -0,0 +1,89 @@ +package com.codesdream.ase.component.datamanager; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.component.json.respond.JSONBaseRespondObject; +import com.codesdream.ase.exception.innerservererror.HandlingErrorsException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.fge.jsonpatch.JsonPatch; +import com.github.fge.jsonpatch.JsonPatchException; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.Optional; + +/** + * 处理JSON相关数据 + */ +@Component +public class JSONParameter { + + // 处理Request Body + public String getRequestBody(HttpServletRequest request){ + try { + StringBuilder stringBuilder = new StringBuilder(); + BufferedReader reader = request.getReader(); + reader.reset(); + String line; + while ((line = reader.readLine()) != null) + stringBuilder.append(line); + return stringBuilder.toString(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + // 提取Request中的JSON数据 + public Optional getJSONByRequest(HttpServletRequest request){ + try { + JSONObject jsonParam = null; + String content = getRequestBody(request); + jsonParam = JSONObject.parseObject(content); + return Optional.ofNullable(jsonParam); + } catch (Exception e) { + e.printStackTrace(); + return Optional.empty(); + } + + } + + // 根据JSON对象构造JSON字符串用于返回 + public String getJSONString(JSONObject json){ + return json.toJSONString(); + } + + // 根据Java对象构造JSON字符串用于返回 + public String getJSONString(Object object){ + return JSON.toJSONString(object); + } + + // 由JSON对象获得对应的Java对象 + public T getJavaObject(JSONObject json, Class type){ + return json.toJavaObject(type); + } + + // 由Request获得对应的Java对象(常用于Post请求中) + public Optional getJavaObjectByRequest(HttpServletRequest request, Class type){ + Optional json = getJSONByRequest(request); + return json.map(jsonObject -> getJavaObject(jsonObject, type)); + } + + public T parsePathToObject(JsonPatch patch, T object){ + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode patched = patch.apply(mapper.convertValue(object, JsonNode.class)); + return (T) mapper.treeToValue(patched, object.getClass()); + } catch (JsonPatchException | JsonProcessingException e) { + throw new HandlingErrorsException(e.getMessage()); + } + + } + +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/StringFile.java b/src/main/java/com/codesdream/ase/component/datamanager/StringFile.java new file mode 100644 index 0000000..7ef0f5e --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/StringFile.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.component.datamanager; + +import lombok.Data; + +// 储存字符串标识的文件,并可以转换为json进行传输 +@Data +public class StringFile { + private String strData = null; + private String sha1Checker = null; + private Integer size = null; + private String type = "none"; +} diff --git a/src/main/java/com/codesdream/ase/component/datamanager/StringFileGenerator.java b/src/main/java/com/codesdream/ase/component/datamanager/StringFileGenerator.java new file mode 100644 index 0000000..a64fd32 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/datamanager/StringFileGenerator.java @@ -0,0 +1,92 @@ +package com.codesdream.ase.component.datamanager; + +import com.codesdream.ase.component.auth.SHA1Encoder; +import com.codesdream.ase.exception.StringFileConvertException; +import com.sun.xml.internal.messaging.saaj.util.ByteInputStream; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.*; +import java.util.Base64; +import java.util.Optional; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +// 将文件处理成可发送的字符串文件对象 +@Component +public class StringFileGenerator { + + @Resource + private SHA1Encoder encoder; + + // 用过读入流创建一个字符串文件 + public Optional generateStringFile(InputStream stream){ + StringFile file = new StringFile(); + // 字符串内容计算 + file.setStrData(generateFile2String(stream)); + if(file.getStrData() == null) return Optional.empty(); + // 相关校验值计算 + file.setSha1Checker(generateSHA1Checker(file.getStrData())); + file.setSize(file.getStrData().length()); + return Optional.of(file); + } + + private byte[] readSteamAll(InputStream stream) { + try { + byte[] bytes = new byte[stream.available()]; + + //检查文件书否完全读取 + if (stream.read(bytes) != bytes.length) return null; + else return bytes; + } catch (IOException e){ + return null; + } + } + + private String generateFile2String(InputStream stream){ + ByteArrayOutputStream zipDataStream = new ByteArrayOutputStream(); + try { + GZIPOutputStream gzipOutputStream = new GZIPOutputStream(zipDataStream); + byte[] bytes = readSteamAll(stream); + if(bytes == null) return null; + gzipOutputStream.write(bytes); + gzipOutputStream.close(); + return Base64.getEncoder().encodeToString(zipDataStream.toByteArray()); + } catch (IOException e) { + return null; + } + } + + // 生成字符串文件的校验码 + private String generateSHA1Checker(String str){ + return encoder.encode(str); + } + + // 检查文件内容是否正确,包括大小与校验码 + public boolean checkStringFile(StringFile file){ + return file.getStrData().length() == file.getSize() + && encoder.match(file.getStrData(), file.getSha1Checker()); + } + + // 从字符串文件中读取真实的文件数据 + public InputStream readFileString(StringFile file){ + try { + // 字符串转换为二进制数据 + byte[] bytes = Base64.getDecoder().decode(file.getStrData()); + GZIPInputStream stream = new GZIPInputStream(new ByteArrayInputStream(bytes), bytes.length); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + // 数据解压缩 + int readBits = 0; + byte[] rawBytes = new byte[1024]; + while ((readBits = stream.read(rawBytes)) != -1) { + outputStream.write(rawBytes, 0, readBits); + } + + stream.close(); + return new ByteArrayInputStream(outputStream.toByteArray()); + } catch (IOException e) { + throw new StringFileConvertException("Read FileString Failed"); + } + } +} diff --git a/src/main/java/com/codesdream/ase/component/error/ErrorResponse.java b/src/main/java/com/codesdream/ase/component/error/ErrorResponse.java new file mode 100644 index 0000000..0aee4ca --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/error/ErrorResponse.java @@ -0,0 +1,24 @@ +package com.codesdream.ase.component.error; + +import lombok.Data; + +import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; + +@XmlRootElement(name = "error") +public class ErrorResponse +{ + public ErrorResponse(String message, List details) { + super(); + this.message = message; + this.details = details; + } + + //General error message about nature of error + private String message; + + //Specific errors in API request processing + private List details; + + //Getter and setters +} diff --git a/src/main/java/com/codesdream/ase/component/json/JSONBaseObject.java b/src/main/java/com/codesdream/ase/component/json/JSONBaseObject.java new file mode 100644 index 0000000..86504b4 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/JSONBaseObject.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.component.json; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; + +// 所有有效的JSON对象模板 +@Slf4j +public class JSONBaseObject { + Date time = new Date(); + +} diff --git a/src/main/java/com/codesdream/ase/component/json/form/RegisterForm.java b/src/main/java/com/codesdream/ase/component/json/form/RegisterForm.java new file mode 100644 index 0000000..ccd73f0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/form/RegisterForm.java @@ -0,0 +1,5 @@ +package com.codesdream.ase.component.json.form; + +public class RegisterForm { + +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableFPC.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableFPC.java new file mode 100644 index 0000000..af57a91 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableFPC.java @@ -0,0 +1,38 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.NoArgsConstructor; +import springfox.documentation.spring.web.json.Json; + +@Data +@NoArgsConstructor +@ApiModel("功能性权限容器") +public class JsonableFPC { + private Integer id; + + private String name; + + private String description; + + private boolean enabled; + + private boolean deleted; + + public JsonableFPC(FunctionalPermissionContainer fpc){ + this.id = fpc.getId(); + this.name = fpc.getName(); + this.description = fpc.getDescription(); + this.enabled = fpc.isEnabled(); + this.deleted = fpc.isDeleted(); + } + + public FunctionalPermissionContainer parseObject(FunctionalPermissionContainer fpc){ + fpc.setName(this.name); + fpc.setDescription(this.description); + fpc.setEnabled(this.enabled); + fpc.setDeleted(this.deleted); + return fpc; + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableFSR.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableFSR.java new file mode 100644 index 0000000..c72f333 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableFSR.java @@ -0,0 +1,62 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import com.codesdream.ase.model.permission.FunctionalScopeRelation; +import com.codesdream.ase.model.permission.ScopePermissionContainer; +import com.codesdream.ase.service.IPermissionService; +import com.codesdream.ase.service.PermissionService; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.annotation.Resource; +import java.util.Optional; + +@Data +@NoArgsConstructor +@ApiModel("单项权力") +public class JsonableFSR { + private Integer id; + + private String name; + + private String description; + + private Integer fpcId; + + private Integer spcId; + + @Resource + @ApiModelProperty(hidden = true) + private IPermissionService permissionService; + + public JsonableFSR(FunctionalScopeRelation fsr){ + this.id = fsr.getId(); + this.name = fsr.getName(); + this.description = fsr.getDescription(); + this.fpcId = fsr.getFunctionalPermissionContainer().getId(); + this.spcId = fsr.getScopePermissionContainer().getId(); + } + + public FunctionalScopeRelation parseObject(FunctionalScopeRelation fsr){ + fsr.setName(this.name); + fsr.setDescription(this.description); + if(this.fpcId != null){ + Optional fpc = permissionService.findFPC(this.fpcId); + if(!fpc.isPresent()) throw new NotFoundException(this.fpcId.toString()); + fsr.setFunctionalPermissionContainer(fpc.get()); + } + + if(this.spcId != null){ + Optional spc = permissionService.findSPC(this.spcId); + if(!spc.isPresent()) throw new NotFoundException(this.spcId.toString()); + fsr.setScopePermissionContainer(spc.get()); + } + + return fsr; + + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableFunction.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableFunction.java new file mode 100644 index 0000000..afdd13b --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableFunction.java @@ -0,0 +1,60 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.service.IPermissionService; +import com.codesdream.ase.service.PermissionService; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.NoArgsConstructor; +import springfox.documentation.annotations.ApiIgnore; + +import javax.annotation.Resource; +import java.util.Optional; + +@Data +@NoArgsConstructor +@ApiModel("功能") +public class JsonableFunction { + + private Integer id; + + private String name; + + private String description; + + private Integer fatherId; + + private String url; + + @Resource + @ApiModelProperty(hidden = true) + private IPermissionService permissionService; + + public JsonableFunction(Function function){ + this.id = function.getId(); + this.name = function.getName(); + this.description = function.getDescription(); + if(function.getFather() != null) { + this.fatherId = function.getFather().getId(); + } + else this.fatherId = null; + this.url = function.getUrl(); + } + + public Function parseObject(Function function){ + function.setName(this.name); + function.setDescription(this.description); + if(this.fatherId != null) { + Optional fatherFunction = permissionService.findFunction(this.fatherId); + if (!fatherFunction.isPresent()) throw new NotFoundException(fatherId.toString()); + function.setFather(fatherFunction.get()); + } + function.setUrl(this.url); + + return function; + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonablePCCList.java b/src/main/java/com/codesdream/ase/component/json/model/JsonablePCCList.java new file mode 100644 index 0000000..870743e --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonablePCCList.java @@ -0,0 +1,22 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.model.permission.PermissionContainersCollection; +import com.codesdream.ase.model.permission.Tag; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@ApiModel("权限容器集合列表") +public class JsonablePCCList { + List pccIdList; + + public JsonablePCCList(Tag tag){ + for(PermissionContainersCollection pcc : tag.getPermissionContainersCollections()){ + pccIdList.add(pcc.getId()); + } + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableRoleList.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableRoleList.java new file mode 100644 index 0000000..efacf0f --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableRoleList.java @@ -0,0 +1,26 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.HashSet; +import java.util.Set; + +@Data +@NoArgsConstructor +@ApiModel("功能性权限容器所属角色集合") +public class JsonableRoleList { + private Integer id; + private Set functions = new HashSet<>(); + + public JsonableRoleList(FunctionalPermissionContainer fpc){ + this.id = fpc.getId(); + if(fpc.getFunctions() != null) { + for(Function function : fpc.getFunctions()) + this.functions.add(function.getId()); + } + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableSPC.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableSPC.java new file mode 100644 index 0000000..14fffd1 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableSPC.java @@ -0,0 +1,39 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.model.permission.ScopePermissionContainer; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@ApiModel("范围性权限容器") +public class JsonableSPC { + private Integer id; + + private String name; + + private String description; + + private boolean enabled; + + private boolean deleted; + + public JsonableSPC(ScopePermissionContainer spc){ + this.id = spc.getId(); + this.name = spc.getName(); + this.description = spc.getDescription(); + this.enabled = spc.isEnabled(); + this.deleted = spc.isDeleted(); + } + + public ScopePermissionContainer parseObject(ScopePermissionContainer spc){ + spc.setName(this.name); + spc.setDescription(this.description); + spc.setEnabled(this.enabled); + spc.setDeleted(this.deleted); + + return spc; + } + +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableTag.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableTag.java new file mode 100644 index 0000000..8b518ec --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableTag.java @@ -0,0 +1,48 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import net.bytebuddy.implementation.bind.annotation.DefaultMethod; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Data +@NoArgsConstructor +@ApiModel("标签") +public class JsonableTag { + @ApiModelProperty(value = "标签id") + private Integer id = null; + @ApiModelProperty(value = "标签名", example = "系统管理员") + private String name; + @ApiModelProperty(value = "标签说明", example = "该系统的管理员") + private String description; + + private boolean enabled; + + private boolean deleted; + + + public JsonableTag(Tag tag){ + this.id = tag.getId(); + this.name = tag.getName(); + this.description = tag.getDescription(); + this.enabled = tag.isEnabled(); + this.deleted = tag.isDeleted(); + } + + public Tag parseObject(Tag tag){ + tag.setName(this.name); + tag.setDescription(this.description); + tag.setDeleted(this.deleted); + tag.setEnabled(this.enabled); + return tag; + } + +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableUidGetter.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableUidGetter.java new file mode 100644 index 0000000..9eee677 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableUidGetter.java @@ -0,0 +1,6 @@ +package com.codesdream.ase.component.json.model; + +public class JsonableUidGetter { + private String checkType; + private String username; +} diff --git a/src/main/java/com/codesdream/ase/component/json/model/JsonableUser.java b/src/main/java/com/codesdream/ase/component/json/model/JsonableUser.java new file mode 100644 index 0000000..ad72dec --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/model/JsonableUser.java @@ -0,0 +1,33 @@ +package com.codesdream.ase.component.json.model; + +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.model.permission.UserAuth; +import com.codesdream.ase.model.permission.UserDetail; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@ApiModel("用户") +@NoArgsConstructor +public class JsonableUser { + private Integer id; + private String username; + private boolean enabled; + private boolean deleted; + + + public JsonableUser(User user){ + this.id = user.getId(); + this.username = user.getUsername(); + + this.enabled = user.isEnabled(); + this.deleted= user.isDeleted(); + } + + public User parseObject(User user){ + user.setEnabled(this.enabled); + user.setDeleted(this.deleted); + return user; + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/request/JSONBaseRequestObject.java b/src/main/java/com/codesdream/ase/component/json/request/JSONBaseRequestObject.java new file mode 100644 index 0000000..910ee53 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/request/JSONBaseRequestObject.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.component.json.request; + +import com.codesdream.ase.component.json.JSONBaseObject; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; + +// 客户端请求的JSON模板 +@Slf4j +public class JSONBaseRequestObject extends JSONBaseObject { + String signed; + +} diff --git a/src/main/java/com/codesdream/ase/component/json/request/UserLeaveAuth.java b/src/main/java/com/codesdream/ase/component/json/request/UserLeaveAuth.java new file mode 100644 index 0000000..92452c6 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/request/UserLeaveAuth.java @@ -0,0 +1,16 @@ +package com.codesdream.ase.component.json.request; + +import lombok.Data; + +@Data +public class UserLeaveAuth { + /* + 备注 + */ + private int id; + private String Comment; + /* + 审核结果 + */ + private String newStat; +} diff --git a/src/main/java/com/codesdream/ase/component/json/request/UserLeaveRequest.java b/src/main/java/com/codesdream/ase/component/json/request/UserLeaveRequest.java new file mode 100644 index 0000000..df05547 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/request/UserLeaveRequest.java @@ -0,0 +1,15 @@ +package com.codesdream.ase.component.json.request; + +import lombok.Data; + +import java.util.Date; +@Data +public class UserLeaveRequest { + private String UserId;//用户名 + private String Type;//请假类型 + private String Reason;//请假原因 + private String Addon;//附件 + private Date Starttime;//开始时间 + private Date EndTime;//结束时间 + +} diff --git a/src/main/java/com/codesdream/ase/component/json/request/UserLoginChecker.java b/src/main/java/com/codesdream/ase/component/json/request/UserLoginChecker.java new file mode 100644 index 0000000..0f706cf --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/request/UserLoginChecker.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.component.json.request; + +import lombok.Data; + +@Data +public class UserLoginChecker { + // 请求类型 + private String checkType; + private String username; + private String password; + private String clientCode; + +} diff --git a/src/main/java/com/codesdream/ase/component/json/request/UserRegisterChecker.java b/src/main/java/com/codesdream/ase/component/json/request/UserRegisterChecker.java new file mode 100644 index 0000000..491cda6 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/request/UserRegisterChecker.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.component.json.request; + +import lombok.Data; + +@Data +public class UserRegisterChecker { + + // 学号 + private String studentId; + + // 密码 + private String password; + + // 密保问题 + private String userQuestion; + + // 密保答案 + private String userAnswer; +} diff --git a/src/main/java/com/codesdream/ase/component/json/request/UserSGettudentLeaveListRequest.java b/src/main/java/com/codesdream/ase/component/json/request/UserSGettudentLeaveListRequest.java new file mode 100644 index 0000000..b97c771 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/request/UserSGettudentLeaveListRequest.java @@ -0,0 +1,8 @@ +package com.codesdream.ase.component.json.request; + +import lombok.Data; + +@Data +public class UserSGettudentLeaveListRequest { + private int studentId; +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/EmptyDataObjectRespond.java b/src/main/java/com/codesdream/ase/component/json/respond/EmptyDataObjectRespond.java new file mode 100644 index 0000000..e3ae905 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/EmptyDataObjectRespond.java @@ -0,0 +1,5 @@ +package com.codesdream.ase.component.json.respond; + +public class EmptyDataObjectRespond { + +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/ErrorInfoJSONRespond.java b/src/main/java/com/codesdream/ase/component/json/respond/ErrorInfoJSONRespond.java new file mode 100644 index 0000000..4495e20 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/ErrorInfoJSONRespond.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.component.json.respond; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ErrorInfoJSONRespond { + String exception = null; + String exceptionMessage = null; + Date date = null; +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/JSONBaseRespondObject.java b/src/main/java/com/codesdream/ase/component/json/respond/JSONBaseRespondObject.java new file mode 100644 index 0000000..d1a2d2f --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/JSONBaseRespondObject.java @@ -0,0 +1,61 @@ +package com.codesdream.ase.component.json.respond; + +import com.codesdream.ase.component.json.JSONBaseObject; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +// 服务端返回的JSON对象模板 +@EqualsAndHashCode(callSuper = true) +@Data +public class JSONBaseRespondObject extends JSONBaseObject { + + // 存放返回内容 + private Object data = new EmptyDataObjectRespond(); + + // 存放响应信息提示 + private String msg = ""; + + // 额外信息 + private String info = null; + + // 状态 + private Integer status = 200; + + public JSONBaseRespondObject(String msg){ + super(); + this.status = 200; + this.msg = msg; + } + + public JSONBaseRespondObject(Integer status, String msg){ + super(); + this.status = status; + this.msg = msg; + } + + public void setStatusNotFound(){ + this.status = 404; + } + + public void setStatusBadRequest(){ + this.status = 400; + } + + public void setStatusUnauthorized(){ + this.status = 401; + } + + public void setStatusForbidden(){ + this.status = 403; + } + + public void setStatusInternalServerError(){ + this.status = 500; + } + + public void setStatusOK(){ + this.status = 200; + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/JSONStandardFailedRespond.java b/src/main/java/com/codesdream/ase/component/json/respond/JSONStandardFailedRespond.java new file mode 100644 index 0000000..ba1626f --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/JSONStandardFailedRespond.java @@ -0,0 +1,8 @@ +package com.codesdream.ase.component.json.respond; + +// 请求失败返回JSON +public class JSONStandardFailedRespond extends JSONBaseRespondObject { + public JSONStandardFailedRespond(){ + super(500, "failed"); + } +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/PermissionJSONRespond.java b/src/main/java/com/codesdream/ase/component/json/respond/PermissionJSONRespond.java new file mode 100644 index 0000000..915804a --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/PermissionJSONRespond.java @@ -0,0 +1,16 @@ +package com.codesdream.ase.component.json.respond; + +import com.sun.org.apache.xpath.internal.operations.Bool; +import lombok.Data; + +import java.util.List; +import java.util.Set; + +@Data +public class PermissionJSONRespond { + private Boolean tagExist = null; + private Boolean actionSuccess = null; + private Integer tagId = null; + private String tagName = null; + private Set users = null; +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/UserLoginCheckerJSONRespond.java b/src/main/java/com/codesdream/ase/component/json/respond/UserLoginCheckerJSONRespond.java new file mode 100644 index 0000000..e12c077 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/UserLoginCheckerJSONRespond.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.component.json.respond; + +import com.sun.org.apache.xpath.internal.operations.Bool; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +public class UserLoginCheckerJSONRespond { + Boolean userExist = null; + Boolean userBanned = null; + Boolean loginStatus = null; + String respondInformation = null; + String token = null; + String uid = null; + String pvc = null; + +} diff --git a/src/main/java/com/codesdream/ase/component/json/respond/UserLoginTokenJSONRespond.java b/src/main/java/com/codesdream/ase/component/json/respond/UserLoginTokenJSONRespond.java new file mode 100644 index 0000000..43272ab --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/json/respond/UserLoginTokenJSONRespond.java @@ -0,0 +1,6 @@ +package com.codesdream.ase.component.json.respond; + +// 返回登录后的授权码(用于客户端生成签名) +public class UserLoginTokenJSONRespond { + String token; +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UserAuthoritiesGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UserAuthoritiesGenerator.java new file mode 100644 index 0000000..ded5ff7 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UserAuthoritiesGenerator.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.User; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Collection; + +@Component +public class UserAuthoritiesGenerator { + @Resource + UserFunctionsListGenerator userFunctionsListGenerator; + + public Collection grantedAuthorities(User user){ + return userFunctionsListGenerator.generateRoles(user); + } + +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UserFPCListGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UserFPCListGenerator.java new file mode 100644 index 0000000..964973d --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UserFPCListGenerator.java @@ -0,0 +1,41 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.*; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 生成功能性权限容器列表 + */ +@Component +public class UserFPCListGenerator { + @Resource + private UserFSRGenerator fsrListGenerator; + + public Collection generateFPC( + Collection functionalScopeRelations){ + Collection functionalPermissionContainers + = new ArrayList<>(); + + for (FunctionalScopeRelation functionalScopeRelation : functionalScopeRelations){ + functionalPermissionContainers.add(functionalScopeRelation.getFunctionalPermissionContainer()); + } + + return functionalPermissionContainers; + } + + public Collection generateFPCs(User user){ + return generateFPC( + fsrListGenerator.generateFSRs(user) + ); + } + + public Collection generateFPCs(String username){ + return generateFPC( + fsrListGenerator.generateFSRs(username) + ); + } +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UserFSRGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UserFSRGenerator.java new file mode 100644 index 0000000..077dddd --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UserFSRGenerator.java @@ -0,0 +1,45 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.FunctionalScopeRelation; +import com.codesdream.ase.model.permission.PermissionContainersCollection; +import com.codesdream.ase.model.permission.User; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 生成功能性权限容器与范围性权限容器关联对列表 + */ +@Component +public class UserFSRGenerator { + + @Resource + private UserPCCListGenerator userPCCListGenerator; + + + public Collection generateFSRs( + Collection pccs){ + Collection fsrs = + new ArrayList<>(); + + for(PermissionContainersCollection pcc : pccs){ + fsrs.addAll(pcc.getFunctionalScopeRelations()); + } + + return fsrs; + } + + public Collection generateFSRs( + User user){ + return generateFSRs( + userPCCListGenerator.generatePCCs(user)); + } + + public Collection generateFSRs( + String username){ + return generateFSRs( + userPCCListGenerator.generatePCCs(username)); + } +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UserFunctionsListGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UserFunctionsListGenerator.java new file mode 100644 index 0000000..337ddad --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UserFunctionsListGenerator.java @@ -0,0 +1,45 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import com.codesdream.ase.model.permission.User; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 生成用户访问权限角色列表 + */ +@Component +public class UserFunctionsListGenerator { + @Resource + private UserFPCListGenerator fpcListGenerator; + + public Collection generateRoles( + Collection fpcs){ + Collection authorities = new ArrayList<>(); + for(FunctionalPermissionContainer fpc :fpcs){ + for(Function function :fpc.getFunctions()){ + authorities.add(new SimpleGrantedAuthority(function.getName())); + } + } + return authorities; + } + + public Collection generateRoles(String username){ + return generateRoles( + fpcListGenerator.generateFPCs(username) + ); + } + + public Collection generateRoles(User user){ + + return generateRoles( + fpcListGenerator.generateFPCs(user) + ); + } +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UserPCCListGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UserPCCListGenerator.java new file mode 100644 index 0000000..ffb22f9 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UserPCCListGenerator.java @@ -0,0 +1,39 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.PermissionContainersCollection; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; + +/** + * 生成权限容器集合列表 + */ +@Component +public class UserPCCListGenerator { + @Resource + private UserTagsListGenerator userTagsListGenerator; + + public Collection generatePCCs( + Collection tags){ + Collection pccs = + new ArrayList<>(); + for(Tag tag : tags){ + pccs.addAll(tag.getPermissionContainersCollections()); + } + return pccs; + } + + public Collection generatePCCs( + User user) { + return generatePCCs(userTagsListGenerator.generateTags(user)); + } + + public Collection generatePCCs( + String username){ + return generatePCCs(userTagsListGenerator.generateTags(username)); + } +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UserTagsListGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UserTagsListGenerator.java new file mode 100644 index 0000000..d53bfe4 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UserTagsListGenerator.java @@ -0,0 +1,54 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.ScopePermissionContainer; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.repository.permission.UserRepository; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; + +/** + * 生成用户标签列表 + */ +@Component +public class UserTagsListGenerator { + @Resource + UserRepository userRepository; + + public Collection generateTags(ScopePermissionContainer spc){ + return new ArrayList<>(spc.getTags()); + } + + public Collection generateTags(User user){ + return new ArrayList(user.getTags()); + } + + public Collection generateTags(String username){ + Optional user = userRepository.findByUsername(username); + // 检查用户是否存在 + if(!user.isPresent()) throw new RuntimeException("User Not Found"); + + return generateTags(user.get()); + } + + public Collection generateTagsName(User user){ + Collection tagsName = new ArrayList<>(); + Collection tags = generateTags(user); + for(Tag tag : tags){ + tagsName.add(tag.getName()); + } + return tagsName; + } + + public Collection generateTagsName(String username){ + Optional user = userRepository.findByUsername(username); + + if(!user.isPresent()) throw new RuntimeException("User Not Found"); + + return generateTagsName(user.get()); + } +} diff --git a/src/main/java/com/codesdream/ase/component/permission/UsersListGenerator.java b/src/main/java/com/codesdream/ase/component/permission/UsersListGenerator.java new file mode 100644 index 0000000..db0abf1 --- /dev/null +++ b/src/main/java/com/codesdream/ase/component/permission/UsersListGenerator.java @@ -0,0 +1,22 @@ +package com.codesdream.ase.component.permission; + +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * 生成用户列表 + */ +@Component +public class UsersListGenerator { + public Collection generateUsers(Collection tags){ + Collection users = new ArrayList<>(); + for(Tag tag : tags){ + users.addAll(tag.getUsers()); + } + return users; + } +} diff --git a/src/main/java/com/codesdream/ase/configure/ASESwaggerConfigure.java b/src/main/java/com/codesdream/ase/configure/ASESwaggerConfigure.java new file mode 100644 index 0000000..1e2061e --- /dev/null +++ b/src/main/java/com/codesdream/ase/configure/ASESwaggerConfigure.java @@ -0,0 +1,57 @@ +package com.codesdream.ase.configure; + +import com.google.common.collect.Sets; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.parameters.P; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Configuration +@EnableSwagger2 +public class ASESwaggerConfigure { + @Bean + public Docket createRestApi() { + + List pars = new ArrayList(); + + pars.add(new ParameterBuilder().name("username").description("真实用户名").hidden(true).order(1) + .modelRef(new ModelRef("string")).parameterType("header") + .required(false).defaultValue("u_id_88883b9e023c8824310760d8bb8b6542e5a3f16a0d67253214e01ee7ab0e96a1").build()); + pars.add(new ParameterBuilder().name("signed").description("客户端签名").hidden(true).order(2) + .modelRef(new ModelRef("string")).parameterType("header") + .required(false).defaultValue("6d4923fca4dcb51f67b85e54a23a8d763d9e02af").build()); + pars.add(new ParameterBuilder().name("timestamp").description("时间戳").hidden(true).order(3) + .modelRef(new ModelRef("string")).parameterType("header") + .required(false).defaultValue(Long.toString(new Date().getTime())).build()); + + return new Docket(DocumentationType.SWAGGER_2) + .protocols(Sets.newHashSet("http")) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.codesdream.ase.controller")) + .paths(PathSelectors.any()) + .build() + .globalOperationParameters(pars); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("全员育人管理系统后端接口定义") + .version("0.0.1") + .description("用于对后端接口进行说明") + .build(); + } +} diff --git a/src/main/java/com/codesdream/ase/configure/ActivityFormConfigure.java b/src/main/java/com/codesdream/ase/configure/ActivityFormConfigure.java new file mode 100644 index 0000000..48e34b9 --- /dev/null +++ b/src/main/java/com/codesdream/ase/configure/ActivityFormConfigure.java @@ -0,0 +1,37 @@ +package com.codesdream.ase.configure; + +import lombok.Data; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +@Component +public class ActivityFormConfigure { + + private final HashSet stdActivityForm = new HashSet(){{ + add("title"); + add("creator"); + add("type"); + add("description"); + add("cycle"); + add("volunteers"); + add("participate"); + add("sign"); + add("visible"); + add("inform"); + add("start-time"); + add("remind"); + add("enclosure"); + add("chief-manager"); + add("assist-manager"); + add("attendance"); + }}; + + + public HashSet getStdActivityForm() { + return stdActivityForm; + } +} diff --git a/src/main/java/com/codesdream/ase/configure/AppConfigure.java b/src/main/java/com/codesdream/ase/configure/AppConfigure.java new file mode 100644 index 0000000..2d606c6 --- /dev/null +++ b/src/main/java/com/codesdream/ase/configure/AppConfigure.java @@ -0,0 +1,43 @@ +package com.codesdream.ase.configure; + +import org.springframework.stereotype.Component; + +/** + * 应用程序常用配置信息 + * 用于常见的应用程序本身的相关信息的引用 + */ +@Component +public class AppConfigure { + /** + * 获得应用程序的中文名 + * @return 返回包含完整内容的字符串 + */ + public String getName() { + return "全员育人"; + } + + /** + * 获得应用程序的版本号 + * @return 返回版本号内容的字符串 + */ + public String getVersion() { + return "0.0.1_200204"; + } + + /** + * 获得应用程序的英文名 + * @return 返回包含完整内容的字符串 + */ + public String getEnglishName() { + return "All Staff Education"; + } + + /** + * 获得开发小组的名称 + * @return 包含完整内容的字符串 + */ + public String getOrganization() { + return "全员育人WEB端开发组"; + } + +} diff --git a/src/main/java/com/codesdream/ase/configure/ComponentsConfigure.java b/src/main/java/com/codesdream/ase/configure/ComponentsConfigure.java new file mode 100644 index 0000000..85708af --- /dev/null +++ b/src/main/java/com/codesdream/ase/configure/ComponentsConfigure.java @@ -0,0 +1,11 @@ +package com.codesdream.ase.configure; + +import com.codesdream.ase.component.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ComponentsConfigure { + + +} diff --git a/src/main/java/com/codesdream/ase/configure/CustomWebSecurityConfig.java b/src/main/java/com/codesdream/ase/configure/CustomWebSecurityConfig.java new file mode 100644 index 0000000..0e3d814 --- /dev/null +++ b/src/main/java/com/codesdream/ase/configure/CustomWebSecurityConfig.java @@ -0,0 +1,138 @@ +package com.codesdream.ase.configure; + +import com.codesdream.ase.component.auth.*; +import com.codesdream.ase.service.ASEUserDetailsService; +import org.springframework.context.annotation.Bean; +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.config.http.SessionCreationPolicy; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; +import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.session.ConcurrentSessionControlAuthenticationStrategy; +import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import javax.annotation.Resource; + +/** + * Spring Security 配置类 + * 用于Spring Security相关参数的配置 + */ +@Configuration +@EnableWebSecurity +public class CustomWebSecurityConfig extends WebSecurityConfigurerAdapter { + + @Resource + ASEUserDetailsService aseUserDetailService; + + @Resource + ASEPasswordEncoder asePasswordEncoder; + + @Resource + ASESecurityAuthenticationProvider aseSecurityAuthenticationProvider; + + @Resource + ASEAuthenticationSuccessHandler successHandler; + + @Resource + ASEAuthenticationFailureHandler failureHandler; + + @Resource + ASEAuthenticationEntryPoint authenticationEntryPoint; + + @Resource + ASEAccessDeniedHandler accessDeniedHandler; + + @Resource + ASESecurityInterceptor securityInterceptor; + + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .anyRequest().authenticated() + .and() + .csrf().disable() + .logout().permitAll(); + + http.exceptionHandling() + .authenticationEntryPoint(authenticationEntryPoint) + .accessDeniedHandler(accessDeniedHandler); + + // 替换掉原有的UsernamePasswordAuthenticationFilter + http.addFilterAt(aseUsernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class) + .addFilterBefore(asejsonTokenAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class) + .addFilterAt(securityInterceptor, FilterSecurityInterceptor.class); + + http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); + + } + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.authenticationProvider(aseSecurityAuthenticationProvider) + .userDetailsService(aseUserDetailService) + .passwordEncoder(asePasswordEncoder); + } + + @Override + public void configure(WebSecurity web) throws Exception { + web + .ignoring() + .antMatchers( + "/assets/**", + "/register/**", + "/forget/**", + "/not_found/**", + "/error/**", + "/login/**", + "/swagger-ui.html", + "/webjars/**", + "/swagger-resources/**", + "/v2/api-docs", + "/configuration/ui", + "/configuration/security"); + } + + //注册自定义的UsernamePasswordAuthenticationFilter + @Bean + ASEJSONTokenAuthenticationFilter asejsonTokenAuthenticationFilter() throws Exception { + return new ASEJSONTokenAuthenticationFilter(); + } + + //注册自定义的UsernamePasswordAuthenticationFilter + @Bean + ASEUsernamePasswordAuthenticationFilter aseUsernamePasswordAuthenticationFilter() throws Exception { + ASEUsernamePasswordAuthenticationFilter filter = new ASEUsernamePasswordAuthenticationFilter(); + filter.setAuthenticationSuccessHandler(successHandler); + filter.setAuthenticationFailureHandler(failureHandler); + filter.setSessionAuthenticationStrategy(sessionAuthenticationStrategy(sessionRegistry())); + filter.setAllowSessionCreation(true); + filter.setRequiresAuthenticationRequestMatcher( + new AntPathRequestMatcher("/login/token", "POST")); + + filter.setAuthenticationManager(authenticationManagerBean()); + return filter; + } + + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); + } + + + @Bean + public SessionAuthenticationStrategy sessionAuthenticationStrategy(SessionRegistry sessionRegistry){ + return new ConcurrentSessionControlAuthenticationStrategy(sessionRegistry){{ + setMaximumSessions(1); + }}; + } + +} diff --git a/src/main/java/com/codesdream/ase/configure/GlobalConfigure.java b/src/main/java/com/codesdream/ase/configure/GlobalConfigure.java new file mode 100644 index 0000000..a6efbb8 --- /dev/null +++ b/src/main/java/com/codesdream/ase/configure/GlobalConfigure.java @@ -0,0 +1,15 @@ +package com.codesdream.ase.configure; + + +import org.springframework.context.annotation.Configuration; + +/** + * Spring 框架全局配置类 + * 主要用于注册或者管理Bean + */ +@Configuration +public class GlobalConfigure { + + + +} diff --git a/src/main/java/com/codesdream/ase/controller/APIController.java b/src/main/java/com/codesdream/ase/controller/APIController.java new file mode 100644 index 0000000..f2a574d --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/APIController.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") +public class APIController { + + @RequestMapping("hello") + String hello(){ + return "hello"; + } +} diff --git a/src/main/java/com/codesdream/ase/controller/ASEController.java b/src/main/java/com/codesdream/ase/controller/ASEController.java new file mode 100644 index 0000000..ee66e6c --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/ASEController.java @@ -0,0 +1,26 @@ +package com.codesdream.ase.controller; + + +import com.codesdream.ase.configure.GlobalConfigure; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; +import java.security.Principal; + +/** + * 管理界面主页控制器类 + * 现阶段主要用于管理界面主页 + */ +@Controller +public class ASEController { + @Resource + GlobalConfigure globalConfigure; + + @RequestMapping(value = "/") + public String printIndex(Model model, Principal principal){ + model.addAttribute("username",principal.getName()); + return "index"; + } +} diff --git a/src/main/java/com/codesdream/ase/controller/ASEControllerAdvice.java b/src/main/java/com/codesdream/ase/controller/ASEControllerAdvice.java new file mode 100644 index 0000000..281ced4 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/ASEControllerAdvice.java @@ -0,0 +1,77 @@ +package com.codesdream.ase.controller; + +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.json.respond.ErrorInfoJSONRespond; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.badrequest.IllegalException; +import com.codesdream.ase.exception.conflict.RelatedObjectsExistException; +import com.codesdream.ase.exception.innerservererror.FormatException; +import com.codesdream.ase.exception.innerservererror.HandlingErrorsException; +import com.codesdream.ase.exception.innerservererror.RuntimeIOException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.annotation.Resource; +import java.util.Date; + +@RestControllerAdvice +public class ASEControllerAdvice { + + @Resource + private QuickJSONRespond quickJSONRespond; + + @ExceptionHandler(value = { + NullPointerException.class, + AlreadyExistException.class, + IllegalException.class + }) + public ResponseEntity handleBadRequest(Exception ex) { + return getResponse(HttpStatus.BAD_REQUEST, ex); + } + + @ExceptionHandler(value = {NotFoundException.class}) + public ResponseEntity handleNotFound(Exception ex) { + + return getResponse(HttpStatus.NOT_FOUND, ex); + } + + @ExceptionHandler(value = {}) + public ResponseEntity handleNotAcceptable(Exception ex) { + return getResponse(HttpStatus.NOT_ACCEPTABLE, ex); + } + + @ExceptionHandler(value = {RelatedObjectsExistException.class}) + public ResponseEntity handleConflict(Exception ex) { + return getResponse(HttpStatus.CONFLICT, ex); + } + + @ExceptionHandler(value = { + HandlingErrorsException.class, + FormatException.class, + RuntimeIOException.class}) + public ResponseEntity handleInnerServerError(Exception ex){ + return getResponse(HttpStatus.INTERNAL_SERVER_ERROR, ex); + } + + private ResponseEntity getResponse(HttpStatus status, Exception ex){ + return ResponseEntity.status(status).body(getJSON(status, ex)); + + } + + private String getJSON(HttpStatus status, Exception ex){ + return quickJSONRespond.getJSONStandardRespond(status, getJSONRespondObject(ex)); + } + + private Object getJSONRespondObject(Exception ex){ + ErrorInfoJSONRespond errorInfoJSONRespond = new ErrorInfoJSONRespond(); + errorInfoJSONRespond.setException(ex.getClass().getName()); + errorInfoJSONRespond.setExceptionMessage(ex.getMessage()); + errorInfoJSONRespond.setDate(new Date()); + return errorInfoJSONRespond; + } + + +} diff --git a/src/main/java/com/codesdream/ase/controller/ASEErrorController.java b/src/main/java/com/codesdream/ase/controller/ASEErrorController.java new file mode 100644 index 0000000..23d166d --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/ASEErrorController.java @@ -0,0 +1,84 @@ +package com.codesdream.ase.controller; + +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.json.respond.ErrorInfoJSONRespond; +import org.springframework.boot.web.servlet.error.ErrorController; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; + +@Controller +public class ASEErrorController implements ErrorController { + +/* @RequestMapping("/error") + public String handleError(HttpServletRequest request, Model model){ + Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); + Exception exception = (Exception) request.getAttribute("javax.servlet.error.exception"); + // 无效异常访问检查 + if(statusCode == null || exception == null) + model.addAttribute("if_active", false); + else { + + model.addAttribute("if_active", true); + // 检查返回的状态 + if (statusCode == HttpStatus.NOT_FOUND.value()) return "not_found"; + model.addAttribute("http_status", statusCode); + // 检查是否含有引发异常 + if (exception.getCause() == null) { + model.addAttribute("exception_name", exception.getClass().getName()); + model.addAttribute("exception_message", exception.getMessage()); + } else { + model.addAttribute("exception_name", exception.getCause().getClass().getName()); + model.addAttribute("exception_message", exception.getCause().getMessage()); + } + List stack_infos = new ArrayList<>(); + for (StackTraceElement element : exception.getStackTrace()) { + String s = element.toString(); + stack_infos.add(s); + } + model.addAttribute("error_stack", stack_infos); + model.addAttribute("exception_date", new Date()); + } + return "error"; + }*/ + + @Resource + private QuickJSONRespond quickJSONRespond; + + @RequestMapping("/error") + @ResponseBody + public String handleError(HttpServletRequest request){ + Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); + Exception exception = (Exception) request.getAttribute("javax.servlet.error.exception"); + + // 检查返回的状态 + if (statusCode == HttpStatus.NOT_FOUND.value()) return quickJSONRespond.getRespond404(null); + ErrorInfoJSONRespond errorInfoJSONRespond = new ErrorInfoJSONRespond(); + + // 检查是否含有引发异常 + if (exception.getCause() == null) { + errorInfoJSONRespond.setException(exception.getClass().getName()); + errorInfoJSONRespond.setExceptionMessage(exception.getMessage()); + } else { + errorInfoJSONRespond.setException(exception.getCause().getClass().getName()); + errorInfoJSONRespond.setExceptionMessage(exception.getCause().getMessage()); + } + errorInfoJSONRespond.setDate(new Date()); + + return quickJSONRespond.getJSONStandardRespond( + statusCode, + "Internal Server Error", + null, + errorInfoJSONRespond); + } + + @Override + public String getErrorPath() { + return "/error"; + } +} diff --git a/src/main/java/com/codesdream/ase/controller/DataManagerController.java b/src/main/java/com/codesdream/ase/controller/DataManagerController.java new file mode 100644 index 0000000..4ca4e7a --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/DataManagerController.java @@ -0,0 +1,42 @@ +package com.codesdream.ase.controller; + +import com.codesdream.ase.component.ASESpringUtil; +import com.codesdream.ase.component.datamanager.DataModelRepositorySearcher; +import com.codesdream.ase.component.datamanager.DataModelSearcher; +import org.apache.catalina.core.ApplicationContext; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.w3c.dom.Entity; + +import javax.annotation.Resource; +import java.lang.reflect.Array; +import java.lang.reflect.Field; +import java.util.*; + +@Controller +@RequestMapping(value = "/database") +public class DataManagerController { + + @Resource + ASESpringUtil springUtil; + + @RequestMapping(value = "{subSystem}/{dataModel}/query") + public String queryView(Model model, @PathVariable String dataModel, @PathVariable String subSystem) { + DataModelRepositorySearcher dataModelRepositorySearcher = springUtil.getBean(DataModelRepositorySearcher.class); + DataModelSearcher dataModelSearcher = springUtil.getBean(DataModelSearcher.class); + + dataModelSearcher.getDataModelClass(subSystem, dataModel); + if(!dataModelSearcher.isPresent()){ + throw new RuntimeException("Data Model Not Found"); + } + dataModelRepositorySearcher.getDataModelRepositoryClass(subSystem, dataModel); + if(!dataModelRepositorySearcher.isPresent()){ + throw new RuntimeException("Data Model Repository Not Found"); + } + + Map data; + return "query"; + } +} diff --git a/src/main/java/com/codesdream/ase/controller/HomeController.java b/src/main/java/com/codesdream/ase/controller/HomeController.java new file mode 100644 index 0000000..1748b9c --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/HomeController.java @@ -0,0 +1,37 @@ +package com.codesdream.ase.controller; + +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.IUserService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; +import java.security.Principal; +import java.util.Optional; + +@Controller +public class HomeController { + @Resource + IUserService userService; + + @RequestMapping(value = "/home") + public String showHomeView(Model model, Principal principal){ + Optional userOptional = userService.findUserByUsername(principal.getName()); + if(!userOptional.isPresent()) return "error"; + User user = userOptional.get(); + // 为视图模板指定参数 + model.addAttribute("username", user.getUsername().substring(0, 18)); + model.addAttribute("real_name", user.getUserDetail().getRealName()); + model.addAttribute("sex", user.getUserDetail().getSex()); + model.addAttribute("student_id", user.getUserAuth().getStudentID()); + model.addAttribute("class_id", user.getUserDetail().getClassId()); + model.addAttribute("college", user.getUserDetail().getBaseCollege().getName()); + model.addAttribute("ethnic", user.getUserDetail().getBaseEthnic().getName()); + model.addAttribute("major", user.getUserDetail().getBaseMajor().getName()); + model.addAttribute("is_at_school", user.getUserDetail().isAtSchool()); + model.addAttribute("ethnic", user.getUserDetail().getBaseEthnic().getName()); + model.addAttribute("mail", user.getUserAuth().getMail()); + return "home"; + } +} diff --git a/src/main/java/com/codesdream/ase/controller/LeavesController.java b/src/main/java/com/codesdream/ase/controller/LeavesController.java new file mode 100644 index 0000000..ae85621 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/LeavesController.java @@ -0,0 +1,115 @@ +package com.codesdream.ase.controller; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.auth.ASEUsernameEncoder; +import com.codesdream.ase.component.datamanager.JSONParameter; + +import com.codesdream.ase.component.json.request.UserLeaveAuth; +import com.codesdream.ase.component.json.request.UserLeaveRequest; +import com.codesdream.ase.component.json.request.UserSGettudentLeaveListRequest; +import com.codesdream.ase.component.json.respond.JSONStandardFailedRespond; +import com.codesdream.ase.exception.innerservererror.InvalidFormFormatException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.leaves.Leave; +import com.codesdream.ase.service.LeavesService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Calendar; +import java.util.Date; +import java.util.Optional; + + +/** + * 登录界面控制器类 + */ +@Slf4j +@Controller +public class LeavesController { + + @Resource + private JSONParameter jsonParameter; + + @Resource + private QuickJSONRespond quickJSONRespond; + + @Resource + private LeavesService leavesService; + + @Resource + private ASEUsernameEncoder usernameEncoder; + +/* @RequestMapping(value = "/") + String printLeave(Model model) { + return "Leave"; + }*/ + + //提交请假申请 + @RequestMapping(value = "/Leave/check", method = RequestMethod.POST) + @ResponseBody + String leaveRequest(HttpServletRequest request){ + + // 检查是否为JSON + Optional json = jsonParameter.getJSONByRequest(request); + if(!json.isPresent()) return jsonParameter.getJSONString(new JSONStandardFailedRespond()); + UserLeaveRequest userLeaveRequest=json.get().toJavaObject(UserLeaveRequest.class); + Leave newleave=new Leave(); + newleave.setUserFrom(userLeaveRequest.getUserId()); + newleave.setType(userLeaveRequest.getType()); + newleave.setReasonToLeave(userLeaveRequest.getReason()); + //newleave.set + newleave.setStartTime(userLeaveRequest.getStarttime()); + newleave.setEndTime(userLeaveRequest.getEndTime()); + Calendar calendar =Calendar.getInstance(); + Date time = calendar.getTime(); + newleave.setApplyTime(time); + + leavesService.save(newleave); + //eturn quickJSONRespond.getRespond200(null, respond); + + return quickJSONRespond.getRespond200("申请已提交"); + // 检查类型 + + } + @RequestMapping(value = "/Leave/auth", method = RequestMethod.POST) + @ResponseBody + String getLeaveAuth(HttpServletRequest request){ + + // 检查是否为JSON + Optional json = jsonParameter.getJSONByRequest(request); + if(!json.isPresent()) return jsonParameter.getJSONString(new JSONStandardFailedRespond()); + UserLeaveAuth userLeaveAuth=json.get().toJavaObject(UserLeaveAuth.class); + Optional leave =leavesService.findLeaveById(userLeaveAuth.getId()); + if(!leave.isPresent()){ + return quickJSONRespond.getRespond500("No such entry"); + } + Leave newLeave=leave.get(); + newLeave.setComment(userLeaveAuth.getComment()); + newLeave.setAuthentication(userLeaveAuth.getNewStat()); + return quickJSONRespond.getRespond200("Authentication status updated"); + } + + @RequestMapping(value = "/Leave/getStuLeaveList", method = RequestMethod.POST) + @ResponseBody + Leave getStuLeavelist(HttpServletRequest request) throws InvalidFormFormatException { + Optional json = jsonParameter.getJSONByRequest(request); + if(!json.isPresent()) throw new InvalidFormFormatException("json request not recognized"); + UserSGettudentLeaveListRequest userSGettudentLeaveListRequest=json.get().toJavaObject(UserSGettudentLeaveListRequest.class); + if(leavesService.findLeaveById(userSGettudentLeaveListRequest.getStudentId()).isPresent()){ + Leave leave =leavesService.findLeaveById(userSGettudentLeaveListRequest.getStudentId()).get(); + return leave; + }else{ + throw new NotFoundException("Student Does not exist"); + } + + } + + +} diff --git a/src/main/java/com/codesdream/ase/controller/LoginController.java b/src/main/java/com/codesdream/ase/controller/LoginController.java new file mode 100644 index 0000000..fc3a5ce --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/LoginController.java @@ -0,0 +1,106 @@ +package com.codesdream.ase.controller; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.json.respond.JSONStandardFailedRespond; +import com.codesdream.ase.component.json.request.UserLoginChecker; +import com.codesdream.ase.component.json.respond.UserLoginCheckerJSONRespond; +import com.codesdream.ase.service.IAuthService; +import com.codesdream.ase.service.IUserService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Optional; + + +/** + * 登录界面控制器类 + */ +@Slf4j +@Controller +@Api(tags = "用户登录有关接口") +public class LoginController { + + @Resource + private JSONParameter jsonParameter; + + @Resource + private QuickJSONRespond quickJSONRespond; + + @Resource + private IUserService userService; + + @Resource + private IAuthService authService; + + @PostMapping(value = "/login/check_exists") + @ResponseBody + String checkExists(HttpServletRequest request){ + + // 检查是否为JSON + Optional json = jsonParameter.getJSONByRequest(request); + if(!json.isPresent()) return quickJSONRespond.getRespond400("Invalid JSON Form"); + + + UserLoginChecker loginChecker = json.get().toJavaObject(UserLoginChecker.class); + + // 检查学号对应的用户名是否存在 + if(loginChecker.getCheckType().equals("UsernameExistChecker")){ + // 根据学号计算用户名 + String user = userService.getUsernameByStudentId(loginChecker.getUsername()); + // 查询用户名存在状态 + boolean existStatus = userService.checkIfUserExists(user).getKey(); + // 构造返回对象 + UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond(); + respond.setUserExist(existStatus); + return quickJSONRespond.getRespond200(null, respond); + } + else { + // 返回失败对象 + return quickJSONRespond.getRespond400("CheckType Mismatch"); + } + } + + // 根据学号计算对应的username + @RequestMapping(value = "/login/check_uid", method = RequestMethod.POST) + @ResponseBody + String checkUsernameByStudentID(HttpServletRequest request){ + + String preValidationCode = request.getHeader("pvc"); + + // 检查随机预验证码 + if(preValidationCode == null || !authService.preValidationCodeChecker(preValidationCode)) + return quickJSONRespond.getRespond403("Invalid PreValidationCode"); + + // 检查是否为JSON + Optional json = jsonParameter.getJSONByRequest(request); + if(!json.isPresent()) return jsonParameter.getJSONString(new JSONStandardFailedRespond()); + + UserLoginChecker loginChecker = json.get().toJavaObject(UserLoginChecker.class); + + if(loginChecker.getUsername() == null || loginChecker.getCheckType() == null) + return quickJSONRespond.getRespond406("Request Violates The Interface Protocol"); + + if(loginChecker.getCheckType().equals("UIDGeneratorChecker")) { + UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond(); + respond.setUid(userService.getUsernameByStudentId(loginChecker.getUsername())); + return quickJSONRespond.getRespond200(null, respond); + } + else { + // 返回失败对象 + return quickJSONRespond.getRespond400("CheckType Mismatch"); + } + } + + + +} diff --git a/src/main/java/com/codesdream/ase/controller/RegisterController.java b/src/main/java/com/codesdream/ase/controller/RegisterController.java new file mode 100644 index 0000000..0908a34 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/RegisterController.java @@ -0,0 +1,97 @@ +package com.codesdream.ase.controller; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.api.QuickJSONRespond; +import com.codesdream.ase.component.json.request.UserRegisterChecker; +import com.codesdream.ase.model.information.BaseStudentInfo; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.BaseInformationService; +import com.codesdream.ase.service.UserService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Optional; + +@Controller +public class RegisterController { + @Resource + private UserService userService; + + @Resource + private BaseInformationService baseInformationService; + + @Resource + private JSONParameter jsonParameter; + + @Resource + private QuickJSONRespond quickJSONRespond; + + @RequestMapping(value = "/register") + String registerView(Model model){ + return "register"; + } + + // 处理注册表单 + @PostMapping(value = "/register/do_register") + @ResponseBody + String doRegister(HttpServletRequest request){ + + Optional registerCheckerOptional = + jsonParameter.getJavaObjectByRequest(request, UserRegisterChecker.class); + + // 检查JSON是否完整 + if(!registerCheckerOptional.isPresent()){ + return quickJSONRespond.getRespond400("Illegal JSON Format"); + } + + // 检查数据是否完整 + UserRegisterChecker registerChecker = registerCheckerOptional.get(); + if(registerChecker.getPassword() == null + || registerChecker.getStudentId() == null + || registerChecker.getUserAnswer() == null + || registerChecker.getUserQuestion() == null){ + return quickJSONRespond.getRespond400("Incomplete Data"); + } + + // 获得提交学号 + String student_id = registerChecker.getStudentId(); + // 获得密保问题 + String user_question = registerChecker.getUserQuestion(); + // 获得密保答案 + String user_answer = registerChecker.getUserAnswer(); + + // 检查用户的基本信息是否录入系统 + if(!baseInformationService.checkStudentInfo(student_id)) + return quickJSONRespond.getRespond500("StudentID Base Information Not Found"); + + // 检查学号是否已被注册 + if(userService.checkIfUserExists(userService.getUsernameByStudentId(student_id)).getKey()){ + return quickJSONRespond.getRespond500("StudentID Already Used"); + } + + // 查找对应的基本信息 + BaseStudentInfo studentInfo = baseInformationService.findStudentInfoByStudentId(student_id); + + // 根据基本信息生成对应用户 + User user = userService.createUserByStudentInfo(studentInfo); + + // 填充密保问题 + user.getUserAuth().setUserQuestion(user_question); + user.getUserAuth().setUserAnswer(user_answer); + user.getUserAuth().setMail(""); + + String password = registerChecker.getPassword(); + + user.setPassword(password); + userService.save(user); + + // 成功注册 + return quickJSONRespond.getRespond200("Register Success"); + } + +} diff --git a/src/main/java/com/codesdream/ase/controller/activity/ActivityAttendanceController.java b/src/main/java/com/codesdream/ase/controller/activity/ActivityAttendanceController.java new file mode 100644 index 0000000..568e2cb --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/activity/ActivityAttendanceController.java @@ -0,0 +1,16 @@ +package com.codesdream.ase.controller.activity; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +@Controller +@RequestMapping("/act") +public class ActivityAttendanceController { + + private final String url = "/forget"; + + +} diff --git a/src/main/java/com/codesdream/ase/controller/activity/ActivityCreatorController.java b/src/main/java/com/codesdream/ase/controller/activity/ActivityCreatorController.java new file mode 100644 index 0000000..a1ea1e2 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/activity/ActivityCreatorController.java @@ -0,0 +1,155 @@ +package com.codesdream.ase.controller.activity; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.component.ASESpringUtil; +import com.codesdream.ase.component.activity.ActivityConverter; +import com.codesdream.ase.component.activity.NullValueAttributes; +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.respond.JSONStandardFailedRespond; +import com.codesdream.ase.configure.ActivityFormConfigure; +import com.codesdream.ase.exception.innerservererror.InvalidFormFormatException; +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.UserActivity; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.repository.activity.UserActivityRepository; +import com.codesdream.ase.service.ActivityService; +import com.codesdream.ase.service.UserService; +import com.codesdream.ase.validator.ActivityValidator; +import com.codesdream.ase.validator.NullValueValidator; +import com.codesdream.ase.validator.JSONFormValidator; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.InvocationTargetException; +import java.util.List; +import java.util.Optional; + +@Controller +@RequestMapping("/forget/act") +public class ActivityCreatorController { + + @Resource + ActivityService activityService; + + @Resource + JSONParameter jsonParameter; + + @Resource + ASESpringUtil aseSpringUtil; + + @Resource + ActivityFormConfigure activityFormConfigure; + + @Resource + JSONFormValidator jsonFormValidator; + + @Resource + NullValueValidator nullValueValidator; + + @Resource + NullValueAttributes nullValueAttributes; + + @Resource + ActivityValidator activityValidator; + + @Resource + UserService userService; + + @Resource + UserActivityRepository userActivityRepository; + + @Resource + ActivityConverter activityConverter; + + + @PostMapping(value = "/creator") + @ResponseBody + @ApiOperation(value = "创建活动", notes = "所有有关用户的数据传递均使用id,类型为int") + @ApiImplicitParams({ + @ApiImplicitParam(name = "title", value = "活动标题", dataType = "String", required = true), + @ApiImplicitParam(name = "type", value = "活动类型", dataType = "String", required = true), + @ApiImplicitParam(name = "start-time", value = "活动开始时间,格式为yyyy-MM-dd HH:mm:ss", required = true), + @ApiImplicitParam(name = "end-time", value = "活动结束时间,格式为yyyy-MM-dd HH:mm:ss", required = true), + @ApiImplicitParam(name = "chief-manager", dataType = "int", value = "主要负责人", required = true), + @ApiImplicitParam(name = "assist-managers", dataType = "int", value = "次要负责人"), + @ApiImplicitParam(name = "description", dataType = "String", value = "活动描述"), + @ApiImplicitParam(name = "cycle", dataType = "String", value = "活动周期,格式为阿拉伯数字数字+单位,0表示无周期"), + @ApiImplicitParam(name = "participate-group", value = "预定参与人员"), + @ApiImplicitParam(name = "sign-group", dataType = "List", value = "可参与人员"), + @ApiImplicitParam(name = "inform-group", dataType = "List", value = "通知人群,若为空,则默认为预定参与人员和可报名人员的并集"), + @ApiImplicitParam(name = "visible-group", dataType = "List", value = "活动可见人群,若为空,则默认为负责人、活动创建者预定参和可报名人员以及通知人员的并集"), + @ApiImplicitParam(name = "remind-time", dataType = "String", defaultValue = "30m", value = "活动提醒时间,格式为数字+单位,可接受的单位从大到小有:w,d,h,m,s"), + }) + String activityCreator(HttpServletRequest request) throws InvalidFormFormatException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { + + JSONObject error = new JSONObject(); + aseSpringUtil = new ASESpringUtil(); + //判断是否为JSON对象 + Optional json = jsonParameter.getJSONByRequest(request); + if (!json.isPresent()) return jsonParameter.getJSONString(new JSONStandardFailedRespond()); + + List formatCheckResult = jsonFormValidator.check(activityFormConfigure.getStdActivityForm(), json.get()); + + //检验JSON格式是否有误 + if (!formatCheckResult.isEmpty()) { + error.put("error", formatCheckResult); + throw new InvalidFormFormatException(error.toJSONString()); + } + Activity activity = activityConverter.convertToActivity(json); + List nullValues = nullValueValidator.checkNullValues(activity); + + for (String str : nullValues){ + if(str.equals("title")){ + nullValueAttributes.getNullValueAttributes().add("title"); + } + else if(str.equals("creator")){ + nullValueAttributes.getNullValueAttributes().add("creator"); + } + else if(str.equals("type")){ + nullValueAttributes.getNullValueAttributes().add("type"); + } + else if(str.equals("planPeriod")){ + nullValueAttributes.getNullValueAttributes().add("planPeriod"); + } + else if(str.equals("chiefManager")){ + nullValueAttributes.getNullValueAttributes().add("chiefManager"); + } + } + //如果为空,存下此活动并跳转至成功创建页面 + if (!nullValueAttributes.getNullValueAttributes().isEmpty()) { + + String[] errorParameters = activityValidator.check(json); + if(errorParameters != null){ + JSONObject invalidParameters = new JSONObject(); + invalidParameters.put("invalid_parameters", errorParameters); + return invalidParameters.toJSONString(); + + } + else{ + activity = activityService.createActivity(activity); + String username = json.get().get("creator").toString(); + Optional user = userService.findUserByUsername(username); + UserActivity userActivity = userActivityRepository.findByUser(user.get()); + userActivity.getCreatedActs().add(activity); + userActivityRepository.save(userActivity); + } + } + //否则返回一个JSON对象给前端 + else{ + JSONObject nullParameters = new JSONObject(); + nullParameters.put("null_values",nullValueAttributes.getNullValueAttributes()); + return nullParameters.toJSONString(); + } + JSONObject jsonObject = (JSONObject) JSONObject.toJSON(activity); + return jsonObject.toJSONString(); + } +} + + diff --git a/src/main/java/com/codesdream/ase/controller/activity/ActivityViewerController.java b/src/main/java/com/codesdream/ase/controller/activity/ActivityViewerController.java new file mode 100644 index 0000000..27ffa82 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/activity/ActivityViewerController.java @@ -0,0 +1,94 @@ +package com.codesdream.ase.controller.activity; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.ActivityService; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Controller +@RequestMapping("/forget/act") +public class ActivityViewerController { + + + @Resource + ActivityService activityService; + + @GetMapping("/created_acts") + String showCreated() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findCreatedActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/parting_acts") + String showParticipate(HttpServletRequest request) { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findParticipatingActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/parted_acts") + String showParticipated() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findParticipatedActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/sign_acts") + String showSign() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findSignActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/vis_acts") + String showVisible() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findVisibleActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/all") + String showAll() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findAll(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/main_responsible_acts") + String showMainResponsible() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findMainResponsibleActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/sec_responsible_acts") + String showSecondaryResponsible() { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findSecondaryResponsibleActs(user); + return JSONObject.toJSONString(activities); + } + + @GetMapping("/acts_by_type") + String showInType(@RequestParam(defaultValue = "考勤", name = "type") String type) { + + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + List activities = activityService.findActivityByType(user, type); + return JSONObject.toJSONString(activities); + } +} diff --git a/src/main/java/com/codesdream/ase/controller/activity/QRCodeController.java b/src/main/java/com/codesdream/ase/controller/activity/QRCodeController.java new file mode 100644 index 0000000..3c5d7d0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/activity/QRCodeController.java @@ -0,0 +1,36 @@ +package com.codesdream.ase.controller.activity; + +import com.codesdream.ase.component.activity.QrCodeUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; + +@Controller +public class QRCodeController { + + /** + * 二维码 + * + * @param request + * @param response + */ + @GetMapping("/qrcode") + public void qrCode(HttpServletRequest request, HttpServletResponse response) { + StringBuffer url = request.getRequestURL(); + // 域名 + String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append("/").toString(); + + // 再加上请求链接 + String requestUrl = tempContextUrl + "/index"; + try { + OutputStream os = response.getOutputStream(); + QrCodeUtils.encode(requestUrl, "", os, true); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/codesdream/ase/controller/permission/FPCController.java b/src/main/java/com/codesdream/ase/controller/permission/FPCController.java new file mode 100644 index 0000000..bd8cb3d --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/permission/FPCController.java @@ -0,0 +1,169 @@ +package com.codesdream.ase.controller.permission; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.model.JsonableFPC; +import com.codesdream.ase.component.json.model.JsonableFunction; +import com.codesdream.ase.component.json.model.JsonableRoleList; +import com.codesdream.ase.component.json.model.JsonableUser; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.PermissionService; +import com.github.fge.jsonpatch.JsonPatch; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; +import springfox.documentation.spring.web.json.Json; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +@RestController +@RequestMapping(value = "pmt") +@Api(tags = "功能性权限容器接口") +public class FPCController { + + @Resource + private PermissionService permissionService; + + @Resource + private JSONParameter jsonParameter; + + @GetMapping("fpc") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "查找功能性权限容器") + public JsonableFPC getFPC(@RequestParam(value = "id") Integer id){ + Optional fpc = permissionService.findFPC(id); + if(!fpc.isPresent()) throw new NotFoundException(id.toString()); + return new JsonableFPC(fpc.get()); + } + + @PostMapping("fpc") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "创建新的功能性权限容器") + public JsonableFPC createFPC(@RequestBody JsonableFPC fpc){ + if(permissionService.findFPC(fpc.getName()).isPresent()) throw new AlreadyExistException(fpc.getName()); + FunctionalPermissionContainer functionalPermissionContainer = new FunctionalPermissionContainer(); + + + return new JsonableFPC(permissionService.save(fpc.parseObject(functionalPermissionContainer))); + } + + @GetMapping("fpcs") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "获得所有功能性权限容器的信息") + public Set listFPC(){ + Iterable fpcs = permissionService.findAllFPC(); + Set jsonableFPCS = new HashSet<>(); + for(FunctionalPermissionContainer fpc : fpcs){ + jsonableFPCS.add(new JsonableFPC(fpc)); + } + return jsonableFPCS; + } + + @GetMapping("fpc/roles") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "获得功能性权限容器所属角色") + public JsonableRoleList getFPCRoleList(@RequestParam(value = "id") Integer id){ + Optional functionalPermissionContainer = + permissionService.findFPC(id); + if(!functionalPermissionContainer.isPresent()) throw new NotFoundException(id.toString()); + + return new JsonableRoleList(functionalPermissionContainer.get()); + } + + @PatchMapping("fpc") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "更新标功能性权限容器内容") + public JsonableFPC patchFPC(@RequestParam(value = "id") Integer id, @RequestBody JsonPatch patch){ + Optional fpc = permissionService.findFPC(id); + if(!fpc.isPresent()) throw new NotFoundException(id.toString()); + + JsonableFPC jsonableFPC = new JsonableFPC(fpc.get()); + + jsonableFPC = jsonParameter.parsePathToObject(patch, jsonableFPC); + + return new JsonableFPC(permissionService.update(jsonableFPC.parseObject(fpc.get()))); + } + + @GetMapping("fpc/funcs") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "功能性权限容器所含功能集合") + public Set getFunctionFPC(@RequestParam(value = "id") Integer id){ + Optional fpc = permissionService.findFPC(id); + if(!fpc.isPresent()) throw new NotFoundException(id.toString()); + + + Set jsonableFunctions = new HashSet<>(); + for(Function function : fpc.get().getFunctions()){ + jsonableFunctions.add(new JsonableFunction(function)); + } + return jsonableFunctions; + } + + @PutMapping("fpc/funcs") + @ApiOperation("搜索单个功能性权限容器所属功能集合信息") + public Set setFunctionFPC(@RequestParam(value = "id") Integer id, + @RequestBody List functionIdList){ + Optional fpc = permissionService.findFPC(id); + if(!fpc.isPresent()) throw new NotFoundException(id.toString()); + + Set functionSet = new HashSet<>(functionIdList); + fpc.get().setFunctions(permissionService.findFunctions(functionSet)); + + Set jsonableFunctions = new HashSet<>(); + for(Function function : permissionService.update(fpc.get()).getFunctions()){ + jsonableFunctions.add(new JsonableFunction(function)); + } + return jsonableFunctions; + } + + @PostMapping("fpc/funcs") + @ApiOperation("从单个功能性权限容器所属功能集合中添加一个或多个功能") + public Set addFunctionFPC(@RequestParam(value = "id") Integer id, + @RequestBody List functionIdList){ + Optional fpc = permissionService.findFPC(id); + if(!fpc.isPresent()) throw new NotFoundException(id.toString()); + Set newFunctionSet = permissionService.findFunctions(new HashSet<>(functionIdList)); + + Set functionSet = fpc.get().getFunctions(); + + functionSet.addAll(newFunctionSet); + fpc.get().setFunctions(functionSet); + + Set jsonableFunctions = new HashSet<>(); + for(Function function : permissionService.update(fpc.get()).getFunctions()){ + jsonableFunctions.add(new JsonableFunction(function)); + } + return jsonableFunctions; + } + + @DeleteMapping("fpc/funcs") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("从单个功能性权限容器所属功能集合中删除一个或多个功能") + public Set deleteUserTag(@RequestParam Integer id, + @RequestBody List functionIdList){ + Optional fpc = permissionService.findFPC(id); + if(!fpc.isPresent()) throw new NotFoundException(id.toString()); + Set functionSet = fpc.get().getFunctions(); + Set deleteFuncSet = permissionService.findFunctions(new HashSet<>(functionIdList)); + + functionSet.removeAll(deleteFuncSet); + fpc.get().setFunctions(functionSet); + + Set jsonableFunctions = new HashSet<>(); + for(Function function : permissionService.update(fpc.get()).getFunctions()){ + jsonableFunctions.add(new JsonableFunction(function)); + } + return jsonableFunctions; + } + +} diff --git a/src/main/java/com/codesdream/ase/controller/permission/FunctionController.java b/src/main/java/com/codesdream/ase/controller/permission/FunctionController.java new file mode 100644 index 0000000..f31a831 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/permission/FunctionController.java @@ -0,0 +1,78 @@ +package com.codesdream.ase.controller.permission; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.model.JsonableFPC; +import com.codesdream.ase.component.json.model.JsonableFunction; +import com.codesdream.ase.component.json.model.JsonableRoleList; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import com.codesdream.ase.service.PermissionService; +import com.github.fge.jsonpatch.JsonPatch; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + + +@RestController +@RequestMapping(value = "pmt") +@Api(tags = "功能接口") +public class FunctionController { + @Resource + private PermissionService permissionService; + + @Resource + private JSONParameter jsonParameter; + + @GetMapping("func") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "查找功能") + public JsonableFunction getFunction(@RequestParam(value = "id") Integer id){ + Optional function = permissionService.findFunction(id); + if(!function.isPresent()) throw new NotFoundException(id.toString()); + return new JsonableFunction(function.get()); + } + + @PostMapping("func") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "创建新的功能") + public JsonableFunction createFunction(@RequestBody JsonableFunction function){ + if(permissionService.findFunction(function.getName()).isPresent()) + throw new AlreadyExistException(function.getName()); + + return new JsonableFunction(permissionService.save(function.parseObject(new Function()))); + } + + @GetMapping("funcs") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "获得所有功能的信息") + public Set listFunction(){ + Iterable functions = permissionService.findAllFunction(); + Set jsonableFunctions = new HashSet<>(); + for(Function function : functions){ + jsonableFunctions.add(new JsonableFunction(function)); + } + return jsonableFunctions; + } + + @PatchMapping("func") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "更新标功能内容") + public JsonableFunction patchFunction(@RequestParam(value = "id") Integer id, @RequestBody JsonPatch patch){ + Optional function = permissionService.findFunction(id); + if(!function.isPresent()) throw new NotFoundException(id.toString()); + + JsonableFunction jsonableFunction = new JsonableFunction(function.get()); + + jsonableFunction = jsonParameter.parsePathToObject(patch, jsonableFunction); + + return new JsonableFunction(permissionService.update(jsonableFunction.parseObject(function.get()))); + } +} diff --git a/src/main/java/com/codesdream/ase/controller/permission/SPCController.java b/src/main/java/com/codesdream/ase/controller/permission/SPCController.java new file mode 100644 index 0000000..8cf9963 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/permission/SPCController.java @@ -0,0 +1,92 @@ +package com.codesdream.ase.controller.permission; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.model.JsonableSPC; +import com.codesdream.ase.component.json.model.JsonableTag; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.ScopePermissionContainer; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.service.PermissionService; +import com.github.fge.jsonpatch.JsonPatch; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + +@RestController +@RequestMapping(value = "pmt") +@Api(tags = "范围性权限容器接口") +public class SPCController { + + @Resource + private PermissionService permissionService; + + @Resource + private JSONParameter jsonParameter; + + @GetMapping(value = "spc") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "获得范围性权限容器信息") + public JsonableSPC getSPC(@RequestParam(value = "id") Integer id){ + Optional spc = permissionService.findSPC(id); + if(!spc.isPresent()) throw new NotFoundException(id.toString()); + + return new JsonableSPC(spc.get()); + + } + + @GetMapping(value = "spcs") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "获得所有的范围性权限容器信息") + public Set listSPC(){ + Iterable spcs = permissionService.findALLSPC(); + Set jsonableSPCS = new HashSet<>(); + for(ScopePermissionContainer spc : spcs){ + jsonableSPCS.add(new JsonableSPC(spc)); + } + return jsonableSPCS; + } + + @GetMapping(value = "spc/tags") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "查询范围性权限容器下的所有标签集合") + public Set listSPCTag(@RequestParam(value = "id") Integer id){ + Optional spc = permissionService.findSPC(id); + if(!spc.isPresent()) throw new NotFoundException(id.toString()); + + Set tags = new HashSet<>(); + for(Tag tag : spc.get().getTags()){ + tags.add(new JsonableTag(tag)); + } + return tags; + } + + @PostMapping(value = "spc") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "创建范围性权限容器") + public JsonableSPC createSPC(@RequestBody JsonableSPC spc) { + if(permissionService.findSPC(spc.getName()).isPresent()) throw new AlreadyExistException(spc.getName()); + + return new JsonableSPC(permissionService.save(spc.parseObject(permissionService.getDefaultSPC(spc.getName())))); + } + + @PatchMapping(value = "spc") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "更新范围性权限容器信息") + public JsonableSPC updateSPC(@RequestParam(value = "id") Integer id, @RequestBody JsonPatch patch){ + Optional spc = permissionService.findSPC(id); + if(!spc.isPresent()) throw new NotFoundException(id.toString()); + JsonableSPC jsonableSPC = jsonParameter.parsePathToObject(patch, new JsonableSPC(spc.get())); + + return new JsonableSPC(permissionService.update(jsonableSPC.parseObject(spc.get()))); + } + + + +} diff --git a/src/main/java/com/codesdream/ase/controller/permission/TagController.java b/src/main/java/com/codesdream/ase/controller/permission/TagController.java new file mode 100644 index 0000000..1ad8d60 --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/permission/TagController.java @@ -0,0 +1,222 @@ +package com.codesdream.ase.controller.permission; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.model.JsonablePCCList; +import com.codesdream.ase.component.json.model.JsonableTag; +import com.codesdream.ase.component.json.model.JsonableUser; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.conflict.RelatedObjectsExistException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.PermissionContainersCollection; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.IUserService; +import com.codesdream.ase.service.PermissionService; + +import com.github.fge.jsonpatch.JsonPatch; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +@RestController +@RequestMapping("pmt") +@Api(tags = "标签管理接口") +public class TagController { + + @Resource + private PermissionService permissionService; + + @Resource + private IUserService userService; + + @Resource + private JSONParameter jsonParameter; + + // 根据名字创建新的标签 + @PostMapping("tag") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "创建新的标签", notes = "创建标签时其ID自动分配,指定ID无效") + public JsonableTag createTag(@RequestBody JsonableTag tag){ + String tagName = tag.getName(); + Optional tagOptional = permissionService.findTag(tagName); + if(tagOptional.isPresent()) throw new AlreadyExistException(tagName); + + return new JsonableTag(permissionService.save(tag.parseObject(permissionService.getDefaultTag(tag.getName())))); + } + + // 根据名字搜索标签的简要信息 + @GetMapping("tag") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("搜索标签信息") + public JsonableTag checkTag(@RequestParam(value = "id") Integer id){ + Optional tagOptional = permissionService.findTag(id); + if(tagOptional.isPresent()){ + return new JsonableTag(tagOptional.get()); + } + else throw new NotFoundException(id.toString()); + } + + // 根据名字搜索标签的简要信息 + @GetMapping("tags") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("列出所有的标签信息") + public Set listTag(){ + Iterable tagIterable = permissionService.findAllTag(); + Set jsonableTagSet = new HashSet<>(); + for(Tag tag : tagIterable){ + jsonableTagSet.add(new JsonableTag(tag)); + } + return jsonableTagSet; + } + + // 根据名字搜索标签的简要信息 + @DeleteMapping("tag") + @ResponseStatus(HttpStatus.NO_CONTENT) + @ApiOperation("删除标签") + public void deleteTag(@RequestParam(value = "id") Integer id){ + Optional tag = permissionService.findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + + // 检查外键关联 + if(tag.get().getUsers().size() > 0) throw new RelatedObjectsExistException(); + if(tag.get().getPermissionContainersCollections().size() > 0) throw new RelatedObjectsExistException(); + + permissionService.delete(tag.get()); + } + + // 根据名字搜索标签的简要信息 + @PatchMapping(path = "tag") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation("修改标签属性") + public JsonableTag updateTag(@RequestParam(value = "id") Integer id, @RequestBody JsonPatch patch){ + Optional tag = permissionService.findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + + JsonableTag jsonableTag = new JsonableTag(tag.get()); + jsonableTag = jsonParameter.parsePathToObject(patch, jsonableTag); + + return new JsonableTag(permissionService.update(jsonableTag.parseObject(tag.get()))); + + } + + @GetMapping("tag/users") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("搜索单个标签所属用户集合信息") + public Set getUserTag(@RequestParam(value = "id") Integer id){ + Optional tag = permissionService.findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + Set jsonableUsers = new HashSet<>(); + for(User user : tag.get().getUsers()){ + jsonableUsers.add(new JsonableUser(user)); + } + return jsonableUsers; + } + + @PutMapping("tag/users") + @ApiOperation("搜索单个标签所属用户集合信息") + public Set setUserTag(@RequestParam(value = "id") Integer id, + @RequestBody List userIdList){ + Optional tag = permissionService.findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + + Set userSet = new HashSet<>(userIdList); + tag.get().setUsers(userService.findUsersById(userSet)); + + Set jsonableUsers = new HashSet<>(); + for(User user : permissionService.update(tag.get()).getUsers()){ + jsonableUsers.add(new JsonableUser(user)); + } + return jsonableUsers; + } + + @PostMapping("tag/users") + @ApiOperation("从单个标签所属用户集合中添加一个或多个用户") + public Set addUserTag(@RequestParam(value = "id") Integer id, + @RequestBody List userIdList){ + Optional tag = permissionService.findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + Set newUserSet = userService.findUsersById(new HashSet<>(userIdList)); + + Set userSet = tag.get().getUsers(); + + userSet.addAll(newUserSet); + tag.get().setUsers(userSet); + + Set jsonableUsers = new HashSet<>(); + for(User user : permissionService.update(tag.get()).getUsers()){ + jsonableUsers.add(new JsonableUser(user)); + } + return jsonableUsers; + } + + @DeleteMapping("tag/users") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("从单个标签所属用户集合中删除一个或多个用户") + public Set deleteUserTag(@RequestParam Integer id, + @RequestBody List userIdList){ + Optional tag = permissionService.findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + Set userSet = tag.get().getUsers(); + Set deleteUserSet = userService.findUsersById(new HashSet<>(userIdList)); + + userSet.removeAll(deleteUserSet); + tag.get().setUsers(userSet); + + Set jsonableUsers = new HashSet<>(); + for(User user : permissionService.update(tag.get()).getUsers()){ + jsonableUsers.add(new JsonableUser(user)); + } + return jsonableUsers; + } + + @GetMapping("tags/users") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("搜索多个标签所属用户集合信息") + public Set getUserTags(@RequestParam(value = "id") List ids){ + Set tagSet = permissionService.findTags(ids); + Set userSet = new HashSet<>(); + Set jsonableUsers = new HashSet<>(); + for(Tag tag : tagSet){ + userSet.addAll(tag.getUsers()); + } + for(User user : userSet){ + jsonableUsers.add(new JsonableUser(user)); + } + return jsonableUsers; + } + + @GetMapping("tag/pcc") + @ResponseStatus(HttpStatus.OK) + @ApiOperation("获取标签所含权力列表") + public JsonablePCCList getPCCTag(@RequestParam(value = "id") Integer id){ + Optional tagOptional = permissionService.findTag(id); + if(!tagOptional.isPresent()) throw new NotFoundException(id.toString()); + + return new JsonablePCCList(tagOptional.get()); + } + + @PostMapping("tag/pcc") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation("在指定标签的权限列表中添加一个或多个权限容器") + public JsonablePCCList addPCCTag(@RequestParam(value = "id") Integer id, JsonablePCCList jsonablePCCList){ + Optional tagOptional = permissionService.findTag(id); + if(!tagOptional.isPresent()) throw new NotFoundException(id.toString()); + + Set pccs = tagOptional.get().getPermissionContainersCollections(); + pccs.addAll(permissionService.findPCCs(new HashSet<>(jsonablePCCList.getPccIdList()))); + + tagOptional.get().setPermissionContainersCollections(pccs); + + return new JsonablePCCList(permissionService.save(tagOptional.get())); + } + + + +} diff --git a/src/main/java/com/codesdream/ase/controller/permission/UserController.java b/src/main/java/com/codesdream/ase/controller/permission/UserController.java new file mode 100644 index 0000000..2ded81d --- /dev/null +++ b/src/main/java/com/codesdream/ase/controller/permission/UserController.java @@ -0,0 +1,68 @@ +package com.codesdream.ase.controller.permission; + +import com.codesdream.ase.component.datamanager.JSONParameter; +import com.codesdream.ase.component.json.model.JsonableFunction; +import com.codesdream.ase.component.json.model.JsonableUser; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.Function; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.PermissionService; +import com.codesdream.ase.service.UserService; +import com.github.fge.jsonpatch.JsonPatch; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + +@RestController +@RequestMapping(value = "pmt") +@Api(tags = "用户管理接口") +public class UserController { + + @Resource + private UserService userService; + + @Resource + private JSONParameter jsonParameter; + + @GetMapping("user") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "查找用户") + public JsonableUser getUser(@RequestParam(value = "id") Integer id){ + Optional user = userService.findUserById(id); + if(!user.isPresent()) throw new NotFoundException(id.toString()); + return new JsonableUser(user.get()); + } + + @GetMapping("users") + @ResponseStatus(HttpStatus.OK) + @ApiOperation(value = "获得所有用户的信息") + public Set listUser(){ + Iterable users = userService.findAll(); + Set jsonableUsers = new HashSet<>(); + for(User user : users){ + jsonableUsers.add(new JsonableUser(user)); + } + return jsonableUsers; + } + + @PatchMapping("user") + @ResponseStatus(HttpStatus.CREATED) + @ApiOperation(value = "更新标用户的部分信息") + public JsonableUser patchUser(@RequestParam(value = "id") Integer id, @RequestBody JsonPatch patch){ + Optional userOptional = userService.findUserById(id); + if(!userOptional.isPresent()) throw new NotFoundException(id.toString()); + + JsonableUser jsonableUser = new JsonableUser(userOptional.get()); + + jsonableUser = jsonParameter.parsePathToObject(patch, jsonableUser); + + return new JsonableUser(userService.update(jsonableUser.parseObject(userOptional.get()))); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/DataReaderRowIndexOutOfRangeException.java b/src/main/java/com/codesdream/ase/exception/DataReaderRowIndexOutOfRangeException.java new file mode 100644 index 0000000..fb004a4 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/DataReaderRowIndexOutOfRangeException.java @@ -0,0 +1,9 @@ +package com.codesdream.ase.exception; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DataReaderRowIndexOutOfRangeException extends RuntimeException { +} diff --git a/src/main/java/com/codesdream/ase/exception/JSONTokenExpiredException.java b/src/main/java/com/codesdream/ase/exception/JSONTokenExpiredException.java new file mode 100644 index 0000000..8c90908 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/JSONTokenExpiredException.java @@ -0,0 +1,9 @@ +package com.codesdream.ase.exception; + +import org.springframework.security.core.AuthenticationException; + +public class JSONTokenExpiredException extends AuthenticationException { + public JSONTokenExpiredException(String msg) { + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/JSONTokenIncorrectSignedException.java b/src/main/java/com/codesdream/ase/exception/JSONTokenIncorrectSignedException.java new file mode 100644 index 0000000..edef8c0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/JSONTokenIncorrectSignedException.java @@ -0,0 +1,10 @@ +package com.codesdream.ase.exception; + +import org.springframework.security.core.AuthenticationException; + +public class JSONTokenIncorrectSignedException extends AuthenticationException { + + public JSONTokenIncorrectSignedException(String msg) { + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/LackOfActivityInformationException.java b/src/main/java/com/codesdream/ase/exception/LackOfActivityInformationException.java new file mode 100644 index 0000000..656d2ca --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/LackOfActivityInformationException.java @@ -0,0 +1,18 @@ +package com.codesdream.ase.exception; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class LackOfActivityInformationException extends Throwable { + private String message = ""; + + public LackOfActivityInformationException() { + super(); + } + + public LackOfActivityInformationException(String message) { + this.message = message; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/StringFileConvertException.java b/src/main/java/com/codesdream/ase/exception/StringFileConvertException.java new file mode 100644 index 0000000..86675c1 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/StringFileConvertException.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.exception; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StringFileConvertException extends RuntimeException { + public StringFileConvertException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/badrequest/AlreadyExistException.java b/src/main/java/com/codesdream/ase/exception/badrequest/AlreadyExistException.java new file mode 100644 index 0000000..81fa88b --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/badrequest/AlreadyExistException.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.exception.badrequest; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +public class AlreadyExistException extends RuntimeException { + public AlreadyExistException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/badrequest/BaseInformationAlreadyExistException.java b/src/main/java/com/codesdream/ase/exception/badrequest/BaseInformationAlreadyExistException.java new file mode 100644 index 0000000..47fda13 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/badrequest/BaseInformationAlreadyExistException.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.exception.badrequest; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class BaseInformationAlreadyExistException extends AlreadyExistException { + private String className; + private String value; + + public BaseInformationAlreadyExistException(Class aClass, String value){ + super(String.format("%s: %s", aClass.getName(), value)); + this.className = aClass.getName(); + this.value = value; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/badrequest/BaseInformationIllegalException.java b/src/main/java/com/codesdream/ase/exception/badrequest/BaseInformationIllegalException.java new file mode 100644 index 0000000..1cd9768 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/badrequest/BaseInformationIllegalException.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.exception.badrequest; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class BaseInformationIllegalException extends IllegalException { + String type; + String value; + + public BaseInformationIllegalException(Class aClass, String value){ + super(); + this.type = aClass.getName(); + this.value = value; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/badrequest/IllegalException.java b/src/main/java/com/codesdream/ase/exception/badrequest/IllegalException.java new file mode 100644 index 0000000..c62f81a --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/badrequest/IllegalException.java @@ -0,0 +1,10 @@ +package com.codesdream.ase.exception.badrequest; + +import lombok.NoArgsConstructor; + +@NoArgsConstructor +public class IllegalException extends RuntimeException { + public IllegalException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/badrequest/UserInformationIllegalException.java b/src/main/java/com/codesdream/ase/exception/badrequest/UserInformationIllegalException.java new file mode 100644 index 0000000..1107c14 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/badrequest/UserInformationIllegalException.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.exception.badrequest; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UserInformationIllegalException extends IllegalException { + + String username; + + public UserInformationIllegalException(String username){ + super(); + this.username = username; + } + +} diff --git a/src/main/java/com/codesdream/ase/exception/badrequest/UsernameAlreadyExistException.java b/src/main/java/com/codesdream/ase/exception/badrequest/UsernameAlreadyExistException.java new file mode 100644 index 0000000..c08d0e0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/badrequest/UsernameAlreadyExistException.java @@ -0,0 +1,16 @@ +package com.codesdream.ase.exception.badrequest; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UsernameAlreadyExistException extends AlreadyExistException { + + String username; + + public UsernameAlreadyExistException(String username){ + super(username); + this.username = username; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/conflict/RelatedObjectsExistException.java b/src/main/java/com/codesdream/ase/exception/conflict/RelatedObjectsExistException.java new file mode 100644 index 0000000..48fb482 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/conflict/RelatedObjectsExistException.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.exception.conflict; + +import lombok.NoArgsConstructor; + +/** + * 存在与之相关联的对象 + */ +@NoArgsConstructor +public class RelatedObjectsExistException extends RuntimeException { + public RelatedObjectsExistException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/DataIOException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/DataIOException.java new file mode 100644 index 0000000..7c3615e --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/DataIOException.java @@ -0,0 +1,9 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DataIOException extends RuntimeIOException { +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/DataIllegalTableFormatException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/DataIllegalTableFormatException.java new file mode 100644 index 0000000..d68b2d8 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/DataIllegalTableFormatException.java @@ -0,0 +1,9 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DataIllegalTableFormatException extends FormatException { +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/DataInvalidFormatException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/DataInvalidFormatException.java new file mode 100644 index 0000000..99f6dd9 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/DataInvalidFormatException.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DataInvalidFormatException extends FormatException { + String information; + + public DataInvalidFormatException(Exception e){ + super(); + information = e.getMessage(); + } + + public DataInvalidFormatException(){ + super(); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/FormatException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/FormatException.java new file mode 100644 index 0000000..dd6a734 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/FormatException.java @@ -0,0 +1,10 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.NoArgsConstructor; + +@NoArgsConstructor +public class FormatException extends RuntimeException { + public FormatException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/HandlingErrorsException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/HandlingErrorsException.java new file mode 100644 index 0000000..e87c712 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/HandlingErrorsException.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.Data; +import lombok.NoArgsConstructor; + +// 处理错误对应的异常类 +@Data +@NoArgsConstructor +public class HandlingErrorsException extends RuntimeException { + public HandlingErrorsException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/InvalidFormFormatException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/InvalidFormFormatException.java new file mode 100644 index 0000000..fc49abb --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/InvalidFormFormatException.java @@ -0,0 +1,21 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.criteria.CriteriaBuilder; + +@EqualsAndHashCode(callSuper = true) +@Data +public class InvalidFormFormatException extends FormatException { + + private String message = "Invalid form format"; + + public InvalidFormFormatException(){ + super(); + } + + public InvalidFormFormatException(String message){ + this.message = message; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/innerservererror/RuntimeIOException.java b/src/main/java/com/codesdream/ase/exception/innerservererror/RuntimeIOException.java new file mode 100644 index 0000000..df0c511 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/innerservererror/RuntimeIOException.java @@ -0,0 +1,10 @@ +package com.codesdream.ase.exception.innerservererror; + +import lombok.NoArgsConstructor; + +@NoArgsConstructor +public class RuntimeIOException extends RuntimeException { + public RuntimeIOException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/notfound/BaseInformationNotFoundException.java b/src/main/java/com/codesdream/ase/exception/notfound/BaseInformationNotFoundException.java new file mode 100644 index 0000000..961d435 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/notfound/BaseInformationNotFoundException.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.exception.notfound; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class BaseInformationNotFoundException extends NotFoundException { + private String className; + private String value; + + public BaseInformationNotFoundException(Class baseInformationClass, String value){ + super(String.format("%s: %s", baseInformationClass.getName(), value)); + this.className = baseInformationClass.getName(); + this.value = value; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/notfound/DataFileNotFoundException.java b/src/main/java/com/codesdream/ase/exception/notfound/DataFileNotFoundException.java new file mode 100644 index 0000000..6ff26be --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/notfound/DataFileNotFoundException.java @@ -0,0 +1,15 @@ +package com.codesdream.ase.exception.notfound; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DataFileNotFoundException extends NotFoundException { + private String path; + + public DataFileNotFoundException(String msg){ + super(msg); + this.path = msg; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/notfound/NotFoundException.java b/src/main/java/com/codesdream/ase/exception/notfound/NotFoundException.java new file mode 100644 index 0000000..a632648 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/notfound/NotFoundException.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.exception.notfound; + + +public class NotFoundException extends RuntimeException { + public NotFoundException(String msg){ + super(msg); + } + + public NotFoundException(){ + super(); + } +} diff --git a/src/main/java/com/codesdream/ase/exception/notfound/TagNotFoundException.java b/src/main/java/com/codesdream/ase/exception/notfound/TagNotFoundException.java new file mode 100644 index 0000000..a7509ac --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/notfound/TagNotFoundException.java @@ -0,0 +1,11 @@ +package com.codesdream.ase.exception.notfound; + + +public class TagNotFoundException extends NotFoundException { + String tagName; + + public TagNotFoundException(String tagName){ + super(tagName); + this.tagName = tagName; + } +} diff --git a/src/main/java/com/codesdream/ase/exception/notfound/UserNotFoundException.java b/src/main/java/com/codesdream/ase/exception/notfound/UserNotFoundException.java new file mode 100644 index 0000000..65a58c0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/exception/notfound/UserNotFoundException.java @@ -0,0 +1,20 @@ +package com.codesdream.ase.exception.notfound; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UserNotFoundException extends NotFoundException { + Integer id; + String username; + public UserNotFoundException(Integer id, String username){ + super(); + this.id = id; + this.username = username; + } + + public UserNotFoundException(String msg){ + super(msg); + } +} diff --git a/src/main/java/com/codesdream/ase/model/achievement/AccumulatedGPA.java b/src/main/java/com/codesdream/ase/model/achievement/AccumulatedGPA.java new file mode 100644 index 0000000..aa89fcf --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/achievement/AccumulatedGPA.java @@ -0,0 +1,42 @@ +package com.codesdream.ase.model.achievement; + +import com.codesdream.ase.model.activity.Period; +import lombok.Data; + +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +@Data +@Entity +@Table(name = "accumulated_gpa") + +public class AccumulatedGPA { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 课程-得分集合 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH}, fetch = FetchType.LAZY) + private Set examResults = new HashSet<>(); + + // 个人学分积 + @JoinColumn(nullable = true) + private float accumulatedGPA; + + + //除数为零exception待加 + public AccumulatedGPA(Set initExamResults) { + int totalProduct = 0, totalCredit = 0; + for(ExamResult er : initExamResults){ + totalProduct += er.getCredit() * er.getScore(); + totalCredit += er.getCredit(); + } + this.accumulatedGPA = totalProduct / totalCredit; + } + + +} diff --git a/src/main/java/com/codesdream/ase/model/achievement/Award.java b/src/main/java/com/codesdream/ase/model/achievement/Award.java new file mode 100644 index 0000000..8a6026c --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/achievement/Award.java @@ -0,0 +1,34 @@ +package com.codesdream.ase.model.achievement; + +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.model.permission.UserDetail; +import lombok.Data; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Data +@Entity +@Table(name = "award") + +public class Award { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 标题 + private String title = ""; + + // 描述 + private String description = ""; + + // 分类 + private String type = ""; + + // 加分 + private int bonus; + + +} diff --git a/src/main/java/com/codesdream/ase/model/achievement/ComprehensiveEvaluation.java b/src/main/java/com/codesdream/ase/model/achievement/ComprehensiveEvaluation.java new file mode 100644 index 0000000..0393edd --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/achievement/ComprehensiveEvaluation.java @@ -0,0 +1,44 @@ +package com.codesdream.ase.model.achievement; + +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.model.permission.UserDetail; +import lombok.Data; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Data +@Entity +@Table(name = "comprehensive_evaluation") + +public class ComprehensiveEvaluation { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 学分积 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private AccumulatedGPA accumulatedGPA; + + // G2项得分 + private int g2; + + // G3项得分 + private int g3; + + // G4项得分 + private int g4; + + // G5项得分 + private int g5; + + // G6项得分 + private int g6; + + // 获奖 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH}, fetch = FetchType.LAZY) + private Set awards = new HashSet<>(); + +} diff --git a/src/main/java/com/codesdream/ase/model/achievement/ExamResult.java b/src/main/java/com/codesdream/ase/model/achievement/ExamResult.java new file mode 100644 index 0000000..2543fca --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/achievement/ExamResult.java @@ -0,0 +1,43 @@ +package com.codesdream.ase.model.achievement; + +import com.codesdream.ase.model.activity.Period; +import lombok.Data; + +import javax.persistence.*; + +@Data +@Entity +@Table(name = "exam_result") + +public class ExamResult { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 课程名称 + @Column(name = "subject", nullable = false) + private String subject = ""; + + // 课程学分 + @Column(name = "credit", nullable = false) + private float credit; + + // 课程成绩 + @Column(name = "score", nullable = true) + private int score; + + // 课程绩点 + @Column(name = "grade_point", nullable = true) + private float gradePoint; + + + public float getCredit() { + return credit; + } + + public int getScore() { + return score; + } + +} diff --git a/src/main/java/com/codesdream/ase/model/achievement/StudentScoreReport.java b/src/main/java/com/codesdream/ase/model/achievement/StudentScoreReport.java new file mode 100644 index 0000000..32550ba --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/achievement/StudentScoreReport.java @@ -0,0 +1,33 @@ +package com.codesdream.ase.model.achievement; + +import com.codesdream.ase.model.activity.Period; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import lombok.Data; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +@Data +@Entity +@Table(name = "student_score_report") + +public class StudentScoreReport { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 课程-得分集合 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH}, fetch = FetchType.LAZY) + private Set examResults = new HashSet<>(); + + // 个人学分积 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinColumn(nullable = true) + private AccumulatedGPA accumulatedGPA; + +} diff --git a/src/main/java/com/codesdream/ase/model/activity/Activity.java b/src/main/java/com/codesdream/ase/model/activity/Activity.java new file mode 100644 index 0000000..a99a6e6 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/activity/Activity.java @@ -0,0 +1,198 @@ +package com.codesdream.ase.model.activity; + +import com.codesdream.ase.model.permission.User; +import lombok.Data; + +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Data +@Entity +@Table(name = "activity") +public class Activity { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + //活动标题 + @Column(name = "title", nullable = false) + private String title; + + //创建人 + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(nullable = false) + private User creator; + + //活动类型 + @Column(nullable = false) + private String type; + + //活动描述 + @Column + private String description; + + //活动周期,格式:阿拉伯数字数字+单位,0表示无周期 + @Column + private String cycle; + + //自愿参与人列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_volunteer") + private Set volunteers; + + //参与人列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_participate", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "participate_id") + } + ) + private Set participateGroup; + + //实际参与人列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_participated", + joinColumns = { + @JoinColumn(name = "act_id" ) + }, + inverseJoinColumns = { + @JoinColumn(name = "participated_id") + } + ) + private Set participatedGroup; + + //可报名人员列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_sign", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "sign_id") + } + ) + private Set signGroup; + + //已报名人员列表 + @ManyToMany(cascade = CascadeType.MERGE) + @JoinTable(name = "act_signed", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "signed_id") + } + ) + private Set signedGroup; + + //可见人员列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_vis", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "vis_id") + } + ) + private Set visibleGroup; + + //通知人员列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_inform", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "inform_id") + } + ) + private Set informGroup; + + //已通知人员列表 + @ManyToMany(cascade = CascadeType.DETACH) + @JoinTable(name = "act_informed", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "informed_id") + } + ) + private Set informedGroup; + + //计划开始时间 + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(nullable = false) + private Period planPeriod; + + //实际开始时间 + @OneToOne(cascade = CascadeType.ALL) + private Period realPeriod; + + //提前提醒时间 + @Column(name = "remind_time", nullable = true) + private LocalDateTime remindTime; + + //附件组(名字) + @ElementCollection(targetClass = String.class) + private List enclosures; + + //主要负责人 + @OneToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) + @JoinColumn(nullable = false) + private User chiefManager; + + //次要负责人 + @OneToMany(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) + @JoinColumn(name = "act_id") + private Set assistManagers; + + //是否开始 + @Column(name = "is_on", nullable = false) + boolean isOn; + + //是否结束 + @Column(name = "is_off", nullable = false) + boolean isOff; + + //考勤安排 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private Attendance attendance; + + //活动报告 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private Report report; + + public Activity(){ + initDefault(); + } + + private void initDefault(){ + this.title = ""; + this.creator = new User(); + this.type = ""; + this.description = ""; + this.cycle = ""; + this.volunteers = new HashSet<>(); + this.participateGroup = new HashSet<>(); + this.participatedGroup = new HashSet<>(); + this.participatedGroup = new HashSet<>(); + this.signGroup = new HashSet<>(); + this.signedGroup = new HashSet<>(); + this.visibleGroup = new HashSet<>(); + this.informGroup = new HashSet<>(); + this.informedGroup = new HashSet<>(); + this.planPeriod = new Period(); + this.realPeriod = new Period(); + this.enclosures = new ArrayList<>(); + this.chiefManager = new User(); + this.assistManagers = new HashSet<>(); + this.isOn = false; + this.isOff = false; + } +} \ No newline at end of file diff --git a/src/main/java/com/codesdream/ase/model/activity/Attendance.java b/src/main/java/com/codesdream/ase/model/activity/Attendance.java new file mode 100644 index 0000000..d72852c --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/activity/Attendance.java @@ -0,0 +1,29 @@ +package com.codesdream.ase.model.activity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.List; +import java.util.Set; + +@Data +@Entity +@Table(name = "attendance") +public class Attendance { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + //是否在线 + @Column(name = "is_online")//, nullable = false) + private boolean isOnline; + + //打卡时段列表 + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + private Set clockInPeriods; + + //打卡方式,0表示被扫,1表示扫 + @Column//(nullable = false) + private boolean means; +} diff --git a/src/main/java/com/codesdream/ase/model/activity/Period.java b/src/main/java/com/codesdream/ase/model/activity/Period.java new file mode 100644 index 0000000..c0ec4d7 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/activity/Period.java @@ -0,0 +1,45 @@ +package com.codesdream.ase.model.activity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; + +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Date; +import java.util.Objects; + +@Entity +@Table(name = "period_container") +@Data +public class Period { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + //开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Column(name = "start_time")//, nullable = false) + private LocalDateTime startTime = LocalDateTime.of(2020,2,18,16,36); + + //结束时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Column(name = "end_time")//, nullable = false) + private LocalDateTime endTime = LocalDateTime.of(2020,2,18,16,37); + + //启用状态 + @Column(name = "enabled")//, nullable = false) + private boolean enabled; + + public Period(LocalDateTime startTime, LocalDateTime endTime) { + this.startTime = startTime; + this.endTime = endTime; + } + + public Period(){ + + } + +} diff --git a/src/main/java/com/codesdream/ase/model/activity/Report.java b/src/main/java/com/codesdream/ase/model/activity/Report.java new file mode 100644 index 0000000..2bc6a0f --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/activity/Report.java @@ -0,0 +1,174 @@ +package com.codesdream.ase.model.activity; + +import com.codesdream.ase.model.permission.User; +import lombok.Data; + +import javax.persistence.*; +import java.awt.*; +import java.util.Date; +import java.util.List; +import java.util.Set; + +@Data +@Entity +@Table(name = "report") +public class Report { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + //活动标题 + @Column(nullable = false, unique = true) + private String title; + + //创建人 + @OneToOne(cascade = CascadeType.MERGE) + private User creator; + + //活动类型 + @Column(nullable = false) + private String type; + + //活动描述 + @Column(nullable = true) + private String description; + + //活动周期,格式:阿拉伯数字数字+单位,0表示无周期 + @Column(nullable = true) + private String cycle; + + //自愿参与人列表 + @ManyToMany(cascade = CascadeType.MERGE) + @JoinTable(name = "act_volunteer") + private Set volunteers; + + //参与人列表 + @ManyToMany(cascade = CascadeType.MERGE) + @JoinTable(name = "act_participate", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "participate_id") + } + ) + private Set participateGroup; + + //实际参与人列表 + @ManyToMany(cascade = CascadeType.ALL) + @JoinTable(name = "act_participated", + joinColumns = { + @JoinColumn(name = "act_id" ) + }, + inverseJoinColumns = { + @JoinColumn(name = "participated_id") + } + ) + private Set participatedGroup; + + //可报名人员列表 + @ManyToMany(cascade = CascadeType.MERGE) + @JoinTable(name = "act_sign", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "sign_id") + } + ) + private Set signGroup; + + //已报名人员列表 + @ManyToMany(cascade = CascadeType.MERGE) + @JoinTable(name = "act_signed", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "signed_id") + } + ) + private Set signedGroup; + + //可见人员列表 + @ManyToMany(cascade = CascadeType.MERGE) + @JoinTable(name = "act_vis", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "vis_id") + } + ) + private Set visibleGroup; + + //通知人员列表 + @ManyToMany(cascade = CascadeType.ALL) + @JoinTable(name = "act_inform", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "inform_id") + } + ) + private Set informGroup; + + //已通知人员列表 + @ManyToMany(cascade = CascadeType.ALL) + @JoinTable(name = "act_informed", + joinColumns = { + @JoinColumn(name = "act_id") + }, + inverseJoinColumns = { + @JoinColumn(name = "informed_id") + } + ) + private Set informedGroup; + + //计划开始时间 + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "plan_period") + private Period planPeriod; + + //实际开始时间 + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "real_period") + private Period realPeriod; + + //主要负责人 + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "chief_manager", nullable = false) + private User chiefManager; + + //次要负责人 + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinColumn(name = "act_id") + private List assistManagers; + + + //考勤安排 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinColumn(name = "attendance") + private Attendance attendance; + + //活动笔记 + @Column(name = "notes") + private String notes; + + //图表 + @ElementCollection(targetClass = java.lang.String.class) + @Column(name = "charts") + private List charts; + + //附件url + @Column(name = "enclosure") + private String enclosure; + + //活动 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinColumn(name = "activity") + private Activity activity; + +} diff --git a/src/main/java/com/codesdream/ase/model/activity/UserActivity.java b/src/main/java/com/codesdream/ase/model/activity/UserActivity.java new file mode 100644 index 0000000..7e54c53 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/activity/UserActivity.java @@ -0,0 +1,55 @@ +package com.codesdream.ase.model.activity; + +import com.codesdream.ase.model.permission.User; +import javafx.scene.chart.ScatterChart; +import lombok.Data; + +import javax.persistence.*; +import java.util.List; + +@Data +@Entity +@Table(name = "user_act") +public class UserActivity { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + //关联的用户 + @OneToOne(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY, mappedBy = "userActivity") + @JoinColumn(nullable = false, unique = true) + private User user; + + //主要负责的活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List mainResponsibleActs; + + //次要负责的活动 + @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List secondaryResponsibleActs; + + //可见的活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List visibleActs; + + //创建的活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List createdActs; + + //可报名的活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List signUpActs; + + //已经参与的活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List participatedActs; + + //正在(将要)参与的活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List participatingActs; + + //打卡签到活动 + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) + private List clockIns; +} diff --git a/src/main/java/com/codesdream/ase/model/auth/JSONToken.java b/src/main/java/com/codesdream/ase/model/auth/JSONToken.java new file mode 100644 index 0000000..751ebf1 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/auth/JSONToken.java @@ -0,0 +1,31 @@ +package com.codesdream.ase.model.auth; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +// token记录 +@Data +@Entity +@Table(name = "json_tokens") +public class JSONToken { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Integer id; + + // token对应的用户 + @Column(unique = true) + private String username; + + // token值 + @Column(unique = true) + private String token; + + // 客户端标识口令 + private String clientCode; + + // token过期时间 + private Date expiredDate; +} diff --git a/src/main/java/com/codesdream/ase/model/auth/PreValidationCode.java b/src/main/java/com/codesdream/ase/model/auth/PreValidationCode.java new file mode 100644 index 0000000..41c9f3b --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/auth/PreValidationCode.java @@ -0,0 +1,20 @@ +package com.codesdream.ase.model.auth; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +@Data +@Entity +@Table(name = "pre_validation_code") +public class PreValidationCode { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + private String value; + + private Date date = new Date(); + +} diff --git a/src/main/java/com/codesdream/ase/model/information/BaseAdministrativeDivision.java b/src/main/java/com/codesdream/ase/model/information/BaseAdministrativeDivision.java new file mode 100644 index 0000000..39dd5c7 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BaseAdministrativeDivision.java @@ -0,0 +1,20 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 行政区划基本信息 + */ +@Data +@Entity +@Table(name = "base_administrative_division") +public class BaseAdministrativeDivision { + @Id + private int id; + + private String name; + + private int parentId; +} diff --git a/src/main/java/com/codesdream/ase/model/information/BaseCandidateCategory.java b/src/main/java/com/codesdream/ase/model/information/BaseCandidateCategory.java new file mode 100644 index 0000000..a399a15 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BaseCandidateCategory.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 考生类别基本信息 + */ +@Data +@Entity +@Table(name = "base_candidate_category") +public class BaseCandidateCategory { + @Id + private int id; + + private String name; + +} diff --git a/src/main/java/com/codesdream/ase/model/information/BaseCollege.java b/src/main/java/com/codesdream/ase/model/information/BaseCollege.java new file mode 100644 index 0000000..a2cdae9 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BaseCollege.java @@ -0,0 +1,21 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 学院基本信息 + */ +@Data +@Entity +@Table(name = "base_college") +public class BaseCollege { + @Id + private int id; + + private String name; + + // 学院代码 + private int number; +} diff --git a/src/main/java/com/codesdream/ase/model/information/BaseEthnic.java b/src/main/java/com/codesdream/ase/model/information/BaseEthnic.java new file mode 100644 index 0000000..4188845 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BaseEthnic.java @@ -0,0 +1,18 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 民族基本信息 + */ +@Data +@Entity +@Table(name = "base_ethnic") +public class BaseEthnic { + @Id + private int id; + + private String name; +} diff --git a/src/main/java/com/codesdream/ase/model/information/BaseMajor.java b/src/main/java/com/codesdream/ase/model/information/BaseMajor.java new file mode 100644 index 0000000..1bc53ba --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BaseMajor.java @@ -0,0 +1,18 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 专业基本信息 + */ +@Data +@Entity +@Table(name = "base_major") +public class BaseMajor { + @Id + private String id; + + private String name; +} diff --git a/src/main/java/com/codesdream/ase/model/information/BasePoliticalStatus.java b/src/main/java/com/codesdream/ase/model/information/BasePoliticalStatus.java new file mode 100644 index 0000000..1cc2584 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BasePoliticalStatus.java @@ -0,0 +1,18 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 政治面貌基本信息 + */ +@Data +@Entity +@Table(name = "base_political_status") +public class BasePoliticalStatus { + @Id + private int id; + + private String name; +} diff --git a/src/main/java/com/codesdream/ase/model/information/BaseStudentInfo.java b/src/main/java/com/codesdream/ase/model/information/BaseStudentInfo.java new file mode 100644 index 0000000..dcf0113 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/information/BaseStudentInfo.java @@ -0,0 +1,42 @@ +package com.codesdream.ase.model.information; + +import lombok.Data; + +import javax.persistence.*; + +/** + * 学生基本真实信息 + */ +@Data +@Entity +@Table(name = "base_student_info") +public class BaseStudentInfo { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + // 真实姓名 + private String name = ""; + // 学号 + private String studentId = ""; + // 班号 + private String classId = ""; + // 性别 + private String sex = ""; + // 民族 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseEthnic ethnic = null; + // 学院 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseCollege college = null; + // 专业 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseMajor major = null; + // 政治面貌 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BasePoliticalStatus politicalStatus = null; + // 省份地区 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseAdministrativeDivision administrativeDivision = null; + +} diff --git a/src/main/java/com/codesdream/ase/model/leaves/Leave.java b/src/main/java/com/codesdream/ase/model/leaves/Leave.java new file mode 100644 index 0000000..5f65fc7 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/leaves/Leave.java @@ -0,0 +1,48 @@ +package com.codesdream.ase.model.leaves; + +import com.codesdream.ase.model.permission.User; +import lombok.Data; +import java.util.*; +import javax.persistence.*; + +@Data +@Entity +@Table(name = "leaves") +public class Leave { + //请假的编号 + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + //发出人 + @Column + private String userFrom; + //审批人容器 + @ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private Set userTo; + //请假原因 + @Column + private String reasonToLeave; + + + //请假类型 病假,事假等 + @Column(nullable = false) + private String type; + //批准状态 + @Column(nullable = false) + private String authentication="Pending"; + + //审核备注 + @Column + private String comment; + //开始时间 + @Column(nullable = false) + private Date startTime; + + @Column(nullable = false) + private Date endTime; + //申请时间 + private Date applyTime; + //认证时间 + private Date authTime; + +} diff --git a/src/main/java/com/codesdream/ase/model/permission/Function.java b/src/main/java/com/codesdream/ase/model/permission/Function.java new file mode 100644 index 0000000..b1b1cf5 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/Function.java @@ -0,0 +1,31 @@ +package com.codesdream.ase.model.permission; + +import io.swagger.models.auth.In; +import lombok.Data; +import org.hibernate.annotations.GeneratorType; + +import javax.persistence.*; + +/** + * 功能 + */ +@Data +@Entity +@Table(name = "function") +public class Function { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Integer id; + + // 功能名称 + private String name; + + // 功能描述 + private String description; + + @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private Function father = null; + + // 授权url + private String url; +} diff --git a/src/main/java/com/codesdream/ase/model/permission/FunctionalPermissionContainer.java b/src/main/java/com/codesdream/ase/model/permission/FunctionalPermissionContainer.java new file mode 100644 index 0000000..281f724 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/FunctionalPermissionContainer.java @@ -0,0 +1,51 @@ +package com.codesdream.ase.model.permission; + +import lombok.Data; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + + +/** + * 功能性权限容器 + */ +@Data +@Entity +@Table(name = "functional_permit_container") +public class FunctionalPermissionContainer { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 功能性权限容器名 + @Column(unique = true) + private String name = ""; + + // 功能性权限容器解释 + private String description = ""; + + // 对应访问控制角色列表W + @ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + @Column(nullable = false) + private Set functions = new HashSet<>(); + + // 是否启用 + @Column(nullable = false) + private boolean enabled = true; + + // 是否删除 + @Column(nullable = false) + private boolean deleted = false; + + public FunctionalPermissionContainer(String name) { + this.name = name; + } + + public FunctionalPermissionContainer(){ + + } + +} diff --git a/src/main/java/com/codesdream/ase/model/permission/FunctionalScopeRelation.java b/src/main/java/com/codesdream/ase/model/permission/FunctionalScopeRelation.java new file mode 100644 index 0000000..cb76aa6 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/FunctionalScopeRelation.java @@ -0,0 +1,31 @@ +package com.codesdream.ase.model.permission; + + +import lombok.Data; + +import javax.persistence.*; + +/** + * 功能性权限容器与范围性权限容器关联对 (单项权力) + */ +@Data +@Entity +@Table(name = "functional_scope_relation") +public class FunctionalScopeRelation { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + private String name; + + private String description; + + // 对应功能性权限容器 + @OneToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) + private FunctionalPermissionContainer functionalPermissionContainer; + + // 对应范围性权限容器 + @OneToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) + private ScopePermissionContainer scopePermissionContainer; +} diff --git a/src/main/java/com/codesdream/ase/model/permission/PermissionContainersCollection.java b/src/main/java/com/codesdream/ase/model/permission/PermissionContainersCollection.java new file mode 100644 index 0000000..f7b75c0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/PermissionContainersCollection.java @@ -0,0 +1,37 @@ +package com.codesdream.ase.model.permission; + +import lombok.Data; +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +/** + * 权限容器集合(多项权力) + */ +@Data +@Entity +@Table(name = "permission_container_collection") +public class PermissionContainersCollection { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 权限容器集合名称 + @Column(unique = true) + private String name = ""; + + // 权限容器集合概述 + private String description = ""; + + // 对应功能性权限容器与范围性权限容器关联对 + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private Set functionalScopeRelations = new HashSet<>(); + + public PermissionContainersCollection(String name){ + this.name = name; + } + + public PermissionContainersCollection(){ + + } +} diff --git a/src/main/java/com/codesdream/ase/model/permission/ScopePermissionContainer.java b/src/main/java/com/codesdream/ase/model/permission/ScopePermissionContainer.java new file mode 100644 index 0000000..5c60e36 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/ScopePermissionContainer.java @@ -0,0 +1,39 @@ +package com.codesdream.ase.model.permission; + +import lombok.Data; + +import javax.persistence.*; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +@Data +@Entity +@Table(name = "scope_permit_container") +public class ScopePermissionContainer { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @Column(unique = true) + private String name = ""; + + private String description = ""; + + @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH}, fetch = FetchType.LAZY) + private List tags = new LinkedList<>(); + + @Column(nullable = false) + private boolean enabled = true; + + @Column(nullable = false) + private boolean deleted = false; + + public ScopePermissionContainer(String name){ + this.name = name; + } + + public ScopePermissionContainer(){ + + } +} diff --git a/src/main/java/com/codesdream/ase/model/permission/Tag.java b/src/main/java/com/codesdream/ase/model/permission/Tag.java new file mode 100644 index 0000000..ef59aa5 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/Tag.java @@ -0,0 +1,52 @@ +package com.codesdream.ase.model.permission; + +import lombok.Data; + + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +/** + * 标签 + */ +@Data +@Entity +@Table(name = "tag") +public class Tag { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 标签名 + @Column(unique = true) + private String name = ""; + + // 标签解释 + private String description = ""; + + // 标签关联用户 + @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH}, fetch = FetchType.LAZY) + private Set users = new HashSet<>(); + + // 启用标志 + @Column(nullable = false) + private boolean enabled = true; + + // 删除标志 + @Column(nullable = false) + private boolean deleted = false; + + // 对应权限容器集合 + @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH}, fetch = FetchType.LAZY) + private Set permissionContainersCollections = new HashSet<>(); + + public Tag(String name) { + this.name = name; + } + + public Tag(){ + + } + +} diff --git a/src/main/java/com/codesdream/ase/model/permission/User.java b/src/main/java/com/codesdream/ase/model/permission/User.java new file mode 100644 index 0000000..6819bdc --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/User.java @@ -0,0 +1,93 @@ +package com.codesdream.ase.model.permission; + +import com.codesdream.ase.model.activity.UserActivity; +import lombok.Data; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +@Data +@Entity +@Table(name = "user") +public class User implements UserDetails { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + // 用户名 + @Column(unique = true, nullable = false) + private String username; + + // 密码(必须以哈希值sha256储存) + @Column(nullable = false) + private String password; + + // 账号是否过期 + private boolean accountNonExpired; + + // 账号是否被封禁 + private boolean accountNonLocked; + + // 证书是否过期 + private boolean credentialsNonExpired; + + // 账号是否激活 + private boolean enabled; + + // 是否删除 + @Column(nullable = false) + private boolean deleted; + + // 访问控制角色(不在数据表中) Spring Security + private transient Collection authorities; + + // 用户关联标签 + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private Set tags; + + // 用户详细信息 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private UserDetail userDetail; + + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private UserActivity userActivity; + + // 用户认证表 + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private UserAuth userAuth; + + + public User(String username, String password) { + this.username = username; + this.password = password; + + initDefault(); + } + + public User() { + this.username = null; + this.password = null; + this.deleted = false; + + initDefault(); + } + + // 用默认的方式初始化User对象的值 + private void initDefault(){ + this.accountNonExpired = true; + this.accountNonLocked = true; + this.credentialsNonExpired = true; + this.deleted = false; + this.enabled = true; + this.tags = new HashSet<>(); + this.userDetail = new UserDetail(); + this.userAuth = new UserAuth(); + this.authorities = new ArrayList<>(); + } + +} diff --git a/src/main/java/com/codesdream/ase/model/permission/UserAuth.java b/src/main/java/com/codesdream/ase/model/permission/UserAuth.java new file mode 100644 index 0000000..f4dc777 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/UserAuth.java @@ -0,0 +1,27 @@ +package com.codesdream.ase.model.permission; + +import lombok.Data; + +import javax.persistence.*; + +@Data +@Entity +@Table(name = "user_auth") +public class UserAuth { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 密保问题 + private String userQuestion = null; + + // 密保问题答案 + private String userAnswer = null; + + // 用户邮箱 + private String mail = null; + + // 学生ID + private String studentID = null; +} diff --git a/src/main/java/com/codesdream/ase/model/permission/UserDetail.java b/src/main/java/com/codesdream/ase/model/permission/UserDetail.java new file mode 100644 index 0000000..42cf013 --- /dev/null +++ b/src/main/java/com/codesdream/ase/model/permission/UserDetail.java @@ -0,0 +1,50 @@ +package com.codesdream.ase.model.permission; + +import com.codesdream.ase.model.information.*; +import lombok.Data; + +import javax.persistence.*; + +/** + * 用户相关详细信息 + */ +@Data +@Entity +@Table(name = "user_detail") +public class UserDetail { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + // 学生班号 + private String classId = null; + + // 所属地区 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseAdministrativeDivision baseAdministrativeDivision = null; + + // 所属学院 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseCollege baseCollege = null; + + // 所属专业 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseMajor baseMajor = null; + + // 民族 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BaseEthnic baseEthnic = null; + + // 政治面貌 + @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY) + private BasePoliticalStatus basePoliticalStatus = null; + + // 真实姓名 + private String realName = null; + + // 性别 + private String sex = null; + + // 在校认证状态 + private boolean atSchool = false; +} diff --git a/src/main/java/com/codesdream/ase/repository/activity/ActivityRepository.java b/src/main/java/com/codesdream/ase/repository/activity/ActivityRepository.java new file mode 100644 index 0000000..aa5ea5b --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/activity/ActivityRepository.java @@ -0,0 +1,21 @@ +package com.codesdream.ase.repository.activity; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.permission.User; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface ActivityRepository extends JpaRepository { + + Optional findByTitle(String Title); + + Optional findByCreator(String creatorName); + +} \ No newline at end of file diff --git a/src/main/java/com/codesdream/ase/repository/activity/AttendanceRepository.java b/src/main/java/com/codesdream/ase/repository/activity/AttendanceRepository.java new file mode 100644 index 0000000..31776a3 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/activity/AttendanceRepository.java @@ -0,0 +1,9 @@ +package com.codesdream.ase.repository.activity; + +import com.codesdream.ase.model.activity.Attendance; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface AttendanceRepository extends CrudRepository { +} diff --git a/src/main/java/com/codesdream/ase/repository/activity/PeriodRepository.java b/src/main/java/com/codesdream/ase/repository/activity/PeriodRepository.java new file mode 100644 index 0000000..24a45ad --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/activity/PeriodRepository.java @@ -0,0 +1,9 @@ +package com.codesdream.ase.repository.activity; + +import com.codesdream.ase.model.activity.Period; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface PeriodRepository extends CrudRepository { +} diff --git a/src/main/java/com/codesdream/ase/repository/activity/ReportRepository.java b/src/main/java/com/codesdream/ase/repository/activity/ReportRepository.java new file mode 100644 index 0000000..fd2e581 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/activity/ReportRepository.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.repository.activity; + +import com.codesdream.ase.model.activity.Report; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface ReportRepository extends CrudRepository { + Optional findByTitle(String reportTitle); + + Optional findByCreator(String creatorName); +} diff --git a/src/main/java/com/codesdream/ase/repository/activity/UserActivityRepository.java b/src/main/java/com/codesdream/ase/repository/activity/UserActivityRepository.java new file mode 100644 index 0000000..dbbef67 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/activity/UserActivityRepository.java @@ -0,0 +1,17 @@ +package com.codesdream.ase.repository.activity; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.UserActivity; +import com.codesdream.ase.model.permission.User; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface UserActivityRepository extends CrudRepository { + + UserActivity findByUser(User user); + +} diff --git a/src/main/java/com/codesdream/ase/repository/auth/JSONTokenRepository.java b/src/main/java/com/codesdream/ase/repository/auth/JSONTokenRepository.java new file mode 100644 index 0000000..a2a4f68 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/auth/JSONTokenRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.auth; + +import com.codesdream.ase.model.auth.JSONToken; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface JSONTokenRepository extends CrudRepository { + Optional findByUsername(String username); +} diff --git a/src/main/java/com/codesdream/ase/repository/auth/PreValidationCodeRepository.java b/src/main/java/com/codesdream/ase/repository/auth/PreValidationCodeRepository.java new file mode 100644 index 0000000..8b1d389 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/auth/PreValidationCodeRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.auth; + +import com.codesdream.ase.model.auth.PreValidationCode; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface PreValidationCodeRepository extends CrudRepository { + Optional findByValue(String value); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BaseAdministrativeDivisionRepository.java b/src/main/java/com/codesdream/ase/repository/information/BaseAdministrativeDivisionRepository.java new file mode 100644 index 0000000..825bb3a --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BaseAdministrativeDivisionRepository.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BaseAdministrativeDivision; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface BaseAdministrativeDivisionRepository extends CrudRepository { + Optional findByName(String name); + Optional findByNameContainsAndParentId(String name, int parentId); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BaseCandidateCategoryRepository.java b/src/main/java/com/codesdream/ase/repository/information/BaseCandidateCategoryRepository.java new file mode 100644 index 0000000..1536e41 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BaseCandidateCategoryRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BaseCandidateCategory; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface BaseCandidateCategoryRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BaseCollegeRepository.java b/src/main/java/com/codesdream/ase/repository/information/BaseCollegeRepository.java new file mode 100644 index 0000000..d149b4d --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BaseCollegeRepository.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BaseCollege; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface BaseCollegeRepository extends CrudRepository { + Optional findByName(String name); + Optional findByNumber(Integer number); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BaseEthnicRepository.java b/src/main/java/com/codesdream/ase/repository/information/BaseEthnicRepository.java new file mode 100644 index 0000000..b007952 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BaseEthnicRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BaseEthnic; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface BaseEthnicRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BaseMajorRepository.java b/src/main/java/com/codesdream/ase/repository/information/BaseMajorRepository.java new file mode 100644 index 0000000..9282167 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BaseMajorRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BaseMajor; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface BaseMajorRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BasePoliticalStatusRepository.java b/src/main/java/com/codesdream/ase/repository/information/BasePoliticalStatusRepository.java new file mode 100644 index 0000000..1a42b33 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BasePoliticalStatusRepository.java @@ -0,0 +1,10 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BasePoliticalStatus; +import org.springframework.data.repository.CrudRepository; + +import java.util.Optional; + +public interface BasePoliticalStatusRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/information/BaseStudentInfoRepository.java b/src/main/java/com/codesdream/ase/repository/information/BaseStudentInfoRepository.java new file mode 100644 index 0000000..69f2d85 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/information/BaseStudentInfoRepository.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.repository.information; + +import com.codesdream.ase.model.information.BaseStudentInfo; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface BaseStudentInfoRepository extends CrudRepository { + // 通过学号查找 + Optional findByStudentId(String student_id); + +} diff --git a/src/main/java/com/codesdream/ase/repository/leaves/LeaveRepository.java b/src/main/java/com/codesdream/ase/repository/leaves/LeaveRepository.java new file mode 100644 index 0000000..ee238b0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/leaves/LeaveRepository.java @@ -0,0 +1,11 @@ +package com.codesdream.ase.repository.leaves; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.model.leaves.Leave; +import org.springframework.data.repository.CrudRepository; + +import java.util.Optional; + +public interface LeaveRepository extends CrudRepository{ + + +} diff --git a/src/main/java/com/codesdream/ase/repository/permission/FunctionRepository.java b/src/main/java/com/codesdream/ase/repository/permission/FunctionRepository.java new file mode 100644 index 0000000..49f34f2 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/permission/FunctionRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.permission; + +import com.codesdream.ase.model.permission.Function; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface FunctionRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/permission/FunctionalPermissionContainerRepository.java b/src/main/java/com/codesdream/ase/repository/permission/FunctionalPermissionContainerRepository.java new file mode 100644 index 0000000..91cc1c8 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/permission/FunctionalPermissionContainerRepository.java @@ -0,0 +1,12 @@ +package com.codesdream.ase.repository.permission; + +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface FunctionalPermissionContainerRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/permission/PermissionContainersCollectionRepository.java b/src/main/java/com/codesdream/ase/repository/permission/PermissionContainersCollectionRepository.java new file mode 100644 index 0000000..1b7b242 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/permission/PermissionContainersCollectionRepository.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.repository.permission; + +import com.codesdream.ase.model.permission.PermissionContainersCollection; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface PermissionContainersCollectionRepository + extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/permission/ScopePermissionContainerRepository.java b/src/main/java/com/codesdream/ase/repository/permission/ScopePermissionContainerRepository.java new file mode 100644 index 0000000..1b808ce --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/permission/ScopePermissionContainerRepository.java @@ -0,0 +1,10 @@ +package com.codesdream.ase.repository.permission; + +import com.codesdream.ase.model.permission.ScopePermissionContainer; +import org.springframework.data.repository.CrudRepository; + +import java.util.Optional; + +public interface ScopePermissionContainerRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/permission/TagRepository.java b/src/main/java/com/codesdream/ase/repository/permission/TagRepository.java new file mode 100644 index 0000000..f46de40 --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/permission/TagRepository.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.repository.permission; + +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import com.codesdream.ase.model.permission.Tag; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; +import java.util.Set; + +@Repository +public interface TagRepository extends CrudRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/codesdream/ase/repository/permission/UserRepository.java b/src/main/java/com/codesdream/ase/repository/permission/UserRepository.java new file mode 100644 index 0000000..6ba5c8e --- /dev/null +++ b/src/main/java/com/codesdream/ase/repository/permission/UserRepository.java @@ -0,0 +1,14 @@ +package com.codesdream.ase.repository.permission; + +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.model.permission.User; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + + +@Repository +public interface UserRepository extends CrudRepository { + Optional findByUsername(String username); +} diff --git a/src/main/java/com/codesdream/ase/service/ASEUserDetailsService.java b/src/main/java/com/codesdream/ase/service/ASEUserDetailsService.java new file mode 100644 index 0000000..6aae6c0 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/ASEUserDetailsService.java @@ -0,0 +1,38 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.component.permission.UserAuthoritiesGenerator; +import com.codesdream.ase.exception.notfound.UserNotFoundException; +import com.codesdream.ase.model.permission.User; +import org.springframework.security.authentication.AuthenticationServiceException; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.transaction.Transactional; +import java.util.Optional; + +@Service +public class ASEUserDetailsService implements UserDetailsService { + + @Resource + IUserService userService; + + @Resource + UserAuthoritiesGenerator userAuthoritiesGenerator; + + @Override + @Transactional + public UserDetails loadUserByUsername(String s) { + try { + Optional userOptional = userService.findUserByUsername(s); + if(!userOptional.isPresent()) throw new UserNotFoundException(s); + User user = userOptional.get(); + user.setAuthorities(userAuthoritiesGenerator.grantedAuthorities(user)); + return user; + } catch (UserNotFoundException e){ + throw new AuthenticationServiceException("User Not Exist"); + } + + } +} diff --git a/src/main/java/com/codesdream/ase/service/AchievementService.java b/src/main/java/com/codesdream/ase/service/AchievementService.java new file mode 100644 index 0000000..e2f7a0a --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/AchievementService.java @@ -0,0 +1,8 @@ +package com.codesdream.ase.service; + +import org.springframework.stereotype.Service; + +@Service +public class AchievementService { + +} diff --git a/src/main/java/com/codesdream/ase/service/ActivityService.java b/src/main/java/com/codesdream/ase/service/ActivityService.java new file mode 100644 index 0000000..9c42112 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/ActivityService.java @@ -0,0 +1,180 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Period; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.model.activity.UserActivity; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.repository.activity.ActivityRepository; +import com.codesdream.ase.repository.activity.UserActivityRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; + +@Service +public class ActivityService implements IActivityService { + + @Resource + private ActivityRepository activityRepository; + + @Resource + private UserActivityRepository userActivityRepository; + + @Override + public Optional findActivityByTitle(String title) { + return activityRepository.findByTitle(title); + } + + @Override + public Optional findActivityByCreator(String creatorName) { + return activityRepository.findByCreator(creatorName); + } + + + @Override + public List findActivityByType(User user, String type) { + + List activities = this.findAll(user); + List actsByType = new ArrayList<>(); + for (Activity activity : activities) { + if (activity.getType().equals(type)) { + actsByType.add(activity); + } + } + return actsByType; + } + + @Override + public Activity save(Activity activity) { + return activityRepository.save(activity); + } + + @Override + public Activity addReport(Activity activity, Report report) { + activity.setReport(report); + return update(activity); + } + + @Override + public void delete(Activity activity) { + activityRepository.delete(activity); + } + + @Override + public Activity update(Activity activity) { + return activityRepository.save(activity); + } + + @Override + public Activity createActivity(Activity activity) { + return activityRepository.save(activity); + } + + @Override + public List findMainResponsibleActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getMainResponsibleActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findSecondaryResponsibleActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getSecondaryResponsibleActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findVisibleActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getVisibleActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findSignActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getSignUpActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findParticipatedActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getParticipatedActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findParticipatingActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getParticipatingActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findCreatedActs(User user) { + + UserActivity userActivity = userActivityRepository.findByUser(user); + List acts = userActivity.getCreatedActs(); + Collections.sort(acts, new ActivityComparator()); + return acts; + } + + @Override + public List findAll(User user) { + + List activities = findCreatedActs(user); + List activities1 = findMainResponsibleActs(user); + List activities2 = findSecondaryResponsibleActs(user); + List activities3 = findParticipatingActs(user); + List activities4 = findParticipatedActs(user); + List activities5 = findParticipatingActs(user); + List activities6 = findSignActs(user); + List activities7 = findVisibleActs(user); + Set activitySet = new HashSet<>(); + activitySet.addAll(activities); + activitySet.addAll(activities1); + activitySet.addAll(activities2); + activitySet.addAll(activities3); + activitySet.addAll(activities4); + activitySet.addAll(activities5); + activitySet.addAll(activities6); + activitySet.addAll(activities7); + List res = new ArrayList<>(activitySet); + Collections.sort(res, new ActivityComparator()); + return res; + } + + +} + +class ActivityComparator implements Comparator { + + + @Override + public int compare(Activity o1, Activity o2) { + + Period p1 = o1.getRealPeriod(); + Period p2 = o2.getRealPeriod(); + LocalDateTime s1 = p1.getStartTime(); + LocalDateTime s2 = p2.getStartTime(); + if (s1.isBefore(s2)) return -1; + else if (s1.isAfter(s2)) return 1; + else return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/codesdream/ase/service/AttendanceService.java b/src/main/java/com/codesdream/ase/service/AttendanceService.java new file mode 100644 index 0000000..5484358 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/AttendanceService.java @@ -0,0 +1,18 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.activity.Attendance; +import com.codesdream.ase.repository.activity.AttendanceRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class AttendanceService { + + @Resource + AttendanceRepository attendanceRepository; + + public Attendance save(Attendance attendance) { + return attendanceRepository.save(attendance); + } +} diff --git a/src/main/java/com/codesdream/ase/service/AuthService.java b/src/main/java/com/codesdream/ase/service/AuthService.java new file mode 100644 index 0000000..85891f7 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/AuthService.java @@ -0,0 +1,92 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.component.auth.AuthTokenGenerator; +import com.codesdream.ase.component.auth.TimestampExpiredChecker; +import com.codesdream.ase.model.auth.JSONToken; +import com.codesdream.ase.model.auth.PreValidationCode; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.repository.auth.JSONTokenRepository; +import com.codesdream.ase.repository.auth.PreValidationCodeRepository; +import javafx.util.Pair; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.Optional; +import java.util.UUID; + +// 认证服务 +@Service +public class AuthService implements IAuthService { + + @Resource + private JSONTokenRepository jsonTokenRepository; + + @Resource + private IUserService userService; + + @Resource + private AuthTokenGenerator authTokenGenerator; + + @Resource + private PreValidationCodeRepository preValidationCodeRepository; + + @Resource + private TimestampExpiredChecker timestampExpiredChecker; + + @Override + public Optional findTokenByUserName(String username) { + return jsonTokenRepository.findByUsername(username); + } + + @Override + public boolean checkTokenIfExpired(JSONToken token) { + return token.getExpiredDate().compareTo(new Date()) <= 0; + } + + @Override + public Optional userNewTokenGetter(String username, String clientCode) { + Pair userPair = userService.checkIfUserExists(username); + if(userPair.getKey()){ + Optional jsonTokenOptional = jsonTokenRepository.findByUsername(username); + JSONToken token = jsonTokenOptional.orElseGet(JSONToken::new); + + // 过期时间设置为三十分钟后 + long currentTime = System.currentTimeMillis(); + currentTime +=30*60*1000; + token.setExpiredDate(new Date(currentTime)); + token.setToken(authTokenGenerator.generateAuthToken(username)); + + + // 设置用户名 + token.setUsername(username); + // 设置客户端代号 + token.setClientCode(clientCode); + + // 在数据库中更新新的token + token = jsonTokenRepository.save(token); + return Optional.ofNullable(token.getToken()); + } + else return Optional.empty(); + } + + @Override + public String preValidationCodeGetter() { + PreValidationCode preValidationCode = new + PreValidationCode(); + preValidationCode.setValue(UUID.randomUUID().toString()); + preValidationCode = preValidationCodeRepository.save(preValidationCode); + return preValidationCode.getValue(); + } + + @Override + public boolean preValidationCodeChecker(String pvc) { + Optional preValidationCode = + preValidationCodeRepository.findByValue(pvc); + if(preValidationCode.filter(validationCode -> timestampExpiredChecker.checkDateBeforeMaxTime(validationCode.getDate(), 60)).isPresent()){ + preValidationCodeRepository.delete(preValidationCode.get()); + return true; + } + else return false; + } +} diff --git a/src/main/java/com/codesdream/ase/service/BaseInformationService.java b/src/main/java/com/codesdream/ase/service/BaseInformationService.java new file mode 100644 index 0000000..b659029 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/BaseInformationService.java @@ -0,0 +1,287 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.component.datamanager.DataTable; +import com.codesdream.ase.exception.badrequest.BaseInformationAlreadyExistException; +import com.codesdream.ase.exception.badrequest.BaseInformationIllegalException; +import com.codesdream.ase.exception.notfound.BaseInformationNotFoundException; +import com.codesdream.ase.model.information.*; +import com.codesdream.ase.repository.information.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; +import java.util.Vector; + +@Slf4j +@Service +public class BaseInformationService implements IBaseInformationService { + + @Resource + private BaseAdministrativeDivisionRepository administrativeDivisionRepository; + + @Resource + private BaseCandidateCategoryRepository candidateCategoryRepository; + + @Resource + private BaseCollegeRepository collegeRepository; + + @Resource + private BaseEthnicRepository ethnicRepository; + + @Resource + private BaseMajorRepository majorRepository; + + @Resource + private BasePoliticalStatusRepository politicalStatusRepository; + + @Resource + private BaseStudentInfoRepository studentInfoRepository; + + @Override + public boolean checkAdministrativeDivision(String name) { + Optional administrativeDivision = + administrativeDivisionRepository.findByName(name); + return administrativeDivision.isPresent(); + } + + @Override + public boolean checkCollege(String name) { + Optional college = + collegeRepository.findByName(name); + return college.isPresent(); + } + + @Override + public boolean checkEthnic(String name) { + Optional ethnic = + ethnicRepository.findByName(name); + return ethnic.isPresent(); + } + + @Override + public boolean checkMajor(String name) { + Optional major = + majorRepository.findByName(name); + return major.isPresent(); + } + + @Override + public boolean checkPoliticalStatus(String name) { + Optional politicalStatus = + politicalStatusRepository.findByName(name); + return politicalStatus.isPresent(); + } + + @Override + public boolean checkCandidateStatus(String name) { + Optional candidateCategory = + candidateCategoryRepository.findByName(name); + + return false; + } + + @Override + public boolean checkStudentInfo(String studentId) { + Optional studentInfo = + studentInfoRepository.findByStudentId(studentId); + return studentInfo.isPresent(); + } + + // 查找省级行政区域 + @Override + public BaseAdministrativeDivision findAdministrativeDivisionByName(String name) { + Optional administrativeDivision = + administrativeDivisionRepository.findByNameContainsAndParentId(name, 0); + // 检查 + if(!administrativeDivision.isPresent()) { + // 如果填入未知数据 + log.warn("省级行政区域: " + name + " 未在数据库中找到,将使用未知符号占位"); + administrativeDivision = administrativeDivisionRepository.findByName("未知"); + if(administrativeDivision.isPresent()) { + return administrativeDivision.get(); + } + else throw new BaseInformationNotFoundException(BaseAdministrativeDivision.class, name); + + } + return administrativeDivision.get(); + } + + @Override + public BaseCollege findCollegeByName(String name) { + Optional college = + collegeRepository.findByName(name); + // 检查 + if(!college.isPresent()) throw new BaseInformationNotFoundException(BaseCollege.class, name); + return college.get(); + } + + @Override + public BaseEthnic findEthnicByName(String name) { + Optional ethnic = + ethnicRepository.findByName(name); + if(!ethnic.isPresent()) throw new BaseInformationNotFoundException(BaseEthnic.class, name); + return ethnic.get(); + } + + @Override + public BaseMajor findMajorByName(String name) { + Optional major = + majorRepository.findByName(name); + if(!major.isPresent()) throw new BaseInformationNotFoundException(BaseMajor.class, name); + return major.get(); + } + + @Override + public BasePoliticalStatus findPoliticalStatusByName(String name) { + Optional politicalStatus = + politicalStatusRepository.findByName(name); + if(!politicalStatus.isPresent()) + throw new BaseInformationNotFoundException(BasePoliticalStatus.class, name); + return politicalStatus.get(); + } + + @Override + public BaseCandidateCategory findCandidateCategoryByName(String name) { + Optional candidateCategory = + candidateCategoryRepository.findByName(name); + if(!candidateCategory.isPresent()) + throw new BaseInformationNotFoundException(BaseCandidateCategory.class, name); + return candidateCategory.get(); + } + + @Override + public BaseStudentInfo findStudentInfoByStudentId(String studentId) { + Optional studentInfo = + studentInfoRepository.findByStudentId(studentId); + if(!studentInfo.isPresent()) + throw new BaseInformationNotFoundException(BaseStudentInfo.class, studentId); + return studentInfo.get(); + } + + @Override + public void studentInfoImportFromDataTable(DataTable table) { + Collection> infoIndexOptional = new ArrayList<>(); + + infoIndexOptional.add(table.getTitleIndex("学号")); + infoIndexOptional.add(table.getTitleIndex("班号")); + infoIndexOptional.add(table.getTitleIndex("姓名")); + infoIndexOptional.add(table.getTitleIndex("性别")); + infoIndexOptional.add(table.getTitleIndex("学院名称")); + infoIndexOptional.add(table.getTitleIndex("专业名称")); + infoIndexOptional.add(table.getTitleIndex("民族名称")); + infoIndexOptional.add(table.getTitleIndex("政治面貌名称")); + infoIndexOptional.add(table.getTitleIndex("省份名称")); + + + Vector infoIndex = new Vector<>(); + + for(Optional infoIdx : infoIndexOptional){ + if(!infoIdx.isPresent()){ + log.error("所提供的数据表不符合学生信息导入规范, 有关键数据缺失"); + throw new RuntimeException("Unfit Data Table"); + } + else infoIndex.add(infoIdx.get()); + } + + int dataRowsSize = table.getRowsSize(); + + for(int i = 0; i < dataRowsSize; i++){ + Vector row = table.getRowVector(i); + try { + BaseStudentInfo studentInfo = + constructStudentInfo(row.elementAt(infoIndex.elementAt(0)), + row.elementAt(infoIndex.elementAt(1)), + row.elementAt(infoIndex.elementAt(2)), + row.elementAt(infoIndex.elementAt(3)), + row.elementAt(infoIndex.elementAt(4)), + row.elementAt(infoIndex.elementAt(5)), + row.elementAt(infoIndex.elementAt(6)), + row.elementAt(infoIndex.elementAt(7)), + row.elementAt(infoIndex.elementAt(8))); + save(studentInfo); + } catch (BaseInformationNotFoundException e){ + String log_info = String.format("一项学生信息的某项基本信息未在数据库找到, 该项数据无效." + + " %s: %s",e.getClassName(), e.getValue()); + log.warn(log_info); + } catch (BaseInformationIllegalException e){ + String log_info = String.format("一项学生信息的某项基本信息不合法, 该项数据无效." + + " %s: %s", e.getType(), e.getValue()); + log.warn(log_info); + } catch (BaseInformationAlreadyExistException e){ + String log_info = String.format("一项学生信息的学号已在数据库中包含." + + " %s: %s",e.getClassName(), e.getValue()); + log.warn(log_info); + } + } + } + + @Override + public BaseStudentInfo constructStudentInfo(String studentId, + String classId, + String realName, String sex, + String college, + String major, String ethnic, + String politicalStatus, + String administrativeDivision) + { + // 检查 + if(!sex.equals("男") && !sex.equals("女")) + throw new BaseInformationIllegalException(String.class, sex); + if(classId.length() != 8) + throw new BaseInformationIllegalException(String.class, classId); + if(studentId.length() != 10) + throw new BaseInformationIllegalException(String.class, studentId); + if(realName.length() > 64) + throw new BaseInformationIllegalException(String.class, realName); + + BaseStudentInfo studentInfo = new BaseStudentInfo(); + studentInfo.setSex(sex); + studentInfo.setClassId(classId); + studentInfo.setName(realName); + studentInfo.setStudentId(studentId); + studentInfo.setAdministrativeDivision(findAdministrativeDivisionByName(administrativeDivision)); + studentInfo.setCollege(findCollegeByName(college)); + studentInfo.setEthnic(findEthnicByName(ethnic)); + studentInfo.setMajor(findMajorByName(major)); + studentInfo.setPoliticalStatus(findPoliticalStatusByName(politicalStatus)); + + return studentInfo; + } + + @Override + public BaseStudentInfo save(BaseStudentInfo baseStudentInfo) { + if(baseStudentInfo.getAdministrativeDivision() == null + || baseStudentInfo.getCollege() == null + || baseStudentInfo.getEthnic() == null + || baseStudentInfo.getMajor() == null + || baseStudentInfo.getPoliticalStatus() == null + || baseStudentInfo.getClassId().equals("") + || baseStudentInfo.getStudentId().equals("") + || baseStudentInfo.getName().equals("")) + + throw new BaseInformationIllegalException( + baseStudentInfo.getClass(), + "One of the Attributes IS NULL or Empty"); + + // 检查学号重复 + if(checkStudentInfo(baseStudentInfo.getStudentId())) + throw new BaseInformationAlreadyExistException( + baseStudentInfo.getClass(), + baseStudentInfo.getStudentId()); + + + + return studentInfoRepository.save(baseStudentInfo); + } + + @Override + public BaseStudentInfo update(BaseStudentInfo baseStudentInfo) { + // 更新前检查 + if(!checkStudentInfo(baseStudentInfo.getStudentId())) + throw new BaseInformationNotFoundException(BaseStudentInfo.class, baseStudentInfo.getStudentId()); + return studentInfoRepository.save(baseStudentInfo); + } +} diff --git a/src/main/java/com/codesdream/ase/service/IActivityService.java b/src/main/java/com/codesdream/ase/service/IActivityService.java new file mode 100644 index 0000000..0e85465 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/IActivityService.java @@ -0,0 +1,59 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.model.permission.User; + +import java.util.List; +import java.util.Optional; + +public interface IActivityService { + //通过标题查找活动 + Optional findActivityByTitle(String title); + + //通过创建人姓名查找活动 + Optional findActivityByCreator(String creatorName); + + //通过活动类型查找活动 + List findActivityByType(User user, String type); + + //活动持久化 + Activity save(Activity activity); + + //添加活动报告 + Activity addReport(Activity activity, Report report); + + //活动删除 + void delete(Activity activity); + + //活动信息更新 + Activity update(Activity activity); + + //活动创建 + Activity createActivity(Activity activity); + + //查询主要负责的活动 + List findMainResponsibleActs(User user); + + //查询次要负责的活动 + List findSecondaryResponsibleActs(User user); + + //查询所有可见活动(即可报名活动、主次要负责的活动、参与过的活动等等之外却仍然可见的活动并集) + List findVisibleActs(User user); + + //查找可报名的活动 + List findSignActs(User user); + + //查询参与过的活动 + List findParticipatedActs(User user); + + //查询将要参与的活动 + List findParticipatingActs(User user); + + //查询创建的活动 + List findCreatedActs(User user); + + //查询所有活动(权限内) + List findAll(User user); + +} diff --git a/src/main/java/com/codesdream/ase/service/IAuthService.java b/src/main/java/com/codesdream/ase/service/IAuthService.java new file mode 100644 index 0000000..0adae64 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/IAuthService.java @@ -0,0 +1,22 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.auth.JSONToken; + +import java.util.Optional; + +public interface IAuthService { + // 通过用户名查找与对应用户相关联的token + Optional findTokenByUserName(String username); + + // 检查token是否过期 + boolean checkTokenIfExpired(JSONToken token); + + // 为用户获得一个新的API Token + Optional userNewTokenGetter(String username, String clientCode); + + // 获得一个新的预验证码 + String preValidationCodeGetter(); + + // 检验预验证码 + boolean preValidationCodeChecker(String pvc); +} diff --git a/src/main/java/com/codesdream/ase/service/IBaseInformationService.java b/src/main/java/com/codesdream/ase/service/IBaseInformationService.java new file mode 100644 index 0000000..1a1e5c8 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/IBaseInformationService.java @@ -0,0 +1,57 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.component.datamanager.DataTable; +import com.codesdream.ase.model.information.*; +import com.fasterxml.jackson.databind.ser.Serializers; + +import java.util.Optional; + +public interface IBaseInformationService { + // 检查行政区域是否合法 + boolean checkAdministrativeDivision(String name); + + // 检查学院名称是否合法 + boolean checkCollege(String name); + + // 检查民族名称是否合法 + boolean checkEthnic(String name); + + // 检查专业信息是否合法 + boolean checkMajor(String name); + + // 检查政治面貌信息是否合法 + boolean checkPoliticalStatus(String name); + + // 检查考生类型是否合法 + boolean checkCandidateStatus(String name); + + // 检查学生信息是否存在 + boolean checkStudentInfo(String studentId); + + // 根据名字查找有效的省级行政区划 + BaseAdministrativeDivision findAdministrativeDivisionByName(String name); + + // 查找学院 + BaseCollege findCollegeByName(String name); + + BaseEthnic findEthnicByName(String name); + + BaseMajor findMajorByName(String name); + + BasePoliticalStatus findPoliticalStatusByName(String name); + + BaseCandidateCategory findCandidateCategoryByName(String name); + + BaseStudentInfo findStudentInfoByStudentId(String studentId); + + // 从文件中导入学生基本信息 + void studentInfoImportFromDataTable(DataTable table); + + BaseStudentInfo constructStudentInfo(String studentId, + String classId, String realName, String sex, String college, String major, String ethnic, String politicalStatus, + String administrativeDivision); + + BaseStudentInfo save(BaseStudentInfo baseStudentInfo); + + BaseStudentInfo update(BaseStudentInfo baseStudentInfo); +} diff --git a/src/main/java/com/codesdream/ase/service/ILeavesService.java b/src/main/java/com/codesdream/ase/service/ILeavesService.java new file mode 100644 index 0000000..4f64f43 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/ILeavesService.java @@ -0,0 +1,33 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.leaves.Leave; + + +import java.util.Optional; +import java.util.OptionalInt; + +public interface ILeavesService { + //通过标题查找活动 + Optional findLeaveByTitle(String title); + + //通过创建人姓名查找活动 + Optional findLeaveByCreator(String creatorName); + + OptionalfindLeaveById(int id); + + //活动 + Leave save(Leave leave); + + + //请假删除 + void delete(Leave Leave); + + //请假信息更新 + Leave update(Leave Leave); + //创建请假条目 + Leave createLeave(Leave Leave); + + //查询主要负责的活动 + //Leave findActivitiesInTheCharge(User user); + +} diff --git a/src/main/java/com/codesdream/ase/service/IPermissionService.java b/src/main/java/com/codesdream/ase/service/IPermissionService.java new file mode 100644 index 0000000..5bd47ad --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/IPermissionService.java @@ -0,0 +1,140 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.permission.*; +import javafx.util.Pair; + +import java.util.*; + +public interface IPermissionService { + + FunctionalPermissionContainer getDefaultFPC(String name); + + ScopePermissionContainer getDefaultSPC(String name); + + PermissionContainersCollection getDefaultPCC(String name); + + Tag getDefaultTag(String name); + + // 查找用户标签 + Optional findTag(String name); + + // 查找用户标签 + Optional findTag(Integer id); + + // 列出所有的标签 + Iterable findAllTag(); + + Set findTags(List ids); + + // 查找功能性权限容器 + Optional findFPC(String name); + + Iterable findAllFPC(); + + // 查找范围性权限容器 + Optional findSPC(String name); + + // 根据id查找功能性权限容器 + Optional findFPC(int id); + + Iterable findALLSPC(); + + // 根据id查找范围性权限容器 + Optional findSPC(int id); + + // 标签下所有的获得权限容器集合列表 + Collection getPCCs(Tag tag); + + Set findPCCs(Set pccs); + + Optional findPCC(Integer id); + + // 查找功能 + Optional findFunction(Integer id); + + // 查找功能 + Optional findFunction(String name); + + // 根据序号列表寻找功能 + Set findFunctions(Set funcs); + + Iterable findAllFunction(); + + // 获得范围性权限容器下的所有标签列表 + Collection getTagsFromSPC( + ScopePermissionContainer spc); + + // 查找用户下的所有标签列表 + Collection getTagsFromUser(User user); + + + // 查找功能性权限容器下的所有范围性权限容器列表 + Collection getFPCs( + PermissionContainersCollection pcc); + + // 查找标签下的所有用户 + Set getUsersFromTag(Tag tag); + + // 指定一对功能性权限容器与对应的范围性权限容器并添加到指定权限容器集合中 + PermissionContainersCollection addRelationItemToPCC( + PermissionContainersCollection pcc, + FunctionalPermissionContainer fpc, + ScopePermissionContainer spc); + + // 指定多对功能性权限容器与对应的范围性权限容器并添加到指定权限容器集合中 + PermissionContainersCollection addRelationItemsToPCC( + PermissionContainersCollection pcc, + Collection> + fspcPairs); + + // 添加一个用户到指定标签中 + Tag addUserToTag(Tag tag, User user); + + // 添加多个用户到指定标签中 + Tag addUsersToTag(Tag tag, Collection users); + + // 为功能性权限容器添加一个访问控制角色 + FunctionalPermissionContainer addRoleToFPC( + FunctionalPermissionContainer fpc, + Function function); + + // 为功能性权限容器添加多个访问控制角色 + FunctionalPermissionContainer addRolesToFPC( + FunctionalPermissionContainer fpc, + Collection functions); + + // 为范围性权限容器添加一个标签 + ScopePermissionContainer addTagToSPC(ScopePermissionContainer spc, Tag tag); + + // 为范围性权限容器添加多个标签 + ScopePermissionContainer addTagsToSPC(ScopePermissionContainer spc, Collection tags); + + // 将一个权限容器集合添加到标签中 + Tag addPCCToTag(Tag tag, PermissionContainersCollection pcc); + + // 将多个权限容器集合添加到标签中 + Tag addPCCsToTag(Tag tag, Collection pccs); + + Tag save(Tag tag); + + Function save(Function tag); + + void delete(Tag tag); + + FunctionalPermissionContainer save(FunctionalPermissionContainer fpc); + + ScopePermissionContainer save(ScopePermissionContainer spc); + + PermissionContainersCollection save(PermissionContainersCollection pcc); + + Tag update(Tag tag); + + Function update(Function function); + + FunctionalPermissionContainer update(FunctionalPermissionContainer fpc); + + ScopePermissionContainer update(ScopePermissionContainer spc); + + PermissionContainersCollection update(PermissionContainersCollection pcc); + +} diff --git a/src/main/java/com/codesdream/ase/service/IReportService.java b/src/main/java/com/codesdream/ase/service/IReportService.java new file mode 100644 index 0000000..2ac8614 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/IReportService.java @@ -0,0 +1,19 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Report; + +import java.util.Optional; + +public interface IReportService { + + Optional findByTitle(String title); + + Optional findByCreator(String creatorName); + + Report save(Activity activity, Report report); + + void delete(Report report); + + Report update (Report report); +} diff --git a/src/main/java/com/codesdream/ase/service/IUserService.java b/src/main/java/com/codesdream/ase/service/IUserService.java new file mode 100644 index 0000000..8426fd2 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/IUserService.java @@ -0,0 +1,61 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.information.BaseStudentInfo; +import com.codesdream.ase.model.permission.User; +import javafx.util.Pair; +import org.springframework.security.core.GrantedAuthority; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.Set; + + +public interface IUserService { + + // 获得一个空的默认用户 + User getDefaultUser(); + + // 由学生基本信息生成对应用户 + User createUserByStudentInfo(BaseStudentInfo studentInfo); + + List findAll(); + + Optional findUserById(int id); + + Optional findUserByUsername(String username); + + // 查询用户是否存在 + public Pair checkIfUserExists(String username); + + // 获得用户所有的权限角色 + Collection getUserAuthorities(User user); + + // 更新用户的密码 + User updatePassword(User user, String password); + + // 封禁用户 + User disableUser(User user); + + // 根据学号生成随机用户名 + void generateRandomUsernameByStudentID(User user, String id); + + // 更具学号获得对应的用户名 + String getUsernameByStudentId(String studentId); + + Set findUsersById(Set usersId); + + // 随机生成一个用户名 + void generateRandomUsername(User user); + + // 注册用户 + User save(User user); + + // 更新用户信息 + User update(User user); + + // 删除用户 + void delete(User user); + + +} diff --git a/src/main/java/com/codesdream/ase/service/LeavesService.java b/src/main/java/com/codesdream/ase/service/LeavesService.java new file mode 100644 index 0000000..0e58d35 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/LeavesService.java @@ -0,0 +1,60 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.leaves.Leave; +import com.codesdream.ase.repository.leaves.LeaveRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Optional; + +@Service +public class LeavesService implements ILeavesService { + + @Resource + private LeaveRepository leaveRepository; + + + @Override + public Optional findLeaveByTitle(String title) { + return Optional.empty(); + } + + @Override + public Optional findLeaveByCreator(String creatorName) { + return Optional.empty(); + } + + @Override + public Leave save( Leave leave) { + return leaveRepository.save(leave); + } + + @Override + public Optional findLeaveById(int id) { + return leaveRepository.findById(id); + } + + + + @Override + public void delete(Leave leave) { + leaveRepository.delete(leave); + } + + @Override + public Leave update(Leave leave) { + return leaveRepository.save(leave); + } + + @Override + public Leave createLeave(Leave leave) { + return leaveRepository.save(leave); + } + + +/*@Override + public Leave findActivitiesInTheCharge(User user) { + + }*/ + +} diff --git a/src/main/java/com/codesdream/ase/service/PeriodService.java b/src/main/java/com/codesdream/ase/service/PeriodService.java new file mode 100644 index 0000000..879de10 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/PeriodService.java @@ -0,0 +1,22 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.activity.Period; +import com.codesdream.ase.repository.activity.PeriodRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class PeriodService { + + @Resource + PeriodRepository periodRepository; + + public Period save(Period period) { + return periodRepository.save(period); + } + + public void delete(Period period) { + periodRepository.delete(period); + } +} diff --git a/src/main/java/com/codesdream/ase/service/PermissionService.java b/src/main/java/com/codesdream/ase/service/PermissionService.java new file mode 100644 index 0000000..21c7774 --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/PermissionService.java @@ -0,0 +1,361 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.component.permission.UserFPCListGenerator; +import com.codesdream.ase.component.permission.UserFSRGenerator; +import com.codesdream.ase.exception.badrequest.AlreadyExistException; +import com.codesdream.ase.exception.notfound.NotFoundException; +import com.codesdream.ase.model.permission.*; +import com.codesdream.ase.repository.permission.*; +import javafx.util.Pair; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; + +@Service +public class PermissionService implements IPermissionService { + + @Resource + private TagRepository tagRepository; + + @Resource + private FunctionalPermissionContainerRepository fpcRepository; + + @Resource + private ScopePermissionContainerRepository spcRepository; + + @Resource + private PermissionContainersCollectionRepository pccRepository; + + @Resource + private IUserService userService; + + @Resource + private UserFPCListGenerator userFPCListGenerator; + + @Resource + private UserFSRGenerator userFSRGenerator; + + @Resource + private FunctionRepository functionRepository; + + @Override + public FunctionalPermissionContainer getDefaultFPC(String name) { + return new FunctionalPermissionContainer(name); + } + + @Override + public ScopePermissionContainer getDefaultSPC(String name) { + return new ScopePermissionContainer(name); + } + + @Override + public PermissionContainersCollection getDefaultPCC(String name) { + return new PermissionContainersCollection(name); + } + + @Override + public Tag getDefaultTag(String name) { + return new Tag(name); + } + + @Override + public Optional findTag(String name) { + return tagRepository.findByName(name); + } + + @Override + public Optional findTag(Integer id) { + return tagRepository.findById(id); + } + + @Override + public Iterable findAllTag() { + return tagRepository.findAll(); + } + + @Override + public Set findTags(List ids) { + Set tagSet = new HashSet<>(); + for(Integer id : ids){ + Optional tag = findTag(id); + if(!tag.isPresent()) throw new NotFoundException(id.toString()); + tagSet.add(tag.get()); + } + return tagSet; + } + + @Override + public Optional findFPC(String name) { + return fpcRepository.findByName(name); + } + + public Iterable findAllFPC() { + return fpcRepository.findAll(); + } + + @Override + public Optional findSPC(String name) { + return spcRepository.findByName(name); + } + + @Override + public Optional findFPC(int id) { + return fpcRepository.findById(id); + } + + @Override + public Iterable findALLSPC() { + return spcRepository.findAll(); + } + + @Override + public Optional findSPC(int id) { + return spcRepository.findById(id); + } + + @Override + public Collection getPCCs(Tag tag) { + return new ArrayList<>(tag.getPermissionContainersCollections()); + } + + @Override + public Set findPCCs(Set pccs) { + Set set = new HashSet<>(); + for(Integer id : pccs){ + Optional pcc = findPCC(id); + if(!pcc.isPresent()) throw new NotFoundException(String.format("PCCId: %d",id)); + set.add(pcc.get()); + } + return set; + } + + @Override + public Optional findPCC(Integer id) { + return pccRepository.findById(id); + } + + @Override + public Optional findFunction(Integer id) { + return functionRepository.findById(id); + } + + @Override + public Optional findFunction(String name) { + return functionRepository.findByName(name); + } + + @Override + public Set findFunctions(Set funcs) { + Set set = new HashSet<>(); + for(Integer id : funcs){ + Optional function = findFunction(id); + if(!function.isPresent()) throw new NotFoundException(id.toString()); + set.add(function.get()); + } + return set; + } + + @Override + public Iterable findAllFunction() { + return functionRepository.findAll(); + } + + @Override + public Collection getTagsFromSPC(ScopePermissionContainer spc) { + return new ArrayList<>(spc.getTags()); + } + + @Override + public Collection getTagsFromUser(User user) { + return new ArrayList<>(user.getTags()); + } + + @Override + public Collection getFPCs( + PermissionContainersCollection pcc) + { + + Collection pccCollections = + new ArrayList(){{ + add(pcc); + }}; + + // 生成功能性与范围性权限容器关联对 + Collection fsr = + userFSRGenerator.generateFSRs(pccCollections); + return userFPCListGenerator.generateFPC(fsr); + } + + @Override + public Set getUsersFromTag(Tag tag) { + return new HashSet<>(tag.getUsers()); + } + + @Override + public PermissionContainersCollection addRelationItemToPCC(PermissionContainersCollection pcc, + FunctionalPermissionContainer fpc, + ScopePermissionContainer spc) + { + if(!findFPC(fpc.getId()).isPresent()){ + throw new RuntimeException("FPC NOT In Database"); + } + if(!findSPC(spc.getId()).isPresent()){ + throw new RuntimeException("SPC NOT In Database"); + } + FunctionalScopeRelation relation = new FunctionalScopeRelation(); + relation.setFunctionalPermissionContainer(fpc); + relation.setScopePermissionContainer(spc); + pcc.getFunctionalScopeRelations().add(relation); + return update(pcc); + + } + + @Override + public PermissionContainersCollection addRelationItemsToPCC(PermissionContainersCollection pcc, + Collection> fspcPairs) + { + for(Pair fspc :fspcPairs){ + pcc = addRelationItemToPCC(pcc, fspc.getKey(), fspc.getValue()); + } + return pcc; + } + + @Override + public Tag addUserToTag(Tag tag, User user) { + // 检查用户是否存在 + if(!userService.checkIfUserExists(user.getUsername()).getKey()) + throw new RuntimeException("User Not Exist"); + tag.getUsers().add(user); + return update(tag); + } + + @Override + public Tag addUsersToTag(Tag tag, Collection users) { + for(User user :users){ + tag = addUserToTag(tag, user); + } + return tag; + } + + @Override + public FunctionalPermissionContainer addRoleToFPC(FunctionalPermissionContainer fpc, Function function) { + fpc.getFunctions().add(function); + return update(fpc); + } + + @Override + public FunctionalPermissionContainer addRolesToFPC(FunctionalPermissionContainer fpc, Collection functions) { + for(Function function : functions){ + fpc = addRoleToFPC(fpc, function); + } + return fpc; + } + + @Override + public ScopePermissionContainer addTagToSPC(ScopePermissionContainer spc, Tag tag) { + if(!tagRepository.findByName(tag.getName()).isPresent()) + throw new RuntimeException("Tag Not Exist"); + spc.getTags().add(tag); + return update(spc); + } + + @Override + public ScopePermissionContainer addTagsToSPC(ScopePermissionContainer spc, Collection tags) { + for(Tag tag :tags){ + spc = addTagToSPC(spc, tag); + } + return spc; + } + + @Override + public Tag addPCCToTag(Tag tag, PermissionContainersCollection pcc) { + if(!pccRepository.findByName(pcc.getName()).isPresent()) + throw new RuntimeException("PCC Not Exist"); + tag.getPermissionContainersCollections().add(pcc); + return update(tag); + } + + @Override + public Tag addPCCsToTag(Tag tag, Collection pccs) { + for(PermissionContainersCollection pcc : pccs) { + tag = addPCCToTag(tag, pcc); + } + return tag; + } + + @Override + public Tag save(Tag tag) { + if(tagRepository.findByName(tag.getName()).isPresent()) + throw new AlreadyExistException(tag.getName()); + return tagRepository.save(tag); + } + + @Override + public Function save(Function function) { + if(functionRepository.findByName(function.getName()).isPresent()) + throw new AlreadyExistException(function.getName()); + return functionRepository.save(function); + } + + @Override + public void delete(Tag tag) { + tagRepository.delete(tag); + } + + @Override + public FunctionalPermissionContainer save(FunctionalPermissionContainer fpc) { + if(fpcRepository.findByName(fpc.getName()).isPresent()) + throw new AlreadyExistException(fpc.getName()); + return fpcRepository.save(fpc); + } + + @Override + public ScopePermissionContainer save(ScopePermissionContainer spc) { + if(spcRepository.findByName(spc.getName()).isPresent()) + throw new AlreadyExistException(spc.getName()); + return spcRepository.save(spc); + } + + @Override + public PermissionContainersCollection save(PermissionContainersCollection pcc) { + if(pccRepository.findByName(pcc.getName()).isPresent()) + throw new RuntimeException(pcc.getName()); + return pccRepository.save(pcc); + } + + @Override + public Tag update(Tag tag) { + if(!tagRepository.findByName(tag.getName()).isPresent()) + throw new NotFoundException(tag.getName()); + return tagRepository.save(tag); + } + + @Override + public Function update(Function function) { + if(!functionRepository.findByName(function.getName()).isPresent()) + throw new NotFoundException(function.getName()); + return functionRepository.save(function); + } + + @Override + public FunctionalPermissionContainer update(FunctionalPermissionContainer fpc) { + if(!fpcRepository.findByName(fpc.getName()).isPresent()) + throw new NotFoundException(fpc.getName()); + return fpcRepository.save(fpc); + } + + @Override + public ScopePermissionContainer update(ScopePermissionContainer spc) { + if(!spcRepository.findByName(spc.getName()).isPresent()) + throw new NotFoundException(spc.getName()); + return spcRepository.save(spc); + } + + @Override + public PermissionContainersCollection update(PermissionContainersCollection pcc) { + if(!pccRepository.findByName(pcc.getName()).isPresent()) + throw new NotFoundException(pcc.getName()); + return pccRepository.save(pcc); + } +} diff --git a/src/main/java/com/codesdream/ase/service/ReportService.java b/src/main/java/com/codesdream/ase/service/ReportService.java new file mode 100644 index 0000000..4077aff --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/ReportService.java @@ -0,0 +1,46 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.repository.activity.ReportRepository; + +import javax.annotation.Resource; +import java.util.Optional; + +public class ReportService implements IReportService { + + @Resource + ReportRepository reportRepository; + ActivityService activityService; + + @Override + public Optional findByTitle(String title) { + return reportRepository.findByTitle(title); + } + + @Override + public Optional findByCreator(String creatorName) { + return reportRepository.findByCreator(creatorName); + } + + @Override + public Report save(Activity activity, Report report) { + if(activity == null){ + throw new RuntimeException("Activity does not exist."); + } + activityService.addReport(activity, report); + return reportRepository.save(report); + } + + @Override + public void delete(Report report) { + if(reportRepository.findById(report.getId()).isPresent()) reportRepository.delete(report); + else throw new RuntimeException("Report does not exist."); + } + + @Override + public Report update(Report report) { + reportRepository.save(report); + return report; + } +} diff --git a/src/main/java/com/codesdream/ase/service/UserService.java b/src/main/java/com/codesdream/ase/service/UserService.java new file mode 100644 index 0000000..29b70fa --- /dev/null +++ b/src/main/java/com/codesdream/ase/service/UserService.java @@ -0,0 +1,179 @@ +package com.codesdream.ase.service; + +import com.codesdream.ase.component.auth.ASEPasswordEncoder; +import com.codesdream.ase.component.auth.ASEUsernameEncoder; +import com.codesdream.ase.component.permission.UserFunctionsListGenerator; +import com.codesdream.ase.exception.badrequest.UserInformationIllegalException; +import com.codesdream.ase.exception.notfound.UserNotFoundException; +import com.codesdream.ase.exception.badrequest.UsernameAlreadyExistException; +import com.codesdream.ase.model.information.BaseStudentInfo; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.repository.permission.UserRepository; +import javafx.util.Pair; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; + +@Service +public class UserService implements IUserService { + @Resource + UserFunctionsListGenerator userFunctionsListGenerator; + + @Resource + UserRepository userRepository; + + @Resource + ASEPasswordEncoder passwordEncoder; + + @Resource + ASEUsernameEncoder usernameEncoder; + + @Override + public List findAll() { + return (List) userRepository.findAll(); + } + + @Override + public Optional findUserById(int id) { + return userRepository.findById(id); + } + + @Override + public Optional findUserByUsername(String username) { + Optional user = userRepository.findByUsername(username); + if(!user.isPresent()) throw new UsernameNotFoundException(username); + return user; + } + + @Override + public Pair checkIfUserExists(String username){ + Optional user = userRepository.findByUsername(username); + return user.map(value -> new Pair<>(true, value)).orElseGet(() -> new Pair<>(false, null)); + } + + @Override + public Collection getUserAuthorities(User user) { + return userFunctionsListGenerator.generateRoles(user); + } + + @Override + public User updatePassword(User user, String password) { + user.setPassword(passwordEncoder.encode(password)); + return update(user); + } + + // 封禁用户 + @Override + public User disableUser(User user){ + user.setEnabled(false); + return update(user); + } + + @Override + public void generateRandomUsernameByStudentID(User user, String id) { + user.getUserAuth().setStudentID(id); + user.setUsername(usernameEncoder.encode(id)); + } + + @Override + public String getUsernameByStudentId(String studentId) { + return usernameEncoder.encode(studentId); + } + + @Override + public Set findUsersById(Set usersId) { + Set userSet = new HashSet<>(); + for(Integer id : usersId){ + Optional user = findUserById(id); + if(!user.isPresent()) throw new UserNotFoundException(String.format("ID: %d", id)); + userSet.add(user.get()); + } + return userSet; + } + + @Override + public void generateRandomUsername(User user) { + user.setUsername(usernameEncoder.encode(UUID.randomUUID().toString())); + } + + @Override + public User save(User user) { + // 查找用户名是否已经被注册 + if(userRepository.findByUsername(user.getUsername()).isPresent()) + throw new UsernameAlreadyExistException(user.getUsername()); + + // 用户关键信息一般性规范检查 + if(user.getUserAuth().getUserAnswer() == null + || user.getUserAuth().getUserQuestion() == null + || user.getUserAuth().getStudentID() == null + || user.getUserDetail().getRealName() == null + || user.getUserAuth().getMail() == null){ + throw new RuntimeException("Some Key Information IS NULL"); + } + + + // 用户信息一般性规范检查 + if(user.getUserAuth().getUserAnswer().length() > 255 + || user.getUserAuth().getUserQuestion().length() > 255 + || user.getUserAuth().getStudentID().length() > 24 + || user.getUserAuth().getMail().length() > 64 + || user.getUserDetail().getRealName().length() > 64) + throw new UserInformationIllegalException(user.getUsername()); + + // 强制以哈希值(sha256)保存密码 + user.setPassword(passwordEncoder.encode(user.getPassword())); + return userRepository.save(user); + } + + @Override + public User update(User user) { + // 执行前检查 + if(!userRepository.findById(user.getId()).isPresent()) + throw new UserNotFoundException(user.getId(), user.getUsername()); + return userRepository.save(user); + + } + + @Override + public void delete(User user) { + // 执行前检查 + if(!userRepository.findById(user.getId()).isPresent()) + throw new UserNotFoundException(user.getId(), user.getUsername()); + userRepository.delete(user); + } + + // 获得一个默认初始化的用户对象 + @Override + public User getDefaultUser() { + return new User(); + } + + @Override + public User createUserByStudentInfo(BaseStudentInfo studentInfo) { + User user = getDefaultUser(); + // 根据学生id生成用户名 + generateRandomUsernameByStudentID(user, studentInfo.getStudentId()); + // 填充用户基本信息 + user.getUserAuth().setStudentID(studentInfo.getStudentId()); + user.getUserDetail().setClassId(studentInfo.getClassId()); + user.getUserDetail().setRealName(studentInfo.getName()); + + // 填充用户详细信息 + user.getUserDetail().setBaseAdministrativeDivision(studentInfo.getAdministrativeDivision()); + user.getUserDetail().setBaseCollege(studentInfo.getCollege()); + user.getUserDetail().setBaseMajor(studentInfo.getMajor()); + user.getUserDetail().setBaseEthnic(studentInfo.getEthnic()); + user.getUserDetail().setBasePoliticalStatus(studentInfo.getPoliticalStatus()); + user.getUserDetail().setSex(studentInfo.getSex()); + + // 添加在校学生认证 + user.getUserDetail().setAtSchool(true); + + return user; + } + + +} diff --git a/src/main/java/com/codesdream/ase/validator/ActivityValidator.java b/src/main/java/com/codesdream/ase/validator/ActivityValidator.java new file mode 100644 index 0000000..3f6488f --- /dev/null +++ b/src/main/java/com/codesdream/ase/validator/ActivityValidator.java @@ -0,0 +1,20 @@ +package com.codesdream.ase.validator; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.model.activity.Activity; +import org.springframework.stereotype.Component; + +import java.nio.file.OpenOption; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +//检查当前活动各属性值是否合法(存在) +@Component +public class ActivityValidator { + + public String[] check(Optional json) { + return null; + } +} diff --git a/src/main/java/com/codesdream/ase/validator/JSONFormValidator.java b/src/main/java/com/codesdream/ase/validator/JSONFormValidator.java new file mode 100644 index 0000000..a54272c --- /dev/null +++ b/src/main/java/com/codesdream/ase/validator/JSONFormValidator.java @@ -0,0 +1,28 @@ +package com.codesdream.ase.validator; + +import com.alibaba.fastjson.JSONObject; +import org.springframework.stereotype.Component; + +import java.util.*; + +//用于检查JSON格式是否合法 +@Component +public class JSONFormValidator { + + /** + * @param stdForm 标准表单格式,根据需求自定义 + * @param json 待检验的json对象 + * @return 空列表或者缺失的表单信息列表 + */ + public List check(Set stdForm, JSONObject json) { + + List res = new ArrayList<>(); + Set jsonForm = json.keySet(); + for (String str : stdForm) { + if (!jsonForm.contains(str)) { + res.add(str); + } + } + return res; + } +} diff --git a/src/main/java/com/codesdream/ase/validator/NullValueValidator.java b/src/main/java/com/codesdream/ase/validator/NullValueValidator.java new file mode 100644 index 0000000..d6249bd --- /dev/null +++ b/src/main/java/com/codesdream/ase/validator/NullValueValidator.java @@ -0,0 +1,76 @@ +package com.codesdream.ase.validator; + +import com.codesdream.ase.model.activity.Attendance; +import com.codesdream.ase.model.activity.Period; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.model.permission.User; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; + +@Component +public class NullValueValidator { + + /** + * 传入一个对象,利用Java的反射机制判断各个属性的值是否为空,并返回空值列表 + * @param object 传入的对象 + * @return 一个字符串列表,维护值为空的属性的名字 + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws IllegalAccessException + */ + public List checkNullValues (Object object) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + Field[] fields = object.getClass().getDeclaredFields(); + List result = new ArrayList<>(); + for (Field field : fields){ + String name = field.getName(); + String type = field.getGenericType().toString(); + Method method = object.getClass().getMethod("get" + name); + name = field.getName(); + if(type.equals("class java.lang.String")){ + String str = (String) method.invoke(object); + if(str.isEmpty()) result.add(name); + } + else if(type.equals("class com.codesdream.ase.model.permission.User")){ + User user = (User) method.invoke(object); + if(user == null) result.add(name); + } + else if(type.equals("java.util.Set")){ + Set users = (Set) method.invoke(object); + if(users.isEmpty()) result.add(name); + } + else if(type.equals("class com.codesdream.ase.model.activity.Period")){ + Period period = (Period) method.invoke(object); + if(period == null) result.add(name); + } + else if(type.equals(("class java.time.LocalDateTime"))){ + LocalDateTime date = (LocalDateTime) method.invoke(object); + if(date == null) result.add(name); + } + else if(type.equals("java.util.List")){ + List strings = (List) method.invoke(object); + if(strings.isEmpty()) result.add(name); + } + else if(type.equals("boolean")){ + boolean a = (boolean) method.invoke(object); + if(!a) result.add(name); + } + else if(type.equals("class com.codesdream.ase.model.activity.Attendance")){ + Attendance attendance = (Attendance) method.invoke(object); + if(attendance == null) result.add(name); + } + else if(type.equals("class com.codesdream.ase.model.activity.Report")){ + Report report = (Report) method.invoke(object); + if(report == null) result.add(name); + } + } + return result; + } +} diff --git a/src/main/java/com/codesdream/ase/validator/TestNullValueValidator.java b/src/main/java/com/codesdream/ase/validator/TestNullValueValidator.java new file mode 100644 index 0000000..a7c4a84 --- /dev/null +++ b/src/main/java/com/codesdream/ase/validator/TestNullValueValidator.java @@ -0,0 +1,27 @@ +package com.codesdream.ase.validator; + +import com.codesdream.ase.model.activity.Activity; +import javafx.beans.binding.ObjectExpression; + +import java.lang.reflect.Field; + +public class TestNullValueValidator { + + public static void main(String[] args){ + Activity activity = new Activity(); + TestNullValueValidator.run(activity); + + } + + static void run(Object object){ + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields){ + String name = field.getName(); + name = name.substring(0,1).toUpperCase()+name.substring(1); + String type = field.getGenericType().toString(); + System.out.println("name: " + name); + System.out.println("Type: " + type); + System.out.println(); + } + } +} diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..240adf1 --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,23 @@ +server.port=8081 + +spring.thymeleaf.prefix=classpath:templates/ +spring.thymeleaf.suffix=.html +spring.thymeleaf.mode=HTML +spring.thymeleaf.encoding=UTF-8 + +spring.jpa.generate-ddl=false +spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=update +spring.jooq.sql-dialect=org.hibernate.dialect.MariaDB102Dialect +spring.jpa.open-in-view=true +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true + +spring.datasource.url=jdbc:mariadb://localhost:3306/ase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=#a9b9fa6422 +spring.datasource.driver-class-name=org.mariadb.jdbc.Driver + +server.error.whitelabel.enabled=false + +logging.level.root=info +logging.level.org.springframework.security=info \ No newline at end of file diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties new file mode 100644 index 0000000..c9dc072 --- /dev/null +++ b/src/main/resources/application-test.properties @@ -0,0 +1,24 @@ +server.port=8081 + +spring.thymeleaf.prefix=classpath:templates/ +spring.thymeleaf.suffix=.html +spring.thymeleaf.mode=HTML +spring.thymeleaf.encoding=UTF-8 + +spring.jpa.generate-ddl=false +spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=create-drop +spring.jooq.sql-dialect=org.hibernate.dialect.MariaDB102Dialect +spring.jpa.open-in-view=true +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true + +spring.datasource.url=jdbc:h2:mem:test +spring.datasource.username= +spring.datasource.password= +spring.datasource.driver-class-name=org.h2.Driver + + +server.error.whitelabel.enabled=false + +logging.level.root=info +logging.level.org.springframework.security=info diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..258e642 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,23 @@ +server.port=8081 + +spring.thymeleaf.prefix=classpath:templates/ +spring.thymeleaf.suffix=.html +spring.thymeleaf.mode=HTML +spring.thymeleaf.encoding=UTF-8 + +spring.jpa.generate-ddl=false +spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=update +spring.jooq.sql-dialect=org.hibernate.dialect.MariaDB102Dialect +spring.jpa.open-in-view=true +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true + +spring.datasource.url=jdbc:mariadb://39.100.94.111:3306/ase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC +spring.datasource.username=codedream +spring.datasource.password=codedreampasswd +spring.datasource.driver-class-name=org.mariadb.jdbc.Driver + +server.error.whitelabel.enabled=false + +logging.level.root=info +logging.level.org.springframework.security=info diff --git a/src/main/resources/data_base_administrative_division.sql b/src/main/resources/data_base_administrative_division.sql new file mode 100644 index 0000000..0653887 --- /dev/null +++ b/src/main/resources/data_base_administrative_division.sql @@ -0,0 +1,3518 @@ +-- ---------------------------- +-- Records of base_administrative_division +-- ---------------------------- +INSERT INTO `base_administrative_division` VALUES ('000000', '未知', '0'); +INSERT INTO `base_administrative_division` VALUES ('110000', '北京市', '0'); +INSERT INTO `base_administrative_division` VALUES ('110100', '北京市市辖区', '110000'); +INSERT INTO `base_administrative_division` VALUES ('110101', '北京市东城区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110102', '北京市西城区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110105', '北京市朝阳区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110106', '北京市丰台区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110107', '北京市石景山区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110108', '北京市海淀区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110109', '北京市门头沟区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110111', '北京市房山区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110112', '北京市通州区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110113', '北京市顺义区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110114', '北京市昌平区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110115', '北京市大兴区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110116', '北京市怀柔区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110117', '北京市平谷区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110200', '北京市县', '110000'); +INSERT INTO `base_administrative_division` VALUES ('110228', '北京市密云县', '110200'); +INSERT INTO `base_administrative_division` VALUES ('110229', '北京市延庆县', '110200'); +INSERT INTO `base_administrative_division` VALUES ('120000', '天津市', '0'); +INSERT INTO `base_administrative_division` VALUES ('120100', '天津市市辖区', '120000'); +INSERT INTO `base_administrative_division` VALUES ('120101', '天津市和平区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120102', '天津市河东区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120103', '天津市河西区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120104', '天津市南开区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120105', '天津市河北区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120106', '天津市红桥区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120110', '天津市东丽区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120111', '天津市西青区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120112', '天津市津南区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120113', '天津市北辰区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120114', '天津市武清区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120115', '天津市宝坻区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120116', '天津市滨海新区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120200', '天津市县', '120000'); +INSERT INTO `base_administrative_division` VALUES ('120221', '天津市宁河县', '120200'); +INSERT INTO `base_administrative_division` VALUES ('120223', '天津市静海县', '120200'); +INSERT INTO `base_administrative_division` VALUES ('120225', '天津市蓟县', '120200'); +INSERT INTO `base_administrative_division` VALUES ('130000', '河北省', '0'); +INSERT INTO `base_administrative_division` VALUES ('130100', '河北省石家庄市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130101', '河北省石家庄市市辖区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130102', '河北省石家庄市长安区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130103', '河北省石家庄市桥东区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130104', '河北省石家庄市桥西区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130105', '河北省石家庄市新华区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130107', '河北省石家庄市井陉矿区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130108', '河北省石家庄市裕华区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130121', '河北省井陉县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130123', '河北省正定县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130124', '河北省栾城县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130125', '河北省行唐县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130126', '河北省灵寿县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130127', '河北省高邑县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130128', '河北省深泽县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130129', '河北省赞皇县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130130', '河北省无极县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130131', '河北省平山县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130132', '河北省元氏县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130133', '河北省赵县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130181', '河北省辛集市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130182', '河北省藁城市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130183', '河北省晋州市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130184', '河北省新乐市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130185', '河北省鹿泉市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130200', '河北省唐山市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130201', '河北省唐山市市辖区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130202', '河北省唐山市路南区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130203', '河北省唐山市路北区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130204', '河北省唐山市古冶区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130205', '河北省唐山市开平区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130207', '河北省唐山市丰南区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130208', '河北省唐山市丰润区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130223', '河北省滦县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130224', '河北省滦南县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130225', '河北省乐亭县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130227', '河北省迁西县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130229', '河北省玉田县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130230', '河北省唐海县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130281', '河北省遵化市', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130283', '河北省迁安市', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130300', '河北省秦皇岛市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130301', '河北省秦皇岛市市辖区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130302', '河北省秦皇岛市海港区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130303', '河北省秦皇岛市山海关区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130304', '河北省秦皇岛市北戴河区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130321', '河北省青龙满族自治县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130322', '河北省昌黎县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130323', '河北省抚宁县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130324', '河北省卢龙县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130400', '河北省邯郸市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130401', '河北省邯郸市市辖区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130402', '河北省邯郸市邯山区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130403', '河北省邯郸市丛台区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130404', '河北省邯郸市复兴区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130406', '河北省邯郸市峰峰矿区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130421', '河北省邯郸县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130423', '河北省临漳县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130424', '河北省成安县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130425', '河北省大名县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130426', '河北省涉县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130427', '河北省磁县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130428', '河北省肥乡县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130429', '河北省永年县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130430', '河北省邱县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130431', '河北省鸡泽县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130432', '河北省广平县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130433', '河北省馆陶县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130434', '河北省魏县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130435', '河北省曲周县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130481', '河北省武安市', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130500', '河北省邢台市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130501', '河北省邢台市市辖区', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130502', '河北省邢台市桥东区', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130503', '河北省邢台市桥西区', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130521', '河北省邢台县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130522', '河北省临城县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130523', '河北省内丘县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130524', '河北省柏乡县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130525', '河北省隆尧县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130526', '河北省任县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130527', '河北省南和县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130528', '河北省宁晋县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130529', '河北省巨鹿县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130530', '河北省新河县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130531', '河北省广宗县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130532', '河北省平乡县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130533', '河北省威县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130534', '河北省清河县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130535', '河北省临西县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130581', '河北省南宫市', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130582', '河北省沙河市', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130600', '河北省保定市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130601', '河北省保定市市辖区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130602', '河北省保定市新市区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130603', '河北省保定市北市区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130604', '河北省保定市南市区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130621', '河北省满城县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130622', '河北省清苑县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130623', '河北省涞水县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130624', '河北省阜平县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130625', '河北省徐水县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130626', '河北省定兴县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130627', '河北省唐县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130628', '河北省高阳县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130629', '河北省容城县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130630', '河北省涞源县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130631', '河北省望都县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130632', '河北省安新县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130633', '河北省易县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130634', '河北省曲阳县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130635', '河北省蠡县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130636', '河北省顺平县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130637', '河北省博野县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130638', '河北省雄县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130681', '河北省涿州市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130682', '河北省定州市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130683', '河北省安国市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130684', '河北省高碑店市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130700', '河北省张家口市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130701', '河北省张家口市市辖区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130702', '河北省张家口市桥东区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130703', '河北省张家口市桥西区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130705', '河北省张家口市宣化区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130706', '河北省张家口市下花园区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130721', '河北省宣化县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130722', '河北省张北县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130723', '河北省康保县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130724', '河北省沽源县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130725', '河北省尚义县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130726', '河北省蔚县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130727', '河北省阳原县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130728', '河北省怀安县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130729', '河北省万全县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130730', '河北省怀来县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130731', '河北省涿鹿县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130732', '河北省赤城县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130733', '河北省崇礼县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130800', '河北省承德市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130801', '河北省承德市市辖区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130802', '河北省承德市双桥区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130803', '河北省承德市双滦区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130804', '河北省承德市鹰手营子矿区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130821', '河北省承德县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130822', '河北省兴隆县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130823', '河北省平泉县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130824', '河北省滦平县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130825', '河北省隆化县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130826', '河北省丰宁满族自治县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130827', '河北省宽城满族自治县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130828', '河北省围场满族蒙古族自治县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130900', '河北省沧州市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130901', '河北省沧州市市辖区', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130902', '河北省沧州市新华区', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130903', '河北省沧州市运河区', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130921', '河北省沧县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130922', '河北省青县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130923', '河北省东光县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130924', '河北省海兴县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130925', '河北省盐山县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130926', '河北省肃宁县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130927', '河北省南皮县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130928', '河北省吴桥县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130929', '河北省献县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130930', '河北省孟村回族自治县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130981', '河北省泊头市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130982', '河北省任丘市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130983', '河北省黄骅市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130984', '河北省河间市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('131000', '河北省廊坊市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('131001', '河北省廊坊市市辖区', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131002', '河北省廊坊市安次区', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131003', '河北省廊坊市广阳区', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131022', '河北省固安县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131023', '河北省永清县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131024', '河北省香河县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131025', '河北省大城县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131026', '河北省文安县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131028', '河北省大厂回族自治县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131081', '河北省霸州市', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131082', '河北省三河市', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131100', '河北省衡水市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('131101', '河北省衡水市市辖区', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131102', '河北省衡水市桃城区', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131121', '河北省枣强县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131122', '河北省武邑县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131123', '河北省武强县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131124', '河北省饶阳县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131125', '河北省安平县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131126', '河北省故城县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131127', '河北省景县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131128', '河北省阜城县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131181', '河北省冀州市', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131182', '河北省深州市', '131100'); +INSERT INTO `base_administrative_division` VALUES ('140000', '山西省', '0'); +INSERT INTO `base_administrative_division` VALUES ('140100', '山西省太原市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140101', '山西省太原市市辖区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140105', '山西省太原市小店区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140106', '山西省太原市迎泽区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140107', '山西省太原市杏花岭区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140108', '山西省太原市尖草坪区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140109', '山西省太原市万柏林区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140110', '山西省太原市晋源区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140121', '山西省清徐县', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140122', '山西省阳曲县', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140123', '山西省娄烦县', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140181', '山西省古交市', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140200', '山西省大同市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140201', '山西省大同市市辖区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140202', '山西省大同市城区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140203', '山西省大同市矿区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140211', '山西省大同市南郊区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140212', '山西省大同市新荣区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140221', '山西省阳高县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140222', '山西省天镇县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140223', '山西省广灵县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140224', '山西省灵丘县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140225', '山西省浑源县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140226', '山西省左云县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140227', '山西省大同县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140300', '山西省阳泉市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140301', '山西省阳泉市市辖区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140302', '山西省阳泉市城区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140303', '山西省阳泉市矿区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140311', '山西省阳泉市郊区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140321', '山西省平定县', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140322', '山西省盂县', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140400', '山西省长治市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140401', '山西省长治市市辖区', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140402', '山西省长治市城区', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140411', '山西省长治市郊区', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140421', '山西省长治县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140423', '山西省襄垣县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140424', '山西省屯留县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140425', '山西省平顺县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140426', '山西省黎城县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140427', '山西省壶关县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140428', '山西省长子县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140429', '山西省武乡县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140430', '山西省沁县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140431', '山西省沁源县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140481', '山西省潞城市', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140500', '山西省晋城市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140501', '山西省晋城市市辖区', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140502', '山西省晋城市城区', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140521', '山西省沁水县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140522', '山西省阳城县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140524', '山西省陵川县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140525', '山西省泽州县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140581', '山西省高平市', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140600', '山西省朔州市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140601', '山西省朔州市市辖区', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140602', '山西省朔州市朔城区', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140603', '山西省朔州市平鲁区', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140621', '山西省山阴县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140622', '山西省应县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140623', '山西省右玉县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140624', '山西省怀仁县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140700', '山西省晋中市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140701', '山西省晋中市市辖区', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140702', '山西省晋中市榆次区', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140721', '山西省榆社县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140722', '山西省左权县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140723', '山西省和顺县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140724', '山西省昔阳县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140725', '山西省寿阳县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140726', '山西省太谷县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140727', '山西省祁县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140728', '山西省平遥县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140729', '山西省灵石县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140781', '山西省介休市', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140800', '山西省运城市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140801', '山西省运城市市辖区', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140802', '山西省运城市盐湖区', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140821', '山西省临猗县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140822', '山西省万荣县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140823', '山西省闻喜县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140824', '山西省稷山县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140825', '山西省新绛县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140826', '山西省绛县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140827', '山西省垣曲县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140828', '山西省夏县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140829', '山西省平陆县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140830', '山西省芮城县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140881', '山西省永济市', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140882', '山西省河津市', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140900', '山西省忻州市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140901', '山西省忻州市市辖区', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140902', '山西省忻州市忻府区', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140921', '山西省定襄县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140922', '山西省五台县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140923', '山西省代县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140924', '山西省繁峙县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140925', '山西省宁武县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140926', '山西省静乐县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140927', '山西省神池县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140928', '山西省五寨县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140929', '山西省岢岚县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140930', '山西省河曲县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140931', '山西省保德县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140932', '山西省偏关县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140981', '山西省原平市', '140900'); +INSERT INTO `base_administrative_division` VALUES ('141000', '山西省临汾市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('141001', '山西省临汾市市辖区', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141002', '山西省临汾市尧都区', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141021', '山西省曲沃县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141022', '山西省翼城县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141023', '山西省襄汾县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141024', '山西省洪洞县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141025', '山西省古县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141026', '山西省安泽县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141027', '山西省浮山县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141028', '山西省吉县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141029', '山西省乡宁县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141030', '山西省大宁县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141031', '山西省隰县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141032', '山西省永和县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141033', '山西省蒲县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141034', '山西省汾西县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141081', '山西省侯马市', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141082', '山西省霍州市', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141100', '山西省吕梁市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('141101', '山西省吕梁市市辖区', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141102', '山西省吕梁市离石区', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141121', '山西省文水县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141122', '山西省交城县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141123', '山西省兴县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141124', '山西省临县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141125', '山西省柳林县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141126', '山西省石楼县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141127', '山西省岚县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141128', '山西省方山县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141129', '山西省中阳县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141130', '山西省交口县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141181', '山西省孝义市', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141182', '山西省汾阳市', '141100'); +INSERT INTO `base_administrative_division` VALUES ('150000', '内蒙古自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('150100', '内蒙古呼和浩特市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150101', '内蒙古呼和浩特市市辖区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150102', '内蒙古呼和浩特市新城区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150103', '内蒙古呼和浩特市回民区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150104', '内蒙古呼和浩特市玉泉区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150105', '内蒙古呼和浩特市赛罕区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150121', '内蒙古土默特左旗', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150122', '内蒙古托克托县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150123', '内蒙古和林格尔县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150124', '内蒙古清水河县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150125', '内蒙古武川县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150200', '内蒙古包头市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150201', '内蒙古包头市市辖区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150202', '内蒙古包头市东河区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150203', '内蒙古包头市昆都仑区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150204', '内蒙古包头市青山区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150205', '内蒙古包头市石拐区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150206', '内蒙古包头市白云鄂博矿区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150207', '内蒙古包头市九原区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150221', '内蒙古土默特右旗', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150222', '内蒙古固阳县', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150223', '内蒙古达尔罕茂明安联合旗', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150300', '内蒙古乌海市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150301', '内蒙古乌海市市辖区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150302', '内蒙古乌海市海勃湾区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150303', '内蒙古乌海市海南区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150304', '内蒙古乌海市乌达区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150400', '内蒙古赤峰市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150401', '内蒙古赤峰市市辖区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150402', '内蒙古赤峰市红山区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150403', '内蒙古赤峰市元宝山区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150404', '内蒙古赤峰市松山区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150421', '内蒙古阿鲁科尔沁旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150422', '内蒙古巴林左旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150423', '内蒙古巴林右旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150424', '内蒙古林西县', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150425', '内蒙古克什克腾旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150426', '内蒙古翁牛特旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150428', '内蒙古喀喇沁旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150429', '内蒙古宁城县', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150430', '内蒙古敖汉旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150500', '内蒙古通辽市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150501', '内蒙古通辽市市辖区', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150502', '内蒙古通辽市科尔沁区', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150521', '内蒙古科尔沁左翼中旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150522', '内蒙古科尔沁左翼后旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150523', '内蒙古开鲁县', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150524', '内蒙古库伦旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150525', '内蒙古奈曼旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150526', '内蒙古扎鲁特旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150581', '内蒙古霍林郭勒市', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150600', '内蒙古鄂尔多斯市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150601', '内蒙古鄂尔多斯市市辖区', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150602', '内蒙古鄂尔多斯市东胜区', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150621', '内蒙古达拉特旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150622', '内蒙古准格尔旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150623', '内蒙古鄂托克前旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150624', '内蒙古鄂托克旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150625', '内蒙古杭锦旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150626', '内蒙古乌审旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150627', '内蒙古伊金霍洛旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150700', '内蒙古呼伦贝尔市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150701', '内蒙古呼伦贝尔市市辖区', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150702', '内蒙古呼伦贝尔市海拉尔区', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150721', '内蒙古阿荣旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150722', '内蒙古莫力达瓦达斡尔族自治旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150723', '内蒙古鄂伦春自治旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150724', '内蒙古鄂温克族自治旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150725', '内蒙古陈巴尔虎旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150726', '内蒙古新巴尔虎左旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150727', '内蒙古新巴尔虎右旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150781', '内蒙古满洲里市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150782', '内蒙古牙克石市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150783', '内蒙古扎兰屯市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150784', '内蒙古额尔古纳市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150785', '内蒙古根河市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150800', '内蒙古巴彦淖尔市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150801', '内蒙古巴彦淖尔市市辖区', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150802', '内蒙古巴彦淖尔市临河区', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150821', '内蒙古五原县', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150822', '内蒙古磴口县', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150823', '内蒙古乌拉特前旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150824', '内蒙古乌拉特中旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150825', '内蒙古乌拉特后旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150826', '内蒙古杭锦后旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150900', '内蒙古乌兰察布市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150901', '内蒙古乌兰察布市市辖区', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150902', '内蒙古乌兰察布市集宁区', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150921', '内蒙古卓资县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150922', '内蒙古化德县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150923', '内蒙古商都县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150924', '内蒙古兴和县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150925', '内蒙古凉城县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150926', '内蒙古察哈尔右翼前旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150927', '内蒙古察哈尔右翼中旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150928', '内蒙古察哈尔右翼后旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150929', '内蒙古四子王旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150981', '内蒙古丰镇市', '150900'); +INSERT INTO `base_administrative_division` VALUES ('152200', '内蒙古兴安盟', '150000'); +INSERT INTO `base_administrative_division` VALUES ('152201', '内蒙古乌兰浩特市', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152202', '内蒙古阿尔山市', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152221', '内蒙古科尔沁右翼前旗', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152222', '内蒙古科尔沁右翼中旗', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152223', '内蒙古扎赉特旗', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152224', '内蒙古突泉县', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152500', '内蒙古锡林郭勒盟', '150000'); +INSERT INTO `base_administrative_division` VALUES ('152501', '内蒙古二连浩特市', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152502', '内蒙古锡林浩特市', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152522', '内蒙古阿巴嘎旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152523', '内蒙古苏尼特左旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152524', '内蒙古苏尼特右旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152525', '内蒙古东乌珠穆沁旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152526', '内蒙古西乌珠穆沁旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152527', '内蒙古太仆寺旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152528', '内蒙古镶黄旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152529', '内蒙古正镶白旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152530', '内蒙古正蓝旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152531', '内蒙古多伦县', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152900', '内蒙古阿拉善盟', '150000'); +INSERT INTO `base_administrative_division` VALUES ('152921', '内蒙古阿拉善左旗', '152900'); +INSERT INTO `base_administrative_division` VALUES ('152922', '内蒙古阿拉善右旗', '152900'); +INSERT INTO `base_administrative_division` VALUES ('152923', '内蒙古额济纳旗', '152900'); +INSERT INTO `base_administrative_division` VALUES ('210000', '辽宁省', '0'); +INSERT INTO `base_administrative_division` VALUES ('210100', '辽宁省沈阳市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210101', '辽宁省沈阳市市辖区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210102', '辽宁省沈阳市和平区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210103', '辽宁省沈阳市沈河区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210104', '辽宁省沈阳市大东区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210105', '辽宁省沈阳市皇姑区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210106', '辽宁省沈阳市铁西区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210111', '辽宁省沈阳市苏家屯区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210112', '辽宁省沈阳市东陵区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210113', '辽宁省沈阳市沈北新区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210114', '辽宁省沈阳市于洪区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210122', '辽宁省辽中县', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210123', '辽宁省康平县', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210124', '辽宁省法库县', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210181', '辽宁省新民市', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210200', '辽宁省大连市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210201', '辽宁省大连市市辖区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210202', '辽宁省大连市中山区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210203', '辽宁省大连市西岗区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210204', '辽宁省大连市沙河口区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210211', '辽宁省大连市甘井子区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210212', '辽宁省大连市旅顺口区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210213', '辽宁省大连市金州区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210224', '辽宁省长海县', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210281', '辽宁省瓦房店市', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210282', '辽宁省普兰店市', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210283', '辽宁省庄河市', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210300', '辽宁省鞍山市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210301', '辽宁省鞍山市市辖区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210302', '辽宁省鞍山市铁东区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210303', '辽宁省鞍山市铁西区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210304', '辽宁省鞍山市立山区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210311', '辽宁省鞍山市千山区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210321', '辽宁省台安县', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210323', '辽宁省岫岩满族自治县', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210381', '辽宁省海城市', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210400', '辽宁省抚顺市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210401', '辽宁省抚顺市市辖区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210402', '辽宁省抚顺市新抚区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210403', '辽宁省抚顺市东洲区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210404', '辽宁省抚顺市望花区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210411', '辽宁省抚顺市顺城区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210421', '辽宁省抚顺县', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210422', '辽宁省新宾满族自治县', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210423', '辽宁省清原满族自治县', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210500', '辽宁省本溪市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210501', '辽宁省本溪市市辖区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210502', '辽宁省本溪市平山区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210503', '辽宁省本溪市溪湖区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210504', '辽宁省本溪市明山区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210505', '辽宁省本溪市南芬区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210521', '辽宁省本溪满族自治县', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210522', '辽宁省桓仁满族自治县', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210600', '辽宁省丹东市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210601', '辽宁省丹东市市辖区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210602', '辽宁省丹东市元宝区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210603', '辽宁省丹东市振兴区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210604', '辽宁省丹东市振安区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210624', '辽宁省宽甸满族自治县', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210681', '辽宁省东港市', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210682', '辽宁省凤城市', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210700', '辽宁省锦州市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210701', '辽宁省锦州市市辖区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210702', '辽宁省锦州市古塔区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210703', '辽宁省锦州市凌河区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210711', '辽宁省锦州市太和区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210726', '辽宁省黑山县', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210727', '辽宁省义县', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210781', '辽宁省凌海市', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210782', '辽宁省北镇市', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210800', '辽宁省营口市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210801', '辽宁省营口市市辖区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210802', '辽宁省营口市站前区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210803', '辽宁省营口市西市区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210804', '辽宁省营口市鲅鱼圈区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210811', '辽宁省营口市老边区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210881', '辽宁省盖州市', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210882', '辽宁省大石桥市', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210900', '辽宁省阜新市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210901', '辽宁省阜新市市辖区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210902', '辽宁省阜新市海州区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210903', '辽宁省阜新市新邱区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210904', '辽宁省阜新市太平区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210905', '辽宁省阜新市清河门区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210911', '辽宁省阜新市细河区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210921', '辽宁省阜新蒙古族自治县', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210922', '辽宁省彰武县', '210900'); +INSERT INTO `base_administrative_division` VALUES ('211000', '辽宁省辽阳市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211001', '辽宁省辽阳市市辖区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211002', '辽宁省辽阳市白塔区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211003', '辽宁省辽阳市文圣区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211004', '辽宁省辽阳市宏伟区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211005', '辽宁省辽阳市弓长岭区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211011', '辽宁省辽阳市太子河区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211021', '辽宁省辽阳县', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211081', '辽宁省灯塔市', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211100', '辽宁省盘锦市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211101', '辽宁省盘锦市市辖区', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211102', '辽宁省盘锦市双台子区', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211103', '辽宁省盘锦市兴隆台区', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211121', '辽宁省大洼县', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211122', '辽宁省盘山县', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211200', '辽宁省铁岭市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211201', '辽宁省铁岭市市辖区', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211202', '辽宁省铁岭市银州区', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211204', '辽宁省铁岭市清河区', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211221', '辽宁省铁岭县', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211223', '辽宁省西丰县', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211224', '辽宁省昌图县', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211281', '辽宁省调兵山市', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211282', '辽宁省开原市', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211300', '辽宁省朝阳市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211301', '辽宁省朝阳市市辖区', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211302', '辽宁省朝阳市双塔区', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211303', '辽宁省朝阳市龙城区', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211321', '辽宁省朝阳县', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211322', '辽宁省建平县', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211324', '辽宁省喀喇沁左翼蒙古族自治县', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211381', '辽宁省北票市', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211382', '辽宁省凌源市', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211400', '辽宁省葫芦岛市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211401', '辽宁省葫芦岛市市辖区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211402', '辽宁省葫芦岛市连山区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211403', '辽宁省葫芦岛市龙港区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211404', '辽宁省葫芦岛市南票区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211421', '辽宁省绥中县', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211422', '辽宁省建昌县', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211481', '辽宁省兴城市', '211400'); +INSERT INTO `base_administrative_division` VALUES ('220000', '吉林省', '0'); +INSERT INTO `base_administrative_division` VALUES ('220100', '吉林省长春市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220101', '吉林省长春市市辖区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220102', '吉林省长春市南关区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220103', '吉林省长春市宽城区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220104', '吉林省长春市朝阳区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220105', '吉林省长春市二道区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220106', '吉林省长春市绿园区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220112', '吉林省长春市双阳区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220122', '吉林省农安县', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220181', '吉林省九台市', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220182', '吉林省榆树市', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220183', '吉林省德惠市', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220200', '吉林省吉林市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220201', '吉林省吉林市市辖区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220202', '吉林省吉林市昌邑区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220203', '吉林省吉林市龙潭区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220204', '吉林省吉林市船营区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220211', '吉林省吉林市丰满区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220221', '吉林省永吉县', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220281', '吉林省蛟河市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220282', '吉林省桦甸市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220283', '吉林省舒兰市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220284', '吉林省磐石市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220300', '吉林省四平市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220301', '吉林省四平市市辖区', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220302', '吉林省四平市铁西区', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220303', '吉林省四平市铁东区', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220322', '吉林省梨树县', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220323', '吉林省伊通满族自治县', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220381', '吉林省公主岭市', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220382', '吉林省双辽市', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220400', '吉林省辽源市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220401', '吉林省辽源市市辖区', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220402', '吉林省辽源市龙山区', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220403', '吉林省辽源市西安区', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220421', '吉林省东丰县', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220422', '吉林省东辽县', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220500', '吉林省通化市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220501', '吉林省通化市市辖区', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220502', '吉林省通化市东昌区', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220503', '吉林省通化市二道江区', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220521', '吉林省通化县', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220523', '吉林省辉南县', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220524', '吉林省柳河县', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220581', '吉林省梅河口市', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220582', '吉林省集安市', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220600', '吉林省白山市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220601', '吉林省白山市市辖区', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220602', '吉林省白山市八道江区', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220605', '吉林省白山市江源区', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220621', '吉林省抚松县', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220622', '吉林省靖宇县', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220623', '吉林省长白朝鲜族自治县', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220681', '吉林省临江市', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220700', '吉林省松原市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220701', '吉林省松原市市辖区', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220702', '吉林省松原市宁江区', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220721', '吉林省前郭尔罗斯蒙古族自治县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220722', '吉林省长岭县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220723', '吉林省乾安县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220724', '吉林省扶余县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220800', '吉林省白城市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220801', '吉林省白城市市辖区', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220802', '吉林省白城市洮北区', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220821', '吉林省镇赉县', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220822', '吉林省通榆县', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220881', '吉林省洮南市', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220882', '吉林省大安市', '220800'); +INSERT INTO `base_administrative_division` VALUES ('222400', '吉林省延边朝鲜族自治州', '220000'); +INSERT INTO `base_administrative_division` VALUES ('222401', '吉林省延吉市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222402', '吉林省图们市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222403', '吉林省敦化市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222404', '吉林省珲春市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222405', '吉林省龙井市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222406', '吉林省和龙市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222424', '吉林省汪清县', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222426', '吉林省安图县', '222400'); +INSERT INTO `base_administrative_division` VALUES ('230000', '黑龙江省', '0'); +INSERT INTO `base_administrative_division` VALUES ('230100', '黑龙江省哈尔滨市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230101', '黑龙江省哈尔滨市市辖区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230102', '黑龙江省哈尔滨市道里区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230103', '黑龙江省哈尔滨市南岗区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230104', '黑龙江省哈尔滨市道外区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230108', '黑龙江省哈尔滨市平房区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230109', '黑龙江省哈尔滨市松北区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230110', '黑龙江省哈尔滨市香坊区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230111', '黑龙江省哈尔滨市呼兰区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230112', '黑龙江省哈尔滨市阿城区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230123', '黑龙江省依兰县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230124', '黑龙江省方正县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230125', '黑龙江省宾县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230126', '黑龙江省巴彦县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230127', '黑龙江省木兰县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230128', '黑龙江省通河县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230129', '黑龙江省延寿县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230182', '黑龙江省双城市', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230183', '黑龙江省尚志市', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230184', '黑龙江省五常市', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230200', '黑龙江省齐齐哈尔市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230201', '黑龙江省齐齐哈尔市市辖区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230202', '黑龙江省齐齐哈尔市龙沙区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230203', '黑龙江省齐齐哈尔市建华区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230204', '黑龙江省齐齐哈尔市铁锋区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230205', '黑龙江省齐齐哈尔市昂昂溪区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230206', '黑龙江省齐齐哈尔市富拉尔基区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230207', '黑龙江省齐齐哈尔市碾子山区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230208', '黑龙江省齐齐哈尔市梅里斯达斡尔族区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230221', '黑龙江省龙江县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230223', '黑龙江省依安县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230224', '黑龙江省泰来县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230225', '黑龙江省甘南县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230227', '黑龙江省富裕县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230229', '黑龙江省克山县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230230', '黑龙江省克东县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230231', '黑龙江省拜泉县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230281', '黑龙江省讷河市', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230300', '黑龙江省鸡西市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230301', '黑龙江省鸡西市市辖区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230302', '黑龙江省鸡西市鸡冠区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230303', '黑龙江省鸡西市恒山区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230304', '黑龙江省鸡西市滴道区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230305', '黑龙江省鸡西市梨树区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230306', '黑龙江省鸡西市城子河区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230307', '黑龙江省鸡西市麻山区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230321', '黑龙江省鸡东县', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230381', '黑龙江省虎林市', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230382', '黑龙江省密山市', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230400', '黑龙江省鹤岗市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230401', '黑龙江省鹤岗市市辖区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230402', '黑龙江省鹤岗市向阳区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230403', '黑龙江省鹤岗市工农区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230404', '黑龙江省鹤岗市南山区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230405', '黑龙江省鹤岗市兴安区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230406', '黑龙江省鹤岗市东山区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230407', '黑龙江省鹤岗市兴山区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230421', '黑龙江省萝北县', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230422', '黑龙江省绥滨县', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230500', '黑龙江省双鸭山市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230501', '黑龙江省双鸭山市市辖区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230502', '黑龙江省双鸭山市尖山区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230503', '黑龙江省双鸭山市岭东区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230505', '黑龙江省双鸭山市四方台区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230506', '黑龙江省双鸭山市宝山区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230521', '黑龙江省集贤县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230522', '黑龙江省友谊县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230523', '黑龙江省宝清县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230524', '黑龙江省饶河县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230600', '黑龙江省大庆市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230601', '黑龙江省大庆市市辖区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230602', '黑龙江省大庆市萨尔图区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230603', '黑龙江省大庆市龙凤区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230604', '黑龙江省大庆市让胡路区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230605', '黑龙江省大庆市红岗区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230606', '黑龙江省大庆市大同区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230621', '黑龙江省肇州县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230622', '黑龙江省肇源县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230623', '黑龙江省林甸县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230624', '黑龙江省杜尔伯特蒙古族自治县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230700', '黑龙江省伊春市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230701', '黑龙江省伊春市市辖区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230702', '黑龙江省伊春市伊春区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230703', '黑龙江省伊春市南岔区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230704', '黑龙江省伊春市友好区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230705', '黑龙江省伊春市西林区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230706', '黑龙江省伊春市翠峦区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230707', '黑龙江省伊春市新青区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230708', '黑龙江省伊春市美溪区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230709', '黑龙江省伊春市金山屯区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230710', '黑龙江省伊春市五营区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230711', '黑龙江省伊春市乌马河区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230712', '黑龙江省伊春市汤旺河区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230713', '黑龙江省伊春市带岭区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230714', '黑龙江省伊春市乌伊岭区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230715', '黑龙江省伊春市红星区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230716', '黑龙江省伊春市上甘岭区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230722', '黑龙江省嘉荫县', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230781', '黑龙江省铁力市', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230800', '黑龙江省佳木斯市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230801', '黑龙江省佳木斯市市辖区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230803', '黑龙江省佳木斯市向阳区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230804', '黑龙江省佳木斯市前进区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230805', '黑龙江省佳木斯市东风区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230811', '黑龙江省佳木斯市郊区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230822', '黑龙江省桦南县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230826', '黑龙江省桦川县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230828', '黑龙江省汤原县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230833', '黑龙江省抚远县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230881', '黑龙江省同江市', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230882', '黑龙江省富锦市', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230900', '黑龙江省七台河市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230901', '黑龙江省七台河市市辖区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230902', '黑龙江省七台河市新兴区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230903', '黑龙江省七台河市桃山区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230904', '黑龙江省七台河市茄子河区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230921', '黑龙江省勃利县', '230900'); +INSERT INTO `base_administrative_division` VALUES ('231000', '黑龙江省牡丹江市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('231001', '黑龙江省牡丹江市市辖区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231002', '黑龙江省牡丹江市东安区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231003', '黑龙江省牡丹江市阳明区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231004', '黑龙江省牡丹江市爱民区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231005', '黑龙江省牡丹江市西安区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231024', '黑龙江省东宁县', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231025', '黑龙江省林口县', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231081', '黑龙江省绥芬河市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231083', '黑龙江省海林市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231084', '黑龙江省宁安市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231085', '黑龙江省穆棱市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231100', '黑龙江省黑河市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('231101', '黑龙江省黑河市市辖区', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231102', '黑龙江省黑河市爱辉区', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231121', '黑龙江省嫩江县', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231123', '黑龙江省逊克县', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231124', '黑龙江省孙吴县', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231181', '黑龙江省北安市', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231182', '黑龙江省五大连池市', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231200', '黑龙江省绥化市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('231201', '黑龙江省绥化市市辖区', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231202', '黑龙江省绥化市北林区', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231221', '黑龙江省望奎县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231222', '黑龙江省兰西县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231223', '黑龙江省青冈县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231224', '黑龙江省庆安县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231225', '黑龙江省明水县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231226', '黑龙江省绥棱县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231281', '黑龙江省安达市', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231282', '黑龙江省肇东市', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231283', '黑龙江省海伦市', '231200'); +INSERT INTO `base_administrative_division` VALUES ('232700', '黑龙江省大兴安岭地区', '230000'); +INSERT INTO `base_administrative_division` VALUES ('232721', '黑龙江省呼玛县', '232700'); +INSERT INTO `base_administrative_division` VALUES ('232722', '黑龙江省塔河县', '232700'); +INSERT INTO `base_administrative_division` VALUES ('232723', '黑龙江省漠河县', '232700'); +INSERT INTO `base_administrative_division` VALUES ('310000', '上海市', '0'); +INSERT INTO `base_administrative_division` VALUES ('310100', '上海市市辖区', '310000'); +INSERT INTO `base_administrative_division` VALUES ('310101', '上海市黄浦区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310104', '上海市徐汇区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310105', '上海市长宁区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310106', '上海市静安区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310107', '上海市普陀区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310108', '上海市闸北区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310109', '上海市虹口区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310110', '上海市杨浦区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310112', '上海市闵行区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310113', '上海市宝山区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310114', '上海市嘉定区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310115', '上海市浦东新区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310116', '上海市金山区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310117', '上海市松江区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310118', '上海市青浦区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310120', '上海市奉贤区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310200', '上海市县', '310000'); +INSERT INTO `base_administrative_division` VALUES ('310230', '上海市崇明县', '310200'); +INSERT INTO `base_administrative_division` VALUES ('320000', '江苏省', '0'); +INSERT INTO `base_administrative_division` VALUES ('320100', '江苏省南京市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320101', '江苏省南京市市辖区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320102', '江苏省南京市玄武区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320103', '江苏省南京市白下区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320104', '江苏省南京市秦淮区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320105', '江苏省南京市建邺区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320106', '江苏省南京市鼓楼区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320107', '江苏省南京市下关区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320111', '江苏省南京市浦口区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320113', '江苏省南京市栖霞区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320114', '江苏省南京市雨花台区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320115', '江苏省南京市江宁区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320116', '江苏省南京市六合区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320117', '江苏省南京市溧水区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320125', '江苏省高淳县', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320200', '江苏省无锡市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320201', '江苏省无锡市市辖区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320202', '江苏省无锡市崇安区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320203', '江苏省无锡市南长区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320204', '江苏省无锡市北塘区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320205', '江苏省无锡市锡山区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320206', '江苏省无锡市惠山区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320211', '江苏省无锡市滨湖区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320281', '江苏省江阴市', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320282', '江苏省宜兴市', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320300', '江苏省徐州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320301', '江苏省徐州市市辖区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320302', '江苏省徐州市鼓楼区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320303', '江苏省徐州市云龙区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320304', '江苏省徐州市九里区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320305', '江苏省徐州市贾汪区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320311', '江苏省徐州市泉山区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320312', '江苏省徐州市铜山区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320321', '江苏省丰县', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320322', '江苏省沛县', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320324', '江苏省睢宁县', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320381', '江苏省新沂市', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320382', '江苏省邳州市', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320400', '江苏省常州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320401', '江苏省常州市市辖区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320402', '江苏省常州市天宁区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320404', '江苏省常州市钟楼区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320405', '江苏省常州市戚墅堰区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320411', '江苏省常州市新北区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320412', '江苏省常州市武进区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320481', '江苏省溧阳市', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320482', '江苏省金坛市', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320500', '江苏省苏州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320501', '江苏省苏州市市辖区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320502', '江苏省苏州市沧浪区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320503', '江苏省苏州市平江区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320504', '江苏省苏州市金阊区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320505', '江苏省苏州市虎丘区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320506', '江苏省苏州市吴中区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320507', '江苏省苏州市相城区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320581', '江苏省常熟市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320582', '江苏省张家港市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320583', '江苏省昆山市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320584', '江苏省吴江市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320585', '江苏省太仓市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320600', '江苏省南通市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320601', '江苏省南通市市辖区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320602', '江苏省南通市崇川区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320611', '江苏省南通市港闸区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320612', '江苏省南通市通州区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320621', '江苏省海安县', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320623', '江苏省如东县', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320681', '江苏省启东市', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320682', '江苏省如皋市', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320684', '江苏省海门市', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320700', '江苏省连云港市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320701', '江苏省连云港市市辖区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320703', '江苏省连云港市连云区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320705', '江苏省连云港市新浦区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320706', '江苏省连云港市海州区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320721', '江苏省赣榆县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320722', '江苏省东海县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320723', '江苏省灌云县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320724', '江苏省灌南县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320800', '江苏省淮安市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320801', '江苏省淮安市市辖区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320802', '江苏省淮安市清河区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320803', '江苏省淮安市楚州区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320804', '江苏省淮安市淮阴区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320811', '江苏省淮安市清浦区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320826', '江苏省涟水县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320829', '江苏省洪泽县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320830', '江苏省盱眙县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320831', '江苏省金湖县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320900', '江苏省盐城市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320901', '江苏省盐城市市辖区', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320902', '江苏省盐城市亭湖区', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320903', '江苏省盐城市盐都区', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320921', '江苏省响水县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320922', '江苏省滨海县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320923', '江苏省阜宁县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320924', '江苏省射阳县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320925', '江苏省建湖县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320981', '江苏省东台市', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320982', '江苏省大丰市', '320900'); +INSERT INTO `base_administrative_division` VALUES ('321000', '江苏省扬州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321001', '江苏省扬州市市辖区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321002', '江苏省扬州市广陵区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321003', '江苏省扬州市邗江区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321012', '江苏省扬州市江都区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321023', '江苏省宝应县', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321081', '江苏省仪征市', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321084', '江苏省高邮市', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321100', '江苏省镇江市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321101', '江苏省镇江市市辖区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321102', '江苏省镇江市京口区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321111', '江苏省镇江市润州区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321112', '江苏省镇江市丹徒区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321181', '江苏省丹阳市', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321182', '江苏省扬中市', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321183', '江苏省句容市', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321200', '江苏省泰州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321201', '江苏省泰州市市辖区', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321202', '江苏省泰州市海陵区', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321203', '江苏省泰州市高港区', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321281', '江苏省兴化市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321282', '江苏省靖江市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321283', '江苏省泰兴市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321284', '江苏省姜堰市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321300', '江苏省宿迁市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321301', '江苏省宿迁市市辖区', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321302', '江苏省宿迁市宿城区', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321311', '江苏省宿迁市宿豫区', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321322', '江苏省沭阳县', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321323', '江苏省泗阳县', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321324', '江苏省泗洪县', '321300'); +INSERT INTO `base_administrative_division` VALUES ('330000', '浙江省', '0'); +INSERT INTO `base_administrative_division` VALUES ('330100', '浙江省杭州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330101', '浙江省杭州市市辖区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330102', '浙江省杭州市上城区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330103', '浙江省杭州市下城区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330104', '浙江省杭州市江干区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330105', '浙江省杭州市拱墅区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330106', '浙江省杭州市西湖区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330108', '浙江省杭州市滨江区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330109', '浙江省杭州市萧山区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330110', '浙江省杭州市余杭区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330122', '浙江省桐庐县', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330127', '浙江省淳安县', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330182', '浙江省建德市', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330183', '浙江省富阳市', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330185', '浙江省临安市', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330200', '浙江省宁波市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330201', '浙江省宁波市市辖区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330203', '浙江省宁波市海曙区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330204', '浙江省宁波市江东区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330205', '浙江省宁波市江北区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330206', '浙江省宁波市北仑区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330211', '浙江省宁波市镇海区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330212', '浙江省宁波市鄞州区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330225', '浙江省象山县', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330226', '浙江省宁海县', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330281', '浙江省余姚市', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330282', '浙江省慈溪市', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330283', '浙江省奉化市', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330300', '浙江省温州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330301', '浙江省温州市市辖区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330302', '浙江省温州市鹿城区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330303', '浙江省温州市龙湾区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330304', '浙江省温州市瓯海区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330322', '浙江省洞头县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330324', '浙江省永嘉县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330326', '浙江省平阳县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330327', '浙江省苍南县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330328', '浙江省文成县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330329', '浙江省泰顺县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330381', '浙江省瑞安市', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330382', '浙江省乐清市', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330400', '浙江省嘉兴市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330401', '浙江省嘉兴市市辖区', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330402', '浙江省嘉兴市南湖区', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330411', '浙江省嘉兴市秀洲区', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330421', '浙江省嘉善县', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330424', '浙江省海盐县', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330481', '浙江省海宁市', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330482', '浙江省平湖市', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330483', '浙江省桐乡市', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330500', '浙江省湖州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330501', '浙江省湖州市市辖区', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330502', '浙江省湖州市吴兴区', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330503', '浙江省湖州市南浔区', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330521', '浙江省德清县', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330522', '浙江省长兴县', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330523', '浙江省安吉县', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330600', '浙江省绍兴市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330601', '浙江省绍兴市市辖区', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330602', '浙江省绍兴市越城区', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330621', '浙江省绍兴县', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330624', '浙江省新昌县', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330681', '浙江省诸暨市', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330682', '浙江省上虞市', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330683', '浙江省嵊州市', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330700', '浙江省金华市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330701', '浙江省金华市市辖区', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330702', '浙江省金华市婺城区', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330703', '浙江省金华市金东区', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330723', '浙江省武义县', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330726', '浙江省浦江县', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330727', '浙江省磐安县', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330781', '浙江省兰溪市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330782', '浙江省义乌市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330783', '浙江省东阳市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330784', '浙江省永康市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330800', '浙江省衢州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330801', '浙江省衢州市市辖区', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330802', '浙江省衢州市柯城区', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330803', '浙江省衢州市衢江区', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330822', '浙江省常山县', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330824', '浙江省开化县', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330825', '浙江省龙游县', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330881', '浙江省江山市', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330900', '浙江省舟山市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330901', '浙江省舟山市市辖区', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330902', '浙江省舟山市定海区', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330903', '浙江省舟山市普陀区', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330921', '浙江省岱山县', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330922', '浙江省嵊泗县', '330900'); +INSERT INTO `base_administrative_division` VALUES ('331000', '浙江省台州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('331001', '浙江省台州市市辖区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331002', '浙江省台州市椒江区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331003', '浙江省台州市黄岩区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331004', '浙江省台州市路桥区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331021', '浙江省玉环县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331022', '浙江省三门县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331023', '浙江省天台县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331024', '浙江省仙居县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331081', '浙江省温岭市', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331082', '浙江省临海市', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331100', '浙江省丽水市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('331101', '浙江省丽水市市辖区', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331102', '浙江省丽水市莲都区', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331121', '浙江省青田县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331122', '浙江省缙云县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331123', '浙江省遂昌县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331124', '浙江省松阳县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331125', '浙江省云和县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331126', '浙江省庆元县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331127', '浙江省景宁畲族自治县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331181', '浙江省龙泉市', '331100'); +INSERT INTO `base_administrative_division` VALUES ('340000', '安徽省', '0'); +INSERT INTO `base_administrative_division` VALUES ('340100', '安徽省合肥市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340101', '安徽省合肥市市辖区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340102', '安徽省合肥市瑶海区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340103', '安徽省合肥市庐阳区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340104', '安徽省合肥市蜀山区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340111', '安徽省合肥市包河区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340121', '安徽省长丰县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340122', '安徽省肥东县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340123', '安徽省肥西县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340124', '安徽省庐江县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340181', '安徽省巢湖市', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340200', '安徽省芜湖市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340201', '安徽省芜湖市市辖区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340202', '安徽省芜湖市镜湖区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340203', '安徽省芜湖市弋江区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340207', '安徽省芜湖市鸠江区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340208', '安徽省芜湖市三山区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340221', '安徽省芜湖县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340222', '安徽省繁昌县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340223', '安徽省南陵县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340225', '安徽省无为县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340300', '安徽省蚌埠市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340301', '安徽省蚌埠市市辖区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340302', '安徽省蚌埠市龙子湖区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340303', '安徽省蚌埠市蚌山区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340304', '安徽省蚌埠市禹会区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340311', '安徽省蚌埠市淮上区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340321', '安徽省怀远县', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340322', '安徽省五河县', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340323', '安徽省固镇县', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340400', '安徽省淮南市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340401', '安徽省淮南市市辖区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340402', '安徽省淮南市大通区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340403', '安徽省淮南市田家庵区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340404', '安徽省淮南市谢家集区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340405', '安徽省淮南市八公山区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340406', '安徽省淮南市潘集区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340421', '安徽省凤台县', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340500', '安徽省马鞍山市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340501', '安徽省马鞍山市市辖区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340502', '安徽省马鞍山市金家庄区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340503', '安徽省马鞍山市花山区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340504', '安徽省马鞍山市雨山区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340521', '安徽省当涂县', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340522', '安徽省含山县', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340523', '安徽省和县', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340600', '安徽省淮北市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340601', '安徽省淮北市市辖区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340602', '安徽省淮北市杜集区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340603', '安徽省淮北市相山区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340604', '安徽省淮北市烈山区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340621', '安徽省濉溪县', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340700', '安徽省铜陵市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340701', '安徽省铜陵市市辖区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340702', '安徽省铜陵市铜官山区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340703', '安徽省铜陵市狮子山区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340711', '安徽省铜陵市郊区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340721', '安徽省铜陵县', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340800', '安徽省安庆市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340801', '安徽省安庆市市辖区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340802', '安徽省安庆市迎江区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340803', '安徽省安庆市大观区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340811', '安徽省安庆市宜秀区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340822', '安徽省怀宁县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340823', '安徽省枞阳县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340824', '安徽省潜山县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340825', '安徽省太湖县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340826', '安徽省宿松县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340827', '安徽省望江县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340828', '安徽省岳西县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340881', '安徽省桐城市', '340800'); +INSERT INTO `base_administrative_division` VALUES ('341000', '安徽省黄山市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341001', '安徽省黄山市市辖区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341002', '安徽省黄山市屯溪区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341003', '安徽省黄山市黄山区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341004', '安徽省黄山市徽州区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341021', '安徽省歙县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341022', '安徽省休宁县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341023', '安徽省黟县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341024', '安徽省祁门县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341100', '安徽省滁州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341101', '安徽省滁州市市辖区', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341102', '安徽省滁州市琅琊区', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341103', '安徽省滁州市南谯区', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341122', '安徽省来安县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341124', '安徽省全椒县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341125', '安徽省定远县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341126', '安徽省凤阳县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341181', '安徽省天长市', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341182', '安徽省明光市', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341200', '安徽省阜阳市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341201', '安徽省阜阳市市辖区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341202', '安徽省阜阳市颍州区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341203', '安徽省阜阳市颍东区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341204', '安徽省阜阳市颍泉区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341221', '安徽省临泉县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341222', '安徽省太和县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341225', '安徽省阜南县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341226', '安徽省颍上县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341282', '安徽省界首市', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341300', '安徽省宿州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341301', '安徽省宿州市市辖区', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341302', '安徽省宿州市埇桥区', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341321', '安徽省砀山县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341322', '安徽省萧县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341323', '安徽省灵璧县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341324', '安徽省泗县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341500', '安徽省六安市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341501', '安徽省六安市市辖区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341502', '安徽省六安市金安区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341503', '安徽省六安市裕安区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341504', '安徽省叶集试验区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341521', '安徽省寿县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341522', '安徽省霍邱县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341523', '安徽省舒城县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341524', '安徽省金寨县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341525', '安徽省霍山县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341600', '安徽省亳州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341601', '安徽省亳州市市辖区', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341602', '安徽省亳州市谯城区', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341621', '安徽省涡阳县', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341622', '安徽省蒙城县', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341623', '安徽省利辛县', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341700', '安徽省池州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341701', '安徽省池州市市辖区', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341702', '安徽省池州市贵池区', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341721', '安徽省东至县', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341722', '安徽省石台县', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341723', '安徽省青阳县', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341800', '安徽省宣城市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341801', '安徽省宣城市市辖区', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341802', '安徽省宣城市宣州区', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341821', '安徽省郎溪县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341822', '安徽省广德县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341823', '安徽省泾县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341824', '安徽省绩溪县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341825', '安徽省旌德县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341881', '安徽省宁国市', '341800'); +INSERT INTO `base_administrative_division` VALUES ('350000', '福建省', '0'); +INSERT INTO `base_administrative_division` VALUES ('350100', '福建省福州市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350101', '福建省福州市市辖区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350102', '福建省福州市鼓楼区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350103', '福建省福州市台江区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350104', '福建省福州市仓山区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350105', '福建省福州市马尾区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350111', '福建省福州市晋安区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350121', '福建省闽侯县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350122', '福建省连江县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350123', '福建省罗源县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350124', '福建省闽清县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350125', '福建省永泰县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350128', '福建省平潭县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350181', '福建省福清市', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350182', '福建省长乐市', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350200', '福建省厦门市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350201', '福建省厦门市市辖区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350203', '福建省厦门市思明区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350205', '福建省厦门市海沧区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350206', '福建省厦门市湖里区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350211', '福建省厦门市集美区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350212', '福建省厦门市同安区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350213', '福建省厦门市翔安区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350300', '福建省莆田市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350301', '福建省莆田市市辖区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350302', '福建省莆田市城厢区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350303', '福建省莆田市涵江区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350304', '福建省莆田市荔城区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350305', '福建省莆田市秀屿区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350322', '福建省仙游县', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350400', '福建省三明市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350401', '福建省三明市市辖区', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350402', '福建省三明市梅列区', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350403', '福建省三明市三元区', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350421', '福建省明溪县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350423', '福建省清流县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350424', '福建省宁化县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350425', '福建省大田县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350426', '福建省尤溪县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350427', '福建省沙县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350428', '福建省将乐县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350429', '福建省泰宁县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350430', '福建省建宁县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350481', '福建省永安市', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350500', '福建省泉州市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350501', '福建省泉州市市辖区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350502', '福建省泉州市鲤城区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350503', '福建省泉州市丰泽区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350504', '福建省泉州市洛江区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350505', '福建省泉州市泉港区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350521', '福建省惠安县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350524', '福建省安溪县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350525', '福建省永春县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350526', '福建省德化县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350527', '福建省金门县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350581', '福建省石狮市', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350582', '福建省晋江市', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350583', '福建省南安市', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350600', '福建省漳州市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350601', '福建省漳州市市辖区', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350602', '福建省漳州市芗城区', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350603', '福建省漳州市龙文区', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350622', '福建省云霄县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350623', '福建省漳浦县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350624', '福建省诏安县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350625', '福建省长泰县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350626', '福建省东山县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350627', '福建省南靖县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350628', '福建省平和县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350629', '福建省华安县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350681', '福建省龙海市', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350700', '福建省南平市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350701', '福建省南平市市辖区', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350702', '福建省南平市延平区', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350721', '福建省顺昌县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350722', '福建省浦城县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350723', '福建省光泽县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350724', '福建省松溪县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350725', '福建省政和县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350781', '福建省邵武市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350782', '福建省武夷山市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350783', '福建省建瓯市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350784', '福建省建阳市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350800', '福建省龙岩市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350801', '福建省龙岩市市辖区', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350802', '福建省龙岩市新罗区', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350821', '福建省长汀县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350822', '福建省永定县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350823', '福建省上杭县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350824', '福建省武平县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350825', '福建省连城县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350881', '福建省漳平市', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350900', '福建省宁德市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350901', '福建省宁德市市辖区', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350902', '福建省宁德市蕉城区', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350921', '福建省霞浦县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350922', '福建省古田县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350923', '福建省屏南县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350924', '福建省寿宁县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350925', '福建省周宁县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350926', '福建省柘荣县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350981', '福建省福安市', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350982', '福建省福鼎市', '350900'); +INSERT INTO `base_administrative_division` VALUES ('360000', '江西省', '0'); +INSERT INTO `base_administrative_division` VALUES ('360100', '江西省南昌市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360101', '江西省南昌市市辖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360102', '江西省南昌市东湖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360103', '江西省南昌市西湖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360104', '江西省南昌市青云谱区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360105', '江西省南昌市湾里区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360111', '江西省南昌市青山湖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360121', '江西省南昌县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360122', '江西省新建县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360123', '江西省安义县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360124', '江西省进贤县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360200', '江西省景德镇市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360201', '江西省景德镇市市辖区', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360202', '江西省景德镇市昌江区', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360203', '江西省景德镇市珠山区', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360222', '江西省浮梁县', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360281', '江西省乐平市', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360300', '江西省萍乡市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360301', '江西省萍乡市市辖区', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360302', '江西省萍乡市安源区', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360313', '江西省萍乡市湘东区', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360321', '江西省莲花县', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360322', '江西省上栗县', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360323', '江西省芦溪县', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360400', '江西省九江市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360401', '江西省九江市市辖区', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360402', '江西省九江市庐山区', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360403', '江西省九江市浔阳区', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360421', '江西省九江县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360423', '江西省武宁县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360424', '江西省修水县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360425', '江西省永修县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360426', '江西省德安县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360427', '江西省星子县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360428', '江西省都昌县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360429', '江西省湖口县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360430', '江西省彭泽县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360481', '江西省瑞昌市', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360482', '江西省共青城市', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360500', '江西省新余市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360501', '江西省新余市市辖区', '360500'); +INSERT INTO `base_administrative_division` VALUES ('360502', '江西省新余市渝水区', '360500'); +INSERT INTO `base_administrative_division` VALUES ('360521', '江西省分宜县', '360500'); +INSERT INTO `base_administrative_division` VALUES ('360600', '江西省鹰潭市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360601', '江西省鹰潭市市辖区', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360602', '江西省鹰潭市月湖区', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360622', '江西省余江县', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360681', '江西省贵溪市', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360700', '江西省赣州市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360701', '江西省赣州市市辖区', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360702', '江西省赣州市章贡区', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360721', '江西省赣县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360722', '江西省信丰县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360723', '江西省大余县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360724', '江西省上犹县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360725', '江西省崇义县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360726', '江西省安远县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360727', '江西省龙南县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360728', '江西省定南县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360729', '江西省全南县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360730', '江西省宁都县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360731', '江西省于都县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360732', '江西省兴国县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360733', '江西省会昌县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360734', '江西省寻乌县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360735', '江西省石城县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360781', '江西省瑞金市', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360782', '江西省南康市', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360800', '江西省吉安市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360801', '江西省吉安市市辖区', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360802', '江西省吉安市吉州区', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360803', '江西省吉安市青原区', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360821', '江西省吉安县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360822', '江西省吉水县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360823', '江西省峡江县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360824', '江西省新干县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360825', '江西省永丰县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360826', '江西省泰和县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360827', '江西省遂川县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360828', '江西省万安县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360829', '江西省安福县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360830', '江西省永新县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360881', '江西省井冈山市', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360900', '江西省宜春市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360901', '江西省宜春市市辖区', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360902', '江西省宜春市袁州区', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360921', '江西省奉新县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360922', '江西省万载县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360923', '江西省上高县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360924', '江西省宜丰县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360925', '江西省靖安县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360926', '江西省铜鼓县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360981', '江西省丰城市', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360982', '江西省樟树市', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360983', '江西省高安市', '360900'); +INSERT INTO `base_administrative_division` VALUES ('361000', '江西省抚州市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('361001', '江西省抚州市市辖区', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361002', '江西省抚州市临川区', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361021', '江西省南城县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361022', '江西省黎川县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361023', '江西省南丰县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361024', '江西省崇仁县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361025', '江西省乐安县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361026', '江西省宜黄县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361027', '江西省金溪县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361028', '江西省资溪县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361029', '江西省东乡县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361030', '江西省广昌县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361100', '江西省上饶市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('361101', '江西省上饶市市辖区', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361102', '江西省上饶市信州区', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361121', '江西省上饶县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361122', '江西省广丰县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361123', '江西省玉山县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361124', '江西省铅山县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361125', '江西省横峰县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361126', '江西省弋阳县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361127', '江西省余干县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361128', '江西省鄱阳县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361129', '江西省万年县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361130', '江西省婺源县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361181', '江西省德兴市', '361100'); +INSERT INTO `base_administrative_division` VALUES ('370000', '山东省', '0'); +INSERT INTO `base_administrative_division` VALUES ('370100', '山东省济南市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370101', '山东省济南市市辖区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370102', '山东省济南市历下区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370103', '山东省济南市市中区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370104', '山东省济南市槐荫区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370105', '山东省济南市天桥区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370112', '山东省济南市历城区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370113', '山东省济南市长清区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370124', '山东省平阴县', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370125', '山东省济阳县', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370126', '山东省商河县', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370181', '山东省章丘市', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370200', '山东省青岛市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370201', '山东省青岛市市辖区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370202', '山东省青岛市市南区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370203', '山东省青岛市市北区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370205', '山东省青岛市四方区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370211', '山东省青岛市黄岛区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370212', '山东省青岛市崂山区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370213', '山东省青岛市李沧区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370214', '山东省青岛市城阳区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370281', '山东省胶州市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370282', '山东省即墨市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370283', '山东省平度市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370284', '山东省胶南市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370285', '山东省莱西市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370300', '山东省淄博市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370301', '山东省淄博市市辖区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370302', '山东省淄博市淄川区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370303', '山东省淄博市张店区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370304', '山东省淄博市博山区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370305', '山东省淄博市临淄区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370306', '山东省淄博市周村区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370321', '山东省桓台县', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370322', '山东省高青县', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370323', '山东省沂源县', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370400', '山东省枣庄市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370401', '山东省枣庄市市辖区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370402', '山东省枣庄市市中区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370403', '山东省枣庄市薛城区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370404', '山东省枣庄市峄城区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370405', '山东省枣庄市台儿庄区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370406', '山东省枣庄市山亭区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370481', '山东省滕州市', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370500', '山东省东营市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370501', '山东省东营市市辖区', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370502', '山东省东营市东营区', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370503', '山东省东营市河口区', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370521', '山东省垦利县', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370522', '山东省利津县', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370523', '山东省广饶县', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370600', '山东省烟台市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370601', '山东省烟台市市辖区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370602', '山东省烟台市芝罘区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370611', '山东省烟台市福山区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370612', '山东省烟台市牟平区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370613', '山东省烟台市莱山区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370634', '山东省长岛县', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370681', '山东省龙口市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370682', '山东省莱阳市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370683', '山东省莱州市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370684', '山东省蓬莱市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370685', '山东省招远市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370686', '山东省栖霞市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370687', '山东省海阳市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370700', '山东省潍坊市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370701', '山东省潍坊市市辖区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370702', '山东省潍坊市潍城区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370703', '山东省潍坊市寒亭区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370704', '山东省潍坊市坊子区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370705', '山东省潍坊市奎文区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370724', '山东省临朐县', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370725', '山东省昌乐县', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370781', '山东省青州市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370782', '山东省诸城市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370783', '山东省寿光市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370784', '山东省安丘市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370785', '山东省高密市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370786', '山东省昌邑市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370800', '山东省济宁市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370801', '山东省济宁市市辖区', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370802', '山东省济宁市市中区', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370811', '山东省济宁市任城区', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370826', '山东省微山县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370827', '山东省鱼台县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370828', '山东省金乡县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370829', '山东省嘉祥县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370830', '山东省汶上县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370831', '山东省泗水县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370832', '山东省梁山县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370881', '山东省曲阜市', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370882', '山东省兖州市', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370883', '山东省邹城市', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370900', '山东省泰安市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370901', '山东省泰安市市辖区', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370902', '山东省泰安市泰山区', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370903', '山东省泰安市岱岳区', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370921', '山东省宁阳县', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370923', '山东省东平县', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370982', '山东省新泰市', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370983', '山东省肥城市', '370900'); +INSERT INTO `base_administrative_division` VALUES ('371000', '山东省威海市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371001', '山东省威海市市辖区', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371002', '山东省威海市环翠区', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371081', '山东省文登市', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371082', '山东省荣成市', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371083', '山东省乳山市', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371100', '山东省日照市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371101', '山东省日照市市辖区', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371102', '山东省日照市东港区', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371103', '山东省日照市岚山区', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371121', '山东省五莲县', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371122', '山东省莒县', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371200', '山东省莱芜市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371201', '山东省莱芜市市辖区', '371200'); +INSERT INTO `base_administrative_division` VALUES ('371202', '山东省莱芜市莱城区', '371200'); +INSERT INTO `base_administrative_division` VALUES ('371203', '山东省莱芜市钢城区', '371200'); +INSERT INTO `base_administrative_division` VALUES ('371300', '山东省临沂市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371301', '山东省临沂市市辖区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371302', '山东省临沂市兰山区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371311', '山东省临沂市罗庄区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371312', '山东省临沂市河东区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371321', '山东省沂南县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371322', '山东省郯城县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371323', '山东省沂水县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371324', '山东省苍山县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371325', '山东省费县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371326', '山东省平邑县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371327', '山东省莒南县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371328', '山东省蒙阴县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371329', '山东省临沭县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371400', '山东省德州市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371401', '山东省德州市市辖区', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371402', '山东省德州市德城区', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371421', '山东省陵县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371422', '山东省宁津县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371423', '山东省庆云县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371424', '山东省临邑县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371425', '山东省齐河县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371426', '山东省平原县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371427', '山东省夏津县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371428', '山东省武城县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371481', '山东省乐陵市', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371482', '山东省禹城市', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371500', '山东省聊城市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371501', '山东省聊城市市辖区', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371502', '山东省聊城市东昌府区', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371521', '山东省阳谷县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371522', '山东省莘县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371523', '山东省茌平县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371524', '山东省东阿县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371525', '山东省冠县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371526', '山东省高唐县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371581', '山东省临清市', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371600', '山东省滨州市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371601', '山东省滨州市市辖区', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371602', '山东省滨州市滨城区', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371621', '山东省惠民县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371622', '山东省阳信县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371623', '山东省无棣县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371624', '山东省沾化县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371625', '山东省博兴县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371626', '山东省邹平县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371700', '山东省菏泽市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371701', '山东省菏泽市市辖区', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371702', '山东省菏泽市牡丹区', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371721', '山东省曹县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371722', '山东省单县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371723', '山东省成武县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371724', '山东省巨野县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371725', '山东省郓城县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371726', '山东省鄄城县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371727', '山东省定陶县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371728', '山东省东明县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('410000', '河南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('410100', '河南省郑州市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410101', '河南省郑州市市辖区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410102', '河南省郑州市中原区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410103', '河南省郑州市二七区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410104', '河南省郑州市管城回族区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410105', '河南省郑州市金水区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410106', '河南省郑州市上街区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410108', '河南省郑州市惠济区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410122', '河南省中牟县', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410181', '河南省巩义市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410182', '河南省荥阳市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410183', '河南省新密市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410184', '河南省新郑市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410185', '河南省登封市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410200', '河南省开封市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410201', '河南省开封市市辖区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410202', '河南省开封市龙亭区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410203', '河南省开封市顺河回族区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410204', '河南省开封市鼓楼区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410205', '河南省开封市禹王台区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410211', '河南省开封市金明区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410221', '河南省杞县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410222', '河南省通许县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410223', '河南省尉氏县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410224', '河南省开封县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410225', '河南省兰考县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410300', '河南省洛阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410301', '河南省洛阳市市辖区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410302', '河南省洛阳市老城区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410303', '河南省洛阳市西工区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410304', '河南省洛阳市廛河回族区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410305', '河南省洛阳市涧西区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410306', '河南省洛阳市吉利区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410307', '河南省洛阳市洛龙区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410322', '河南省孟津县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410323', '河南省新安县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410324', '河南省栾川县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410325', '河南省嵩县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410326', '河南省汝阳县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410327', '河南省宜阳县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410328', '河南省洛宁县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410329', '河南省伊川县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410381', '河南省偃师市', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410400', '河南省平顶山市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410401', '河南省平顶山市市辖区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410402', '河南省平顶山市新华区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410403', '河南省平顶山市卫东区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410404', '河南省平顶山市石龙区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410411', '河南省平顶山市湛河区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410421', '河南省宝丰县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410422', '河南省叶县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410423', '河南省鲁山县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410425', '河南省郏县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410481', '河南省舞钢市', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410482', '河南省汝州市', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410500', '河南省安阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410501', '河南省安阳市市辖区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410502', '河南省安阳市文峰区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410503', '河南省安阳市北关区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410505', '河南省安阳市殷都区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410506', '河南省安阳市龙安区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410522', '河南省安阳县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410523', '河南省汤阴县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410526', '河南省滑县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410527', '河南省内黄县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410581', '河南省林州市', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410600', '河南省鹤壁市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410601', '河南省鹤壁市市辖区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410602', '河南省鹤壁市鹤山区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410603', '河南省鹤壁市山城区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410611', '河南省鹤壁市淇滨区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410621', '河南省浚县', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410622', '河南省淇县', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410700', '河南省新乡市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410701', '河南省新乡市市辖区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410702', '河南省新乡市红旗区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410703', '河南省新乡市卫滨区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410704', '河南省新乡市凤泉区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410711', '河南省新乡市牧野区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410721', '河南省新乡县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410724', '河南省获嘉县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410725', '河南省原阳县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410726', '河南省延津县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410727', '河南省封丘县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410728', '河南省长垣县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410781', '河南省卫辉市', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410782', '河南省辉县市', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410800', '河南省焦作市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410801', '河南省焦作市市辖区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410802', '河南省焦作市解放区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410803', '河南省焦作市中站区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410804', '河南省焦作市马村区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410811', '河南省焦作市山阳区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410821', '河南省修武县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410822', '河南省博爱县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410823', '河南省武陟县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410825', '河南省温县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410882', '河南省沁阳市', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410883', '河南省孟州市', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410900', '河南省濮阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410901', '河南省濮阳市市辖区', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410902', '河南省濮阳市华龙区', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410922', '河南省清丰县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410923', '河南省南乐县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410926', '河南省范县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410927', '河南省台前县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410928', '河南省濮阳县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('411000', '河南省许昌市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411001', '河南省许昌市市辖区', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411002', '河南省许昌市魏都区', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411023', '河南省许昌县', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411024', '河南省鄢陵县', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411025', '河南省襄城县', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411081', '河南省禹州市', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411082', '河南省长葛市', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411100', '河南省漯河市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411101', '河南省漯河市市辖区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411102', '河南省漯河市源汇区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411103', '河南省漯河市郾城区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411104', '河南省漯河市召陵区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411121', '河南省舞阳县', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411122', '河南省临颍县', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411200', '河南省三门峡市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411201', '河南省三门峡市市辖区', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411202', '河南省三门峡市湖滨区', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411221', '河南省渑池县', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411222', '河南省陕县', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411224', '河南省卢氏县', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411281', '河南省义马市', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411282', '河南省灵宝市', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411300', '河南省南阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411301', '河南省南阳市市辖区', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411302', '河南省南阳市宛城区', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411303', '河南省南阳市卧龙区', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411321', '河南省南召县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411322', '河南省方城县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411323', '河南省西峡县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411324', '河南省镇平县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411325', '河南省内乡县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411326', '河南省淅川县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411327', '河南省社旗县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411328', '河南省唐河县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411329', '河南省新野县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411330', '河南省桐柏县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411381', '河南省邓州市', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411400', '河南省商丘市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411401', '河南省商丘市市辖区', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411402', '河南省商丘市梁园区', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411403', '河南省商丘市睢阳区', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411421', '河南省民权县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411422', '河南省睢县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411423', '河南省宁陵县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411424', '河南省柘城县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411425', '河南省虞城县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411426', '河南省夏邑县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411481', '河南省永城市', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411500', '河南省信阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411501', '河南省信阳市市辖区', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411502', '河南省信阳市师河区', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411503', '河南省信阳市平桥区', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411521', '河南省罗山县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411522', '河南省光山县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411523', '河南省新县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411524', '河南省商城县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411525', '河南省固始县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411526', '河南省潢川县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411527', '河南省淮滨县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411528', '河南省息县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411600', '河南省周口市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411601', '河南省周口市市辖区', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411602', '河南省周口市川汇区', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411621', '河南省扶沟县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411622', '河南省西华县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411623', '河南省商水县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411624', '河南省沈丘县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411625', '河南省郸城县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411626', '河南省淮阳县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411627', '河南省太康县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411628', '河南省鹿邑县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411681', '河南省项城市', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411700', '河南省驻马店市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411701', '河南省驻马店市市辖区', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411702', '河南省驻马店市驿城区', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411721', '河南省西平县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411722', '河南省上蔡县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411723', '河南省平舆县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411724', '河南省正阳县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411725', '河南省确山县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411726', '河南省泌阳县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411727', '河南省汝南县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411728', '河南省遂平县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411729', '河南省新蔡县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('419000', '河南省省直辖县级行政区划', '410000'); +INSERT INTO `base_administrative_division` VALUES ('419001', '河南省济源市', '419000'); +INSERT INTO `base_administrative_division` VALUES ('420000', '湖北省', '0'); +INSERT INTO `base_administrative_division` VALUES ('420100', '湖北省武汉市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420101', '湖北省武汉市市辖区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420102', '湖北省武汉市江岸区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420103', '湖北省武汉市江汉区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420104', '湖北省武汉市硚口区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420105', '湖北省武汉市汉阳区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420106', '湖北省武汉市武昌区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420107', '湖北省武汉市青山区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420111', '湖北省武汉市洪山区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420112', '湖北省武汉市东西湖区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420113', '湖北省武汉市汉南区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420114', '湖北省武汉市蔡甸区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420115', '湖北省武汉市江夏区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420116', '湖北省武汉市黄陂区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420117', '湖北省武汉市新洲区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420200', '湖北省黄石市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420201', '湖北省黄石市市辖区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420202', '湖北省黄石市黄石港区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420203', '湖北省黄石市西塞山区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420204', '湖北省黄石市下陆区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420205', '湖北省黄石市铁山区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420222', '湖北省阳新县', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420281', '湖北省大冶市', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420300', '湖北省十堰市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420301', '湖北省十堰市市辖区', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420302', '湖北省十堰市茅箭区', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420303', '湖北省十堰市张湾区', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420321', '湖北省郧县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420322', '湖北省郧西县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420323', '湖北省竹山县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420324', '湖北省竹溪县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420325', '湖北省房县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420381', '湖北省丹江口市', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420500', '湖北省宜昌市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420501', '湖北省宜昌市市辖区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420502', '湖北省宜昌市西陵区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420503', '湖北省宜昌市伍家岗区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420504', '湖北省宜昌市点军区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420505', '湖北省宜昌市猇亭区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420506', '湖北省宜昌市夷陵区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420525', '湖北省远安县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420526', '湖北省兴山县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420527', '湖北省秭归县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420528', '湖北省长阳土家族自治县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420529', '湖北省五峰土家族自治县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420581', '湖北省宜都市', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420582', '湖北省当阳市', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420583', '湖北省枝江市', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420600', '湖北省襄阳市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420601', '湖北省襄阳市市辖区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420602', '湖北省襄阳市襄城区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420606', '湖北省襄阳市樊城区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420607', '湖北省襄阳市襄州区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420624', '湖北省南漳县', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420625', '湖北省谷城县', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420626', '湖北省保康县', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420682', '湖北省老河口市', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420683', '湖北省枣阳市', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420684', '湖北省宜城市', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420700', '湖北省鄂州市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420701', '湖北省鄂州市市辖区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420702', '湖北省鄂州市梁子湖区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420703', '湖北省鄂州市华容区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420704', '湖北省鄂州市鄂城区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420800', '湖北省荆门市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420801', '湖北省荆门市市辖区', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420802', '湖北省荆门市东宝区', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420804', '湖北省荆门市掇刀区', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420821', '湖北省京山县', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420822', '湖北省沙洋县', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420881', '湖北省钟祥市', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420900', '湖北省孝感市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420901', '湖北省孝感市市辖区', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420902', '湖北省孝感市孝南区', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420921', '湖北省孝昌县', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420922', '湖北省大悟县', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420923', '湖北省云梦县', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420981', '湖北省应城市', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420982', '湖北省安陆市', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420984', '湖北省汉川市', '420900'); +INSERT INTO `base_administrative_division` VALUES ('421000', '湖北省荆州市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421001', '湖北省荆州市市辖区', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421002', '湖北省荆州市沙市区', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421003', '湖北省荆州市荆州区', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421022', '湖北省公安县', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421023', '湖北省监利县', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421024', '湖北省江陵县', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421081', '湖北省石首市', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421083', '湖北省洪湖市', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421087', '湖北省松滋市', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421100', '湖北省黄冈市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421101', '湖北省黄冈市市辖区', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421102', '湖北省黄冈市黄州区', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421121', '湖北省团风县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421122', '湖北省红安县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421123', '湖北省罗田县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421124', '湖北省英山县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421125', '湖北省浠水县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421126', '湖北省蕲春县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421127', '湖北省黄梅县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421181', '湖北省麻城市', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421182', '湖北省武穴市', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421200', '湖北省咸宁市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421201', '湖北省咸宁市市辖区', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421202', '湖北省咸宁市咸安区', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421221', '湖北省嘉鱼县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421222', '湖北省通城县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421223', '湖北省崇阳县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421224', '湖北省通山县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421281', '湖北省赤壁市', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421300', '湖北省随州市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421301', '湖北省随州市市辖区', '421300'); +INSERT INTO `base_administrative_division` VALUES ('421302', '湖北省随州市曾都区', '421300'); +INSERT INTO `base_administrative_division` VALUES ('421381', '湖北省广水市', '421300'); +INSERT INTO `base_administrative_division` VALUES ('422800', '湖北省恩施土家族苗族自治州', '420000'); +INSERT INTO `base_administrative_division` VALUES ('422801', '湖北省恩施市', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422802', '湖北省利川市', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422822', '湖北省建始县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422823', '湖北省巴东县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422825', '湖北省宣恩县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422826', '湖北省咸丰县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422827', '湖北省来凤县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422828', '湖北省鹤峰县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('429000', '湖北省省直辖县级行政区划', '420000'); +INSERT INTO `base_administrative_division` VALUES ('429004', '湖北省仙桃市', '429000'); +INSERT INTO `base_administrative_division` VALUES ('429005', '湖北省潜江市', '429000'); +INSERT INTO `base_administrative_division` VALUES ('429006', '湖北省天门市', '429000'); +INSERT INTO `base_administrative_division` VALUES ('429021', '湖北省神农架林区', '429000'); +INSERT INTO `base_administrative_division` VALUES ('430000', '湖南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('430100', '湖南省长沙市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430101', '湖南省长沙市市辖区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430102', '湖南省长沙市芙蓉区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430103', '湖南省长沙市天心区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430104', '湖南省长沙市岳麓区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430105', '湖南省长沙市开福区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430111', '湖南省长沙市雨花区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430112', '湖南省长沙市望城区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430121', '湖南省长沙县', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430124', '湖南省宁乡县', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430181', '湖南省浏阳市', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430200', '湖南省株洲市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430201', '湖南省株洲市市辖区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430202', '湖南省株洲市荷塘区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430203', '湖南省株洲市芦淞区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430204', '湖南省株洲市石峰区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430211', '湖南省株洲市天元区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430221', '湖南省株洲县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430223', '湖南省攸县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430224', '湖南省茶陵县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430225', '湖南省炎陵县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430281', '湖南省醴陵市', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430300', '湖南省湘潭市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430301', '湖南省湘潭市市辖区', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430302', '湖南省湘潭市雨湖区', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430304', '湖南省湘潭市岳塘区', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430321', '湖南省湘潭县', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430381', '湖南省湘乡市', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430382', '湖南省韶山市', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430400', '湖南省衡阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430401', '湖南省衡阳市市辖区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430405', '湖南省衡阳市珠晖区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430406', '湖南省衡阳市雁峰区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430407', '湖南省衡阳市石鼓区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430408', '湖南省衡阳市蒸湘区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430412', '湖南省衡阳市南岳区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430421', '湖南省衡阳县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430422', '湖南省衡南县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430423', '湖南省衡山县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430424', '湖南省衡东县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430426', '湖南省祁东县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430481', '湖南省耒阳市', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430482', '湖南省常宁市', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430500', '湖南省邵阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430501', '湖南省邵阳市市辖区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430502', '湖南省邵阳市双清区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430503', '湖南省邵阳市大祥区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430511', '湖南省邵阳市北塔区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430521', '湖南省邵东县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430522', '湖南省新邵县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430523', '湖南省邵阳县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430524', '湖南省隆回县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430525', '湖南省洞口县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430527', '湖南省绥宁县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430528', '湖南省新宁县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430529', '湖南省城步苗族自治县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430581', '湖南省武冈市', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430600', '湖南省岳阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430601', '湖南省岳阳市市辖区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430602', '湖南省岳阳市岳阳楼区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430603', '湖南省岳阳市云溪区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430611', '湖南省岳阳市君山区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430621', '湖南省岳阳县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430623', '湖南省华容县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430624', '湖南省湘阴县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430626', '湖南省平江县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430681', '湖南省汨罗市', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430682', '湖南省临湘市', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430700', '湖南省常德市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430701', '湖南省常德市市辖区', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430702', '湖南省常德市武陵区', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430703', '湖南省常德市鼎城区', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430721', '湖南省安乡县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430722', '湖南省汉寿县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430723', '湖南省澧县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430724', '湖南省临澧县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430725', '湖南省桃源县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430726', '湖南省石门县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430781', '湖南省津市市', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430800', '湖南省张家界市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430801', '湖南省张家界市市辖区', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430802', '湖南省张家界市永定区', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430811', '湖南省张家界市武陵源区', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430821', '湖南省慈利县', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430822', '湖南省桑植县', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430900', '湖南省益阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430901', '湖南省益阳市市辖区', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430902', '湖南省益阳市资阳区', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430903', '湖南省益阳市赫山区', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430921', '湖南省南县', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430922', '湖南省桃江县', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430923', '湖南省安化县', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430981', '湖南省沅江市', '430900'); +INSERT INTO `base_administrative_division` VALUES ('431000', '湖南省郴州市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431001', '湖南省郴州市市辖区', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431002', '湖南省郴州市北湖区', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431003', '湖南省郴州市苏仙区', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431021', '湖南省桂阳县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431022', '湖南省宜章县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431023', '湖南省永兴县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431024', '湖南省嘉禾县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431025', '湖南省临武县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431026', '湖南省汝城县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431027', '湖南省桂东县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431028', '湖南省安仁县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431081', '湖南省资兴市', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431100', '湖南省永州市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431101', '湖南省永州市市辖区', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431102', '湖南省永州市零陵区', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431103', '湖南省永州市冷水滩区', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431121', '湖南省祁阳县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431122', '湖南省东安县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431123', '湖南省双牌县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431124', '湖南省道县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431125', '湖南省江永县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431126', '湖南省宁远县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431127', '湖南省蓝山县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431128', '湖南省新田县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431129', '湖南省江华瑶族自治县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431200', '湖南省怀化市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431201', '湖南省怀化市市辖区', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431202', '湖南省怀化市鹤城区', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431221', '湖南省中方县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431222', '湖南省沅陵县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431223', '湖南省辰溪县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431224', '湖南省溆浦县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431225', '湖南省会同县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431226', '湖南省麻阳苗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431227', '湖南省新晃侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431228', '湖南省芷江侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431229', '湖南省靖州苗族侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431230', '湖南省通道侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431281', '湖南省洪江市', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431300', '湖南省娄底市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431301', '湖南省娄底市市辖区', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431302', '湖南省娄底市娄星区', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431321', '湖南省双峰县', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431322', '湖南省新化县', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431381', '湖南省冷水江市', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431382', '湖南省涟源市', '431300'); +INSERT INTO `base_administrative_division` VALUES ('433100', '湖南省湘西土家族苗族自治州', '430000'); +INSERT INTO `base_administrative_division` VALUES ('433101', '湖南省吉首市', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433122', '湖南省泸溪县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433123', '湖南省凤凰县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433124', '湖南省花垣县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433125', '湖南省保靖县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433126', '湖南省古丈县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433127', '湖南省永顺县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433130', '湖南省龙山县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('440000', '广东省', '0'); +INSERT INTO `base_administrative_division` VALUES ('440100', '广东省广州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440101', '广东省广州市市辖区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440103', '广东省广州市荔湾区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440104', '广东省广州市越秀区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440105', '广东省广州市海珠区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440106', '广东省广州市天河区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440111', '广东省广州市白云区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440112', '广东省广州市黄埔区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440113', '广东省广州市番禺区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440114', '广东省广州市花都区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440115', '广东省广州市南沙区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440116', '广东省广州市萝岗区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440183', '广东省增城市', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440184', '广东省从化市', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440200', '广东省韶关市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440201', '广东省韶关市市辖区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440203', '广东省韶关市武江区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440204', '广东省韶关市浈江区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440205', '广东省韶关市曲江区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440222', '广东省始兴县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440224', '广东省仁化县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440229', '广东省翁源县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440232', '广东省乳源瑶族自治县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440233', '广东省新丰县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440281', '广东省乐昌市', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440282', '广东省南雄市', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440300', '广东省深圳市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440301', '广东省深圳市市辖区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440303', '广东省深圳市罗湖区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440304', '广东省深圳市福田区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440305', '广东省深圳市南山区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440306', '广东省深圳市宝安区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440307', '广东省深圳市龙岗区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440308', '广东省深圳市盐田区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440400', '广东省珠海市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440401', '广东省珠海市市辖区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440402', '广东省珠海市香洲区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440403', '广东省珠海市斗门区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440404', '广东省珠海市金湾区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440500', '广东省汕头市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440501', '广东省汕头市市辖区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440507', '广东省汕头市龙湖区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440511', '广东省汕头市金平区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440512', '广东省汕头市濠江区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440513', '广东省汕头市潮阳区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440514', '广东省汕头市潮南区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440515', '广东省汕头市澄海区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440523', '广东省南澳县', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440600', '广东省佛山市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440601', '广东省佛山市市辖区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440604', '广东省佛山市禅城区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440605', '广东省佛山市南海区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440606', '广东省佛山市顺德区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440607', '广东省佛山市三水区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440608', '广东省佛山市高明区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440700', '广东省江门市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440701', '广东省江门市市辖区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440703', '广东省江门市蓬江区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440704', '广东省江门市江海区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440705', '广东省江门市新会区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440781', '广东省台山市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440783', '广东省开平市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440784', '广东省鹤山市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440785', '广东省恩平市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440800', '广东省湛江市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440801', '广东省湛江市市辖区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440802', '广东省湛江市赤坎区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440803', '广东省湛江市霞山区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440804', '广东省湛江市坡头区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440811', '广东省湛江市麻章区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440823', '广东省遂溪县', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440825', '广东省徐闻县', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440881', '广东省廉江市', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440882', '广东省雷州市', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440883', '广东省吴川市', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440900', '广东省茂名市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440901', '广东省茂名市市辖区', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440902', '广东省茂名市茂南区', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440903', '广东省茂名市茂港区', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440923', '广东省电白县', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440981', '广东省高州市', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440982', '广东省化州市', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440983', '广东省信宜市', '440900'); +INSERT INTO `base_administrative_division` VALUES ('441200', '广东省肇庆市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441201', '广东省肇庆市市辖区', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441202', '广东省肇庆市端州区', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441203', '广东省肇庆市鼎湖区', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441223', '广东省广宁县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441224', '广东省怀集县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441225', '广东省封开县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441226', '广东省德庆县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441283', '广东省高要市', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441284', '广东省四会市', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441300', '广东省惠州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441301', '广东省惠州市市辖区', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441302', '广东省惠州市惠城区', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441303', '广东省惠州市惠阳区', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441322', '广东省博罗县', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441323', '广东省惠东县', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441324', '广东省龙门县', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441400', '广东省梅州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441401', '广东省梅州市市辖区', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441402', '广东省梅州市梅江区', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441421', '广东省梅县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441422', '广东省大埔县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441423', '广东省丰顺县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441424', '广东省五华县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441426', '广东省平远县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441427', '广东省蕉岭县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441481', '广东省兴宁市', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441500', '广东省汕尾市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441501', '广东省汕尾市市辖区', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441502', '广东省汕尾市城区', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441521', '广东省海丰县', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441523', '广东省陆河县', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441581', '广东省陆丰市', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441600', '广东省河源市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441601', '广东省河源市市辖区', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441602', '广东省河源市源城区', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441621', '广东省紫金县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441622', '广东省龙川县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441623', '广东省连平县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441624', '广东省和平县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441625', '广东省东源县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441700', '广东省阳江市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441701', '广东省阳江市市辖区', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441702', '广东省阳江市江城区', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441721', '广东省阳西县', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441723', '广东省阳东县', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441781', '广东省阳春市', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441800', '广东省清远市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441801', '广东省清远市市辖区', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441802', '广东省清远市清城区', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441821', '广东省佛冈县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441823', '广东省阳山县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441825', '广东省连山壮族瑶族自治县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441826', '广东省连南瑶族自治县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441827', '广东省清新县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441881', '广东省英德市', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441882', '广东省连州市', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441900', '广东省东莞市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('442000', '广东省中山市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445100', '广东省潮州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445101', '广东省潮州市市辖区', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445102', '广东省潮州市湘桥区', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445121', '广东省潮安县', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445122', '广东省饶平县', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445200', '广东省揭阳市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445201', '广东省揭阳市市辖区', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445202', '广东省揭阳市榕城区', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445221', '广东省揭东县', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445222', '广东省揭西县', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445224', '广东省惠来县', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445281', '广东省普宁市', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445300', '广东省云浮市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445301', '广东省云浮市市辖区', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445302', '广东省云浮市云城区', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445321', '广东省新兴县', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445322', '广东省郁南县', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445323', '广东省云安县', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445381', '广东省罗定市', '445300'); +INSERT INTO `base_administrative_division` VALUES ('450000', '广西壮族自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('450100', '广西南宁市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450101', '广西南宁市市辖区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450102', '广西南宁市兴宁区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450103', '广西南宁市青秀区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450105', '广西南宁市江南区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450107', '广西南宁市西乡塘区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450108', '广西南宁市良庆区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450109', '广西南宁市邕宁区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450122', '广西武鸣县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450123', '广西隆安县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450124', '广西马山县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450125', '广西上林县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450126', '广西宾阳县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450127', '广西横县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450200', '广西柳州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450201', '广西柳州市市辖区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450202', '广西柳州市城中区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450203', '广西柳州市鱼峰区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450204', '广西柳州市柳南区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450205', '广西柳州市柳北区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450221', '广西柳江县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450222', '广西柳城县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450223', '广西鹿寨县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450224', '广西融安县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450225', '广西融水苗族自治县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450226', '广西三江侗族自治县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450300', '广西桂林市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450301', '广西桂林市市辖区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450302', '广西桂林市秀峰区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450303', '广西桂林市叠彩区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450304', '广西桂林市象山区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450305', '广西桂林市七星区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450311', '广西桂林市雁山区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450321', '广西阳朔县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450322', '广西临桂县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450323', '广西灵川县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450324', '广西全州县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450325', '广西兴安县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450326', '广西永福县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450327', '广西灌阳县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450328', '广西龙胜各族自治县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450329', '广西资源县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450330', '广西平乐县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450331', '广西荔蒲县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450332', '广西恭城瑶族自治县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450400', '广西梧州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450401', '广西梧州市市辖区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450403', '广西梧州市万秀区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450404', '广西梧州市蝶山区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450405', '广西梧州市长洲区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450421', '广西苍梧县', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450422', '广西藤县', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450423', '广西蒙山县', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450481', '广西岑溪市', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450500', '广西北海市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450501', '广西北海市市辖区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450502', '广西北海市海城区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450503', '广西北海市银海区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450512', '广西北海市铁山港区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450521', '广西合浦县', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450600', '广西防城港市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450601', '广西防城港市市辖区', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450602', '广西防城港市港口区', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450603', '广西防城港市防城区', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450621', '广西上思县', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450681', '广西东兴市', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450700', '广西钦州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450701', '广西钦州市市辖区', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450702', '广西钦州市钦南区', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450703', '广西钦州市钦北区', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450721', '广西灵山县', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450722', '广西浦北县', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450800', '广西贵港市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450801', '广西贵港市市辖区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450802', '广西贵港市港北区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450803', '广西贵港市港南区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450804', '广西贵港市覃塘区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450821', '广西平南县', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450881', '广西桂平市', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450900', '广西玉林市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450901', '广西玉林市市辖区', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450902', '广西玉林市玉州区', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450921', '广西容县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450922', '广西陆川县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450923', '广西博白县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450924', '广西兴业县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450981', '广西北流市', '450900'); +INSERT INTO `base_administrative_division` VALUES ('451000', '广西百色市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451001', '广西百色市市辖区', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451002', '广西百色市右江区', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451021', '广西田阳县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451022', '广西田东县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451023', '广西平果县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451024', '广西德保县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451025', '广西靖西县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451026', '广西那坡县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451027', '广西凌云县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451028', '广西乐业县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451029', '广西田林县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451030', '广西西林县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451031', '广西隆林各族自治县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451100', '广西贺州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451101', '广西贺州市市辖区', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451102', '广西贺州市八步区', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451121', '广西昭平县', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451122', '广西钟山县', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451123', '广西富川瑶族自治县', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451200', '广西河池市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451201', '广西河池市市辖区', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451202', '广西河池市金城江区', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451221', '广西南丹县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451222', '广西天峨县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451223', '广西凤山县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451224', '广西东兰县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451225', '广西罗城仫佬族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451226', '广西环江毛南族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451227', '广西巴马瑶族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451228', '广西都安瑶族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451229', '广西大化瑶族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451281', '广西宜州市', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451300', '广西来宾市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451301', '广西来宾市市辖区', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451302', '广西来宾市兴宾区', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451321', '广西忻城县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451322', '广西象州县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451323', '广西武宣县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451324', '广西金秀瑶族自治县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451381', '广西合山市', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451400', '广西崇左市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451401', '广西崇左市市辖区', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451402', '广西崇左市江洲区', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451421', '广西扶绥县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451422', '广西宁明县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451423', '广西龙州县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451424', '广西大新县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451425', '广西天等县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451481', '广西凭祥市', '451400'); +INSERT INTO `base_administrative_division` VALUES ('460000', '海南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('460100', '海南省海口市', '460000'); +INSERT INTO `base_administrative_division` VALUES ('460101', '海南省海口市市辖区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460105', '海南省海口市秀英区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460106', '海南省海口市龙华区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460107', '海南省海口市琼山区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460108', '海南省海口市美兰区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460200', '海南省三亚市', '460000'); +INSERT INTO `base_administrative_division` VALUES ('460201', '海南省三亚市市辖区', '460200'); +INSERT INTO `base_administrative_division` VALUES ('469000', '海南省省直辖县级行政区划', '460000'); +INSERT INTO `base_administrative_division` VALUES ('469001', '海南省五指山市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469002', '海南省琼海市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469003', '海南省儋州市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469005', '海南省文昌市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469006', '海南省万宁市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469007', '海南省东方市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469025', '海南省定安县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469026', '海南省屯昌县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469027', '海南省澄迈县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469028', '海南省临高县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469030', '海南省白沙黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469031', '海南省昌江黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469033', '海南省乐东黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469034', '海南省陵水黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469035', '海南省保亭黎族苗族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469036', '海南省琼中黎族苗族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469037', '海南省西沙群岛', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469038', '海南省南沙群岛', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469039', '海南省中沙群岛的岛礁及其海域', '469000'); +INSERT INTO `base_administrative_division` VALUES ('500000', '重庆市', '0'); +INSERT INTO `base_administrative_division` VALUES ('500100', '重庆市市辖区', '500000'); +INSERT INTO `base_administrative_division` VALUES ('500101', '重庆市万州区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500102', '重庆市涪陵区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500103', '重庆市渝中区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500104', '重庆市大渡口区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500105', '重庆市江北区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500106', '重庆市沙坪坝区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500107', '重庆市九龙坡区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500108', '重庆市南岸区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500109', '重庆市北碚区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500110', '重庆市綦江区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500111', '重庆市大足区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500112', '重庆市渝北区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500113', '重庆市巴南区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500114', '重庆市黔江区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500115', '重庆市长寿区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500116', '重庆市江津区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500117', '重庆市合川区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500118', '重庆市永川区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500119', '重庆市南川区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500200', '重庆市县', '500000'); +INSERT INTO `base_administrative_division` VALUES ('500223', '重庆市潼南县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500224', '重庆市铜梁县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500226', '重庆市荣昌县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500227', '重庆市璧山县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500228', '重庆市梁平县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500229', '重庆市城口县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500230', '重庆市丰都县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500231', '重庆市垫江县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500232', '重庆市武隆县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500233', '重庆市忠县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500234', '重庆市开县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500235', '重庆市云阳县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500236', '重庆市奉节县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500237', '重庆市巫山县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500238', '重庆市巫溪县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500240', '重庆市石柱土家族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500241', '重庆市秀山土家族苗族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500242', '重庆市酉阳土家族苗族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500243', '重庆市彭水苗族土家族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('510000', '四川省', '0'); +INSERT INTO `base_administrative_division` VALUES ('510100', '四川省成都市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510101', '四川省成都市市辖区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510104', '四川省成都市锦江区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510105', '四川省成都市青羊区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510106', '四川省成都市金牛区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510107', '四川省成都市武侯区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510108', '四川省成都市成华区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510112', '四川省成都市龙泉驿区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510113', '四川省成都市青白江区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510114', '四川省成都市新都区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510115', '四川省成都市温江区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510121', '四川省金堂县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510122', '四川省双流县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510124', '四川省郫县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510129', '四川省大邑县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510131', '四川省蒲江县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510132', '四川省新津县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510181', '四川省都江堰市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510182', '四川省彭州市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510183', '四川省邛崃市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510184', '四川省崇州市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510300', '四川省自贡市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510301', '四川省自贡市市辖区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510302', '四川省自贡市自流井区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510303', '四川省自贡市贡井区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510304', '四川省自贡市大安区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510311', '四川省自贡市沿滩区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510321', '四川省荣县', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510322', '四川省富顺县', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510400', '四川省攀枝花市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510401', '四川省攀枝花市市辖区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510402', '四川省攀枝花市东区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510403', '四川省攀枝花市西区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510411', '四川省攀枝花市仁和区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510421', '四川省米易县', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510422', '四川省盐边县', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510500', '四川省泸州市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510501', '四川省泸州市市辖区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510502', '四川省泸州市江阳区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510503', '四川省泸州市纳溪区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510504', '四川省泸州市龙马潭区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510521', '四川省泸县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510522', '四川省合江县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510524', '四川省叙永县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510525', '四川省古蔺县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510600', '四川省德阳市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510601', '四川省德阳市市辖区', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510603', '四川省德阳市旌阳区', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510623', '四川省中江县', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510626', '四川省罗江县', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510681', '四川省广汉市', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510682', '四川省什邡市', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510683', '四川省绵竹市', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510700', '四川省绵阳市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510701', '四川省绵阳市市辖区', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510703', '四川省绵阳市涪城区', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510704', '四川省绵阳市游仙区', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510722', '四川省三台县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510723', '四川省盐亭县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510724', '四川省安县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510725', '四川省梓潼县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510726', '四川省北川羌族自治县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510727', '四川省平武县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510781', '四川省江油市', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510800', '四川省广元市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510801', '四川省广元市市辖区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510802', '四川省广元市利州区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510811', '四川省广元市元坝区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510812', '四川省广元市朝天区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510821', '四川省旺苍县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510822', '四川省青川县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510823', '四川省剑阁县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510824', '四川省苍溪县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510900', '四川省遂宁市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510901', '四川省遂宁市市辖区', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510903', '四川省遂宁市船山区', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510904', '四川省遂宁市安居区', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510921', '四川省蓬溪县', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510922', '四川省射洪县', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510923', '四川省大英县', '510900'); +INSERT INTO `base_administrative_division` VALUES ('511000', '四川省内江市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511001', '四川省内江市市辖区', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511002', '四川省内江市市中区', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511011', '四川省内江市东兴区', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511024', '四川省威远县', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511025', '四川省资中县', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511028', '四川省隆昌县', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511100', '四川省乐山市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511101', '四川省乐山市市辖区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511102', '四川省乐山市市中区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511111', '四川省乐山市沙湾区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511112', '四川省乐山市五通桥区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511113', '四川省乐山市金口河区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511123', '四川省犍为县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511124', '四川省井研县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511126', '四川省夹江县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511129', '四川省沐川县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511132', '四川省峨边彝族自治县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511133', '四川省马边彝族自治县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511181', '四川省峨眉山市', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511300', '四川省南充市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511301', '四川省南充市市辖区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511302', '四川省南充市顺庆区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511303', '四川省南充市高坪区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511304', '四川省南充市嘉陵区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511321', '四川省南部县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511322', '四川省营山县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511323', '四川省蓬安县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511324', '四川省仪陇县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511325', '四川省西充县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511381', '四川省阆中市', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511400', '四川省眉山市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511401', '四川省眉山市市辖区', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511402', '四川省眉山市东坡区', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511421', '四川省仁寿县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511422', '四川省彭山县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511423', '四川省洪雅县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511424', '四川省丹棱县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511425', '四川省青神县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511500', '四川省宜宾市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511501', '四川省宜宾市市辖区', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511502', '四川省宜宾市翠屏区', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511503', '四川省宜宾市南溪区', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511521', '四川省宜宾县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511523', '四川省江安县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511524', '四川省长宁县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511525', '四川省高县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511526', '四川省珙县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511527', '四川省筠连县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511528', '四川省兴文县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511529', '四川省屏山县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511600', '四川省广安市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511601', '四川省广安市市辖区', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511602', '四川省广安市广安区', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511621', '四川省岳池县', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511622', '四川省武胜县', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511623', '四川省邻水县', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511681', '四川省华蓥市', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511700', '四川省达州市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511701', '四川省达州市市辖区', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511702', '四川省达州市通川区', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511721', '四川省达县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511722', '四川省宣汉县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511723', '四川省开江县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511724', '四川省大竹县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511725', '四川省渠县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511781', '四川省万源市', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511800', '四川省雅安市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511801', '四川省雅安市市辖区', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511802', '四川省雅安市雨城区', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511821', '四川省名山县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511822', '四川省荥经县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511823', '四川省汉源县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511824', '四川省石棉县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511825', '四川省天全县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511826', '四川省芦山县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511827', '四川省宝兴县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511900', '四川省巴中市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511901', '四川省巴中市市辖区', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511902', '四川省巴中市巴州区', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511921', '四川省通江县', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511922', '四川省南江县', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511923', '四川省平昌县', '511900'); +INSERT INTO `base_administrative_division` VALUES ('512000', '四川省资阳市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('512001', '四川省资阳市市辖区', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512002', '四川省资阳市雁江区', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512021', '四川省安岳县', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512022', '四川省乐至县', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512081', '四川省简阳市', '512000'); +INSERT INTO `base_administrative_division` VALUES ('513200', '四川省阿坝藏族羌族自治州', '510000'); +INSERT INTO `base_administrative_division` VALUES ('513221', '四川省汶川县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513222', '四川省理县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513223', '四川省茂县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513224', '四川省松潘县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513225', '四川省九寨沟县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513226', '四川省金川县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513227', '四川省小金县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513228', '四川省黑水县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513229', '四川省马尔康县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513230', '四川省壤塘县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513231', '四川省阿坝县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513232', '四川省若尔盖县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513233', '四川省红原县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513300', '四川省甘孜藏族自治州', '510000'); +INSERT INTO `base_administrative_division` VALUES ('513321', '四川省康定县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513322', '四川省泸定县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513323', '四川省丹巴县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513324', '四川省九龙县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513325', '四川省雅江县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513326', '四川省道孚县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513327', '四川省炉霍县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513328', '四川省甘孜县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513329', '四川省新龙县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513330', '四川省德格县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513331', '四川省白玉县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513332', '四川省石渠县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513333', '四川省色达县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513334', '四川省理塘县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513335', '四川省巴塘县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513336', '四川省乡城县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513337', '四川省稻城县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513338', '四川省得荣县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513400', '四川省凉山彝族自治州', '510000'); +INSERT INTO `base_administrative_division` VALUES ('513401', '四川省西昌市', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513422', '四川省木里藏族自治县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513423', '四川省盐源县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513424', '四川省德昌县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513425', '四川省会理县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513426', '四川省会东县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513427', '四川省宁南县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513428', '四川省普格县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513429', '四川省布拖县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513430', '四川省金阳县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513431', '四川省昭觉县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513432', '四川省喜德县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513433', '四川省冕宁县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513434', '四川省越西县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513435', '四川省甘洛县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513436', '四川省美姑县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513437', '四川省雷波县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('520000', '贵州省', '0'); +INSERT INTO `base_administrative_division` VALUES ('520100', '贵州省贵阳市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520101', '贵州省贵阳市市辖区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520102', '贵州省贵阳市南明区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520103', '贵州省贵阳市云岩区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520111', '贵州省贵阳市花溪区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520112', '贵州省贵阳市乌当区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520113', '贵州省贵阳市白云区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520114', '贵州省贵阳市小河区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520121', '贵州省开阳县', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520122', '贵州省息烽县', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520123', '贵州省修文县', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520181', '贵州省清镇市', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520200', '贵州省六盘水市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520201', '贵州省六盘水市钟山区', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520203', '贵州省六盘水市六枝特区', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520221', '贵州省水城县', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520222', '贵州省盘县', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520300', '贵州省遵义市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520301', '贵州省遵义市市辖区', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520302', '贵州省遵义市红花岗区', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520303', '贵州省遵义市汇川区', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520321', '贵州省遵义县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520322', '贵州省桐梓县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520323', '贵州省绥阳县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520324', '贵州省正安县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520325', '贵州省道真仡佬族苗族自治县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520326', '贵州省务川仡佬族苗族自治县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520327', '贵州省凤冈县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520328', '贵州省湄潭县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520329', '贵州省余庆县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520330', '贵州省习水县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520381', '贵州省赤水市', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520382', '贵州省仁怀市', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520400', '贵州省安顺市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520401', '贵州省安顺市市辖区', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520402', '贵州省安顺市西秀区', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520421', '贵州省平坝县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520422', '贵州省普定县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520423', '贵州省镇宁布依族苗族自治县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520424', '贵州省关岭布依族苗族自治县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520425', '贵州省紫云苗族布依族自治县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520500', '贵州省毕节市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520501', '贵州省毕节市市辖区', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520502', '贵州省毕节市七星关区', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520521', '贵州省大方县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520522', '贵州省黔西县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520523', '贵州省金沙县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520524', '贵州省织金县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520525', '贵州省纳雍县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520526', '贵州省威宁彝族回族苗族自治县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520527', '贵州省赫章县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520600', '贵州省铜仁市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520601', '贵州省铜仁市市辖区', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520602', '贵州省铜仁市碧江区', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520603', '贵州省铜仁市万山区', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520621', '贵州省江口县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520622', '贵州省玉屏侗族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520623', '贵州省石阡县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520624', '贵州省思南县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520625', '贵州省印江土家族苗族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520626', '贵州省德江县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520627', '贵州省沿河土家族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520628', '贵州省松桃苗族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('522300', '贵州省黔西南布依族苗族自治州', '520000'); +INSERT INTO `base_administrative_division` VALUES ('522301', '贵州省兴义市', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522322', '贵州省兴仁县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522323', '贵州省普安县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522324', '贵州省晴隆县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522325', '贵州省贞丰县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522326', '贵州省望谟县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522327', '贵州省册亨县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522328', '贵州省安龙县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522600', '贵州省黔东南苗族侗族自治州', '520000'); +INSERT INTO `base_administrative_division` VALUES ('522601', '贵州省凯里市', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522622', '贵州省黄平县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522623', '贵州省施秉县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522624', '贵州省三穗县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522625', '贵州省镇远县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522626', '贵州省岑巩县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522627', '贵州省天柱县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522628', '贵州省锦屏县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522629', '贵州省剑河县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522630', '贵州省台江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522631', '贵州省黎平县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522632', '贵州省榕江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522633', '贵州省从江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522634', '贵州省雷山县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522635', '贵州省麻江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522636', '贵州省丹寨县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522700', '贵州省黔南布依族苗族自治州', '520000'); +INSERT INTO `base_administrative_division` VALUES ('522701', '贵州省都匀市', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522702', '贵州省福泉市', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522722', '贵州省荔波县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522723', '贵州省贵定县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522725', '贵州省瓮安县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522726', '贵州省独山县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522727', '贵州省平塘县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522728', '贵州省罗甸县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522729', '贵州省长顺县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522730', '贵州省龙里县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522731', '贵州省惠水县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522732', '贵州省三都水族自治县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('530000', '云南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('530100', '云南省昆明市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530101', '云南省昆明市市辖区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530102', '云南省昆明市五华区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530103', '云南省昆明市盘龙区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530111', '云南省昆明市官渡区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530112', '云南省昆明市西山区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530113', '云南省昆明市东川区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530114', '云南省昆明市呈贡区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530122', '云南省晋宁县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530124', '云南省富民县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530125', '云南省宜良县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530126', '云南省石林彝族自治县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530127', '云南省嵩明县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530128', '云南省禄劝彝族苗族自治县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530129', '云南省寻甸回族彝族自治县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530181', '云南省安宁市', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530300', '云南省曲靖市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530301', '云南省曲靖市市辖区', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530302', '云南省曲靖市麒麟区', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530321', '云南省马龙县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530322', '云南省陆良县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530323', '云南省师宗县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530324', '云南省罗平县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530325', '云南省富源县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530326', '云南省会泽县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530328', '云南省沾益县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530381', '云南省宣威市', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530400', '云南省玉溪市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530401', '云南省玉溪市市辖区', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530402', '云南省玉溪市红塔区', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530421', '云南省江川县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530422', '云南省澄江县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530423', '云南省通海县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530424', '云南省华宁县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530425', '云南省易门县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530426', '云南省峨山彝族自治县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530427', '云南省新平彝族傣族自治县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530428', '云南省元江哈尼族彝族傣族自治县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530500', '云南省保山市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530501', '云南省保山市市辖区', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530502', '云南省保山市隆阳区', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530521', '云南省施甸县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530522', '云南省腾冲县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530523', '云南省龙陵县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530524', '云南省昌宁县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530600', '云南省昭通市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530601', '云南省昭通市市辖区', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530602', '云南省昭通市昭阳区', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530621', '云南省鲁甸县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530622', '云南省巧家县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530623', '云南省盐津县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530624', '云南省大关县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530625', '云南省永善县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530626', '云南省绥江县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530627', '云南省镇雄县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530628', '云南省彝良县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530629', '云南省威信县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530630', '云南省水富县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530700', '云南省丽江市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530701', '云南省丽江市市辖区', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530702', '云南省丽江市古城区', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530721', '云南省玉龙纳西族自治县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530722', '云南省永胜县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530723', '云南省华坪县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530724', '云南省宁蒗彝族自治县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530800', '云南省普洱市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530801', '云南省普洱市市辖区', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530802', '云南省普洱市思茅区', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530821', '云南省宁洱哈尼族彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530822', '云南省墨江哈尼族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530823', '云南省景东彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530824', '云南省景谷傣族彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530825', '云南省镇沅彝族哈尼族拉祜族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530826', '云南省江城哈尼族彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530827', '云南省孟连傣族拉祜族佤族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530828', '云南省澜沧拉祜族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530829', '云南省西盟佤族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530900', '云南省临沧市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530901', '云南省临沧市市辖区', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530902', '云南省临沧市临翔区', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530921', '云南省凤庆县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530922', '云南省云县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530923', '云南省永德县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530924', '云南省镇康县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530925', '云南省双江拉祜族佤族布朗族傣族自治县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530926', '云南省耿马傣族佤族自治县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530927', '云南省沧源佤族自治县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('532300', '云南省楚雄彝族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532301', '云南省楚雄市', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532322', '云南省双柏县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532323', '云南省牟定县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532324', '云南省南华县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532325', '云南省姚安县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532326', '云南省大姚县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532327', '云南省永仁县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532328', '云南省元谋县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532329', '云南省武定县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532331', '云南省禄丰县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532500', '云南省红河哈尼族彝族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532501', '云南省个旧市', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532502', '云南省开远市', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532503', '云南省蒙自市', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532523', '云南省屏边苗族自治县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532524', '云南省建水县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532525', '云南省石屏县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532526', '云南省弥勒县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532527', '云南省泸西县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532528', '云南省元阳县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532529', '云南省红河县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532530', '云南省金平苗族瑶族傣族自治县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532531', '云南省绿春县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532532', '云南省河口瑶族自治县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532600', '云南省文山壮族苗族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532601', '云南省文山市', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532622', '云南省砚山县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532623', '云南省西畴县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532624', '云南省麻栗坡县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532625', '云南省马关县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532626', '云南省丘北县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532627', '云南省广南县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532628', '云南省富宁县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532800', '云南省西双版纳傣族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532801', '云南省景洪市', '532800'); +INSERT INTO `base_administrative_division` VALUES ('532822', '云南省勐海县', '532800'); +INSERT INTO `base_administrative_division` VALUES ('532823', '云南省勐腊县', '532800'); +INSERT INTO `base_administrative_division` VALUES ('532900', '云南省大理白族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532901', '云南省大理市', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532922', '云南省漾濞彝族自治县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532923', '云南省祥云县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532924', '云南省宾川县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532925', '云南省弥渡县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532926', '云南省南涧彝族自治县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532927', '云南省巍山彝族回族自治县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532928', '云南省永平县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532929', '云南省云龙县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532930', '云南省洱源县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532931', '云南省剑川县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532932', '云南省鹤庆县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('533100', '云南省德宏傣族景颇族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('533102', '云南省瑞丽市', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533103', '云南省芒市', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533122', '云南省梁河县', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533123', '云南省盈江县', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533124', '云南省陇川县', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533300', '云南省怒江傈僳族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('533321', '云南省泸水县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533323', '云南省福贡县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533324', '云南省贡山独龙族怒族自治县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533325', '云南省兰坪白族普米族自治县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533400', '云南省迪庆藏族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('533421', '云南省香格里拉县', '533400'); +INSERT INTO `base_administrative_division` VALUES ('533422', '云南省德钦县', '533400'); +INSERT INTO `base_administrative_division` VALUES ('533423', '云南省维西傈僳族自治县', '533400'); +INSERT INTO `base_administrative_division` VALUES ('540000', '西藏自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('540100', '西藏拉萨市', '540000'); +INSERT INTO `base_administrative_division` VALUES ('540101', '西藏拉萨市市辖区', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540102', '西藏拉萨市城关区', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540121', '西藏林周县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540122', '西藏当雄县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540123', '西藏尼木县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540124', '西藏曲水县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540125', '西藏堆龙德庆县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540126', '西藏达孜县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540127', '西藏墨竹工卡县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('542100', '西藏昌都地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542121', '西藏昌都县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542122', '西藏江达县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542123', '西藏贡觉县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542124', '西藏类乌齐县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542125', '西藏丁青县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542126', '西藏察雅县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542127', '西藏八宿县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542128', '西藏左贡县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542129', '西藏芒康县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542132', '西藏洛隆县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542133', '西藏边坝县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542200', '西藏山南地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542221', '西藏乃东县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542222', '西藏扎囊县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542223', '西藏贡嘎县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542224', '西藏桑日县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542225', '西藏琼结县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542226', '西藏曲松县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542227', '西藏措美县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542228', '西藏洛扎县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542229', '西藏加查县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542231', '西藏隆子县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542232', '西藏错那县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542233', '西藏浪卡子县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542300', '西藏日喀则地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542301', '西藏日喀则市', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542322', '西藏南木林县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542323', '西藏江孜县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542324', '西藏定日县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542325', '西藏萨迦县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542326', '西藏拉孜县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542327', '西藏昂仁县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542328', '西藏谢通门县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542329', '西藏白朗县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542330', '西藏仁布县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542331', '西藏康马县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542332', '西藏定结县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542333', '西藏仲巴县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542334', '西藏亚东县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542335', '西藏吉隆县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542336', '西藏聂拉木县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542337', '西藏萨嘎县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542338', '西藏岗巴县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542400', '西藏那曲地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542421', '西藏那曲县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542422', '西藏嘉黎县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542423', '西藏比如县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542424', '西藏聂荣县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542425', '西藏安多县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542426', '西藏申扎县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542427', '西藏索县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542428', '西藏班戈县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542429', '西藏巴青县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542430', '西藏尼玛县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542500', '西藏阿里地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542521', '西藏普兰县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542522', '西藏札达县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542523', '西藏噶尔县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542524', '西藏日土县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542525', '西藏革吉县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542526', '西藏改则县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542527', '西藏措勤县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542600', '西藏林芝地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542621', '西藏林芝县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542622', '西藏工布江达县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542623', '西藏米林县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542624', '西藏墨脱县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542625', '西藏波密县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542626', '西藏察隅县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542627', '西藏朗县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('610000', '陕西省', '0'); +INSERT INTO `base_administrative_division` VALUES ('610100', '陕西省西安市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610101', '陕西省西安市市辖区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610102', '陕西省西安市新城区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610103', '陕西省西安市碑林区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610104', '陕西省西安市莲湖区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610111', '陕西省西安市灞桥区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610112', '陕西省西安市未央区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610113', '陕西省西安市雁塔区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610114', '陕西省西安市阎良区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610115', '陕西省西安市临潼区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610116', '陕西省西安市长安区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610122', '陕西省蓝田县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610124', '陕西省周至县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610125', '陕西省户县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610126', '陕西省高陵县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610200', '陕西省铜川市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610201', '陕西省铜川市市辖区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610202', '陕西省铜川市王益区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610203', '陕西省铜川市印台区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610204', '陕西省铜川市耀州区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610222', '陕西省宜君县', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610300', '陕西省宝鸡市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610301', '陕西省宝鸡市市辖区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610302', '陕西省宝鸡市渭滨区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610303', '陕西省宝鸡市金台区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610304', '陕西省宝鸡市陈仓区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610322', '陕西省凤翔县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610323', '陕西省岐山县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610324', '陕西省扶风县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610326', '陕西省眉县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610327', '陕西省陇县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610328', '陕西省千阳县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610329', '陕西省麟游县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610330', '陕西省凤县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610331', '陕西省太白县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610400', '陕西省咸阳市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610401', '陕西省咸阳市市辖区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610402', '陕西省咸阳市秦都区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610403', '陕西省杨凌示范区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610404', '陕西省咸阳市渭城区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610422', '陕西省三原县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610423', '陕西省泾阳县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610424', '陕西省乾县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610425', '陕西省礼泉县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610426', '陕西省永寿县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610427', '陕西省彬县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610428', '陕西省长武县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610429', '陕西省旬邑县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610430', '陕西省淳化县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610431', '陕西省武功县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610481', '陕西省兴平市', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610500', '陕西省渭南市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610501', '陕西省渭南市市辖区', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610502', '陕西省渭南市临渭区', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610521', '陕西省华县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610522', '陕西省潼关县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610523', '陕西省大荔县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610524', '陕西省合阳县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610525', '陕西省澄城县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610526', '陕西省蒲城县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610527', '陕西省白水县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610528', '陕西省富平县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610581', '陕西省韩城市', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610582', '陕西省华阴市', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610600', '陕西省延安市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610601', '陕西省延安市市辖区', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610602', '陕西省延安市宝塔区', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610621', '陕西省延长县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610622', '陕西省延川县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610623', '陕西省子长县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610624', '陕西省安塞县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610625', '陕西省志丹县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610626', '陕西省吴起县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610627', '陕西省甘泉县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610628', '陕西省富县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610629', '陕西省洛川县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610630', '陕西省宜川县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610631', '陕西省黄龙县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610632', '陕西省黄陵县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610700', '陕西省汉中市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610701', '陕西省汉中市市辖区', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610702', '陕西省汉中市汉台区', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610721', '陕西省南郑县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610722', '陕西省城固县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610723', '陕西省洋县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610724', '陕西省西乡县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610725', '陕西省勉县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610726', '陕西省宁强县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610727', '陕西省略阳县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610728', '陕西省镇巴县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610729', '陕西省留坝县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610730', '陕西省佛坪县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610800', '陕西省榆林市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610801', '陕西省榆林市市辖区', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610802', '陕西省榆林市榆阳区', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610821', '陕西省神木县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610822', '陕西省府谷县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610823', '陕西省横山县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610824', '陕西省靖边县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610825', '陕西省定边县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610826', '陕西省绥德县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610827', '陕西省米脂县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610828', '陕西省佳县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610829', '陕西省吴堡县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610830', '陕西省清涧县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610831', '陕西省子洲县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610900', '陕西省安康市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610901', '陕西省安康市市辖区', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610902', '陕西省安康市汉滨区', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610921', '陕西省汉阴县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610922', '陕西省石泉县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610923', '陕西省宁陕县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610924', '陕西省紫阳县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610925', '陕西省岚皋县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610926', '陕西省平利县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610927', '陕西省镇坪县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610928', '陕西省旬阳县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610929', '陕西省白河县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('611000', '陕西省商洛市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('611001', '陕西省商洛市市辖区', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611002', '陕西省商洛市商州区', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611021', '陕西省洛南县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611022', '陕西省丹凤县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611023', '陕西省商南县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611024', '陕西省山阳县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611025', '陕西省镇安县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611026', '陕西省柞水县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('620000', '甘肃省', '0'); +INSERT INTO `base_administrative_division` VALUES ('620100', '甘肃省兰州市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620101', '甘肃省兰州市市辖区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620102', '甘肃省兰州市城关区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620103', '甘肃省兰州市七里河区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620104', '甘肃省兰州市西固区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620105', '甘肃省兰州市安宁区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620111', '甘肃省兰州市红古区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620121', '甘肃省永登县', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620122', '甘肃省皋兰县', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620123', '甘肃省榆中县', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620200', '甘肃省嘉峪关市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620201', '甘肃省嘉峪关市市辖区', '620200'); +INSERT INTO `base_administrative_division` VALUES ('620300', '甘肃省金昌市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620301', '甘肃省金昌市市辖区', '620300'); +INSERT INTO `base_administrative_division` VALUES ('620302', '甘肃省金昌市金川区', '620300'); +INSERT INTO `base_administrative_division` VALUES ('620321', '甘肃省永昌县', '620300'); +INSERT INTO `base_administrative_division` VALUES ('620400', '甘肃省白银市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620401', '甘肃省白银市市辖区', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620402', '甘肃省白银市白银区', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620403', '甘肃省白银市平川区', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620421', '甘肃省靖远县', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620422', '甘肃省会宁县', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620423', '甘肃省景泰县', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620500', '甘肃省天水市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620501', '甘肃省天水市市辖区', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620502', '甘肃省天水市秦州区', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620503', '甘肃省天水市麦积区', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620521', '甘肃省清水县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620522', '甘肃省秦安县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620523', '甘肃省甘谷县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620524', '甘肃省武山县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620525', '甘肃省张家川回族自治县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620600', '甘肃省武威市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620601', '甘肃省武威市市辖区', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620602', '甘肃省武威市凉州区', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620621', '甘肃省民勤县', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620622', '甘肃省古浪县', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620623', '甘肃省天祝藏族自治县', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620700', '甘肃省张掖市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620701', '甘肃省张掖市市辖区', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620702', '甘肃省张掖市甘州区', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620721', '甘肃省肃南裕固族自治县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620722', '甘肃省民乐县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620723', '甘肃省临泽县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620724', '甘肃省高台县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620725', '甘肃省山丹县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620800', '甘肃省平凉市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620801', '甘肃省平凉市市辖区', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620802', '甘肃省平凉市崆峒区', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620821', '甘肃省泾川县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620822', '甘肃省灵台县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620823', '甘肃省崇信县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620824', '甘肃省华亭县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620825', '甘肃省庄浪县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620826', '甘肃省静宁县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620900', '甘肃省酒泉市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620901', '甘肃省酒泉市市辖区', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620902', '甘肃省酒泉市肃州区', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620921', '甘肃省金塔县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620922', '甘肃省瓜州县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620923', '甘肃省肃北蒙古族自治县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620924', '甘肃省阿克塞哈萨克族自治县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620981', '甘肃省玉门市', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620982', '甘肃省敦煌市', '620900'); +INSERT INTO `base_administrative_division` VALUES ('621000', '甘肃省庆阳市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('621001', '甘肃省庆阳市市辖区', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621002', '甘肃省庆阳市西峰区', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621021', '甘肃省庆城县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621022', '甘肃省环县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621023', '甘肃省华池县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621024', '甘肃省合水县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621025', '甘肃省正宁县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621026', '甘肃省宁县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621027', '甘肃省镇原县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621100', '甘肃省定西市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('621101', '甘肃省定西市市辖区', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621102', '甘肃省定西市安定区', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621121', '甘肃省通渭县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621122', '甘肃省陇西县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621123', '甘肃省渭源县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621124', '甘肃省临洮县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621125', '甘肃省漳县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621126', '甘肃省岷县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621200', '甘肃省陇南市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('621201', '甘肃省陇南市市辖区', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621202', '甘肃省陇南市武都区', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621221', '甘肃省成县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621222', '甘肃省文县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621223', '甘肃省宕昌县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621224', '甘肃省康县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621225', '甘肃省西和县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621226', '甘肃省礼县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621227', '甘肃省徽县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621228', '甘肃省两当县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('622900', '甘肃省临夏回族自治州', '620000'); +INSERT INTO `base_administrative_division` VALUES ('622901', '甘肃省临夏市', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622921', '甘肃省临夏县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622922', '甘肃省康乐县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622923', '甘肃省永靖县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622924', '甘肃省广河县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622925', '甘肃省和政县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622926', '甘肃省东乡族自治县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622927', '甘肃省积石山保安族东乡族撒拉族自治县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('623000', '甘肃省甘南藏族自治州', '620000'); +INSERT INTO `base_administrative_division` VALUES ('623001', '甘肃省合作市', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623021', '甘肃省临潭县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623022', '甘肃省卓尼县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623023', '甘肃省舟曲县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623024', '甘肃省迭部县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623025', '甘肃省玛曲县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623026', '甘肃省碌曲县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623027', '甘肃省夏河县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('630000', '青海省', '0'); +INSERT INTO `base_administrative_division` VALUES ('630100', '青海省西宁市', '630000'); +INSERT INTO `base_administrative_division` VALUES ('630101', '青海省西宁市市辖区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630102', '青海省西宁市城东区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630103', '青海省西宁市城中区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630104', '青海省西宁市城西区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630105', '青海省西宁市城北区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630121', '青海省大通回族土族自治县', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630122', '青海省湟中县', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630123', '青海省湟源县', '630100'); +INSERT INTO `base_administrative_division` VALUES ('632100', '青海省海东地区', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632121', '青海省平安县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632122', '青海省民和回族土族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632123', '青海省乐都县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632126', '青海省互助土族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632127', '青海省化隆回族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632128', '青海省循化撒拉族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632200', '青海省海北藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632221', '青海省门源回族自治县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632222', '青海省祁连县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632223', '青海省海晏县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632224', '青海省刚察县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632300', '青海省黄南藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632321', '青海省同仁县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632322', '青海省尖扎县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632323', '青海省泽库县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632324', '青海省河南蒙古族自治县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632500', '青海省海南藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632521', '青海省共和县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632522', '青海省同德县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632523', '青海省贵德县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632524', '青海省兴海县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632525', '青海省贵南县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632600', '青海省果洛藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632621', '青海省玛沁县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632622', '青海省班玛县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632623', '青海省甘德县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632624', '青海省达日县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632625', '青海省久治县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632626', '青海省玛多县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632700', '青海省玉树藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632721', '青海省玉树县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632722', '青海省杂多县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632723', '青海省称多县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632724', '青海省治多县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632725', '青海省囊谦县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632726', '青海省曲麻莱县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632800', '青海省海西蒙古族藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632801', '青海省格尔木市', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632802', '青海省德令哈市', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632821', '青海省乌兰县', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632822', '青海省都兰县', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632823', '青海省天峻县', '632800'); +INSERT INTO `base_administrative_division` VALUES ('640000', '宁夏回族自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('640100', '宁夏银川市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640101', '宁夏银川市市辖区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640104', '宁夏银川市兴庆区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640105', '宁夏银川市西夏区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640106', '宁夏银川市金凤区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640121', '宁夏永宁县', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640122', '宁夏贺兰县', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640181', '宁夏灵武市', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640200', '宁夏石嘴山市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640201', '宁夏石嘴山市市辖区', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640202', '宁夏石嘴山市大武口区', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640205', '宁夏石嘴山市惠农区', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640221', '宁夏平罗县', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640300', '宁夏吴忠市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640301', '宁夏吴忠市市辖区', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640302', '宁夏吴忠市利通区', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640323', '宁夏盐池县', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640324', '宁夏同心县', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640381', '宁夏青铜峡市', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640400', '宁夏固原市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640401', '宁夏固原市市辖区', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640402', '宁夏固原市原州区', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640422', '宁夏西吉县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640423', '宁夏隆德县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640424', '宁夏泾源县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640425', '宁夏彭阳县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640500', '宁夏中卫市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640501', '宁夏中卫市市辖区', '640500'); +INSERT INTO `base_administrative_division` VALUES ('640502', '宁夏中卫市沙坡头区', '640500'); +INSERT INTO `base_administrative_division` VALUES ('640521', '宁夏中宁县', '640500'); +INSERT INTO `base_administrative_division` VALUES ('640522', '宁夏海原县', '640500'); +INSERT INTO `base_administrative_division` VALUES ('650000', '新疆维吾尔自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('650100', '新疆乌鲁木齐市', '650000'); +INSERT INTO `base_administrative_division` VALUES ('650101', '新疆乌鲁木齐市市辖区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650102', '新疆乌鲁木齐市天山区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650103', '新疆乌鲁木齐市沙依巴克区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650104', '新疆乌鲁木齐市新市区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650105', '新疆乌鲁木齐市水磨沟区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650106', '新疆乌鲁木齐市头屯河区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650107', '新疆乌鲁木齐市达坂城区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650109', '新疆乌鲁木齐市米东区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650121', '新疆乌鲁木齐县', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650200', '新疆克拉玛依市', '650000'); +INSERT INTO `base_administrative_division` VALUES ('650201', '新疆克拉玛依市市辖区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650202', '新疆克拉玛依市独山子区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650203', '新疆克拉玛依市克拉玛依区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650204', '新疆克拉玛依市白碱滩区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650205', '新疆克拉玛依市乌尔禾区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('652100', '新疆克拉玛依市吐鲁番地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652101', '新疆吐鲁番市', '652100'); +INSERT INTO `base_administrative_division` VALUES ('652122', '新疆鄯善县', '652100'); +INSERT INTO `base_administrative_division` VALUES ('652123', '新疆托克逊县', '652100'); +INSERT INTO `base_administrative_division` VALUES ('652200', '新疆哈密地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652201', '新疆哈密市', '652200'); +INSERT INTO `base_administrative_division` VALUES ('652222', '新疆巴里坤哈萨克自治县', '652200'); +INSERT INTO `base_administrative_division` VALUES ('652223', '新疆伊吾县', '652200'); +INSERT INTO `base_administrative_division` VALUES ('652300', '新疆昌吉回族自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652301', '新疆昌吉市', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652302', '新疆阜康市', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652323', '新疆呼图壁县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652324', '新疆玛纳斯县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652325', '新疆奇台县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652327', '新疆吉木萨尔县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652328', '新疆木垒哈萨克自治县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652700', '新疆博尔塔拉蒙古自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652701', '新疆博乐市', '652700'); +INSERT INTO `base_administrative_division` VALUES ('652722', '新疆精河县', '652700'); +INSERT INTO `base_administrative_division` VALUES ('652723', '新疆温泉县', '652700'); +INSERT INTO `base_administrative_division` VALUES ('652800', '新疆巴音郭楞蒙古自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652801', '新疆库尔勒市', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652822', '新疆轮台县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652823', '新疆尉犁县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652824', '新疆若羌县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652825', '新疆且末县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652826', '新疆焉耆回族自治县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652827', '新疆和静县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652828', '新疆和硕县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652829', '新疆博湖县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652900', '新疆阿克苏地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652901', '新疆阿克苏市', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652922', '新疆温宿县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652923', '新疆库车县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652924', '新疆沙雅县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652925', '新疆新和县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652926', '新疆拜城县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652927', '新疆乌什县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652928', '新疆阿瓦提县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652929', '新疆柯坪县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('653000', '新疆克孜勒苏柯尔克孜自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('653001', '新疆阿图什市', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653022', '新疆阿克陶县', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653023', '新疆阿合奇县', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653024', '新疆乌恰县', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653100', '新疆喀什地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('653101', '新疆喀什市', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653121', '新疆疏附县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653122', '新疆疏勒县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653123', '新疆英吉沙县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653124', '新疆泽普县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653125', '新疆莎车县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653126', '新疆叶城县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653127', '新疆麦盖提县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653128', '新疆岳普湖县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653129', '新疆伽师县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653130', '新疆巴楚县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653131', '新疆塔什库尔干塔吉克自治县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653200', '新疆和田地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('653201', '新疆和田市', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653221', '新疆和田县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653222', '新疆墨玉县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653223', '新疆皮山县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653224', '新疆洛浦县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653225', '新疆策勒县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653226', '新疆于田县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653227', '新疆民丰县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('654000', '新疆伊犁哈萨克自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('654002', '新疆伊宁市', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654003', '新疆奎屯市', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654021', '新疆伊宁县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654022', '新疆察布查尔锡伯自治县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654023', '新疆霍城县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654024', '新疆巩留县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654025', '新疆新源县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654026', '新疆昭苏县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654027', '新疆特克斯县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654028', '新疆尼勒克县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654200', '新疆塔城地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('654201', '新疆塔城市', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654202', '新疆乌苏市', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654221', '新疆额敏县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654223', '新疆沙湾县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654224', '新疆托里县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654225', '新疆裕民县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654226', '新疆和布克赛尔蒙古自治县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654300', '新疆阿勒泰地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('654301', '新疆阿勒泰市', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654321', '新疆布尔津县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654322', '新疆富蕴县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654323', '新疆福海县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654324', '新疆哈巴河县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654325', '新疆青河县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654326', '新疆吉木乃县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('659000', '新疆省直辖县级行政区划', '650000'); +INSERT INTO `base_administrative_division` VALUES ('659001', '新疆石河子市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('659002', '新疆阿拉尔市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('659003', '新疆图木舒克市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('659004', '新疆五家渠市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('710000', '台湾省', '0'); +INSERT INTO `base_administrative_division` VALUES ('810000', '香港特别行政区', '0'); +INSERT INTO `base_administrative_division` VALUES ('820000', '澳门特别行政区', '0'); \ No newline at end of file diff --git a/src/main/resources/data_base_college.sql b/src/main/resources/data_base_college.sql new file mode 100644 index 0000000..44425f7 --- /dev/null +++ b/src/main/resources/data_base_college.sql @@ -0,0 +1,25 @@ +-- ---------------------------- +-- Records of base_college +-- ---------------------------- +INSERT INTO `base_college` VALUES ('01', '航空学院', '1'); +INSERT INTO `base_college` VALUES ('02', '航天学院', '2'); +INSERT INTO `base_college` VALUES ('03', '航海学院', '3'); +INSERT INTO `base_college` VALUES ('04', '材料学院', '4'); +INSERT INTO `base_college` VALUES ('05', '机电学院', '5'); +INSERT INTO `base_college` VALUES ('06', '力学与土木建筑学院', '6'); +INSERT INTO `base_college` VALUES ('07', '动力与能源学院', '7'); +INSERT INTO `base_college` VALUES ('08', '电子信息学院', '8'); +INSERT INTO `base_college` VALUES ('09', '自动化学院', '9'); +INSERT INTO `base_college` VALUES ('10', '计算机学院', '10'); +INSERT INTO `base_college` VALUES ('11', '理学院', '11'); +INSERT INTO `base_college` VALUES ('12', '管理学院', '12'); +INSERT INTO `base_college` VALUES ('13', '人文与经法学院', '13'); +INSERT INTO `base_college` VALUES ('14', '软件学院', '14'); +INSERT INTO `base_college` VALUES ('15', '生命学院', '15'); +INSERT INTO `base_college` VALUES ('16', '外国语学院', '16'); +INSERT INTO `base_college` VALUES ('17', '教育实验学院', '17'); +INSERT INTO `base_college` VALUES ('18', '西北工业大学伦敦玛丽女王大学工程学院', '18'); +INSERT INTO `base_college` VALUES ('19', '马克思主义学院', '19'); +INSERT INTO `base_college` VALUES ('20', '微电子学院', '20'); +INSERT INTO `base_college` VALUES ('21', '网络空间安全学院', '21'); +INSERT INTO `base_college` VALUES ('22', '民航学院', '22'); diff --git a/src/main/resources/data_base_ethnic.sql b/src/main/resources/data_base_ethnic.sql new file mode 100644 index 0000000..c8bcdaf --- /dev/null +++ b/src/main/resources/data_base_ethnic.sql @@ -0,0 +1,62 @@ +-- ---------------------------- +-- Records of base_ethnic +-- ---------------------------- +INSERT INTO `base_ethnic` VALUES ('00', '----'); +INSERT INTO `base_ethnic` VALUES ('01', '汉族'); +INSERT INTO `base_ethnic` VALUES ('02', '蒙古族'); +INSERT INTO `base_ethnic` VALUES ('03', '回族'); +INSERT INTO `base_ethnic` VALUES ('04', '藏族'); +INSERT INTO `base_ethnic` VALUES ('05', '维吾尔族'); +INSERT INTO `base_ethnic` VALUES ('06', '苗族'); +INSERT INTO `base_ethnic` VALUES ('07', '彝族'); +INSERT INTO `base_ethnic` VALUES ('08', '壮族'); +INSERT INTO `base_ethnic` VALUES ('09', '布依族'); +INSERT INTO `base_ethnic` VALUES ('10', '朝鲜族'); +INSERT INTO `base_ethnic` VALUES ('11', '满族'); +INSERT INTO `base_ethnic` VALUES ('12', '侗族'); +INSERT INTO `base_ethnic` VALUES ('13', '瑶族'); +INSERT INTO `base_ethnic` VALUES ('14', '白族'); +INSERT INTO `base_ethnic` VALUES ('15', '土家族'); +INSERT INTO `base_ethnic` VALUES ('16', '哈尼族'); +INSERT INTO `base_ethnic` VALUES ('17', '哈萨克族'); +INSERT INTO `base_ethnic` VALUES ('18', '傣族'); +INSERT INTO `base_ethnic` VALUES ('19', '黎族'); +INSERT INTO `base_ethnic` VALUES ('20', '傈傈族'); +INSERT INTO `base_ethnic` VALUES ('21', '佤族'); +INSERT INTO `base_ethnic` VALUES ('22', '畲族'); +INSERT INTO `base_ethnic` VALUES ('23', '高山族'); +INSERT INTO `base_ethnic` VALUES ('24', '拉祜族'); +INSERT INTO `base_ethnic` VALUES ('25', '水族'); +INSERT INTO `base_ethnic` VALUES ('26', '东乡族'); +INSERT INTO `base_ethnic` VALUES ('27', '纳西族'); +INSERT INTO `base_ethnic` VALUES ('28', '景颇族'); +INSERT INTO `base_ethnic` VALUES ('29', '柯尔克孜族'); +INSERT INTO `base_ethnic` VALUES ('30', '土族'); +INSERT INTO `base_ethnic` VALUES ('31', '达斡尔族'); +INSERT INTO `base_ethnic` VALUES ('32', '仫佬族'); +INSERT INTO `base_ethnic` VALUES ('33', '羌族'); +INSERT INTO `base_ethnic` VALUES ('34', '布朗族'); +INSERT INTO `base_ethnic` VALUES ('35', '撒拉族'); +INSERT INTO `base_ethnic` VALUES ('36', '毛难族'); +INSERT INTO `base_ethnic` VALUES ('37', '仡佬族'); +INSERT INTO `base_ethnic` VALUES ('38', '锡伯族'); +INSERT INTO `base_ethnic` VALUES ('39', '阿昌族'); +INSERT INTO `base_ethnic` VALUES ('40', '普米族'); +INSERT INTO `base_ethnic` VALUES ('41', '塔吉克族'); +INSERT INTO `base_ethnic` VALUES ('42', '怒族'); +INSERT INTO `base_ethnic` VALUES ('43', '乌孜别克族'); +INSERT INTO `base_ethnic` VALUES ('44', '俄罗斯族'); +INSERT INTO `base_ethnic` VALUES ('45', '鄂温克族'); +INSERT INTO `base_ethnic` VALUES ('46', '崩龙族'); +INSERT INTO `base_ethnic` VALUES ('47', '保安族'); +INSERT INTO `base_ethnic` VALUES ('48', '裕固族'); +INSERT INTO `base_ethnic` VALUES ('49', '京族'); +INSERT INTO `base_ethnic` VALUES ('50', '塔塔尔族'); +INSERT INTO `base_ethnic` VALUES ('51', '独龙族'); +INSERT INTO `base_ethnic` VALUES ('52', '鄂伦春族'); +INSERT INTO `base_ethnic` VALUES ('53', '赫哲族'); +INSERT INTO `base_ethnic` VALUES ('54', '门巴族'); +INSERT INTO `base_ethnic` VALUES ('55', '珞巴族'); +INSERT INTO `base_ethnic` VALUES ('56', '基诺族'); +INSERT INTO `base_ethnic` VALUES ('97', '其他'); +INSERT INTO `base_ethnic` VALUES ('98', '外国血统'); \ No newline at end of file diff --git a/src/main/resources/data_base_major.sql b/src/main/resources/data_base_major.sql new file mode 100644 index 0000000..3e7bb67 --- /dev/null +++ b/src/main/resources/data_base_major.sql @@ -0,0 +1,832 @@ +-- ---------------------------- +-- Records of base_major +-- ---------------------------- +INSERT INTO `base_major` VALUES ('010100', '哲学类'); +INSERT INTO `base_major` VALUES ('010101', '哲学'); +INSERT INTO `base_major` VALUES ('010102', '逻辑学'); +INSERT INTO `base_major` VALUES ('010103', '宗教学'); +INSERT INTO `base_major` VALUES ('010104', '伦理学'); +INSERT INTO `base_major` VALUES ('01010J', '哲学基地班'); +INSERT INTO `base_major` VALUES ('01SY00', '人文科学试验班类'); +INSERT INTO `base_major` VALUES ('01SY01', '人文科学试验班'); +INSERT INTO `base_major` VALUES ('020100', '经济学类'); +INSERT INTO `base_major` VALUES ('020101', '经济学'); +INSERT INTO `base_major` VALUES ('020102', '国际经济与贸易'); +INSERT INTO `base_major` VALUES ('020103', '财政学'); +INSERT INTO `base_major` VALUES ('020104', '金融学'); +INSERT INTO `base_major` VALUES ('020105', '国民经济管理'); +INSERT INTO `base_major` VALUES ('020106', '贸易经济'); +INSERT INTO `base_major` VALUES ('020107', '保险'); +INSERT INTO `base_major` VALUES ('020108', '环境经济'); +INSERT INTO `base_major` VALUES ('020109', '金融工程'); +INSERT INTO `base_major` VALUES ('02010J', '经济学基地班'); +INSERT INTO `base_major` VALUES ('020110', '税务'); +INSERT INTO `base_major` VALUES ('020111', '信用管理'); +INSERT INTO `base_major` VALUES ('020112', '网络经济学'); +INSERT INTO `base_major` VALUES ('020113', '体育经济'); +INSERT INTO `base_major` VALUES ('020114', '投资学'); +INSERT INTO `base_major` VALUES ('020115', '环境资源与发展经济学'); +INSERT INTO `base_major` VALUES ('020116', '海洋经济学'); +INSERT INTO `base_major` VALUES ('020117', '国际文化贸易'); +INSERT INTO `base_major` VALUES ('020119', '金融数学'); +INSERT INTO `base_major` VALUES ('020120', '经济与金融'); +INSERT INTO `base_major` VALUES ('020121', '能源经济'); +INSERT INTO `base_major` VALUES ('020303', '保险学'); +INSERT INTO `base_major` VALUES ('030100', '法学类'); +INSERT INTO `base_major` VALUES ('030101', '法学'); +INSERT INTO `base_major` VALUES ('030102', '知识产权法'); +INSERT INTO `base_major` VALUES ('030103', '知识产权'); +INSERT INTO `base_major` VALUES ('030120', '监狱学'); +INSERT INTO `base_major` VALUES ('030200', '马克思主义理论类'); +INSERT INTO `base_major` VALUES ('030201', '科学社会主义与国际共产主义运动'); +INSERT INTO `base_major` VALUES ('030202', '中国革命史与中国共产党党史'); +INSERT INTO `base_major` VALUES ('030300', '社会学类'); +INSERT INTO `base_major` VALUES ('030301', '社会学'); +INSERT INTO `base_major` VALUES ('030302', '社会工作'); +INSERT INTO `base_major` VALUES ('030303', '家政学'); +INSERT INTO `base_major` VALUES ('030304', '人类学'); +INSERT INTO `base_major` VALUES ('030305', '女性学'); +INSERT INTO `base_major` VALUES ('030400', '政治学类'); +INSERT INTO `base_major` VALUES ('030401', '政治学与行政学'); +INSERT INTO `base_major` VALUES ('030402', '国际政治'); +INSERT INTO `base_major` VALUES ('030403', '外交学'); +INSERT INTO `base_major` VALUES ('030404', '思想政治教育'); +INSERT INTO `base_major` VALUES ('030405', '国际文化交流'); +INSERT INTO `base_major` VALUES ('030406', '国际政治经济学'); +INSERT INTO `base_major` VALUES ('030407', '国际事务'); +INSERT INTO `base_major` VALUES ('030408', '国际事务与国际关系'); +INSERT INTO `base_major` VALUES ('030409', '欧洲事务与欧洲关系'); +INSERT INTO `base_major` VALUES ('030500', '公安学类'); +INSERT INTO `base_major` VALUES ('030501', '治安学'); +INSERT INTO `base_major` VALUES ('030502', '侦查学'); +INSERT INTO `base_major` VALUES ('030503', '边防管理'); +INSERT INTO `base_major` VALUES ('030504', '火灾勘查'); +INSERT INTO `base_major` VALUES ('030505', '禁毒学'); +INSERT INTO `base_major` VALUES ('030506', '警犬技术'); +INSERT INTO `base_major` VALUES ('030507', '经济犯罪侦查'); +INSERT INTO `base_major` VALUES ('030508', '边防指挥'); +INSERT INTO `base_major` VALUES ('030509', '消防指挥'); +INSERT INTO `base_major` VALUES ('030510', '警卫学'); +INSERT INTO `base_major` VALUES ('030511', '公安情报学'); +INSERT INTO `base_major` VALUES ('030512', '犯罪学'); +INSERT INTO `base_major` VALUES ('030513', '公安管理学'); +INSERT INTO `base_major` VALUES ('030514', '涉外警务'); +INSERT INTO `base_major` VALUES ('030515', '国内安全保卫'); +INSERT INTO `base_major` VALUES ('030516', '警务指挥与战术'); +INSERT INTO `base_major` VALUES ('03SY01', '社会科学试验班'); +INSERT INTO `base_major` VALUES ('040100', '教育学类'); +INSERT INTO `base_major` VALUES ('040101', '教育学'); +INSERT INTO `base_major` VALUES ('040102', '学前教育'); +INSERT INTO `base_major` VALUES ('040103', '特殊教育'); +INSERT INTO `base_major` VALUES ('040104', '教育技术学'); +INSERT INTO `base_major` VALUES ('040105', '小学教育'); +INSERT INTO `base_major` VALUES ('040106', '艺术教育'); +INSERT INTO `base_major` VALUES ('040107', '人文教育'); +INSERT INTO `base_major` VALUES ('040108', '科学教育'); +INSERT INTO `base_major` VALUES ('040109', '言语听觉科学'); +INSERT INTO `base_major` VALUES ('040110', '华文教育'); +INSERT INTO `base_major` VALUES ('040200', '体育学类'); +INSERT INTO `base_major` VALUES ('040201', '体育教育'); +INSERT INTO `base_major` VALUES ('040202', '运动训练'); +INSERT INTO `base_major` VALUES ('040203', '社会体育'); +INSERT INTO `base_major` VALUES ('040204', '运动人体科学'); +INSERT INTO `base_major` VALUES ('040205', '民族传统体育'); +INSERT INTO `base_major` VALUES ('040206', '运动康复与健康'); +INSERT INTO `base_major` VALUES ('040207', '休闲体育'); +INSERT INTO `base_major` VALUES ('040300', '职业技术教育类'); +INSERT INTO `base_major` VALUES ('040301', '农艺教育'); +INSERT INTO `base_major` VALUES ('040302', '园艺教育'); +INSERT INTO `base_major` VALUES ('040303', '特用作物教育'); +INSERT INTO `base_major` VALUES ('040304', '林木生产教育'); +INSERT INTO `base_major` VALUES ('040305', '特用动物教育'); +INSERT INTO `base_major` VALUES ('040306', '畜禽生产教育'); +INSERT INTO `base_major` VALUES ('040307', '水产养殖教育'); +INSERT INTO `base_major` VALUES ('040308', '应用生物教育'); +INSERT INTO `base_major` VALUES ('040309', '农业机械教育'); +INSERT INTO `base_major` VALUES ('040310', '农业建筑与环境控制教育'); +INSERT INTO `base_major` VALUES ('040311', '农产品储运与加工教育'); +INSERT INTO `base_major` VALUES ('040312', '农业经营管理教育'); +INSERT INTO `base_major` VALUES ('040313', '机械制造工艺教育'); +INSERT INTO `base_major` VALUES ('040314', '机械维修及检测技术教育'); +INSERT INTO `base_major` VALUES ('040315', '机电技术教育'); +INSERT INTO `base_major` VALUES ('040316', '电气技术教育'); +INSERT INTO `base_major` VALUES ('040317', '汽车维修工程教育'); +INSERT INTO `base_major` VALUES ('040318', '应用电子技术教育'); +INSERT INTO `base_major` VALUES ('040319', '制浆造纸工艺教育'); +INSERT INTO `base_major` VALUES ('040320', '印刷工艺教育'); +INSERT INTO `base_major` VALUES ('040321', '橡塑制品成型工艺教育'); +INSERT INTO `base_major` VALUES ('040322', '食品工艺教育'); +INSERT INTO `base_major` VALUES ('040323', '纺织工艺教育'); +INSERT INTO `base_major` VALUES ('040324', '染整工艺教育'); +INSERT INTO `base_major` VALUES ('040325', '化工工艺教育'); +INSERT INTO `base_major` VALUES ('040326', '化工分析与检测技术教育'); +INSERT INTO `base_major` VALUES ('040327', '建筑材料工程教育'); +INSERT INTO `base_major` VALUES ('040328', '建筑工程教育'); +INSERT INTO `base_major` VALUES ('040329', '服装设计与工艺教育'); +INSERT INTO `base_major` VALUES ('040330', '装潢设计与工艺教育'); +INSERT INTO `base_major` VALUES ('040331', '旅游管理与服务教育'); +INSERT INTO `base_major` VALUES ('040332', '食品营养与检验教育'); +INSERT INTO `base_major` VALUES ('040333', '烹饪与营养教育'); +INSERT INTO `base_major` VALUES ('040334', '财务会计教育'); +INSERT INTO `base_major` VALUES ('040335', '文秘教育'); +INSERT INTO `base_major` VALUES ('040336', '市场营销教育'); +INSERT INTO `base_major` VALUES ('040337', '职业技术教育管理'); +INSERT INTO `base_major` VALUES ('050100', '中国语言文学类'); +INSERT INTO `base_major` VALUES ('050101', '汉语言文学'); +INSERT INTO `base_major` VALUES ('050102', '汉语言'); +INSERT INTO `base_major` VALUES ('050103', '对外汉语'); +INSERT INTO `base_major` VALUES ('050104', '中国少数民族语言文学'); +INSERT INTO `base_major` VALUES ('050105', '古典文献'); +INSERT INTO `base_major` VALUES ('050106', '中国语言文化'); +INSERT INTO `base_major` VALUES ('050107', '应用语言学'); +INSERT INTO `base_major` VALUES ('05010J', '中国语言文学基地班'); +INSERT INTO `base_major` VALUES ('050200', '外国语言文学类'); +INSERT INTO `base_major` VALUES ('050201', '英语'); +INSERT INTO `base_major` VALUES ('050202', '俄语'); +INSERT INTO `base_major` VALUES ('050203', '德语'); +INSERT INTO `base_major` VALUES ('050204', '法语'); +INSERT INTO `base_major` VALUES ('050205', '西班牙语'); +INSERT INTO `base_major` VALUES ('050206', '阿拉伯语'); +INSERT INTO `base_major` VALUES ('050207', '日语'); +INSERT INTO `base_major` VALUES ('050208', '波斯语'); +INSERT INTO `base_major` VALUES ('050209', '朝鲜语'); +INSERT INTO `base_major` VALUES ('050210', '菲律宾语'); +INSERT INTO `base_major` VALUES ('050211', '梵语巴利语'); +INSERT INTO `base_major` VALUES ('050212', '印度尼西亚语'); +INSERT INTO `base_major` VALUES ('050213', '印地语'); +INSERT INTO `base_major` VALUES ('050214', '柬埔寨语'); +INSERT INTO `base_major` VALUES ('050215', '老挝语'); +INSERT INTO `base_major` VALUES ('050216', '缅甸语'); +INSERT INTO `base_major` VALUES ('050217', '马来语'); +INSERT INTO `base_major` VALUES ('050218', '蒙古语'); +INSERT INTO `base_major` VALUES ('050219', '僧加罗语'); +INSERT INTO `base_major` VALUES ('050220', '泰语'); +INSERT INTO `base_major` VALUES ('050221', '乌尔都语'); +INSERT INTO `base_major` VALUES ('050222', '希伯莱语'); +INSERT INTO `base_major` VALUES ('050223', '越南语'); +INSERT INTO `base_major` VALUES ('050224', '豪萨语'); +INSERT INTO `base_major` VALUES ('050225', '斯瓦希里语'); +INSERT INTO `base_major` VALUES ('050226', '阿尔巴尼亚语'); +INSERT INTO `base_major` VALUES ('050227', '保加利亚语'); +INSERT INTO `base_major` VALUES ('050228', '波兰语'); +INSERT INTO `base_major` VALUES ('050229', '捷克语'); +INSERT INTO `base_major` VALUES ('050230', '罗马尼亚语'); +INSERT INTO `base_major` VALUES ('050231', '葡萄牙语'); +INSERT INTO `base_major` VALUES ('050232', '瑞典语'); +INSERT INTO `base_major` VALUES ('050233', '塞尔维亚—克罗地亚语'); +INSERT INTO `base_major` VALUES ('050234', '土耳其语'); +INSERT INTO `base_major` VALUES ('050235', '希腊语'); +INSERT INTO `base_major` VALUES ('050236', '匈牙利语'); +INSERT INTO `base_major` VALUES ('050237', '意大利语'); +INSERT INTO `base_major` VALUES ('050238', '捷克语—斯洛伐克语'); +INSERT INTO `base_major` VALUES ('050239', '泰米尔语'); +INSERT INTO `base_major` VALUES ('050240', '普什图语'); +INSERT INTO `base_major` VALUES ('050241', '世界语'); +INSERT INTO `base_major` VALUES ('050242', '孟加拉语'); +INSERT INTO `base_major` VALUES ('050243', '尼泊尔语'); +INSERT INTO `base_major` VALUES ('050244', '塞尔维亚语—克罗地亚语'); +INSERT INTO `base_major` VALUES ('050245', '荷兰语'); +INSERT INTO `base_major` VALUES ('050246', '芬兰语'); +INSERT INTO `base_major` VALUES ('050247', '乌克兰语'); +INSERT INTO `base_major` VALUES ('050248', '韩国语'); +INSERT INTO `base_major` VALUES ('050249', '商务英语'); +INSERT INTO `base_major` VALUES ('050250', '塞尔维亚语'); +INSERT INTO `base_major` VALUES ('050251', '克罗地亚语'); +INSERT INTO `base_major` VALUES ('050252', '挪威语'); +INSERT INTO `base_major` VALUES ('050253', '丹麦语'); +INSERT INTO `base_major` VALUES ('050254', '冰岛语'); +INSERT INTO `base_major` VALUES ('050255', '翻译'); +INSERT INTO `base_major` VALUES ('050300', '新闻传播学类'); +INSERT INTO `base_major` VALUES ('050301', '新闻学'); +INSERT INTO `base_major` VALUES ('050302', '广播电视新闻学'); +INSERT INTO `base_major` VALUES ('050303', '广告学'); +INSERT INTO `base_major` VALUES ('050304', '编辑出版学'); +INSERT INTO `base_major` VALUES ('050305', '传播学'); +INSERT INTO `base_major` VALUES ('050306', '媒体创意'); +INSERT INTO `base_major` VALUES ('050307', '新媒体与信息网络'); +INSERT INTO `base_major` VALUES ('050308', '数字出版'); +INSERT INTO `base_major` VALUES ('050400', '艺术类'); +INSERT INTO `base_major` VALUES ('050401', '音乐学'); +INSERT INTO `base_major` VALUES ('050402', '作曲与作曲技术理论'); +INSERT INTO `base_major` VALUES ('050403', '音乐表演'); +INSERT INTO `base_major` VALUES ('050404', '绘画'); +INSERT INTO `base_major` VALUES ('050405', '雕塑'); +INSERT INTO `base_major` VALUES ('050406', '美术学'); +INSERT INTO `base_major` VALUES ('050407', '艺术设计学'); +INSERT INTO `base_major` VALUES ('050408', '艺术设计'); +INSERT INTO `base_major` VALUES ('050409', '舞蹈学'); +INSERT INTO `base_major` VALUES ('050410', '舞蹈编导'); +INSERT INTO `base_major` VALUES ('050411', '戏剧学'); +INSERT INTO `base_major` VALUES ('050412', '表演'); +INSERT INTO `base_major` VALUES ('050413', '导演'); +INSERT INTO `base_major` VALUES ('050414', '戏剧影视文学'); +INSERT INTO `base_major` VALUES ('050415', '戏剧影视美术设计'); +INSERT INTO `base_major` VALUES ('050416', '摄影'); +INSERT INTO `base_major` VALUES ('050417', '录音艺术'); +INSERT INTO `base_major` VALUES ('050418', '动画'); +INSERT INTO `base_major` VALUES ('050419', '播音与主持艺术'); +INSERT INTO `base_major` VALUES ('050420', '广播电视编导'); +INSERT INTO `base_major` VALUES ('050422', '艺术学'); +INSERT INTO `base_major` VALUES ('050423', '影视学'); +INSERT INTO `base_major` VALUES ('050424', '广播影视编导'); +INSERT INTO `base_major` VALUES ('050425', '书法学'); +INSERT INTO `base_major` VALUES ('050426', '照明艺术'); +INSERT INTO `base_major` VALUES ('050427', '会展艺术与技术'); +INSERT INTO `base_major` VALUES ('050428', '音乐科技与艺术'); +INSERT INTO `base_major` VALUES ('050429', '中国画'); +INSERT INTO `base_major` VALUES ('050430', '公共艺术'); +INSERT INTO `base_major` VALUES ('050431', '数字游戏设计'); +INSERT INTO `base_major` VALUES ('050432', '数字电影技术'); +INSERT INTO `base_major` VALUES ('05SY00', '文科试验班类'); +INSERT INTO `base_major` VALUES ('060100', '历史学类'); +INSERT INTO `base_major` VALUES ('060101', '历史学'); +INSERT INTO `base_major` VALUES ('060102', '世界历史'); +INSERT INTO `base_major` VALUES ('060103', '考古学'); +INSERT INTO `base_major` VALUES ('060104', '博物馆学'); +INSERT INTO `base_major` VALUES ('060105', '民族学'); +INSERT INTO `base_major` VALUES ('060106', '文物保护技术'); +INSERT INTO `base_major` VALUES ('06010J', '历史学基地班'); +INSERT INTO `base_major` VALUES ('070100', '数学类'); +INSERT INTO `base_major` VALUES ('070101', '数学与应用数学'); +INSERT INTO `base_major` VALUES ('070102', '信息与计算科学'); +INSERT INTO `base_major` VALUES ('070103', '数理基础科学'); +INSERT INTO `base_major` VALUES ('07010J', '数学基地班'); +INSERT INTO `base_major` VALUES ('070200', '物理学类'); +INSERT INTO `base_major` VALUES ('070201', '物理学'); +INSERT INTO `base_major` VALUES ('070202', '应用物理学'); +INSERT INTO `base_major` VALUES ('070203', '声学'); +INSERT INTO `base_major` VALUES ('070204', '核物理'); +INSERT INTO `base_major` VALUES ('07020J', '物理学基地班'); +INSERT INTO `base_major` VALUES ('070300', '化学类'); +INSERT INTO `base_major` VALUES ('070301', '化学'); +INSERT INTO `base_major` VALUES ('070302', '应用化学'); +INSERT INTO `base_major` VALUES ('070303', '化学生物学'); +INSERT INTO `base_major` VALUES ('070304', '分子科学与工程'); +INSERT INTO `base_major` VALUES ('07030J', '化学基地班'); +INSERT INTO `base_major` VALUES ('070400', '生物科学类'); +INSERT INTO `base_major` VALUES ('070401', '生物科学'); +INSERT INTO `base_major` VALUES ('070402', '生物技术'); +INSERT INTO `base_major` VALUES ('070403', '生物信息学'); +INSERT INTO `base_major` VALUES ('070404', '生物信息技术'); +INSERT INTO `base_major` VALUES ('070405', '生物科学与生物技术'); +INSERT INTO `base_major` VALUES ('070406', '动植物检疫'); +INSERT INTO `base_major` VALUES ('070407', '生物化学与分子生物学'); +INSERT INTO `base_major` VALUES ('070408', '医学信息学'); +INSERT INTO `base_major` VALUES ('070409', '植物生物技术'); +INSERT INTO `base_major` VALUES ('07040J', '生物学基地班'); +INSERT INTO `base_major` VALUES ('070410', '动物生物技术'); +INSERT INTO `base_major` VALUES ('070411', '生物资源科学'); +INSERT INTO `base_major` VALUES ('070412', '生物安全'); +INSERT INTO `base_major` VALUES ('070413', '生物医学英语'); +INSERT INTO `base_major` VALUES ('07041J', '生命科学与技术基地班'); +INSERT INTO `base_major` VALUES ('070500', '天文学类'); +INSERT INTO `base_major` VALUES ('070501', '天文学'); +INSERT INTO `base_major` VALUES ('070600', '地质学类'); +INSERT INTO `base_major` VALUES ('070601', '地质学'); +INSERT INTO `base_major` VALUES ('070602', '地球化学'); +INSERT INTO `base_major` VALUES ('07060J', '地质学基地班'); +INSERT INTO `base_major` VALUES ('070700', '地理科学类'); +INSERT INTO `base_major` VALUES ('070701', '地理科学'); +INSERT INTO `base_major` VALUES ('070702', '资源环境与城乡规划管理'); +INSERT INTO `base_major` VALUES ('070703', '地理信息系统'); +INSERT INTO `base_major` VALUES ('070704', '地球信息科学与技术'); +INSERT INTO `base_major` VALUES ('07070J', '地理学基地班'); +INSERT INTO `base_major` VALUES ('070800', '地球物理学类'); +INSERT INTO `base_major` VALUES ('070801', '地球物理学'); +INSERT INTO `base_major` VALUES ('070802', '地球与空间科学'); +INSERT INTO `base_major` VALUES ('070803', '空间科学与技术'); +INSERT INTO `base_major` VALUES ('070900', '大气科学类'); +INSERT INTO `base_major` VALUES ('070901', '大气科学'); +INSERT INTO `base_major` VALUES ('070902', '应用气象学'); +INSERT INTO `base_major` VALUES ('071000', '海洋科学类'); +INSERT INTO `base_major` VALUES ('071001', '海洋科学'); +INSERT INTO `base_major` VALUES ('071002', '海洋技术'); +INSERT INTO `base_major` VALUES ('071003', '海洋管理'); +INSERT INTO `base_major` VALUES ('071004', '军事海洋学'); +INSERT INTO `base_major` VALUES ('071005', '海洋生物资源与环境'); +INSERT INTO `base_major` VALUES ('071100', '力学类'); +INSERT INTO `base_major` VALUES ('071101', '理论与应用力学'); +INSERT INTO `base_major` VALUES ('071200', '电子信息科学类'); +INSERT INTO `base_major` VALUES ('071201', '电子信息科学与技术'); +INSERT INTO `base_major` VALUES ('071202', '微电子学'); +INSERT INTO `base_major` VALUES ('071203', '光信息科学与技术'); +INSERT INTO `base_major` VALUES ('071204', '科技防卫'); +INSERT INTO `base_major` VALUES ('071205', '信息安全'); +INSERT INTO `base_major` VALUES ('071206', '信息科学技术'); +INSERT INTO `base_major` VALUES ('071207', '光电子技术科学'); +INSERT INTO `base_major` VALUES ('071300', '材料科学类'); +INSERT INTO `base_major` VALUES ('071301', '材料物理'); +INSERT INTO `base_major` VALUES ('071302', '材料化学'); +INSERT INTO `base_major` VALUES ('071400', '环境科学类'); +INSERT INTO `base_major` VALUES ('071401', '环境科学'); +INSERT INTO `base_major` VALUES ('071402', '生态学'); +INSERT INTO `base_major` VALUES ('071403', '资源环境科学'); +INSERT INTO `base_major` VALUES ('071404', '地球环境科学'); +INSERT INTO `base_major` VALUES ('071500', '心理学类'); +INSERT INTO `base_major` VALUES ('071501', '心理学'); +INSERT INTO `base_major` VALUES ('071502', '应用心理学'); +INSERT INTO `base_major` VALUES ('071600', '统计学类'); +INSERT INTO `base_major` VALUES ('071601', '统计学'); +INSERT INTO `base_major` VALUES ('071700', '系统科学类'); +INSERT INTO `base_major` VALUES ('071701', '系统理论'); +INSERT INTO `base_major` VALUES ('071702', '系统科学与工程'); +INSERT INTO `base_major` VALUES ('07SY00', '理科试验班类'); +INSERT INTO `base_major` VALUES ('07SY01', '理科试验班'); +INSERT INTO `base_major` VALUES ('07SY02', '自然科学试验班'); +INSERT INTO `base_major` VALUES ('080100', '地矿类'); +INSERT INTO `base_major` VALUES ('080101', '采矿工程'); +INSERT INTO `base_major` VALUES ('080102', '石油工程'); +INSERT INTO `base_major` VALUES ('080103', '矿物加工工程'); +INSERT INTO `base_major` VALUES ('080104', '勘查技术与工程'); +INSERT INTO `base_major` VALUES ('080105', '资源勘查工程'); +INSERT INTO `base_major` VALUES ('080106', '地质工程'); +INSERT INTO `base_major` VALUES ('080107', '矿物资源工程'); +INSERT INTO `base_major` VALUES ('080108', '煤及煤层气工程'); +INSERT INTO `base_major` VALUES ('080109', '地下水科学与工程'); +INSERT INTO `base_major` VALUES ('080110', '能源与资源工程'); +INSERT INTO `base_major` VALUES ('080111', '海洋油气工程'); +INSERT INTO `base_major` VALUES ('080200', '材料类'); +INSERT INTO `base_major` VALUES ('080201', '冶金工程'); +INSERT INTO `base_major` VALUES ('080202', '金属材料工程'); +INSERT INTO `base_major` VALUES ('080203', '无机非金属材料工程'); +INSERT INTO `base_major` VALUES ('080204', '高分子材料与工程'); +INSERT INTO `base_major` VALUES ('080205', '材料科学与工程'); +INSERT INTO `base_major` VALUES ('080206', '复合材料与工程'); +INSERT INTO `base_major` VALUES ('080207', '焊接技术与工程'); +INSERT INTO `base_major` VALUES ('080208', '宝石及材料工艺学'); +INSERT INTO `base_major` VALUES ('080209', '粉体材料科学与工程'); +INSERT INTO `base_major` VALUES ('080210', '再生资源科学与技术'); +INSERT INTO `base_major` VALUES ('080211', '稀土工程'); +INSERT INTO `base_major` VALUES ('080212', '高分子材料加工工程'); +INSERT INTO `base_major` VALUES ('080213', '生物功能材料'); +INSERT INTO `base_major` VALUES ('080214', '电子封装技术'); +INSERT INTO `base_major` VALUES ('080215', '功能材料'); +INSERT INTO `base_major` VALUES ('080216', '纳米材料与技术'); +INSERT INTO `base_major` VALUES ('080217', '新能源材料与器件'); +INSERT INTO `base_major` VALUES ('080218', '资源循环科学与工程'); +INSERT INTO `base_major` VALUES ('080300', '机械类'); +INSERT INTO `base_major` VALUES ('080301', '机械设计制造及其自动化'); +INSERT INTO `base_major` VALUES ('080302', '材料成型及控制工程'); +INSERT INTO `base_major` VALUES ('080303', '工业设计'); +INSERT INTO `base_major` VALUES ('080304', '过程装备与控制工程'); +INSERT INTO `base_major` VALUES ('080305', '机械工程及自动化'); +INSERT INTO `base_major` VALUES ('080306', '车辆工程'); +INSERT INTO `base_major` VALUES ('080307', '机械电子工程'); +INSERT INTO `base_major` VALUES ('080308', '汽车服务工程'); +INSERT INTO `base_major` VALUES ('080309', '制造自动化与测控技术'); +INSERT INTO `base_major` VALUES ('080310', '微机电系统工程'); +INSERT INTO `base_major` VALUES ('080311', '制造工程'); +INSERT INTO `base_major` VALUES ('080312', '体育装备工程'); +INSERT INTO `base_major` VALUES ('080313', '工程机械'); +INSERT INTO `base_major` VALUES ('080400', '仪器仪表类'); +INSERT INTO `base_major` VALUES ('080401', '测控技术与仪器'); +INSERT INTO `base_major` VALUES ('080402', '电子信息技术及仪器'); +INSERT INTO `base_major` VALUES ('080500', '能源动力类'); +INSERT INTO `base_major` VALUES ('080501', '热能与动力工程'); +INSERT INTO `base_major` VALUES ('080502', '核工程与核技术'); +INSERT INTO `base_major` VALUES ('080503', '工程物理'); +INSERT INTO `base_major` VALUES ('080504', '能源与环境系统工程'); +INSERT INTO `base_major` VALUES ('080505', '能源工程及自动化'); +INSERT INTO `base_major` VALUES ('080506', '能源动力系统及自动化'); +INSERT INTO `base_major` VALUES ('080507', '风能与动力工程'); +INSERT INTO `base_major` VALUES ('080508', '核技术'); +INSERT INTO `base_major` VALUES ('080509', '辐射防护与环境工程'); +INSERT INTO `base_major` VALUES ('080510', '核化工与核燃料工程'); +INSERT INTO `base_major` VALUES ('080511', '核反应堆工程'); +INSERT INTO `base_major` VALUES ('080512', '新能源科学与工程'); +INSERT INTO `base_major` VALUES ('080600', '电气信息类'); +INSERT INTO `base_major` VALUES ('080601', '电气工程及其自动化'); +INSERT INTO `base_major` VALUES ('080602', '自动化'); +INSERT INTO `base_major` VALUES ('080603', '电子信息工程'); +INSERT INTO `base_major` VALUES ('080604', '通信工程'); +INSERT INTO `base_major` VALUES ('080605', '计算机科学与技术'); +INSERT INTO `base_major` VALUES ('080606', '电子科学与技术'); +INSERT INTO `base_major` VALUES ('080607', '生物医学工程'); +INSERT INTO `base_major` VALUES ('080608', '电气工程与自动化'); +INSERT INTO `base_major` VALUES ('080609', '信息工程'); +INSERT INTO `base_major` VALUES ('080610', '光源与照明'); +INSERT INTO `base_major` VALUES ('080611', '软件工程'); +INSERT INTO `base_major` VALUES ('080612', '影视艺术技术'); +INSERT INTO `base_major` VALUES ('080613', '网络工程'); +INSERT INTO `base_major` VALUES ('080614', '信息显示与光电技术'); +INSERT INTO `base_major` VALUES ('080615', '集成电路设计与集成系统'); +INSERT INTO `base_major` VALUES ('080616', '光电信息工程'); +INSERT INTO `base_major` VALUES ('080617', '广播电视工程'); +INSERT INTO `base_major` VALUES ('080618', '电气信息工程'); +INSERT INTO `base_major` VALUES ('080619', '计算机软件'); +INSERT INTO `base_major` VALUES ('080620', '电力工程与管理'); +INSERT INTO `base_major` VALUES ('080621', '微电子制造工程'); +INSERT INTO `base_major` VALUES ('080622', '假肢矫形工程'); +INSERT INTO `base_major` VALUES ('080623', '数字媒体艺术'); +INSERT INTO `base_major` VALUES ('080624', '医学信息工程'); +INSERT INTO `base_major` VALUES ('080625', '信息物理工程'); +INSERT INTO `base_major` VALUES ('080626', '医疗器械工程'); +INSERT INTO `base_major` VALUES ('080627', '智能科学与技术'); +INSERT INTO `base_major` VALUES ('080628', '数字媒体技术'); +INSERT INTO `base_major` VALUES ('080629', '医学影像工程'); +INSERT INTO `base_major` VALUES ('080630', '真空电子技术'); +INSERT INTO `base_major` VALUES ('080631', '电磁场与无线技术'); +INSERT INTO `base_major` VALUES ('080632', '电信工程及管理'); +INSERT INTO `base_major` VALUES ('080633', '电气工程与智能控制'); +INSERT INTO `base_major` VALUES ('080634', '信息与通信工程'); +INSERT INTO `base_major` VALUES ('080635', '电波传播与天线'); +INSERT INTO `base_major` VALUES ('080636', '船舶电子电气工程'); +INSERT INTO `base_major` VALUES ('080637', '电子与计算机工程'); +INSERT INTO `base_major` VALUES ('080638', '仿真科学与技术'); +INSERT INTO `base_major` VALUES ('080639', '电机电器智能化'); +INSERT INTO `base_major` VALUES ('080640', '物联网工程'); +INSERT INTO `base_major` VALUES ('080641', '传感网技术'); +INSERT INTO `base_major` VALUES ('080643', '光电子材料与器件'); +INSERT INTO `base_major` VALUES ('080644', '水声工程'); +INSERT INTO `base_major` VALUES ('080645', '智能电网信息工程'); +INSERT INTO `base_major` VALUES ('080700', '土建类'); +INSERT INTO `base_major` VALUES ('080701', '建筑学'); +INSERT INTO `base_major` VALUES ('080702', '城市规划'); +INSERT INTO `base_major` VALUES ('080703', '土木工程'); +INSERT INTO `base_major` VALUES ('080704', '建筑环境与设备工程'); +INSERT INTO `base_major` VALUES ('080705', '给水排水工程'); +INSERT INTO `base_major` VALUES ('080706', '城市地下空间工程'); +INSERT INTO `base_major` VALUES ('080707', '历史建筑保护工程'); +INSERT INTO `base_major` VALUES ('080708', '景观建筑设计'); +INSERT INTO `base_major` VALUES ('080709', '水务工程'); +INSERT INTO `base_major` VALUES ('080710', '建筑设施智能技术'); +INSERT INTO `base_major` VALUES ('080711', '给排水科学与工程'); +INSERT INTO `base_major` VALUES ('080712', '建筑电气与智能化'); +INSERT INTO `base_major` VALUES ('080713', '景观学'); +INSERT INTO `base_major` VALUES ('080714', '风景园林'); +INSERT INTO `base_major` VALUES ('080715', '总图设计与工业运输'); +INSERT INTO `base_major` VALUES ('080716', '建筑节能技术与工程'); +INSERT INTO `base_major` VALUES ('080724', '道路桥梁与渡河工程'); +INSERT INTO `base_major` VALUES ('080800', '水利类'); +INSERT INTO `base_major` VALUES ('080801', '水利水电工程'); +INSERT INTO `base_major` VALUES ('080802', '水文与水资源工程'); +INSERT INTO `base_major` VALUES ('080803', '港口航道与海岸工程'); +INSERT INTO `base_major` VALUES ('080804', '港口海岸及治河工程'); +INSERT INTO `base_major` VALUES ('080805', '水资源与海洋工程'); +INSERT INTO `base_major` VALUES ('080900', '测绘类'); +INSERT INTO `base_major` VALUES ('080901', '测绘工程'); +INSERT INTO `base_major` VALUES ('080902', '遥感科学与技术'); +INSERT INTO `base_major` VALUES ('080903', '空间信息与数字技术'); +INSERT INTO `base_major` VALUES ('081000', '环境与安全类'); +INSERT INTO `base_major` VALUES ('081001', '环境工程'); +INSERT INTO `base_major` VALUES ('081002', '安全工程'); +INSERT INTO `base_major` VALUES ('081003', '水质科学与技术'); +INSERT INTO `base_major` VALUES ('081004', '灾害防治工程'); +INSERT INTO `base_major` VALUES ('081005', '环境科学与工程'); +INSERT INTO `base_major` VALUES ('081006', '环境监察'); +INSERT INTO `base_major` VALUES ('081007', '雷电防护科学与技术'); +INSERT INTO `base_major` VALUES ('081008', '核安全工程'); +INSERT INTO `base_major` VALUES ('081009', '环保设备工程'); +INSERT INTO `base_major` VALUES ('081100', '化工与制药类'); +INSERT INTO `base_major` VALUES ('081101', '化学工程与工艺'); +INSERT INTO `base_major` VALUES ('081102', '制药工程'); +INSERT INTO `base_major` VALUES ('081103', '化工与制药'); +INSERT INTO `base_major` VALUES ('081104', '化学工程与工业生物工程'); +INSERT INTO `base_major` VALUES ('081105', '资源科学与工程'); +INSERT INTO `base_major` VALUES ('081106', '能源化学工程'); +INSERT INTO `base_major` VALUES ('081107', '生物制药'); +INSERT INTO `base_major` VALUES ('081200', '交通运输类'); +INSERT INTO `base_major` VALUES ('081201', '交通运输'); +INSERT INTO `base_major` VALUES ('081202', '交通工程'); +INSERT INTO `base_major` VALUES ('081203', '油气储运工程'); +INSERT INTO `base_major` VALUES ('081204', '飞行技术'); +INSERT INTO `base_major` VALUES ('081205', '航海技术'); +INSERT INTO `base_major` VALUES ('081206', '轮机工程'); +INSERT INTO `base_major` VALUES ('081207', '物流工程'); +INSERT INTO `base_major` VALUES ('081208', '海事管理'); +INSERT INTO `base_major` VALUES ('081209', '交通设备信息工程'); +INSERT INTO `base_major` VALUES ('081210', '交通建设与装备'); +INSERT INTO `base_major` VALUES ('081211', '救助与打捞工程'); +INSERT INTO `base_major` VALUES ('081212', '航空器适航技术'); +INSERT INTO `base_major` VALUES ('081213', '交通信息与控制工程'); +INSERT INTO `base_major` VALUES ('081300', '海洋工程类'); +INSERT INTO `base_major` VALUES ('081301', '船舶与海洋工程'); +INSERT INTO `base_major` VALUES ('081302', '海洋工程与技术'); +INSERT INTO `base_major` VALUES ('081303', '海洋资源开发技术'); +INSERT INTO `base_major` VALUES ('081400', '轻工纺织食品类'); +INSERT INTO `base_major` VALUES ('081401', '食品科学与工程'); +INSERT INTO `base_major` VALUES ('081402', '轻化工程'); +INSERT INTO `base_major` VALUES ('081403', '包装工程'); +INSERT INTO `base_major` VALUES ('081404', '印刷工程'); +INSERT INTO `base_major` VALUES ('081405', '纺织工程'); +INSERT INTO `base_major` VALUES ('081406', '服装设计与工程'); +INSERT INTO `base_major` VALUES ('081407', '食品质量与安全'); +INSERT INTO `base_major` VALUES ('081408', '酿酒工程'); +INSERT INTO `base_major` VALUES ('081409', '葡萄与葡萄酒工程'); +INSERT INTO `base_major` VALUES ('081410', '轻工生物技术'); +INSERT INTO `base_major` VALUES ('081411', '农产品质量与安全'); +INSERT INTO `base_major` VALUES ('081412', '非织造材料与工程'); +INSERT INTO `base_major` VALUES ('081413', '数字印刷'); +INSERT INTO `base_major` VALUES ('081414', '植物资源工程'); +INSERT INTO `base_major` VALUES ('081415', '粮食工程'); +INSERT INTO `base_major` VALUES ('081416', '乳品工程'); +INSERT INTO `base_major` VALUES ('081500', '航空航天类'); +INSERT INTO `base_major` VALUES ('081501', '飞行器设计与工程'); +INSERT INTO `base_major` VALUES ('081502', '飞行器动力工程'); +INSERT INTO `base_major` VALUES ('081503', '飞行器制造工程'); +INSERT INTO `base_major` VALUES ('081504', '飞行器环境与生命保障工程'); +INSERT INTO `base_major` VALUES ('081505', '航空航天工程'); +INSERT INTO `base_major` VALUES ('081506', '工程力学与航天航空工程'); +INSERT INTO `base_major` VALUES ('081507', '航天运输与控制'); +INSERT INTO `base_major` VALUES ('081508', '质量与可靠性工程'); +INSERT INTO `base_major` VALUES ('081600', '武器类'); +INSERT INTO `base_major` VALUES ('081601', '武器系统与发射工程'); +INSERT INTO `base_major` VALUES ('081602', '探测制导与控制技术'); +INSERT INTO `base_major` VALUES ('081603', '弹药工程与爆炸技术'); +INSERT INTO `base_major` VALUES ('081604', '特种能源工程与烟火技术'); +INSERT INTO `base_major` VALUES ('081605', '地面武器机动工程'); +INSERT INTO `base_major` VALUES ('081606', '信息对抗技术'); +INSERT INTO `base_major` VALUES ('081607', '武器系统与工程'); +INSERT INTO `base_major` VALUES ('081700', '工程力学类'); +INSERT INTO `base_major` VALUES ('081701', '工程力学'); +INSERT INTO `base_major` VALUES ('081702', '工程结构分析'); +INSERT INTO `base_major` VALUES ('081800', '生物工程类'); +INSERT INTO `base_major` VALUES ('081801', '生物工程'); +INSERT INTO `base_major` VALUES ('081900', '农业工程类'); +INSERT INTO `base_major` VALUES ('081901', '农业机械化及其自动化'); +INSERT INTO `base_major` VALUES ('081902', '农业电气化与自动化'); +INSERT INTO `base_major` VALUES ('081903', '农业建筑环境与能源工程'); +INSERT INTO `base_major` VALUES ('081904', '农业水利工程'); +INSERT INTO `base_major` VALUES ('081905', '农业工程'); +INSERT INTO `base_major` VALUES ('081906', '生物系统工程'); +INSERT INTO `base_major` VALUES ('082000', '林业工程类'); +INSERT INTO `base_major` VALUES ('082001', '森林工程'); +INSERT INTO `base_major` VALUES ('082002', '木材科学与工程'); +INSERT INTO `base_major` VALUES ('082003', '林产化工'); +INSERT INTO `base_major` VALUES ('082100', '公安技术类'); +INSERT INTO `base_major` VALUES ('082101', '刑事科学技术'); +INSERT INTO `base_major` VALUES ('082102', '消防工程'); +INSERT INTO `base_major` VALUES ('082103', '安全防范工程'); +INSERT INTO `base_major` VALUES ('082104', '交通管理工程'); +INSERT INTO `base_major` VALUES ('082105', '核生化消防'); +INSERT INTO `base_major` VALUES ('082106', '公安视听技术'); +INSERT INTO `base_major` VALUES ('082107', '网络安全与执法'); +INSERT INTO `base_major` VALUES ('082303', '农业电气化'); +INSERT INTO `base_major` VALUES ('082802', '城乡规划'); +INSERT INTO `base_major` VALUES ('08SY00', '工科试验班类'); +INSERT INTO `base_major` VALUES ('08SY01', '工科试验班'); +INSERT INTO `base_major` VALUES ('08SY02', '科技与创意设计试验班'); +INSERT INTO `base_major` VALUES ('090100', '植物生产类'); +INSERT INTO `base_major` VALUES ('090101', '农学'); +INSERT INTO `base_major` VALUES ('090102', '园艺'); +INSERT INTO `base_major` VALUES ('090103', '植物保护'); +INSERT INTO `base_major` VALUES ('090104', '茶学'); +INSERT INTO `base_major` VALUES ('090105', '烟草'); +INSERT INTO `base_major` VALUES ('090106', '植物科学与技术'); +INSERT INTO `base_major` VALUES ('090107', '种子科学与工程'); +INSERT INTO `base_major` VALUES ('090108', '应用生物科学'); +INSERT INTO `base_major` VALUES ('090109', '设施农业科学与工程'); +INSERT INTO `base_major` VALUES ('090200', '草业科学类'); +INSERT INTO `base_major` VALUES ('090201', '草业科学'); +INSERT INTO `base_major` VALUES ('090300', '森林资源类'); +INSERT INTO `base_major` VALUES ('090301', '林学'); +INSERT INTO `base_major` VALUES ('090302', '森林资源保护与游憩'); +INSERT INTO `base_major` VALUES ('090303', '野生动物与自然保护区管理'); +INSERT INTO `base_major` VALUES ('090400', '环境生态类'); +INSERT INTO `base_major` VALUES ('090401', '园林'); +INSERT INTO `base_major` VALUES ('090402', '水土保持与荒漠化防治'); +INSERT INTO `base_major` VALUES ('090403', '农业资源与环境'); +INSERT INTO `base_major` VALUES ('090500', '动物生产类'); +INSERT INTO `base_major` VALUES ('090501', '动物科学'); +INSERT INTO `base_major` VALUES ('090502', '蚕学'); +INSERT INTO `base_major` VALUES ('090503', '蜂学'); +INSERT INTO `base_major` VALUES ('090600', '动物医学类'); +INSERT INTO `base_major` VALUES ('090601', '动物医学'); +INSERT INTO `base_major` VALUES ('090602', '动物药学'); +INSERT INTO `base_major` VALUES ('090700', '水产类'); +INSERT INTO `base_major` VALUES ('090701', '水产养殖学'); +INSERT INTO `base_major` VALUES ('090702', '海洋渔业科学与技术'); +INSERT INTO `base_major` VALUES ('090703', '水族科学与技术'); +INSERT INTO `base_major` VALUES ('100100', '基础医学类'); +INSERT INTO `base_major` VALUES ('100101', '基础医学'); +INSERT INTO `base_major` VALUES ('100200', '预防医学类'); +INSERT INTO `base_major` VALUES ('100201', '预防医学'); +INSERT INTO `base_major` VALUES ('100202', '卫生检验'); +INSERT INTO `base_major` VALUES ('100203', '妇幼保健医学'); +INSERT INTO `base_major` VALUES ('100204', '营养学'); +INSERT INTO `base_major` VALUES ('100300', '临床医学与医学技术类'); +INSERT INTO `base_major` VALUES ('100301', '临床医学'); +INSERT INTO `base_major` VALUES ('100302', '麻醉学'); +INSERT INTO `base_major` VALUES ('100303', '医学影像学'); +INSERT INTO `base_major` VALUES ('100304', '医学检验'); +INSERT INTO `base_major` VALUES ('100305', '放射医学'); +INSERT INTO `base_major` VALUES ('100306', '眼视光学'); +INSERT INTO `base_major` VALUES ('100307', '康复治疗学'); +INSERT INTO `base_major` VALUES ('100308', '精神医学'); +INSERT INTO `base_major` VALUES ('100309', '医学技术'); +INSERT INTO `base_major` VALUES ('100310', '听力学'); +INSERT INTO `base_major` VALUES ('100311', '医学实验学'); +INSERT INTO `base_major` VALUES ('100312', '医学美容技术'); +INSERT INTO `base_major` VALUES ('100400', '口腔医学类'); +INSERT INTO `base_major` VALUES ('100401', '口腔医学'); +INSERT INTO `base_major` VALUES ('100402', '口腔修复工艺学'); +INSERT INTO `base_major` VALUES ('100500', '中医学类'); +INSERT INTO `base_major` VALUES ('100501', '中医学'); +INSERT INTO `base_major` VALUES ('100502', '针灸推拿学'); +INSERT INTO `base_major` VALUES ('100503', '蒙医学'); +INSERT INTO `base_major` VALUES ('100504', '藏医学'); +INSERT INTO `base_major` VALUES ('100505', '中西医临床医学'); +INSERT INTO `base_major` VALUES ('100506', '维医学'); +INSERT INTO `base_major` VALUES ('100600', '法医学类'); +INSERT INTO `base_major` VALUES ('100601', '法医学'); +INSERT INTO `base_major` VALUES ('100700', '护理学类'); +INSERT INTO `base_major` VALUES ('100701', '护理学'); +INSERT INTO `base_major` VALUES ('100800', '药学类'); +INSERT INTO `base_major` VALUES ('100801', '药学'); +INSERT INTO `base_major` VALUES ('100802', '中药学'); +INSERT INTO `base_major` VALUES ('100803', '药物制剂'); +INSERT INTO `base_major` VALUES ('100804', '中草药栽培与鉴定'); +INSERT INTO `base_major` VALUES ('100805', '藏药学'); +INSERT INTO `base_major` VALUES ('100806', '中药资源与开发'); +INSERT INTO `base_major` VALUES ('100807', '应用药学'); +INSERT INTO `base_major` VALUES ('100808', '临床药学'); +INSERT INTO `base_major` VALUES ('100809', '海洋药学'); +INSERT INTO `base_major` VALUES ('10080J', '基础药学基地班'); +INSERT INTO `base_major` VALUES ('100810', '药事管理'); +INSERT INTO `base_major` VALUES ('100811', '蒙药学'); +INSERT INTO `base_major` VALUES ('100812', '药物分析'); +INSERT INTO `base_major` VALUES ('100813', '药物化学'); +INSERT INTO `base_major` VALUES ('100814', '中药制药'); +INSERT INTO `base_major` VALUES ('101001', '医学检验技术'); +INSERT INTO `base_major` VALUES ('101003', '医学影像技术'); +INSERT INTO `base_major` VALUES ('101007', '卫生检验与检疫'); +INSERT INTO `base_major` VALUES ('10SY00', '医学试验班类'); +INSERT INTO `base_major` VALUES ('10SY01', '医学试验班'); +INSERT INTO `base_major` VALUES ('110100', '管理科学与工程类'); +INSERT INTO `base_major` VALUES ('110101', '管理科学'); +INSERT INTO `base_major` VALUES ('110102', '信息管理与信息系统'); +INSERT INTO `base_major` VALUES ('110103', '工业工程'); +INSERT INTO `base_major` VALUES ('110104', '工程管理'); +INSERT INTO `base_major` VALUES ('110105', '工程造价'); +INSERT INTO `base_major` VALUES ('110106', '房地产经营管理'); +INSERT INTO `base_major` VALUES ('110107', '产品质量工程'); +INSERT INTO `base_major` VALUES ('110108', '项目管理'); +INSERT INTO `base_major` VALUES ('110109', '管理科学工程'); +INSERT INTO `base_major` VALUES ('110110', '标准化工程'); +INSERT INTO `base_major` VALUES ('110200', '工商管理类'); +INSERT INTO `base_major` VALUES ('110201', '工商管理'); +INSERT INTO `base_major` VALUES ('110202', '市场营销'); +INSERT INTO `base_major` VALUES ('110203', '会计学'); +INSERT INTO `base_major` VALUES ('110204', '财务管理'); +INSERT INTO `base_major` VALUES ('110205', '人力资源管理'); +INSERT INTO `base_major` VALUES ('110206', '旅游管理'); +INSERT INTO `base_major` VALUES ('110207', '商品学'); +INSERT INTO `base_major` VALUES ('110208', '审计学'); +INSERT INTO `base_major` VALUES ('110209', '电子商务'); +INSERT INTO `base_major` VALUES ('110210', '物流管理'); +INSERT INTO `base_major` VALUES ('110211', '国际商务'); +INSERT INTO `base_major` VALUES ('110212', '物业管理'); +INSERT INTO `base_major` VALUES ('110213', '特许经营管理'); +INSERT INTO `base_major` VALUES ('110214', '连锁经营管理'); +INSERT INTO `base_major` VALUES ('110215', '资产评估'); +INSERT INTO `base_major` VALUES ('110216', '电子商务及法律'); +INSERT INTO `base_major` VALUES ('110217', '商务策划管理'); +INSERT INTO `base_major` VALUES ('110218', '酒店管理'); +INSERT INTO `base_major` VALUES ('110219', '采购管理'); +INSERT INTO `base_major` VALUES ('110300', '公共管理类'); +INSERT INTO `base_major` VALUES ('110301', '行政管理'); +INSERT INTO `base_major` VALUES ('110302', '公共事业管理'); +INSERT INTO `base_major` VALUES ('110303', '劳动与社会保障'); +INSERT INTO `base_major` VALUES ('110304', '土地资源管理'); +INSERT INTO `base_major` VALUES ('110305', '公共关系学'); +INSERT INTO `base_major` VALUES ('110306', '高等教育管理'); +INSERT INTO `base_major` VALUES ('110307', '公共政策学'); +INSERT INTO `base_major` VALUES ('110308', '城市管理'); +INSERT INTO `base_major` VALUES ('110309', '公共管理'); +INSERT INTO `base_major` VALUES ('110310', '文化产业管理'); +INSERT INTO `base_major` VALUES ('110311', '会展经济与管理'); +INSERT INTO `base_major` VALUES ('110312', '国防教育与管理'); +INSERT INTO `base_major` VALUES ('110313', '航运管理'); +INSERT INTO `base_major` VALUES ('110314', '劳动关系'); +INSERT INTO `base_major` VALUES ('110315', '公共安全管理'); +INSERT INTO `base_major` VALUES ('110316', '体育产业管理'); +INSERT INTO `base_major` VALUES ('110317', '食品经济管理'); +INSERT INTO `base_major` VALUES ('110318', '应急管理'); +INSERT INTO `base_major` VALUES ('110319', '海关管理'); +INSERT INTO `base_major` VALUES ('110400', '农业经济管理类'); +INSERT INTO `base_major` VALUES ('110401', '农林经济管理'); +INSERT INTO `base_major` VALUES ('110402', '农村区域发展'); +INSERT INTO `base_major` VALUES ('110500', '图书档案学类'); +INSERT INTO `base_major` VALUES ('110501', '图书馆学'); +INSERT INTO `base_major` VALUES ('110502', '档案学'); +INSERT INTO `base_major` VALUES ('110503', '信息资源管理'); +INSERT INTO `base_major` VALUES ('120201', '政治经济学'); +INSERT INTO `base_major` VALUES ('120301', '政治学'); +INSERT INTO `base_major` VALUES ('120302', '国际关系与安全'); +INSERT INTO `base_major` VALUES ('120303', '军事外交'); +INSERT INTO `base_major` VALUES ('120501', '中国语言文学'); +INSERT INTO `base_major` VALUES ('120502', '外国语言文学(外国军事)'); +INSERT INTO `base_major` VALUES ('120601', '军事历史'); +INSERT INTO `base_major` VALUES ('120701', '应用数学'); +INSERT INTO `base_major` VALUES ('120702', '军事气象学'); +INSERT INTO `base_major` VALUES ('120703', '军事海洋学'); +INSERT INTO `base_major` VALUES ('120704', '军事心理学'); +INSERT INTO `base_major` VALUES ('120801', '军用材料工程'); +INSERT INTO `base_major` VALUES ('120802', '机械装备类'); +INSERT INTO `base_major` VALUES ('120803', '车辆运用工程'); +INSERT INTO `base_major` VALUES ('120804', '油料储运工程'); +INSERT INTO `base_major` VALUES ('120805', '舰船动力工程'); +INSERT INTO `base_major` VALUES ('120806', '核动力工程'); +INSERT INTO `base_major` VALUES ('120807', '电力工程及其自动化'); +INSERT INTO `base_major` VALUES ('120808', '电子工程'); +INSERT INTO `base_major` VALUES ('120809', '雷达工程'); +INSERT INTO `base_major` VALUES ('120810', '导航工程'); +INSERT INTO `base_major` VALUES ('120811', '军用光电工程'); +INSERT INTO `base_major` VALUES ('120812', '航空反潜工程'); +INSERT INTO `base_major` VALUES ('120813', '侦测工程'); +INSERT INTO `base_major` VALUES ('120814', '信息研究与安全(密码学)'); +INSERT INTO `base_major` VALUES ('120815', '密码装备工程'); +INSERT INTO `base_major` VALUES ('120816', '仿真工程'); +INSERT INTO `base_major` VALUES ('120817', '指挥自动化工程'); +INSERT INTO `base_major` VALUES ('120818', '国防建筑学'); +INSERT INTO `base_major` VALUES ('120819', '土木工程'); +INSERT INTO `base_major` VALUES ('120820', '野战给水工程'); +INSERT INTO `base_major` VALUES ('120821', '国防建筑设备工程'); +INSERT INTO `base_major` VALUES ('120822', '道路桥梁与渡河濒海工程'); +INSERT INTO `base_major` VALUES ('120823', '测绘遥感类'); +INSERT INTO `base_major` VALUES ('120824', '测量工程'); +INSERT INTO `base_major` VALUES ('120825', '地图学与地理信息工程'); +INSERT INTO `base_major` VALUES ('120826', '工程物理'); +INSERT INTO `base_major` VALUES ('120827', '生化防护工程'); +INSERT INTO `base_major` VALUES ('120828', '国防工程与防护'); +INSERT INTO `base_major` VALUES ('120829', '伪装工程'); +INSERT INTO `base_major` VALUES ('120830', '舰船与海洋工程'); +INSERT INTO `base_major` VALUES ('120831', '飞行器系统与工程'); +INSERT INTO `base_major` VALUES ('120832', '空间工程'); +INSERT INTO `base_major` VALUES ('120833', '兵器工程'); +INSERT INTO `base_major` VALUES ('120834', '导弹工程'); +INSERT INTO `base_major` VALUES ('120835', '弹药工程'); +INSERT INTO `base_major` VALUES ('120836', '地雷爆破与破障工程'); +INSERT INTO `base_major` VALUES ('120837', '控制测试类'); +INSERT INTO `base_major` VALUES ('120838', '火力指挥与控制工程'); +INSERT INTO `base_major` VALUES ('120839', '测控工程'); +INSERT INTO `base_major` VALUES ('120840', '无人机运用工程'); +INSERT INTO `base_major` VALUES ('120841', '探测工程'); +INSERT INTO `base_major` VALUES ('121101', '管理工程'); +INSERT INTO `base_major` VALUES ('121102', '系统工程'); +INSERT INTO `base_major` VALUES ('121103', '经济管理类'); +INSERT INTO `base_major` VALUES ('121104', '军队财务管理'); +INSERT INTO `base_major` VALUES ('121105', '装备经济管理'); +INSERT INTO `base_major` VALUES ('121106', '军队审计'); +INSERT INTO `base_major` VALUES ('121107', '军队采办'); +INSERT INTO `base_major` VALUES ('121300', '兵种指挥类'); +INSERT INTO `base_major` VALUES ('121301', '炮兵指挥'); +INSERT INTO `base_major` VALUES ('121302', '防空兵指挥'); +INSERT INTO `base_major` VALUES ('121303', '装甲兵指挥'); +INSERT INTO `base_major` VALUES ('121304', '工程兵指挥'); +INSERT INTO `base_major` VALUES ('121305', '防化兵指挥'); +INSERT INTO `base_major` VALUES ('121400', '航空航天指挥类'); +INSERT INTO `base_major` VALUES ('121401', '航空飞行与指挥'); +INSERT INTO `base_major` VALUES ('121402', '地面领航与航空管制'); +INSERT INTO `base_major` VALUES ('121403', '航天指挥'); +INSERT INTO `base_major` VALUES ('121500', '信息作战指挥类'); +INSERT INTO `base_major` VALUES ('121501', '侦察与特种兵指挥'); +INSERT INTO `base_major` VALUES ('121502', '通信指挥'); +INSERT INTO `base_major` VALUES ('121503', '电子对抗指挥与工程'); +INSERT INTO `base_major` VALUES ('121504', '军事情报'); +INSERT INTO `base_major` VALUES ('121505', '作战信息管理'); +INSERT INTO `base_major` VALUES ('121506', '预警探测指挥'); +INSERT INTO `base_major` VALUES ('121600', '保障指挥类'); +INSERT INTO `base_major` VALUES ('121601', '军事交通指挥与工程'); +INSERT INTO `base_major` VALUES ('121602', '汽车指挥'); +INSERT INTO `base_major` VALUES ('121603', '船艇指挥'); +INSERT INTO `base_major` VALUES ('121604', '航空兵场站指挥'); +INSERT INTO `base_major` VALUES ('121605', '国防工程指挥'); +INSERT INTO `base_major` VALUES ('121606', '装备保障指挥'); +INSERT INTO `base_major` VALUES ('121607', '军需勤务指挥'); +INSERT INTO `base_major` VALUES ('121700', '武警指挥类'); +INSERT INTO `base_major` VALUES ('121701', '武警指挥'); +INSERT INTO `base_major` VALUES ('130101', '艺术史论'); +INSERT INTO `base_major` VALUES ('130201', '音乐表演'); +INSERT INTO `base_major` VALUES ('130202', '音乐学'); +INSERT INTO `base_major` VALUES ('130203', '作曲与作曲技术理论'); +INSERT INTO `base_major` VALUES ('130204', '舞蹈表演'); +INSERT INTO `base_major` VALUES ('130205', '舞蹈学'); +INSERT INTO `base_major` VALUES ('130206', '舞蹈编导'); +INSERT INTO `base_major` VALUES ('130301', '表演'); +INSERT INTO `base_major` VALUES ('130302', '戏剧学'); +INSERT INTO `base_major` VALUES ('130303', '电影学'); +INSERT INTO `base_major` VALUES ('130304', '戏剧影视文学'); +INSERT INTO `base_major` VALUES ('130305', '广播电视编导'); +INSERT INTO `base_major` VALUES ('130306', '戏剧影视导演'); +INSERT INTO `base_major` VALUES ('130307', '戏剧影视美术设计'); +INSERT INTO `base_major` VALUES ('130308', '录音艺术'); +INSERT INTO `base_major` VALUES ('130309', '播音与主持艺术'); +INSERT INTO `base_major` VALUES ('130310', '动画'); +INSERT INTO `base_major` VALUES ('130311', '影视摄影与制作'); +INSERT INTO `base_major` VALUES ('130401', '美术学'); +INSERT INTO `base_major` VALUES ('130402', '绘画'); +INSERT INTO `base_major` VALUES ('130403', '雕塑'); +INSERT INTO `base_major` VALUES ('130404', '摄影'); +INSERT INTO `base_major` VALUES ('130405', '书法学'); +INSERT INTO `base_major` VALUES ('130406', '中国画'); +INSERT INTO `base_major` VALUES ('130500', '设计学类'); +INSERT INTO `base_major` VALUES ('130501', '艺术设计学'); +INSERT INTO `base_major` VALUES ('130502', '视觉传达设计'); +INSERT INTO `base_major` VALUES ('130503', '环境设计'); +INSERT INTO `base_major` VALUES ('130504', '产品设计'); +INSERT INTO `base_major` VALUES ('130505', '服装与服饰设计'); +INSERT INTO `base_major` VALUES ('130506', '公共艺术'); +INSERT INTO `base_major` VALUES ('130507', '工艺美术'); +INSERT INTO `base_major` VALUES ('130508', '数字媒体艺术'); +INSERT INTO `base_major` VALUES ('130509', '艺术与科技'); \ No newline at end of file diff --git a/src/main/resources/data_base_political_status.sql b/src/main/resources/data_base_political_status.sql new file mode 100644 index 0000000..bba8879 --- /dev/null +++ b/src/main/resources/data_base_political_status.sql @@ -0,0 +1,14 @@ +INSERT INTO `base_political_status`(`id`, `name`) VALUES (0, '----'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (1, '中共党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (2, '中共预备党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (3, '共青团员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (4, '民革会员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (5, '民盟盟员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (6, '民建会员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (7, '民进会员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (8, '农工党党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (9, '致公党党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (10, '九三学社社员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (11, '台盟盟员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (12, '无党派民主人士'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (13, '群众'); diff --git a/src/main/resources/import.sql b/src/main/resources/import.sql new file mode 100644 index 0000000..b95a9a2 --- /dev/null +++ b/src/main/resources/import.sql @@ -0,0 +1,4456 @@ +-- ---------------------------- +-- Records of base_administrative_division +-- ---------------------------- +INSERT INTO `base_administrative_division` VALUES ('000000', '未知', '0'); +INSERT INTO `base_administrative_division` VALUES ('110000', '北京市', '0'); +INSERT INTO `base_administrative_division` VALUES ('110100', '北京市市辖区', '110000'); +INSERT INTO `base_administrative_division` VALUES ('110101', '北京市东城区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110102', '北京市西城区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110105', '北京市朝阳区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110106', '北京市丰台区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110107', '北京市石景山区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110108', '北京市海淀区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110109', '北京市门头沟区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110111', '北京市房山区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110112', '北京市通州区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110113', '北京市顺义区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110114', '北京市昌平区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110115', '北京市大兴区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110116', '北京市怀柔区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110117', '北京市平谷区', '110100'); +INSERT INTO `base_administrative_division` VALUES ('110200', '北京市县', '110000'); +INSERT INTO `base_administrative_division` VALUES ('110228', '北京市密云县', '110200'); +INSERT INTO `base_administrative_division` VALUES ('110229', '北京市延庆县', '110200'); +INSERT INTO `base_administrative_division` VALUES ('120000', '天津市', '0'); +INSERT INTO `base_administrative_division` VALUES ('120100', '天津市市辖区', '120000'); +INSERT INTO `base_administrative_division` VALUES ('120101', '天津市和平区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120102', '天津市河东区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120103', '天津市河西区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120104', '天津市南开区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120105', '天津市河北区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120106', '天津市红桥区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120110', '天津市东丽区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120111', '天津市西青区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120112', '天津市津南区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120113', '天津市北辰区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120114', '天津市武清区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120115', '天津市宝坻区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120116', '天津市滨海新区', '120100'); +INSERT INTO `base_administrative_division` VALUES ('120200', '天津市县', '120000'); +INSERT INTO `base_administrative_division` VALUES ('120221', '天津市宁河县', '120200'); +INSERT INTO `base_administrative_division` VALUES ('120223', '天津市静海县', '120200'); +INSERT INTO `base_administrative_division` VALUES ('120225', '天津市蓟县', '120200'); +INSERT INTO `base_administrative_division` VALUES ('130000', '河北省', '0'); +INSERT INTO `base_administrative_division` VALUES ('130100', '河北省石家庄市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130101', '河北省石家庄市市辖区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130102', '河北省石家庄市长安区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130103', '河北省石家庄市桥东区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130104', '河北省石家庄市桥西区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130105', '河北省石家庄市新华区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130107', '河北省石家庄市井陉矿区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130108', '河北省石家庄市裕华区', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130121', '河北省井陉县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130123', '河北省正定县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130124', '河北省栾城县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130125', '河北省行唐县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130126', '河北省灵寿县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130127', '河北省高邑县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130128', '河北省深泽县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130129', '河北省赞皇县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130130', '河北省无极县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130131', '河北省平山县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130132', '河北省元氏县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130133', '河北省赵县', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130181', '河北省辛集市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130182', '河北省藁城市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130183', '河北省晋州市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130184', '河北省新乐市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130185', '河北省鹿泉市', '130100'); +INSERT INTO `base_administrative_division` VALUES ('130200', '河北省唐山市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130201', '河北省唐山市市辖区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130202', '河北省唐山市路南区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130203', '河北省唐山市路北区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130204', '河北省唐山市古冶区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130205', '河北省唐山市开平区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130207', '河北省唐山市丰南区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130208', '河北省唐山市丰润区', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130223', '河北省滦县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130224', '河北省滦南县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130225', '河北省乐亭县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130227', '河北省迁西县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130229', '河北省玉田县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130230', '河北省唐海县', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130281', '河北省遵化市', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130283', '河北省迁安市', '130200'); +INSERT INTO `base_administrative_division` VALUES ('130300', '河北省秦皇岛市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130301', '河北省秦皇岛市市辖区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130302', '河北省秦皇岛市海港区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130303', '河北省秦皇岛市山海关区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130304', '河北省秦皇岛市北戴河区', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130321', '河北省青龙满族自治县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130322', '河北省昌黎县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130323', '河北省抚宁县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130324', '河北省卢龙县', '130300'); +INSERT INTO `base_administrative_division` VALUES ('130400', '河北省邯郸市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130401', '河北省邯郸市市辖区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130402', '河北省邯郸市邯山区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130403', '河北省邯郸市丛台区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130404', '河北省邯郸市复兴区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130406', '河北省邯郸市峰峰矿区', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130421', '河北省邯郸县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130423', '河北省临漳县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130424', '河北省成安县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130425', '河北省大名县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130426', '河北省涉县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130427', '河北省磁县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130428', '河北省肥乡县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130429', '河北省永年县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130430', '河北省邱县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130431', '河北省鸡泽县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130432', '河北省广平县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130433', '河北省馆陶县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130434', '河北省魏县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130435', '河北省曲周县', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130481', '河北省武安市', '130400'); +INSERT INTO `base_administrative_division` VALUES ('130500', '河北省邢台市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130501', '河北省邢台市市辖区', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130502', '河北省邢台市桥东区', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130503', '河北省邢台市桥西区', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130521', '河北省邢台县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130522', '河北省临城县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130523', '河北省内丘县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130524', '河北省柏乡县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130525', '河北省隆尧县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130526', '河北省任县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130527', '河北省南和县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130528', '河北省宁晋县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130529', '河北省巨鹿县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130530', '河北省新河县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130531', '河北省广宗县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130532', '河北省平乡县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130533', '河北省威县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130534', '河北省清河县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130535', '河北省临西县', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130581', '河北省南宫市', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130582', '河北省沙河市', '130500'); +INSERT INTO `base_administrative_division` VALUES ('130600', '河北省保定市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130601', '河北省保定市市辖区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130602', '河北省保定市新市区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130603', '河北省保定市北市区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130604', '河北省保定市南市区', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130621', '河北省满城县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130622', '河北省清苑县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130623', '河北省涞水县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130624', '河北省阜平县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130625', '河北省徐水县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130626', '河北省定兴县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130627', '河北省唐县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130628', '河北省高阳县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130629', '河北省容城县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130630', '河北省涞源县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130631', '河北省望都县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130632', '河北省安新县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130633', '河北省易县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130634', '河北省曲阳县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130635', '河北省蠡县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130636', '河北省顺平县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130637', '河北省博野县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130638', '河北省雄县', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130681', '河北省涿州市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130682', '河北省定州市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130683', '河北省安国市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130684', '河北省高碑店市', '130600'); +INSERT INTO `base_administrative_division` VALUES ('130700', '河北省张家口市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130701', '河北省张家口市市辖区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130702', '河北省张家口市桥东区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130703', '河北省张家口市桥西区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130705', '河北省张家口市宣化区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130706', '河北省张家口市下花园区', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130721', '河北省宣化县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130722', '河北省张北县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130723', '河北省康保县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130724', '河北省沽源县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130725', '河北省尚义县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130726', '河北省蔚县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130727', '河北省阳原县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130728', '河北省怀安县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130729', '河北省万全县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130730', '河北省怀来县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130731', '河北省涿鹿县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130732', '河北省赤城县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130733', '河北省崇礼县', '130700'); +INSERT INTO `base_administrative_division` VALUES ('130800', '河北省承德市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130801', '河北省承德市市辖区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130802', '河北省承德市双桥区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130803', '河北省承德市双滦区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130804', '河北省承德市鹰手营子矿区', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130821', '河北省承德县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130822', '河北省兴隆县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130823', '河北省平泉县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130824', '河北省滦平县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130825', '河北省隆化县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130826', '河北省丰宁满族自治县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130827', '河北省宽城满族自治县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130828', '河北省围场满族蒙古族自治县', '130800'); +INSERT INTO `base_administrative_division` VALUES ('130900', '河北省沧州市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('130901', '河北省沧州市市辖区', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130902', '河北省沧州市新华区', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130903', '河北省沧州市运河区', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130921', '河北省沧县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130922', '河北省青县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130923', '河北省东光县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130924', '河北省海兴县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130925', '河北省盐山县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130926', '河北省肃宁县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130927', '河北省南皮县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130928', '河北省吴桥县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130929', '河北省献县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130930', '河北省孟村回族自治县', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130981', '河北省泊头市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130982', '河北省任丘市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130983', '河北省黄骅市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('130984', '河北省河间市', '130900'); +INSERT INTO `base_administrative_division` VALUES ('131000', '河北省廊坊市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('131001', '河北省廊坊市市辖区', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131002', '河北省廊坊市安次区', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131003', '河北省廊坊市广阳区', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131022', '河北省固安县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131023', '河北省永清县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131024', '河北省香河县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131025', '河北省大城县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131026', '河北省文安县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131028', '河北省大厂回族自治县', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131081', '河北省霸州市', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131082', '河北省三河市', '131000'); +INSERT INTO `base_administrative_division` VALUES ('131100', '河北省衡水市', '130000'); +INSERT INTO `base_administrative_division` VALUES ('131101', '河北省衡水市市辖区', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131102', '河北省衡水市桃城区', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131121', '河北省枣强县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131122', '河北省武邑县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131123', '河北省武强县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131124', '河北省饶阳县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131125', '河北省安平县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131126', '河北省故城县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131127', '河北省景县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131128', '河北省阜城县', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131181', '河北省冀州市', '131100'); +INSERT INTO `base_administrative_division` VALUES ('131182', '河北省深州市', '131100'); +INSERT INTO `base_administrative_division` VALUES ('140000', '山西省', '0'); +INSERT INTO `base_administrative_division` VALUES ('140100', '山西省太原市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140101', '山西省太原市市辖区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140105', '山西省太原市小店区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140106', '山西省太原市迎泽区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140107', '山西省太原市杏花岭区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140108', '山西省太原市尖草坪区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140109', '山西省太原市万柏林区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140110', '山西省太原市晋源区', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140121', '山西省清徐县', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140122', '山西省阳曲县', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140123', '山西省娄烦县', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140181', '山西省古交市', '140100'); +INSERT INTO `base_administrative_division` VALUES ('140200', '山西省大同市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140201', '山西省大同市市辖区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140202', '山西省大同市城区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140203', '山西省大同市矿区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140211', '山西省大同市南郊区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140212', '山西省大同市新荣区', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140221', '山西省阳高县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140222', '山西省天镇县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140223', '山西省广灵县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140224', '山西省灵丘县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140225', '山西省浑源县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140226', '山西省左云县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140227', '山西省大同县', '140200'); +INSERT INTO `base_administrative_division` VALUES ('140300', '山西省阳泉市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140301', '山西省阳泉市市辖区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140302', '山西省阳泉市城区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140303', '山西省阳泉市矿区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140311', '山西省阳泉市郊区', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140321', '山西省平定县', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140322', '山西省盂县', '140300'); +INSERT INTO `base_administrative_division` VALUES ('140400', '山西省长治市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140401', '山西省长治市市辖区', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140402', '山西省长治市城区', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140411', '山西省长治市郊区', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140421', '山西省长治县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140423', '山西省襄垣县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140424', '山西省屯留县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140425', '山西省平顺县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140426', '山西省黎城县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140427', '山西省壶关县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140428', '山西省长子县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140429', '山西省武乡县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140430', '山西省沁县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140431', '山西省沁源县', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140481', '山西省潞城市', '140400'); +INSERT INTO `base_administrative_division` VALUES ('140500', '山西省晋城市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140501', '山西省晋城市市辖区', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140502', '山西省晋城市城区', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140521', '山西省沁水县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140522', '山西省阳城县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140524', '山西省陵川县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140525', '山西省泽州县', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140581', '山西省高平市', '140500'); +INSERT INTO `base_administrative_division` VALUES ('140600', '山西省朔州市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140601', '山西省朔州市市辖区', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140602', '山西省朔州市朔城区', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140603', '山西省朔州市平鲁区', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140621', '山西省山阴县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140622', '山西省应县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140623', '山西省右玉县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140624', '山西省怀仁县', '140600'); +INSERT INTO `base_administrative_division` VALUES ('140700', '山西省晋中市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140701', '山西省晋中市市辖区', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140702', '山西省晋中市榆次区', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140721', '山西省榆社县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140722', '山西省左权县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140723', '山西省和顺县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140724', '山西省昔阳县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140725', '山西省寿阳县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140726', '山西省太谷县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140727', '山西省祁县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140728', '山西省平遥县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140729', '山西省灵石县', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140781', '山西省介休市', '140700'); +INSERT INTO `base_administrative_division` VALUES ('140800', '山西省运城市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140801', '山西省运城市市辖区', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140802', '山西省运城市盐湖区', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140821', '山西省临猗县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140822', '山西省万荣县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140823', '山西省闻喜县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140824', '山西省稷山县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140825', '山西省新绛县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140826', '山西省绛县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140827', '山西省垣曲县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140828', '山西省夏县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140829', '山西省平陆县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140830', '山西省芮城县', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140881', '山西省永济市', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140882', '山西省河津市', '140800'); +INSERT INTO `base_administrative_division` VALUES ('140900', '山西省忻州市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('140901', '山西省忻州市市辖区', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140902', '山西省忻州市忻府区', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140921', '山西省定襄县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140922', '山西省五台县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140923', '山西省代县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140924', '山西省繁峙县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140925', '山西省宁武县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140926', '山西省静乐县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140927', '山西省神池县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140928', '山西省五寨县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140929', '山西省岢岚县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140930', '山西省河曲县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140931', '山西省保德县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140932', '山西省偏关县', '140900'); +INSERT INTO `base_administrative_division` VALUES ('140981', '山西省原平市', '140900'); +INSERT INTO `base_administrative_division` VALUES ('141000', '山西省临汾市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('141001', '山西省临汾市市辖区', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141002', '山西省临汾市尧都区', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141021', '山西省曲沃县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141022', '山西省翼城县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141023', '山西省襄汾县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141024', '山西省洪洞县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141025', '山西省古县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141026', '山西省安泽县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141027', '山西省浮山县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141028', '山西省吉县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141029', '山西省乡宁县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141030', '山西省大宁县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141031', '山西省隰县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141032', '山西省永和县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141033', '山西省蒲县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141034', '山西省汾西县', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141081', '山西省侯马市', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141082', '山西省霍州市', '141000'); +INSERT INTO `base_administrative_division` VALUES ('141100', '山西省吕梁市', '140000'); +INSERT INTO `base_administrative_division` VALUES ('141101', '山西省吕梁市市辖区', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141102', '山西省吕梁市离石区', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141121', '山西省文水县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141122', '山西省交城县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141123', '山西省兴县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141124', '山西省临县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141125', '山西省柳林县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141126', '山西省石楼县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141127', '山西省岚县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141128', '山西省方山县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141129', '山西省中阳县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141130', '山西省交口县', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141181', '山西省孝义市', '141100'); +INSERT INTO `base_administrative_division` VALUES ('141182', '山西省汾阳市', '141100'); +INSERT INTO `base_administrative_division` VALUES ('150000', '内蒙古自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('150100', '内蒙古呼和浩特市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150101', '内蒙古呼和浩特市市辖区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150102', '内蒙古呼和浩特市新城区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150103', '内蒙古呼和浩特市回民区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150104', '内蒙古呼和浩特市玉泉区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150105', '内蒙古呼和浩特市赛罕区', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150121', '内蒙古土默特左旗', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150122', '内蒙古托克托县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150123', '内蒙古和林格尔县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150124', '内蒙古清水河县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150125', '内蒙古武川县', '150100'); +INSERT INTO `base_administrative_division` VALUES ('150200', '内蒙古包头市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150201', '内蒙古包头市市辖区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150202', '内蒙古包头市东河区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150203', '内蒙古包头市昆都仑区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150204', '内蒙古包头市青山区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150205', '内蒙古包头市石拐区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150206', '内蒙古包头市白云鄂博矿区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150207', '内蒙古包头市九原区', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150221', '内蒙古土默特右旗', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150222', '内蒙古固阳县', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150223', '内蒙古达尔罕茂明安联合旗', '150200'); +INSERT INTO `base_administrative_division` VALUES ('150300', '内蒙古乌海市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150301', '内蒙古乌海市市辖区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150302', '内蒙古乌海市海勃湾区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150303', '内蒙古乌海市海南区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150304', '内蒙古乌海市乌达区', '150300'); +INSERT INTO `base_administrative_division` VALUES ('150400', '内蒙古赤峰市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150401', '内蒙古赤峰市市辖区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150402', '内蒙古赤峰市红山区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150403', '内蒙古赤峰市元宝山区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150404', '内蒙古赤峰市松山区', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150421', '内蒙古阿鲁科尔沁旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150422', '内蒙古巴林左旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150423', '内蒙古巴林右旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150424', '内蒙古林西县', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150425', '内蒙古克什克腾旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150426', '内蒙古翁牛特旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150428', '内蒙古喀喇沁旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150429', '内蒙古宁城县', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150430', '内蒙古敖汉旗', '150400'); +INSERT INTO `base_administrative_division` VALUES ('150500', '内蒙古通辽市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150501', '内蒙古通辽市市辖区', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150502', '内蒙古通辽市科尔沁区', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150521', '内蒙古科尔沁左翼中旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150522', '内蒙古科尔沁左翼后旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150523', '内蒙古开鲁县', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150524', '内蒙古库伦旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150525', '内蒙古奈曼旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150526', '内蒙古扎鲁特旗', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150581', '内蒙古霍林郭勒市', '150500'); +INSERT INTO `base_administrative_division` VALUES ('150600', '内蒙古鄂尔多斯市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150601', '内蒙古鄂尔多斯市市辖区', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150602', '内蒙古鄂尔多斯市东胜区', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150621', '内蒙古达拉特旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150622', '内蒙古准格尔旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150623', '内蒙古鄂托克前旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150624', '内蒙古鄂托克旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150625', '内蒙古杭锦旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150626', '内蒙古乌审旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150627', '内蒙古伊金霍洛旗', '150600'); +INSERT INTO `base_administrative_division` VALUES ('150700', '内蒙古呼伦贝尔市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150701', '内蒙古呼伦贝尔市市辖区', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150702', '内蒙古呼伦贝尔市海拉尔区', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150721', '内蒙古阿荣旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150722', '内蒙古莫力达瓦达斡尔族自治旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150723', '内蒙古鄂伦春自治旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150724', '内蒙古鄂温克族自治旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150725', '内蒙古陈巴尔虎旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150726', '内蒙古新巴尔虎左旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150727', '内蒙古新巴尔虎右旗', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150781', '内蒙古满洲里市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150782', '内蒙古牙克石市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150783', '内蒙古扎兰屯市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150784', '内蒙古额尔古纳市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150785', '内蒙古根河市', '150700'); +INSERT INTO `base_administrative_division` VALUES ('150800', '内蒙古巴彦淖尔市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150801', '内蒙古巴彦淖尔市市辖区', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150802', '内蒙古巴彦淖尔市临河区', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150821', '内蒙古五原县', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150822', '内蒙古磴口县', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150823', '内蒙古乌拉特前旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150824', '内蒙古乌拉特中旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150825', '内蒙古乌拉特后旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150826', '内蒙古杭锦后旗', '150800'); +INSERT INTO `base_administrative_division` VALUES ('150900', '内蒙古乌兰察布市', '150000'); +INSERT INTO `base_administrative_division` VALUES ('150901', '内蒙古乌兰察布市市辖区', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150902', '内蒙古乌兰察布市集宁区', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150921', '内蒙古卓资县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150922', '内蒙古化德县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150923', '内蒙古商都县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150924', '内蒙古兴和县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150925', '内蒙古凉城县', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150926', '内蒙古察哈尔右翼前旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150927', '内蒙古察哈尔右翼中旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150928', '内蒙古察哈尔右翼后旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150929', '内蒙古四子王旗', '150900'); +INSERT INTO `base_administrative_division` VALUES ('150981', '内蒙古丰镇市', '150900'); +INSERT INTO `base_administrative_division` VALUES ('152200', '内蒙古兴安盟', '150000'); +INSERT INTO `base_administrative_division` VALUES ('152201', '内蒙古乌兰浩特市', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152202', '内蒙古阿尔山市', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152221', '内蒙古科尔沁右翼前旗', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152222', '内蒙古科尔沁右翼中旗', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152223', '内蒙古扎赉特旗', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152224', '内蒙古突泉县', '152200'); +INSERT INTO `base_administrative_division` VALUES ('152500', '内蒙古锡林郭勒盟', '150000'); +INSERT INTO `base_administrative_division` VALUES ('152501', '内蒙古二连浩特市', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152502', '内蒙古锡林浩特市', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152522', '内蒙古阿巴嘎旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152523', '内蒙古苏尼特左旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152524', '内蒙古苏尼特右旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152525', '内蒙古东乌珠穆沁旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152526', '内蒙古西乌珠穆沁旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152527', '内蒙古太仆寺旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152528', '内蒙古镶黄旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152529', '内蒙古正镶白旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152530', '内蒙古正蓝旗', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152531', '内蒙古多伦县', '152500'); +INSERT INTO `base_administrative_division` VALUES ('152900', '内蒙古阿拉善盟', '150000'); +INSERT INTO `base_administrative_division` VALUES ('152921', '内蒙古阿拉善左旗', '152900'); +INSERT INTO `base_administrative_division` VALUES ('152922', '内蒙古阿拉善右旗', '152900'); +INSERT INTO `base_administrative_division` VALUES ('152923', '内蒙古额济纳旗', '152900'); +INSERT INTO `base_administrative_division` VALUES ('210000', '辽宁省', '0'); +INSERT INTO `base_administrative_division` VALUES ('210100', '辽宁省沈阳市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210101', '辽宁省沈阳市市辖区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210102', '辽宁省沈阳市和平区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210103', '辽宁省沈阳市沈河区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210104', '辽宁省沈阳市大东区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210105', '辽宁省沈阳市皇姑区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210106', '辽宁省沈阳市铁西区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210111', '辽宁省沈阳市苏家屯区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210112', '辽宁省沈阳市东陵区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210113', '辽宁省沈阳市沈北新区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210114', '辽宁省沈阳市于洪区', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210122', '辽宁省辽中县', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210123', '辽宁省康平县', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210124', '辽宁省法库县', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210181', '辽宁省新民市', '210100'); +INSERT INTO `base_administrative_division` VALUES ('210200', '辽宁省大连市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210201', '辽宁省大连市市辖区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210202', '辽宁省大连市中山区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210203', '辽宁省大连市西岗区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210204', '辽宁省大连市沙河口区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210211', '辽宁省大连市甘井子区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210212', '辽宁省大连市旅顺口区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210213', '辽宁省大连市金州区', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210224', '辽宁省长海县', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210281', '辽宁省瓦房店市', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210282', '辽宁省普兰店市', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210283', '辽宁省庄河市', '210200'); +INSERT INTO `base_administrative_division` VALUES ('210300', '辽宁省鞍山市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210301', '辽宁省鞍山市市辖区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210302', '辽宁省鞍山市铁东区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210303', '辽宁省鞍山市铁西区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210304', '辽宁省鞍山市立山区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210311', '辽宁省鞍山市千山区', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210321', '辽宁省台安县', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210323', '辽宁省岫岩满族自治县', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210381', '辽宁省海城市', '210300'); +INSERT INTO `base_administrative_division` VALUES ('210400', '辽宁省抚顺市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210401', '辽宁省抚顺市市辖区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210402', '辽宁省抚顺市新抚区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210403', '辽宁省抚顺市东洲区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210404', '辽宁省抚顺市望花区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210411', '辽宁省抚顺市顺城区', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210421', '辽宁省抚顺县', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210422', '辽宁省新宾满族自治县', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210423', '辽宁省清原满族自治县', '210400'); +INSERT INTO `base_administrative_division` VALUES ('210500', '辽宁省本溪市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210501', '辽宁省本溪市市辖区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210502', '辽宁省本溪市平山区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210503', '辽宁省本溪市溪湖区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210504', '辽宁省本溪市明山区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210505', '辽宁省本溪市南芬区', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210521', '辽宁省本溪满族自治县', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210522', '辽宁省桓仁满族自治县', '210500'); +INSERT INTO `base_administrative_division` VALUES ('210600', '辽宁省丹东市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210601', '辽宁省丹东市市辖区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210602', '辽宁省丹东市元宝区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210603', '辽宁省丹东市振兴区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210604', '辽宁省丹东市振安区', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210624', '辽宁省宽甸满族自治县', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210681', '辽宁省东港市', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210682', '辽宁省凤城市', '210600'); +INSERT INTO `base_administrative_division` VALUES ('210700', '辽宁省锦州市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210701', '辽宁省锦州市市辖区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210702', '辽宁省锦州市古塔区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210703', '辽宁省锦州市凌河区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210711', '辽宁省锦州市太和区', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210726', '辽宁省黑山县', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210727', '辽宁省义县', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210781', '辽宁省凌海市', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210782', '辽宁省北镇市', '210700'); +INSERT INTO `base_administrative_division` VALUES ('210800', '辽宁省营口市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210801', '辽宁省营口市市辖区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210802', '辽宁省营口市站前区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210803', '辽宁省营口市西市区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210804', '辽宁省营口市鲅鱼圈区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210811', '辽宁省营口市老边区', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210881', '辽宁省盖州市', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210882', '辽宁省大石桥市', '210800'); +INSERT INTO `base_administrative_division` VALUES ('210900', '辽宁省阜新市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('210901', '辽宁省阜新市市辖区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210902', '辽宁省阜新市海州区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210903', '辽宁省阜新市新邱区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210904', '辽宁省阜新市太平区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210905', '辽宁省阜新市清河门区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210911', '辽宁省阜新市细河区', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210921', '辽宁省阜新蒙古族自治县', '210900'); +INSERT INTO `base_administrative_division` VALUES ('210922', '辽宁省彰武县', '210900'); +INSERT INTO `base_administrative_division` VALUES ('211000', '辽宁省辽阳市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211001', '辽宁省辽阳市市辖区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211002', '辽宁省辽阳市白塔区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211003', '辽宁省辽阳市文圣区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211004', '辽宁省辽阳市宏伟区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211005', '辽宁省辽阳市弓长岭区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211011', '辽宁省辽阳市太子河区', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211021', '辽宁省辽阳县', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211081', '辽宁省灯塔市', '211000'); +INSERT INTO `base_administrative_division` VALUES ('211100', '辽宁省盘锦市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211101', '辽宁省盘锦市市辖区', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211102', '辽宁省盘锦市双台子区', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211103', '辽宁省盘锦市兴隆台区', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211121', '辽宁省大洼县', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211122', '辽宁省盘山县', '211100'); +INSERT INTO `base_administrative_division` VALUES ('211200', '辽宁省铁岭市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211201', '辽宁省铁岭市市辖区', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211202', '辽宁省铁岭市银州区', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211204', '辽宁省铁岭市清河区', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211221', '辽宁省铁岭县', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211223', '辽宁省西丰县', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211224', '辽宁省昌图县', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211281', '辽宁省调兵山市', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211282', '辽宁省开原市', '211200'); +INSERT INTO `base_administrative_division` VALUES ('211300', '辽宁省朝阳市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211301', '辽宁省朝阳市市辖区', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211302', '辽宁省朝阳市双塔区', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211303', '辽宁省朝阳市龙城区', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211321', '辽宁省朝阳县', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211322', '辽宁省建平县', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211324', '辽宁省喀喇沁左翼蒙古族自治县', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211381', '辽宁省北票市', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211382', '辽宁省凌源市', '211300'); +INSERT INTO `base_administrative_division` VALUES ('211400', '辽宁省葫芦岛市', '210000'); +INSERT INTO `base_administrative_division` VALUES ('211401', '辽宁省葫芦岛市市辖区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211402', '辽宁省葫芦岛市连山区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211403', '辽宁省葫芦岛市龙港区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211404', '辽宁省葫芦岛市南票区', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211421', '辽宁省绥中县', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211422', '辽宁省建昌县', '211400'); +INSERT INTO `base_administrative_division` VALUES ('211481', '辽宁省兴城市', '211400'); +INSERT INTO `base_administrative_division` VALUES ('220000', '吉林省', '0'); +INSERT INTO `base_administrative_division` VALUES ('220100', '吉林省长春市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220101', '吉林省长春市市辖区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220102', '吉林省长春市南关区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220103', '吉林省长春市宽城区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220104', '吉林省长春市朝阳区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220105', '吉林省长春市二道区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220106', '吉林省长春市绿园区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220112', '吉林省长春市双阳区', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220122', '吉林省农安县', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220181', '吉林省九台市', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220182', '吉林省榆树市', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220183', '吉林省德惠市', '220100'); +INSERT INTO `base_administrative_division` VALUES ('220200', '吉林省吉林市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220201', '吉林省吉林市市辖区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220202', '吉林省吉林市昌邑区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220203', '吉林省吉林市龙潭区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220204', '吉林省吉林市船营区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220211', '吉林省吉林市丰满区', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220221', '吉林省永吉县', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220281', '吉林省蛟河市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220282', '吉林省桦甸市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220283', '吉林省舒兰市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220284', '吉林省磐石市', '220200'); +INSERT INTO `base_administrative_division` VALUES ('220300', '吉林省四平市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220301', '吉林省四平市市辖区', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220302', '吉林省四平市铁西区', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220303', '吉林省四平市铁东区', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220322', '吉林省梨树县', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220323', '吉林省伊通满族自治县', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220381', '吉林省公主岭市', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220382', '吉林省双辽市', '220300'); +INSERT INTO `base_administrative_division` VALUES ('220400', '吉林省辽源市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220401', '吉林省辽源市市辖区', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220402', '吉林省辽源市龙山区', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220403', '吉林省辽源市西安区', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220421', '吉林省东丰县', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220422', '吉林省东辽县', '220400'); +INSERT INTO `base_administrative_division` VALUES ('220500', '吉林省通化市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220501', '吉林省通化市市辖区', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220502', '吉林省通化市东昌区', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220503', '吉林省通化市二道江区', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220521', '吉林省通化县', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220523', '吉林省辉南县', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220524', '吉林省柳河县', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220581', '吉林省梅河口市', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220582', '吉林省集安市', '220500'); +INSERT INTO `base_administrative_division` VALUES ('220600', '吉林省白山市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220601', '吉林省白山市市辖区', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220602', '吉林省白山市八道江区', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220605', '吉林省白山市江源区', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220621', '吉林省抚松县', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220622', '吉林省靖宇县', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220623', '吉林省长白朝鲜族自治县', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220681', '吉林省临江市', '220600'); +INSERT INTO `base_administrative_division` VALUES ('220700', '吉林省松原市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220701', '吉林省松原市市辖区', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220702', '吉林省松原市宁江区', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220721', '吉林省前郭尔罗斯蒙古族自治县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220722', '吉林省长岭县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220723', '吉林省乾安县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220724', '吉林省扶余县', '220700'); +INSERT INTO `base_administrative_division` VALUES ('220800', '吉林省白城市', '220000'); +INSERT INTO `base_administrative_division` VALUES ('220801', '吉林省白城市市辖区', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220802', '吉林省白城市洮北区', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220821', '吉林省镇赉县', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220822', '吉林省通榆县', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220881', '吉林省洮南市', '220800'); +INSERT INTO `base_administrative_division` VALUES ('220882', '吉林省大安市', '220800'); +INSERT INTO `base_administrative_division` VALUES ('222400', '吉林省延边朝鲜族自治州', '220000'); +INSERT INTO `base_administrative_division` VALUES ('222401', '吉林省延吉市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222402', '吉林省图们市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222403', '吉林省敦化市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222404', '吉林省珲春市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222405', '吉林省龙井市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222406', '吉林省和龙市', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222424', '吉林省汪清县', '222400'); +INSERT INTO `base_administrative_division` VALUES ('222426', '吉林省安图县', '222400'); +INSERT INTO `base_administrative_division` VALUES ('230000', '黑龙江省', '0'); +INSERT INTO `base_administrative_division` VALUES ('230100', '黑龙江省哈尔滨市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230101', '黑龙江省哈尔滨市市辖区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230102', '黑龙江省哈尔滨市道里区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230103', '黑龙江省哈尔滨市南岗区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230104', '黑龙江省哈尔滨市道外区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230108', '黑龙江省哈尔滨市平房区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230109', '黑龙江省哈尔滨市松北区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230110', '黑龙江省哈尔滨市香坊区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230111', '黑龙江省哈尔滨市呼兰区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230112', '黑龙江省哈尔滨市阿城区', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230123', '黑龙江省依兰县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230124', '黑龙江省方正县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230125', '黑龙江省宾县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230126', '黑龙江省巴彦县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230127', '黑龙江省木兰县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230128', '黑龙江省通河县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230129', '黑龙江省延寿县', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230182', '黑龙江省双城市', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230183', '黑龙江省尚志市', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230184', '黑龙江省五常市', '230100'); +INSERT INTO `base_administrative_division` VALUES ('230200', '黑龙江省齐齐哈尔市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230201', '黑龙江省齐齐哈尔市市辖区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230202', '黑龙江省齐齐哈尔市龙沙区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230203', '黑龙江省齐齐哈尔市建华区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230204', '黑龙江省齐齐哈尔市铁锋区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230205', '黑龙江省齐齐哈尔市昂昂溪区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230206', '黑龙江省齐齐哈尔市富拉尔基区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230207', '黑龙江省齐齐哈尔市碾子山区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230208', '黑龙江省齐齐哈尔市梅里斯达斡尔族区', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230221', '黑龙江省龙江县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230223', '黑龙江省依安县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230224', '黑龙江省泰来县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230225', '黑龙江省甘南县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230227', '黑龙江省富裕县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230229', '黑龙江省克山县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230230', '黑龙江省克东县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230231', '黑龙江省拜泉县', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230281', '黑龙江省讷河市', '230200'); +INSERT INTO `base_administrative_division` VALUES ('230300', '黑龙江省鸡西市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230301', '黑龙江省鸡西市市辖区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230302', '黑龙江省鸡西市鸡冠区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230303', '黑龙江省鸡西市恒山区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230304', '黑龙江省鸡西市滴道区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230305', '黑龙江省鸡西市梨树区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230306', '黑龙江省鸡西市城子河区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230307', '黑龙江省鸡西市麻山区', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230321', '黑龙江省鸡东县', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230381', '黑龙江省虎林市', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230382', '黑龙江省密山市', '230300'); +INSERT INTO `base_administrative_division` VALUES ('230400', '黑龙江省鹤岗市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230401', '黑龙江省鹤岗市市辖区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230402', '黑龙江省鹤岗市向阳区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230403', '黑龙江省鹤岗市工农区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230404', '黑龙江省鹤岗市南山区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230405', '黑龙江省鹤岗市兴安区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230406', '黑龙江省鹤岗市东山区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230407', '黑龙江省鹤岗市兴山区', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230421', '黑龙江省萝北县', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230422', '黑龙江省绥滨县', '230400'); +INSERT INTO `base_administrative_division` VALUES ('230500', '黑龙江省双鸭山市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230501', '黑龙江省双鸭山市市辖区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230502', '黑龙江省双鸭山市尖山区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230503', '黑龙江省双鸭山市岭东区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230505', '黑龙江省双鸭山市四方台区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230506', '黑龙江省双鸭山市宝山区', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230521', '黑龙江省集贤县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230522', '黑龙江省友谊县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230523', '黑龙江省宝清县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230524', '黑龙江省饶河县', '230500'); +INSERT INTO `base_administrative_division` VALUES ('230600', '黑龙江省大庆市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230601', '黑龙江省大庆市市辖区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230602', '黑龙江省大庆市萨尔图区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230603', '黑龙江省大庆市龙凤区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230604', '黑龙江省大庆市让胡路区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230605', '黑龙江省大庆市红岗区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230606', '黑龙江省大庆市大同区', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230621', '黑龙江省肇州县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230622', '黑龙江省肇源县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230623', '黑龙江省林甸县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230624', '黑龙江省杜尔伯特蒙古族自治县', '230600'); +INSERT INTO `base_administrative_division` VALUES ('230700', '黑龙江省伊春市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230701', '黑龙江省伊春市市辖区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230702', '黑龙江省伊春市伊春区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230703', '黑龙江省伊春市南岔区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230704', '黑龙江省伊春市友好区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230705', '黑龙江省伊春市西林区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230706', '黑龙江省伊春市翠峦区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230707', '黑龙江省伊春市新青区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230708', '黑龙江省伊春市美溪区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230709', '黑龙江省伊春市金山屯区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230710', '黑龙江省伊春市五营区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230711', '黑龙江省伊春市乌马河区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230712', '黑龙江省伊春市汤旺河区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230713', '黑龙江省伊春市带岭区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230714', '黑龙江省伊春市乌伊岭区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230715', '黑龙江省伊春市红星区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230716', '黑龙江省伊春市上甘岭区', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230722', '黑龙江省嘉荫县', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230781', '黑龙江省铁力市', '230700'); +INSERT INTO `base_administrative_division` VALUES ('230800', '黑龙江省佳木斯市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230801', '黑龙江省佳木斯市市辖区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230803', '黑龙江省佳木斯市向阳区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230804', '黑龙江省佳木斯市前进区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230805', '黑龙江省佳木斯市东风区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230811', '黑龙江省佳木斯市郊区', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230822', '黑龙江省桦南县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230826', '黑龙江省桦川县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230828', '黑龙江省汤原县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230833', '黑龙江省抚远县', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230881', '黑龙江省同江市', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230882', '黑龙江省富锦市', '230800'); +INSERT INTO `base_administrative_division` VALUES ('230900', '黑龙江省七台河市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('230901', '黑龙江省七台河市市辖区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230902', '黑龙江省七台河市新兴区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230903', '黑龙江省七台河市桃山区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230904', '黑龙江省七台河市茄子河区', '230900'); +INSERT INTO `base_administrative_division` VALUES ('230921', '黑龙江省勃利县', '230900'); +INSERT INTO `base_administrative_division` VALUES ('231000', '黑龙江省牡丹江市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('231001', '黑龙江省牡丹江市市辖区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231002', '黑龙江省牡丹江市东安区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231003', '黑龙江省牡丹江市阳明区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231004', '黑龙江省牡丹江市爱民区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231005', '黑龙江省牡丹江市西安区', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231024', '黑龙江省东宁县', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231025', '黑龙江省林口县', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231081', '黑龙江省绥芬河市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231083', '黑龙江省海林市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231084', '黑龙江省宁安市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231085', '黑龙江省穆棱市', '231000'); +INSERT INTO `base_administrative_division` VALUES ('231100', '黑龙江省黑河市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('231101', '黑龙江省黑河市市辖区', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231102', '黑龙江省黑河市爱辉区', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231121', '黑龙江省嫩江县', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231123', '黑龙江省逊克县', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231124', '黑龙江省孙吴县', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231181', '黑龙江省北安市', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231182', '黑龙江省五大连池市', '231100'); +INSERT INTO `base_administrative_division` VALUES ('231200', '黑龙江省绥化市', '230000'); +INSERT INTO `base_administrative_division` VALUES ('231201', '黑龙江省绥化市市辖区', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231202', '黑龙江省绥化市北林区', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231221', '黑龙江省望奎县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231222', '黑龙江省兰西县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231223', '黑龙江省青冈县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231224', '黑龙江省庆安县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231225', '黑龙江省明水县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231226', '黑龙江省绥棱县', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231281', '黑龙江省安达市', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231282', '黑龙江省肇东市', '231200'); +INSERT INTO `base_administrative_division` VALUES ('231283', '黑龙江省海伦市', '231200'); +INSERT INTO `base_administrative_division` VALUES ('232700', '黑龙江省大兴安岭地区', '230000'); +INSERT INTO `base_administrative_division` VALUES ('232721', '黑龙江省呼玛县', '232700'); +INSERT INTO `base_administrative_division` VALUES ('232722', '黑龙江省塔河县', '232700'); +INSERT INTO `base_administrative_division` VALUES ('232723', '黑龙江省漠河县', '232700'); +INSERT INTO `base_administrative_division` VALUES ('310000', '上海市', '0'); +INSERT INTO `base_administrative_division` VALUES ('310100', '上海市市辖区', '310000'); +INSERT INTO `base_administrative_division` VALUES ('310101', '上海市黄浦区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310104', '上海市徐汇区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310105', '上海市长宁区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310106', '上海市静安区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310107', '上海市普陀区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310108', '上海市闸北区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310109', '上海市虹口区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310110', '上海市杨浦区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310112', '上海市闵行区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310113', '上海市宝山区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310114', '上海市嘉定区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310115', '上海市浦东新区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310116', '上海市金山区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310117', '上海市松江区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310118', '上海市青浦区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310120', '上海市奉贤区', '310100'); +INSERT INTO `base_administrative_division` VALUES ('310200', '上海市县', '310000'); +INSERT INTO `base_administrative_division` VALUES ('310230', '上海市崇明县', '310200'); +INSERT INTO `base_administrative_division` VALUES ('320000', '江苏省', '0'); +INSERT INTO `base_administrative_division` VALUES ('320100', '江苏省南京市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320101', '江苏省南京市市辖区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320102', '江苏省南京市玄武区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320103', '江苏省南京市白下区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320104', '江苏省南京市秦淮区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320105', '江苏省南京市建邺区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320106', '江苏省南京市鼓楼区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320107', '江苏省南京市下关区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320111', '江苏省南京市浦口区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320113', '江苏省南京市栖霞区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320114', '江苏省南京市雨花台区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320115', '江苏省南京市江宁区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320116', '江苏省南京市六合区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320117', '江苏省南京市溧水区', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320125', '江苏省高淳县', '320100'); +INSERT INTO `base_administrative_division` VALUES ('320200', '江苏省无锡市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320201', '江苏省无锡市市辖区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320202', '江苏省无锡市崇安区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320203', '江苏省无锡市南长区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320204', '江苏省无锡市北塘区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320205', '江苏省无锡市锡山区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320206', '江苏省无锡市惠山区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320211', '江苏省无锡市滨湖区', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320281', '江苏省江阴市', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320282', '江苏省宜兴市', '320200'); +INSERT INTO `base_administrative_division` VALUES ('320300', '江苏省徐州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320301', '江苏省徐州市市辖区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320302', '江苏省徐州市鼓楼区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320303', '江苏省徐州市云龙区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320304', '江苏省徐州市九里区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320305', '江苏省徐州市贾汪区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320311', '江苏省徐州市泉山区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320312', '江苏省徐州市铜山区', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320321', '江苏省丰县', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320322', '江苏省沛县', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320324', '江苏省睢宁县', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320381', '江苏省新沂市', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320382', '江苏省邳州市', '320300'); +INSERT INTO `base_administrative_division` VALUES ('320400', '江苏省常州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320401', '江苏省常州市市辖区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320402', '江苏省常州市天宁区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320404', '江苏省常州市钟楼区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320405', '江苏省常州市戚墅堰区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320411', '江苏省常州市新北区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320412', '江苏省常州市武进区', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320481', '江苏省溧阳市', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320482', '江苏省金坛市', '320400'); +INSERT INTO `base_administrative_division` VALUES ('320500', '江苏省苏州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320501', '江苏省苏州市市辖区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320502', '江苏省苏州市沧浪区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320503', '江苏省苏州市平江区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320504', '江苏省苏州市金阊区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320505', '江苏省苏州市虎丘区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320506', '江苏省苏州市吴中区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320507', '江苏省苏州市相城区', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320581', '江苏省常熟市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320582', '江苏省张家港市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320583', '江苏省昆山市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320584', '江苏省吴江市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320585', '江苏省太仓市', '320500'); +INSERT INTO `base_administrative_division` VALUES ('320600', '江苏省南通市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320601', '江苏省南通市市辖区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320602', '江苏省南通市崇川区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320611', '江苏省南通市港闸区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320612', '江苏省南通市通州区', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320621', '江苏省海安县', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320623', '江苏省如东县', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320681', '江苏省启东市', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320682', '江苏省如皋市', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320684', '江苏省海门市', '320600'); +INSERT INTO `base_administrative_division` VALUES ('320700', '江苏省连云港市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320701', '江苏省连云港市市辖区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320703', '江苏省连云港市连云区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320705', '江苏省连云港市新浦区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320706', '江苏省连云港市海州区', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320721', '江苏省赣榆县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320722', '江苏省东海县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320723', '江苏省灌云县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320724', '江苏省灌南县', '320700'); +INSERT INTO `base_administrative_division` VALUES ('320800', '江苏省淮安市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320801', '江苏省淮安市市辖区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320802', '江苏省淮安市清河区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320803', '江苏省淮安市楚州区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320804', '江苏省淮安市淮阴区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320811', '江苏省淮安市清浦区', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320826', '江苏省涟水县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320829', '江苏省洪泽县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320830', '江苏省盱眙县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320831', '江苏省金湖县', '320800'); +INSERT INTO `base_administrative_division` VALUES ('320900', '江苏省盐城市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('320901', '江苏省盐城市市辖区', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320902', '江苏省盐城市亭湖区', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320903', '江苏省盐城市盐都区', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320921', '江苏省响水县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320922', '江苏省滨海县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320923', '江苏省阜宁县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320924', '江苏省射阳县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320925', '江苏省建湖县', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320981', '江苏省东台市', '320900'); +INSERT INTO `base_administrative_division` VALUES ('320982', '江苏省大丰市', '320900'); +INSERT INTO `base_administrative_division` VALUES ('321000', '江苏省扬州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321001', '江苏省扬州市市辖区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321002', '江苏省扬州市广陵区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321003', '江苏省扬州市邗江区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321012', '江苏省扬州市江都区', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321023', '江苏省宝应县', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321081', '江苏省仪征市', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321084', '江苏省高邮市', '321000'); +INSERT INTO `base_administrative_division` VALUES ('321100', '江苏省镇江市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321101', '江苏省镇江市市辖区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321102', '江苏省镇江市京口区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321111', '江苏省镇江市润州区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321112', '江苏省镇江市丹徒区', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321181', '江苏省丹阳市', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321182', '江苏省扬中市', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321183', '江苏省句容市', '321100'); +INSERT INTO `base_administrative_division` VALUES ('321200', '江苏省泰州市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321201', '江苏省泰州市市辖区', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321202', '江苏省泰州市海陵区', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321203', '江苏省泰州市高港区', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321281', '江苏省兴化市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321282', '江苏省靖江市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321283', '江苏省泰兴市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321284', '江苏省姜堰市', '321200'); +INSERT INTO `base_administrative_division` VALUES ('321300', '江苏省宿迁市', '320000'); +INSERT INTO `base_administrative_division` VALUES ('321301', '江苏省宿迁市市辖区', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321302', '江苏省宿迁市宿城区', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321311', '江苏省宿迁市宿豫区', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321322', '江苏省沭阳县', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321323', '江苏省泗阳县', '321300'); +INSERT INTO `base_administrative_division` VALUES ('321324', '江苏省泗洪县', '321300'); +INSERT INTO `base_administrative_division` VALUES ('330000', '浙江省', '0'); +INSERT INTO `base_administrative_division` VALUES ('330100', '浙江省杭州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330101', '浙江省杭州市市辖区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330102', '浙江省杭州市上城区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330103', '浙江省杭州市下城区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330104', '浙江省杭州市江干区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330105', '浙江省杭州市拱墅区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330106', '浙江省杭州市西湖区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330108', '浙江省杭州市滨江区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330109', '浙江省杭州市萧山区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330110', '浙江省杭州市余杭区', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330122', '浙江省桐庐县', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330127', '浙江省淳安县', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330182', '浙江省建德市', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330183', '浙江省富阳市', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330185', '浙江省临安市', '330100'); +INSERT INTO `base_administrative_division` VALUES ('330200', '浙江省宁波市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330201', '浙江省宁波市市辖区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330203', '浙江省宁波市海曙区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330204', '浙江省宁波市江东区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330205', '浙江省宁波市江北区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330206', '浙江省宁波市北仑区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330211', '浙江省宁波市镇海区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330212', '浙江省宁波市鄞州区', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330225', '浙江省象山县', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330226', '浙江省宁海县', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330281', '浙江省余姚市', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330282', '浙江省慈溪市', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330283', '浙江省奉化市', '330200'); +INSERT INTO `base_administrative_division` VALUES ('330300', '浙江省温州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330301', '浙江省温州市市辖区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330302', '浙江省温州市鹿城区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330303', '浙江省温州市龙湾区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330304', '浙江省温州市瓯海区', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330322', '浙江省洞头县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330324', '浙江省永嘉县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330326', '浙江省平阳县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330327', '浙江省苍南县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330328', '浙江省文成县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330329', '浙江省泰顺县', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330381', '浙江省瑞安市', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330382', '浙江省乐清市', '330300'); +INSERT INTO `base_administrative_division` VALUES ('330400', '浙江省嘉兴市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330401', '浙江省嘉兴市市辖区', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330402', '浙江省嘉兴市南湖区', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330411', '浙江省嘉兴市秀洲区', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330421', '浙江省嘉善县', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330424', '浙江省海盐县', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330481', '浙江省海宁市', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330482', '浙江省平湖市', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330483', '浙江省桐乡市', '330400'); +INSERT INTO `base_administrative_division` VALUES ('330500', '浙江省湖州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330501', '浙江省湖州市市辖区', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330502', '浙江省湖州市吴兴区', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330503', '浙江省湖州市南浔区', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330521', '浙江省德清县', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330522', '浙江省长兴县', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330523', '浙江省安吉县', '330500'); +INSERT INTO `base_administrative_division` VALUES ('330600', '浙江省绍兴市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330601', '浙江省绍兴市市辖区', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330602', '浙江省绍兴市越城区', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330621', '浙江省绍兴县', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330624', '浙江省新昌县', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330681', '浙江省诸暨市', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330682', '浙江省上虞市', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330683', '浙江省嵊州市', '330600'); +INSERT INTO `base_administrative_division` VALUES ('330700', '浙江省金华市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330701', '浙江省金华市市辖区', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330702', '浙江省金华市婺城区', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330703', '浙江省金华市金东区', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330723', '浙江省武义县', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330726', '浙江省浦江县', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330727', '浙江省磐安县', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330781', '浙江省兰溪市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330782', '浙江省义乌市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330783', '浙江省东阳市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330784', '浙江省永康市', '330700'); +INSERT INTO `base_administrative_division` VALUES ('330800', '浙江省衢州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330801', '浙江省衢州市市辖区', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330802', '浙江省衢州市柯城区', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330803', '浙江省衢州市衢江区', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330822', '浙江省常山县', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330824', '浙江省开化县', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330825', '浙江省龙游县', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330881', '浙江省江山市', '330800'); +INSERT INTO `base_administrative_division` VALUES ('330900', '浙江省舟山市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('330901', '浙江省舟山市市辖区', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330902', '浙江省舟山市定海区', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330903', '浙江省舟山市普陀区', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330921', '浙江省岱山县', '330900'); +INSERT INTO `base_administrative_division` VALUES ('330922', '浙江省嵊泗县', '330900'); +INSERT INTO `base_administrative_division` VALUES ('331000', '浙江省台州市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('331001', '浙江省台州市市辖区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331002', '浙江省台州市椒江区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331003', '浙江省台州市黄岩区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331004', '浙江省台州市路桥区', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331021', '浙江省玉环县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331022', '浙江省三门县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331023', '浙江省天台县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331024', '浙江省仙居县', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331081', '浙江省温岭市', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331082', '浙江省临海市', '331000'); +INSERT INTO `base_administrative_division` VALUES ('331100', '浙江省丽水市', '330000'); +INSERT INTO `base_administrative_division` VALUES ('331101', '浙江省丽水市市辖区', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331102', '浙江省丽水市莲都区', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331121', '浙江省青田县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331122', '浙江省缙云县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331123', '浙江省遂昌县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331124', '浙江省松阳县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331125', '浙江省云和县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331126', '浙江省庆元县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331127', '浙江省景宁畲族自治县', '331100'); +INSERT INTO `base_administrative_division` VALUES ('331181', '浙江省龙泉市', '331100'); +INSERT INTO `base_administrative_division` VALUES ('340000', '安徽省', '0'); +INSERT INTO `base_administrative_division` VALUES ('340100', '安徽省合肥市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340101', '安徽省合肥市市辖区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340102', '安徽省合肥市瑶海区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340103', '安徽省合肥市庐阳区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340104', '安徽省合肥市蜀山区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340111', '安徽省合肥市包河区', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340121', '安徽省长丰县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340122', '安徽省肥东县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340123', '安徽省肥西县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340124', '安徽省庐江县', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340181', '安徽省巢湖市', '340100'); +INSERT INTO `base_administrative_division` VALUES ('340200', '安徽省芜湖市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340201', '安徽省芜湖市市辖区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340202', '安徽省芜湖市镜湖区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340203', '安徽省芜湖市弋江区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340207', '安徽省芜湖市鸠江区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340208', '安徽省芜湖市三山区', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340221', '安徽省芜湖县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340222', '安徽省繁昌县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340223', '安徽省南陵县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340225', '安徽省无为县', '340200'); +INSERT INTO `base_administrative_division` VALUES ('340300', '安徽省蚌埠市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340301', '安徽省蚌埠市市辖区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340302', '安徽省蚌埠市龙子湖区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340303', '安徽省蚌埠市蚌山区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340304', '安徽省蚌埠市禹会区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340311', '安徽省蚌埠市淮上区', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340321', '安徽省怀远县', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340322', '安徽省五河县', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340323', '安徽省固镇县', '340300'); +INSERT INTO `base_administrative_division` VALUES ('340400', '安徽省淮南市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340401', '安徽省淮南市市辖区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340402', '安徽省淮南市大通区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340403', '安徽省淮南市田家庵区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340404', '安徽省淮南市谢家集区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340405', '安徽省淮南市八公山区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340406', '安徽省淮南市潘集区', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340421', '安徽省凤台县', '340400'); +INSERT INTO `base_administrative_division` VALUES ('340500', '安徽省马鞍山市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340501', '安徽省马鞍山市市辖区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340502', '安徽省马鞍山市金家庄区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340503', '安徽省马鞍山市花山区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340504', '安徽省马鞍山市雨山区', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340521', '安徽省当涂县', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340522', '安徽省含山县', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340523', '安徽省和县', '340500'); +INSERT INTO `base_administrative_division` VALUES ('340600', '安徽省淮北市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340601', '安徽省淮北市市辖区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340602', '安徽省淮北市杜集区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340603', '安徽省淮北市相山区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340604', '安徽省淮北市烈山区', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340621', '安徽省濉溪县', '340600'); +INSERT INTO `base_administrative_division` VALUES ('340700', '安徽省铜陵市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340701', '安徽省铜陵市市辖区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340702', '安徽省铜陵市铜官山区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340703', '安徽省铜陵市狮子山区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340711', '安徽省铜陵市郊区', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340721', '安徽省铜陵县', '340700'); +INSERT INTO `base_administrative_division` VALUES ('340800', '安徽省安庆市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('340801', '安徽省安庆市市辖区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340802', '安徽省安庆市迎江区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340803', '安徽省安庆市大观区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340811', '安徽省安庆市宜秀区', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340822', '安徽省怀宁县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340823', '安徽省枞阳县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340824', '安徽省潜山县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340825', '安徽省太湖县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340826', '安徽省宿松县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340827', '安徽省望江县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340828', '安徽省岳西县', '340800'); +INSERT INTO `base_administrative_division` VALUES ('340881', '安徽省桐城市', '340800'); +INSERT INTO `base_administrative_division` VALUES ('341000', '安徽省黄山市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341001', '安徽省黄山市市辖区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341002', '安徽省黄山市屯溪区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341003', '安徽省黄山市黄山区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341004', '安徽省黄山市徽州区', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341021', '安徽省歙县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341022', '安徽省休宁县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341023', '安徽省黟县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341024', '安徽省祁门县', '341000'); +INSERT INTO `base_administrative_division` VALUES ('341100', '安徽省滁州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341101', '安徽省滁州市市辖区', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341102', '安徽省滁州市琅琊区', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341103', '安徽省滁州市南谯区', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341122', '安徽省来安县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341124', '安徽省全椒县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341125', '安徽省定远县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341126', '安徽省凤阳县', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341181', '安徽省天长市', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341182', '安徽省明光市', '341100'); +INSERT INTO `base_administrative_division` VALUES ('341200', '安徽省阜阳市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341201', '安徽省阜阳市市辖区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341202', '安徽省阜阳市颍州区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341203', '安徽省阜阳市颍东区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341204', '安徽省阜阳市颍泉区', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341221', '安徽省临泉县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341222', '安徽省太和县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341225', '安徽省阜南县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341226', '安徽省颍上县', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341282', '安徽省界首市', '341200'); +INSERT INTO `base_administrative_division` VALUES ('341300', '安徽省宿州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341301', '安徽省宿州市市辖区', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341302', '安徽省宿州市埇桥区', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341321', '安徽省砀山县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341322', '安徽省萧县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341323', '安徽省灵璧县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341324', '安徽省泗县', '341300'); +INSERT INTO `base_administrative_division` VALUES ('341500', '安徽省六安市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341501', '安徽省六安市市辖区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341502', '安徽省六安市金安区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341503', '安徽省六安市裕安区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341504', '安徽省叶集试验区', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341521', '安徽省寿县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341522', '安徽省霍邱县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341523', '安徽省舒城县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341524', '安徽省金寨县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341525', '安徽省霍山县', '341500'); +INSERT INTO `base_administrative_division` VALUES ('341600', '安徽省亳州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341601', '安徽省亳州市市辖区', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341602', '安徽省亳州市谯城区', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341621', '安徽省涡阳县', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341622', '安徽省蒙城县', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341623', '安徽省利辛县', '341600'); +INSERT INTO `base_administrative_division` VALUES ('341700', '安徽省池州市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341701', '安徽省池州市市辖区', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341702', '安徽省池州市贵池区', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341721', '安徽省东至县', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341722', '安徽省石台县', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341723', '安徽省青阳县', '341700'); +INSERT INTO `base_administrative_division` VALUES ('341800', '安徽省宣城市', '340000'); +INSERT INTO `base_administrative_division` VALUES ('341801', '安徽省宣城市市辖区', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341802', '安徽省宣城市宣州区', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341821', '安徽省郎溪县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341822', '安徽省广德县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341823', '安徽省泾县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341824', '安徽省绩溪县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341825', '安徽省旌德县', '341800'); +INSERT INTO `base_administrative_division` VALUES ('341881', '安徽省宁国市', '341800'); +INSERT INTO `base_administrative_division` VALUES ('350000', '福建省', '0'); +INSERT INTO `base_administrative_division` VALUES ('350100', '福建省福州市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350101', '福建省福州市市辖区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350102', '福建省福州市鼓楼区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350103', '福建省福州市台江区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350104', '福建省福州市仓山区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350105', '福建省福州市马尾区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350111', '福建省福州市晋安区', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350121', '福建省闽侯县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350122', '福建省连江县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350123', '福建省罗源县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350124', '福建省闽清县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350125', '福建省永泰县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350128', '福建省平潭县', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350181', '福建省福清市', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350182', '福建省长乐市', '350100'); +INSERT INTO `base_administrative_division` VALUES ('350200', '福建省厦门市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350201', '福建省厦门市市辖区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350203', '福建省厦门市思明区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350205', '福建省厦门市海沧区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350206', '福建省厦门市湖里区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350211', '福建省厦门市集美区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350212', '福建省厦门市同安区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350213', '福建省厦门市翔安区', '350200'); +INSERT INTO `base_administrative_division` VALUES ('350300', '福建省莆田市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350301', '福建省莆田市市辖区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350302', '福建省莆田市城厢区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350303', '福建省莆田市涵江区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350304', '福建省莆田市荔城区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350305', '福建省莆田市秀屿区', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350322', '福建省仙游县', '350300'); +INSERT INTO `base_administrative_division` VALUES ('350400', '福建省三明市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350401', '福建省三明市市辖区', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350402', '福建省三明市梅列区', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350403', '福建省三明市三元区', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350421', '福建省明溪县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350423', '福建省清流县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350424', '福建省宁化县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350425', '福建省大田县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350426', '福建省尤溪县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350427', '福建省沙县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350428', '福建省将乐县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350429', '福建省泰宁县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350430', '福建省建宁县', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350481', '福建省永安市', '350400'); +INSERT INTO `base_administrative_division` VALUES ('350500', '福建省泉州市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350501', '福建省泉州市市辖区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350502', '福建省泉州市鲤城区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350503', '福建省泉州市丰泽区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350504', '福建省泉州市洛江区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350505', '福建省泉州市泉港区', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350521', '福建省惠安县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350524', '福建省安溪县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350525', '福建省永春县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350526', '福建省德化县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350527', '福建省金门县', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350581', '福建省石狮市', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350582', '福建省晋江市', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350583', '福建省南安市', '350500'); +INSERT INTO `base_administrative_division` VALUES ('350600', '福建省漳州市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350601', '福建省漳州市市辖区', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350602', '福建省漳州市芗城区', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350603', '福建省漳州市龙文区', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350622', '福建省云霄县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350623', '福建省漳浦县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350624', '福建省诏安县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350625', '福建省长泰县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350626', '福建省东山县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350627', '福建省南靖县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350628', '福建省平和县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350629', '福建省华安县', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350681', '福建省龙海市', '350600'); +INSERT INTO `base_administrative_division` VALUES ('350700', '福建省南平市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350701', '福建省南平市市辖区', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350702', '福建省南平市延平区', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350721', '福建省顺昌县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350722', '福建省浦城县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350723', '福建省光泽县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350724', '福建省松溪县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350725', '福建省政和县', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350781', '福建省邵武市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350782', '福建省武夷山市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350783', '福建省建瓯市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350784', '福建省建阳市', '350700'); +INSERT INTO `base_administrative_division` VALUES ('350800', '福建省龙岩市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350801', '福建省龙岩市市辖区', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350802', '福建省龙岩市新罗区', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350821', '福建省长汀县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350822', '福建省永定县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350823', '福建省上杭县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350824', '福建省武平县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350825', '福建省连城县', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350881', '福建省漳平市', '350800'); +INSERT INTO `base_administrative_division` VALUES ('350900', '福建省宁德市', '350000'); +INSERT INTO `base_administrative_division` VALUES ('350901', '福建省宁德市市辖区', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350902', '福建省宁德市蕉城区', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350921', '福建省霞浦县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350922', '福建省古田县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350923', '福建省屏南县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350924', '福建省寿宁县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350925', '福建省周宁县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350926', '福建省柘荣县', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350981', '福建省福安市', '350900'); +INSERT INTO `base_administrative_division` VALUES ('350982', '福建省福鼎市', '350900'); +INSERT INTO `base_administrative_division` VALUES ('360000', '江西省', '0'); +INSERT INTO `base_administrative_division` VALUES ('360100', '江西省南昌市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360101', '江西省南昌市市辖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360102', '江西省南昌市东湖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360103', '江西省南昌市西湖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360104', '江西省南昌市青云谱区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360105', '江西省南昌市湾里区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360111', '江西省南昌市青山湖区', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360121', '江西省南昌县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360122', '江西省新建县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360123', '江西省安义县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360124', '江西省进贤县', '360100'); +INSERT INTO `base_administrative_division` VALUES ('360200', '江西省景德镇市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360201', '江西省景德镇市市辖区', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360202', '江西省景德镇市昌江区', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360203', '江西省景德镇市珠山区', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360222', '江西省浮梁县', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360281', '江西省乐平市', '360200'); +INSERT INTO `base_administrative_division` VALUES ('360300', '江西省萍乡市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360301', '江西省萍乡市市辖区', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360302', '江西省萍乡市安源区', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360313', '江西省萍乡市湘东区', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360321', '江西省莲花县', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360322', '江西省上栗县', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360323', '江西省芦溪县', '360300'); +INSERT INTO `base_administrative_division` VALUES ('360400', '江西省九江市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360401', '江西省九江市市辖区', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360402', '江西省九江市庐山区', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360403', '江西省九江市浔阳区', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360421', '江西省九江县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360423', '江西省武宁县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360424', '江西省修水县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360425', '江西省永修县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360426', '江西省德安县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360427', '江西省星子县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360428', '江西省都昌县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360429', '江西省湖口县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360430', '江西省彭泽县', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360481', '江西省瑞昌市', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360482', '江西省共青城市', '360400'); +INSERT INTO `base_administrative_division` VALUES ('360500', '江西省新余市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360501', '江西省新余市市辖区', '360500'); +INSERT INTO `base_administrative_division` VALUES ('360502', '江西省新余市渝水区', '360500'); +INSERT INTO `base_administrative_division` VALUES ('360521', '江西省分宜县', '360500'); +INSERT INTO `base_administrative_division` VALUES ('360600', '江西省鹰潭市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360601', '江西省鹰潭市市辖区', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360602', '江西省鹰潭市月湖区', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360622', '江西省余江县', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360681', '江西省贵溪市', '360600'); +INSERT INTO `base_administrative_division` VALUES ('360700', '江西省赣州市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360701', '江西省赣州市市辖区', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360702', '江西省赣州市章贡区', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360721', '江西省赣县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360722', '江西省信丰县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360723', '江西省大余县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360724', '江西省上犹县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360725', '江西省崇义县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360726', '江西省安远县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360727', '江西省龙南县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360728', '江西省定南县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360729', '江西省全南县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360730', '江西省宁都县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360731', '江西省于都县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360732', '江西省兴国县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360733', '江西省会昌县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360734', '江西省寻乌县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360735', '江西省石城县', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360781', '江西省瑞金市', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360782', '江西省南康市', '360700'); +INSERT INTO `base_administrative_division` VALUES ('360800', '江西省吉安市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360801', '江西省吉安市市辖区', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360802', '江西省吉安市吉州区', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360803', '江西省吉安市青原区', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360821', '江西省吉安县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360822', '江西省吉水县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360823', '江西省峡江县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360824', '江西省新干县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360825', '江西省永丰县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360826', '江西省泰和县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360827', '江西省遂川县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360828', '江西省万安县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360829', '江西省安福县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360830', '江西省永新县', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360881', '江西省井冈山市', '360800'); +INSERT INTO `base_administrative_division` VALUES ('360900', '江西省宜春市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('360901', '江西省宜春市市辖区', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360902', '江西省宜春市袁州区', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360921', '江西省奉新县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360922', '江西省万载县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360923', '江西省上高县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360924', '江西省宜丰县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360925', '江西省靖安县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360926', '江西省铜鼓县', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360981', '江西省丰城市', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360982', '江西省樟树市', '360900'); +INSERT INTO `base_administrative_division` VALUES ('360983', '江西省高安市', '360900'); +INSERT INTO `base_administrative_division` VALUES ('361000', '江西省抚州市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('361001', '江西省抚州市市辖区', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361002', '江西省抚州市临川区', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361021', '江西省南城县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361022', '江西省黎川县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361023', '江西省南丰县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361024', '江西省崇仁县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361025', '江西省乐安县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361026', '江西省宜黄县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361027', '江西省金溪县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361028', '江西省资溪县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361029', '江西省东乡县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361030', '江西省广昌县', '361000'); +INSERT INTO `base_administrative_division` VALUES ('361100', '江西省上饶市', '360000'); +INSERT INTO `base_administrative_division` VALUES ('361101', '江西省上饶市市辖区', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361102', '江西省上饶市信州区', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361121', '江西省上饶县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361122', '江西省广丰县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361123', '江西省玉山县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361124', '江西省铅山县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361125', '江西省横峰县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361126', '江西省弋阳县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361127', '江西省余干县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361128', '江西省鄱阳县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361129', '江西省万年县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361130', '江西省婺源县', '361100'); +INSERT INTO `base_administrative_division` VALUES ('361181', '江西省德兴市', '361100'); +INSERT INTO `base_administrative_division` VALUES ('370000', '山东省', '0'); +INSERT INTO `base_administrative_division` VALUES ('370100', '山东省济南市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370101', '山东省济南市市辖区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370102', '山东省济南市历下区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370103', '山东省济南市市中区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370104', '山东省济南市槐荫区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370105', '山东省济南市天桥区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370112', '山东省济南市历城区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370113', '山东省济南市长清区', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370124', '山东省平阴县', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370125', '山东省济阳县', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370126', '山东省商河县', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370181', '山东省章丘市', '370100'); +INSERT INTO `base_administrative_division` VALUES ('370200', '山东省青岛市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370201', '山东省青岛市市辖区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370202', '山东省青岛市市南区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370203', '山东省青岛市市北区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370205', '山东省青岛市四方区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370211', '山东省青岛市黄岛区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370212', '山东省青岛市崂山区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370213', '山东省青岛市李沧区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370214', '山东省青岛市城阳区', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370281', '山东省胶州市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370282', '山东省即墨市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370283', '山东省平度市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370284', '山东省胶南市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370285', '山东省莱西市', '370200'); +INSERT INTO `base_administrative_division` VALUES ('370300', '山东省淄博市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370301', '山东省淄博市市辖区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370302', '山东省淄博市淄川区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370303', '山东省淄博市张店区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370304', '山东省淄博市博山区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370305', '山东省淄博市临淄区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370306', '山东省淄博市周村区', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370321', '山东省桓台县', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370322', '山东省高青县', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370323', '山东省沂源县', '370300'); +INSERT INTO `base_administrative_division` VALUES ('370400', '山东省枣庄市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370401', '山东省枣庄市市辖区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370402', '山东省枣庄市市中区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370403', '山东省枣庄市薛城区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370404', '山东省枣庄市峄城区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370405', '山东省枣庄市台儿庄区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370406', '山东省枣庄市山亭区', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370481', '山东省滕州市', '370400'); +INSERT INTO `base_administrative_division` VALUES ('370500', '山东省东营市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370501', '山东省东营市市辖区', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370502', '山东省东营市东营区', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370503', '山东省东营市河口区', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370521', '山东省垦利县', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370522', '山东省利津县', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370523', '山东省广饶县', '370500'); +INSERT INTO `base_administrative_division` VALUES ('370600', '山东省烟台市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370601', '山东省烟台市市辖区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370602', '山东省烟台市芝罘区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370611', '山东省烟台市福山区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370612', '山东省烟台市牟平区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370613', '山东省烟台市莱山区', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370634', '山东省长岛县', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370681', '山东省龙口市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370682', '山东省莱阳市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370683', '山东省莱州市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370684', '山东省蓬莱市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370685', '山东省招远市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370686', '山东省栖霞市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370687', '山东省海阳市', '370600'); +INSERT INTO `base_administrative_division` VALUES ('370700', '山东省潍坊市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370701', '山东省潍坊市市辖区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370702', '山东省潍坊市潍城区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370703', '山东省潍坊市寒亭区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370704', '山东省潍坊市坊子区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370705', '山东省潍坊市奎文区', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370724', '山东省临朐县', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370725', '山东省昌乐县', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370781', '山东省青州市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370782', '山东省诸城市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370783', '山东省寿光市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370784', '山东省安丘市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370785', '山东省高密市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370786', '山东省昌邑市', '370700'); +INSERT INTO `base_administrative_division` VALUES ('370800', '山东省济宁市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370801', '山东省济宁市市辖区', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370802', '山东省济宁市市中区', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370811', '山东省济宁市任城区', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370826', '山东省微山县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370827', '山东省鱼台县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370828', '山东省金乡县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370829', '山东省嘉祥县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370830', '山东省汶上县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370831', '山东省泗水县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370832', '山东省梁山县', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370881', '山东省曲阜市', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370882', '山东省兖州市', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370883', '山东省邹城市', '370800'); +INSERT INTO `base_administrative_division` VALUES ('370900', '山东省泰安市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('370901', '山东省泰安市市辖区', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370902', '山东省泰安市泰山区', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370903', '山东省泰安市岱岳区', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370921', '山东省宁阳县', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370923', '山东省东平县', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370982', '山东省新泰市', '370900'); +INSERT INTO `base_administrative_division` VALUES ('370983', '山东省肥城市', '370900'); +INSERT INTO `base_administrative_division` VALUES ('371000', '山东省威海市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371001', '山东省威海市市辖区', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371002', '山东省威海市环翠区', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371081', '山东省文登市', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371082', '山东省荣成市', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371083', '山东省乳山市', '371000'); +INSERT INTO `base_administrative_division` VALUES ('371100', '山东省日照市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371101', '山东省日照市市辖区', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371102', '山东省日照市东港区', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371103', '山东省日照市岚山区', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371121', '山东省五莲县', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371122', '山东省莒县', '371100'); +INSERT INTO `base_administrative_division` VALUES ('371200', '山东省莱芜市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371201', '山东省莱芜市市辖区', '371200'); +INSERT INTO `base_administrative_division` VALUES ('371202', '山东省莱芜市莱城区', '371200'); +INSERT INTO `base_administrative_division` VALUES ('371203', '山东省莱芜市钢城区', '371200'); +INSERT INTO `base_administrative_division` VALUES ('371300', '山东省临沂市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371301', '山东省临沂市市辖区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371302', '山东省临沂市兰山区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371311', '山东省临沂市罗庄区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371312', '山东省临沂市河东区', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371321', '山东省沂南县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371322', '山东省郯城县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371323', '山东省沂水县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371324', '山东省苍山县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371325', '山东省费县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371326', '山东省平邑县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371327', '山东省莒南县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371328', '山东省蒙阴县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371329', '山东省临沭县', '371300'); +INSERT INTO `base_administrative_division` VALUES ('371400', '山东省德州市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371401', '山东省德州市市辖区', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371402', '山东省德州市德城区', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371421', '山东省陵县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371422', '山东省宁津县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371423', '山东省庆云县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371424', '山东省临邑县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371425', '山东省齐河县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371426', '山东省平原县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371427', '山东省夏津县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371428', '山东省武城县', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371481', '山东省乐陵市', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371482', '山东省禹城市', '371400'); +INSERT INTO `base_administrative_division` VALUES ('371500', '山东省聊城市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371501', '山东省聊城市市辖区', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371502', '山东省聊城市东昌府区', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371521', '山东省阳谷县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371522', '山东省莘县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371523', '山东省茌平县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371524', '山东省东阿县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371525', '山东省冠县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371526', '山东省高唐县', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371581', '山东省临清市', '371500'); +INSERT INTO `base_administrative_division` VALUES ('371600', '山东省滨州市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371601', '山东省滨州市市辖区', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371602', '山东省滨州市滨城区', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371621', '山东省惠民县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371622', '山东省阳信县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371623', '山东省无棣县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371624', '山东省沾化县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371625', '山东省博兴县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371626', '山东省邹平县', '371600'); +INSERT INTO `base_administrative_division` VALUES ('371700', '山东省菏泽市', '370000'); +INSERT INTO `base_administrative_division` VALUES ('371701', '山东省菏泽市市辖区', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371702', '山东省菏泽市牡丹区', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371721', '山东省曹县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371722', '山东省单县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371723', '山东省成武县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371724', '山东省巨野县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371725', '山东省郓城县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371726', '山东省鄄城县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371727', '山东省定陶县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('371728', '山东省东明县', '371700'); +INSERT INTO `base_administrative_division` VALUES ('410000', '河南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('410100', '河南省郑州市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410101', '河南省郑州市市辖区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410102', '河南省郑州市中原区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410103', '河南省郑州市二七区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410104', '河南省郑州市管城回族区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410105', '河南省郑州市金水区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410106', '河南省郑州市上街区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410108', '河南省郑州市惠济区', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410122', '河南省中牟县', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410181', '河南省巩义市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410182', '河南省荥阳市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410183', '河南省新密市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410184', '河南省新郑市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410185', '河南省登封市', '410100'); +INSERT INTO `base_administrative_division` VALUES ('410200', '河南省开封市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410201', '河南省开封市市辖区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410202', '河南省开封市龙亭区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410203', '河南省开封市顺河回族区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410204', '河南省开封市鼓楼区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410205', '河南省开封市禹王台区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410211', '河南省开封市金明区', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410221', '河南省杞县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410222', '河南省通许县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410223', '河南省尉氏县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410224', '河南省开封县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410225', '河南省兰考县', '410200'); +INSERT INTO `base_administrative_division` VALUES ('410300', '河南省洛阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410301', '河南省洛阳市市辖区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410302', '河南省洛阳市老城区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410303', '河南省洛阳市西工区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410304', '河南省洛阳市廛河回族区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410305', '河南省洛阳市涧西区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410306', '河南省洛阳市吉利区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410307', '河南省洛阳市洛龙区', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410322', '河南省孟津县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410323', '河南省新安县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410324', '河南省栾川县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410325', '河南省嵩县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410326', '河南省汝阳县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410327', '河南省宜阳县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410328', '河南省洛宁县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410329', '河南省伊川县', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410381', '河南省偃师市', '410300'); +INSERT INTO `base_administrative_division` VALUES ('410400', '河南省平顶山市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410401', '河南省平顶山市市辖区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410402', '河南省平顶山市新华区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410403', '河南省平顶山市卫东区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410404', '河南省平顶山市石龙区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410411', '河南省平顶山市湛河区', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410421', '河南省宝丰县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410422', '河南省叶县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410423', '河南省鲁山县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410425', '河南省郏县', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410481', '河南省舞钢市', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410482', '河南省汝州市', '410400'); +INSERT INTO `base_administrative_division` VALUES ('410500', '河南省安阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410501', '河南省安阳市市辖区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410502', '河南省安阳市文峰区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410503', '河南省安阳市北关区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410505', '河南省安阳市殷都区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410506', '河南省安阳市龙安区', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410522', '河南省安阳县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410523', '河南省汤阴县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410526', '河南省滑县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410527', '河南省内黄县', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410581', '河南省林州市', '410500'); +INSERT INTO `base_administrative_division` VALUES ('410600', '河南省鹤壁市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410601', '河南省鹤壁市市辖区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410602', '河南省鹤壁市鹤山区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410603', '河南省鹤壁市山城区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410611', '河南省鹤壁市淇滨区', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410621', '河南省浚县', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410622', '河南省淇县', '410600'); +INSERT INTO `base_administrative_division` VALUES ('410700', '河南省新乡市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410701', '河南省新乡市市辖区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410702', '河南省新乡市红旗区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410703', '河南省新乡市卫滨区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410704', '河南省新乡市凤泉区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410711', '河南省新乡市牧野区', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410721', '河南省新乡县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410724', '河南省获嘉县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410725', '河南省原阳县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410726', '河南省延津县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410727', '河南省封丘县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410728', '河南省长垣县', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410781', '河南省卫辉市', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410782', '河南省辉县市', '410700'); +INSERT INTO `base_administrative_division` VALUES ('410800', '河南省焦作市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410801', '河南省焦作市市辖区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410802', '河南省焦作市解放区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410803', '河南省焦作市中站区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410804', '河南省焦作市马村区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410811', '河南省焦作市山阳区', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410821', '河南省修武县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410822', '河南省博爱县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410823', '河南省武陟县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410825', '河南省温县', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410882', '河南省沁阳市', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410883', '河南省孟州市', '410800'); +INSERT INTO `base_administrative_division` VALUES ('410900', '河南省濮阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('410901', '河南省濮阳市市辖区', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410902', '河南省濮阳市华龙区', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410922', '河南省清丰县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410923', '河南省南乐县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410926', '河南省范县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410927', '河南省台前县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('410928', '河南省濮阳县', '410900'); +INSERT INTO `base_administrative_division` VALUES ('411000', '河南省许昌市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411001', '河南省许昌市市辖区', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411002', '河南省许昌市魏都区', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411023', '河南省许昌县', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411024', '河南省鄢陵县', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411025', '河南省襄城县', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411081', '河南省禹州市', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411082', '河南省长葛市', '411000'); +INSERT INTO `base_administrative_division` VALUES ('411100', '河南省漯河市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411101', '河南省漯河市市辖区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411102', '河南省漯河市源汇区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411103', '河南省漯河市郾城区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411104', '河南省漯河市召陵区', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411121', '河南省舞阳县', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411122', '河南省临颍县', '411100'); +INSERT INTO `base_administrative_division` VALUES ('411200', '河南省三门峡市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411201', '河南省三门峡市市辖区', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411202', '河南省三门峡市湖滨区', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411221', '河南省渑池县', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411222', '河南省陕县', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411224', '河南省卢氏县', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411281', '河南省义马市', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411282', '河南省灵宝市', '411200'); +INSERT INTO `base_administrative_division` VALUES ('411300', '河南省南阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411301', '河南省南阳市市辖区', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411302', '河南省南阳市宛城区', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411303', '河南省南阳市卧龙区', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411321', '河南省南召县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411322', '河南省方城县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411323', '河南省西峡县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411324', '河南省镇平县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411325', '河南省内乡县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411326', '河南省淅川县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411327', '河南省社旗县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411328', '河南省唐河县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411329', '河南省新野县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411330', '河南省桐柏县', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411381', '河南省邓州市', '411300'); +INSERT INTO `base_administrative_division` VALUES ('411400', '河南省商丘市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411401', '河南省商丘市市辖区', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411402', '河南省商丘市梁园区', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411403', '河南省商丘市睢阳区', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411421', '河南省民权县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411422', '河南省睢县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411423', '河南省宁陵县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411424', '河南省柘城县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411425', '河南省虞城县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411426', '河南省夏邑县', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411481', '河南省永城市', '411400'); +INSERT INTO `base_administrative_division` VALUES ('411500', '河南省信阳市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411501', '河南省信阳市市辖区', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411502', '河南省信阳市师河区', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411503', '河南省信阳市平桥区', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411521', '河南省罗山县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411522', '河南省光山县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411523', '河南省新县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411524', '河南省商城县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411525', '河南省固始县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411526', '河南省潢川县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411527', '河南省淮滨县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411528', '河南省息县', '411500'); +INSERT INTO `base_administrative_division` VALUES ('411600', '河南省周口市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411601', '河南省周口市市辖区', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411602', '河南省周口市川汇区', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411621', '河南省扶沟县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411622', '河南省西华县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411623', '河南省商水县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411624', '河南省沈丘县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411625', '河南省郸城县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411626', '河南省淮阳县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411627', '河南省太康县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411628', '河南省鹿邑县', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411681', '河南省项城市', '411600'); +INSERT INTO `base_administrative_division` VALUES ('411700', '河南省驻马店市', '410000'); +INSERT INTO `base_administrative_division` VALUES ('411701', '河南省驻马店市市辖区', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411702', '河南省驻马店市驿城区', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411721', '河南省西平县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411722', '河南省上蔡县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411723', '河南省平舆县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411724', '河南省正阳县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411725', '河南省确山县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411726', '河南省泌阳县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411727', '河南省汝南县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411728', '河南省遂平县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('411729', '河南省新蔡县', '411700'); +INSERT INTO `base_administrative_division` VALUES ('419000', '河南省省直辖县级行政区划', '410000'); +INSERT INTO `base_administrative_division` VALUES ('419001', '河南省济源市', '419000'); +INSERT INTO `base_administrative_division` VALUES ('420000', '湖北省', '0'); +INSERT INTO `base_administrative_division` VALUES ('420100', '湖北省武汉市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420101', '湖北省武汉市市辖区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420102', '湖北省武汉市江岸区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420103', '湖北省武汉市江汉区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420104', '湖北省武汉市硚口区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420105', '湖北省武汉市汉阳区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420106', '湖北省武汉市武昌区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420107', '湖北省武汉市青山区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420111', '湖北省武汉市洪山区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420112', '湖北省武汉市东西湖区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420113', '湖北省武汉市汉南区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420114', '湖北省武汉市蔡甸区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420115', '湖北省武汉市江夏区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420116', '湖北省武汉市黄陂区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420117', '湖北省武汉市新洲区', '420100'); +INSERT INTO `base_administrative_division` VALUES ('420200', '湖北省黄石市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420201', '湖北省黄石市市辖区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420202', '湖北省黄石市黄石港区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420203', '湖北省黄石市西塞山区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420204', '湖北省黄石市下陆区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420205', '湖北省黄石市铁山区', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420222', '湖北省阳新县', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420281', '湖北省大冶市', '420200'); +INSERT INTO `base_administrative_division` VALUES ('420300', '湖北省十堰市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420301', '湖北省十堰市市辖区', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420302', '湖北省十堰市茅箭区', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420303', '湖北省十堰市张湾区', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420321', '湖北省郧县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420322', '湖北省郧西县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420323', '湖北省竹山县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420324', '湖北省竹溪县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420325', '湖北省房县', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420381', '湖北省丹江口市', '420300'); +INSERT INTO `base_administrative_division` VALUES ('420500', '湖北省宜昌市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420501', '湖北省宜昌市市辖区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420502', '湖北省宜昌市西陵区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420503', '湖北省宜昌市伍家岗区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420504', '湖北省宜昌市点军区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420505', '湖北省宜昌市猇亭区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420506', '湖北省宜昌市夷陵区', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420525', '湖北省远安县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420526', '湖北省兴山县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420527', '湖北省秭归县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420528', '湖北省长阳土家族自治县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420529', '湖北省五峰土家族自治县', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420581', '湖北省宜都市', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420582', '湖北省当阳市', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420583', '湖北省枝江市', '420500'); +INSERT INTO `base_administrative_division` VALUES ('420600', '湖北省襄阳市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420601', '湖北省襄阳市市辖区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420602', '湖北省襄阳市襄城区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420606', '湖北省襄阳市樊城区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420607', '湖北省襄阳市襄州区', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420624', '湖北省南漳县', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420625', '湖北省谷城县', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420626', '湖北省保康县', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420682', '湖北省老河口市', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420683', '湖北省枣阳市', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420684', '湖北省宜城市', '420600'); +INSERT INTO `base_administrative_division` VALUES ('420700', '湖北省鄂州市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420701', '湖北省鄂州市市辖区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420702', '湖北省鄂州市梁子湖区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420703', '湖北省鄂州市华容区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420704', '湖北省鄂州市鄂城区', '420700'); +INSERT INTO `base_administrative_division` VALUES ('420800', '湖北省荆门市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420801', '湖北省荆门市市辖区', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420802', '湖北省荆门市东宝区', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420804', '湖北省荆门市掇刀区', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420821', '湖北省京山县', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420822', '湖北省沙洋县', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420881', '湖北省钟祥市', '420800'); +INSERT INTO `base_administrative_division` VALUES ('420900', '湖北省孝感市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('420901', '湖北省孝感市市辖区', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420902', '湖北省孝感市孝南区', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420921', '湖北省孝昌县', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420922', '湖北省大悟县', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420923', '湖北省云梦县', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420981', '湖北省应城市', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420982', '湖北省安陆市', '420900'); +INSERT INTO `base_administrative_division` VALUES ('420984', '湖北省汉川市', '420900'); +INSERT INTO `base_administrative_division` VALUES ('421000', '湖北省荆州市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421001', '湖北省荆州市市辖区', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421002', '湖北省荆州市沙市区', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421003', '湖北省荆州市荆州区', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421022', '湖北省公安县', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421023', '湖北省监利县', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421024', '湖北省江陵县', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421081', '湖北省石首市', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421083', '湖北省洪湖市', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421087', '湖北省松滋市', '421000'); +INSERT INTO `base_administrative_division` VALUES ('421100', '湖北省黄冈市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421101', '湖北省黄冈市市辖区', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421102', '湖北省黄冈市黄州区', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421121', '湖北省团风县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421122', '湖北省红安县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421123', '湖北省罗田县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421124', '湖北省英山县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421125', '湖北省浠水县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421126', '湖北省蕲春县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421127', '湖北省黄梅县', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421181', '湖北省麻城市', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421182', '湖北省武穴市', '421100'); +INSERT INTO `base_administrative_division` VALUES ('421200', '湖北省咸宁市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421201', '湖北省咸宁市市辖区', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421202', '湖北省咸宁市咸安区', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421221', '湖北省嘉鱼县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421222', '湖北省通城县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421223', '湖北省崇阳县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421224', '湖北省通山县', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421281', '湖北省赤壁市', '421200'); +INSERT INTO `base_administrative_division` VALUES ('421300', '湖北省随州市', '420000'); +INSERT INTO `base_administrative_division` VALUES ('421301', '湖北省随州市市辖区', '421300'); +INSERT INTO `base_administrative_division` VALUES ('421302', '湖北省随州市曾都区', '421300'); +INSERT INTO `base_administrative_division` VALUES ('421381', '湖北省广水市', '421300'); +INSERT INTO `base_administrative_division` VALUES ('422800', '湖北省恩施土家族苗族自治州', '420000'); +INSERT INTO `base_administrative_division` VALUES ('422801', '湖北省恩施市', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422802', '湖北省利川市', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422822', '湖北省建始县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422823', '湖北省巴东县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422825', '湖北省宣恩县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422826', '湖北省咸丰县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422827', '湖北省来凤县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('422828', '湖北省鹤峰县', '422800'); +INSERT INTO `base_administrative_division` VALUES ('429000', '湖北省省直辖县级行政区划', '420000'); +INSERT INTO `base_administrative_division` VALUES ('429004', '湖北省仙桃市', '429000'); +INSERT INTO `base_administrative_division` VALUES ('429005', '湖北省潜江市', '429000'); +INSERT INTO `base_administrative_division` VALUES ('429006', '湖北省天门市', '429000'); +INSERT INTO `base_administrative_division` VALUES ('429021', '湖北省神农架林区', '429000'); +INSERT INTO `base_administrative_division` VALUES ('430000', '湖南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('430100', '湖南省长沙市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430101', '湖南省长沙市市辖区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430102', '湖南省长沙市芙蓉区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430103', '湖南省长沙市天心区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430104', '湖南省长沙市岳麓区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430105', '湖南省长沙市开福区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430111', '湖南省长沙市雨花区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430112', '湖南省长沙市望城区', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430121', '湖南省长沙县', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430124', '湖南省宁乡县', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430181', '湖南省浏阳市', '430100'); +INSERT INTO `base_administrative_division` VALUES ('430200', '湖南省株洲市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430201', '湖南省株洲市市辖区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430202', '湖南省株洲市荷塘区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430203', '湖南省株洲市芦淞区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430204', '湖南省株洲市石峰区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430211', '湖南省株洲市天元区', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430221', '湖南省株洲县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430223', '湖南省攸县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430224', '湖南省茶陵县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430225', '湖南省炎陵县', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430281', '湖南省醴陵市', '430200'); +INSERT INTO `base_administrative_division` VALUES ('430300', '湖南省湘潭市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430301', '湖南省湘潭市市辖区', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430302', '湖南省湘潭市雨湖区', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430304', '湖南省湘潭市岳塘区', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430321', '湖南省湘潭县', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430381', '湖南省湘乡市', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430382', '湖南省韶山市', '430300'); +INSERT INTO `base_administrative_division` VALUES ('430400', '湖南省衡阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430401', '湖南省衡阳市市辖区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430405', '湖南省衡阳市珠晖区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430406', '湖南省衡阳市雁峰区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430407', '湖南省衡阳市石鼓区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430408', '湖南省衡阳市蒸湘区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430412', '湖南省衡阳市南岳区', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430421', '湖南省衡阳县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430422', '湖南省衡南县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430423', '湖南省衡山县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430424', '湖南省衡东县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430426', '湖南省祁东县', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430481', '湖南省耒阳市', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430482', '湖南省常宁市', '430400'); +INSERT INTO `base_administrative_division` VALUES ('430500', '湖南省邵阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430501', '湖南省邵阳市市辖区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430502', '湖南省邵阳市双清区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430503', '湖南省邵阳市大祥区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430511', '湖南省邵阳市北塔区', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430521', '湖南省邵东县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430522', '湖南省新邵县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430523', '湖南省邵阳县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430524', '湖南省隆回县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430525', '湖南省洞口县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430527', '湖南省绥宁县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430528', '湖南省新宁县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430529', '湖南省城步苗族自治县', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430581', '湖南省武冈市', '430500'); +INSERT INTO `base_administrative_division` VALUES ('430600', '湖南省岳阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430601', '湖南省岳阳市市辖区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430602', '湖南省岳阳市岳阳楼区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430603', '湖南省岳阳市云溪区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430611', '湖南省岳阳市君山区', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430621', '湖南省岳阳县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430623', '湖南省华容县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430624', '湖南省湘阴县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430626', '湖南省平江县', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430681', '湖南省汨罗市', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430682', '湖南省临湘市', '430600'); +INSERT INTO `base_administrative_division` VALUES ('430700', '湖南省常德市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430701', '湖南省常德市市辖区', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430702', '湖南省常德市武陵区', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430703', '湖南省常德市鼎城区', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430721', '湖南省安乡县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430722', '湖南省汉寿县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430723', '湖南省澧县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430724', '湖南省临澧县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430725', '湖南省桃源县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430726', '湖南省石门县', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430781', '湖南省津市市', '430700'); +INSERT INTO `base_administrative_division` VALUES ('430800', '湖南省张家界市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430801', '湖南省张家界市市辖区', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430802', '湖南省张家界市永定区', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430811', '湖南省张家界市武陵源区', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430821', '湖南省慈利县', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430822', '湖南省桑植县', '430800'); +INSERT INTO `base_administrative_division` VALUES ('430900', '湖南省益阳市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('430901', '湖南省益阳市市辖区', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430902', '湖南省益阳市资阳区', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430903', '湖南省益阳市赫山区', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430921', '湖南省南县', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430922', '湖南省桃江县', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430923', '湖南省安化县', '430900'); +INSERT INTO `base_administrative_division` VALUES ('430981', '湖南省沅江市', '430900'); +INSERT INTO `base_administrative_division` VALUES ('431000', '湖南省郴州市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431001', '湖南省郴州市市辖区', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431002', '湖南省郴州市北湖区', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431003', '湖南省郴州市苏仙区', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431021', '湖南省桂阳县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431022', '湖南省宜章县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431023', '湖南省永兴县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431024', '湖南省嘉禾县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431025', '湖南省临武县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431026', '湖南省汝城县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431027', '湖南省桂东县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431028', '湖南省安仁县', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431081', '湖南省资兴市', '431000'); +INSERT INTO `base_administrative_division` VALUES ('431100', '湖南省永州市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431101', '湖南省永州市市辖区', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431102', '湖南省永州市零陵区', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431103', '湖南省永州市冷水滩区', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431121', '湖南省祁阳县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431122', '湖南省东安县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431123', '湖南省双牌县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431124', '湖南省道县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431125', '湖南省江永县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431126', '湖南省宁远县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431127', '湖南省蓝山县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431128', '湖南省新田县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431129', '湖南省江华瑶族自治县', '431100'); +INSERT INTO `base_administrative_division` VALUES ('431200', '湖南省怀化市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431201', '湖南省怀化市市辖区', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431202', '湖南省怀化市鹤城区', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431221', '湖南省中方县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431222', '湖南省沅陵县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431223', '湖南省辰溪县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431224', '湖南省溆浦县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431225', '湖南省会同县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431226', '湖南省麻阳苗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431227', '湖南省新晃侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431228', '湖南省芷江侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431229', '湖南省靖州苗族侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431230', '湖南省通道侗族自治县', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431281', '湖南省洪江市', '431200'); +INSERT INTO `base_administrative_division` VALUES ('431300', '湖南省娄底市', '430000'); +INSERT INTO `base_administrative_division` VALUES ('431301', '湖南省娄底市市辖区', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431302', '湖南省娄底市娄星区', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431321', '湖南省双峰县', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431322', '湖南省新化县', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431381', '湖南省冷水江市', '431300'); +INSERT INTO `base_administrative_division` VALUES ('431382', '湖南省涟源市', '431300'); +INSERT INTO `base_administrative_division` VALUES ('433100', '湖南省湘西土家族苗族自治州', '430000'); +INSERT INTO `base_administrative_division` VALUES ('433101', '湖南省吉首市', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433122', '湖南省泸溪县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433123', '湖南省凤凰县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433124', '湖南省花垣县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433125', '湖南省保靖县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433126', '湖南省古丈县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433127', '湖南省永顺县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('433130', '湖南省龙山县', '433100'); +INSERT INTO `base_administrative_division` VALUES ('440000', '广东省', '0'); +INSERT INTO `base_administrative_division` VALUES ('440100', '广东省广州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440101', '广东省广州市市辖区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440103', '广东省广州市荔湾区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440104', '广东省广州市越秀区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440105', '广东省广州市海珠区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440106', '广东省广州市天河区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440111', '广东省广州市白云区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440112', '广东省广州市黄埔区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440113', '广东省广州市番禺区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440114', '广东省广州市花都区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440115', '广东省广州市南沙区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440116', '广东省广州市萝岗区', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440183', '广东省增城市', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440184', '广东省从化市', '440100'); +INSERT INTO `base_administrative_division` VALUES ('440200', '广东省韶关市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440201', '广东省韶关市市辖区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440203', '广东省韶关市武江区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440204', '广东省韶关市浈江区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440205', '广东省韶关市曲江区', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440222', '广东省始兴县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440224', '广东省仁化县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440229', '广东省翁源县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440232', '广东省乳源瑶族自治县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440233', '广东省新丰县', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440281', '广东省乐昌市', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440282', '广东省南雄市', '440200'); +INSERT INTO `base_administrative_division` VALUES ('440300', '广东省深圳市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440301', '广东省深圳市市辖区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440303', '广东省深圳市罗湖区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440304', '广东省深圳市福田区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440305', '广东省深圳市南山区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440306', '广东省深圳市宝安区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440307', '广东省深圳市龙岗区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440308', '广东省深圳市盐田区', '440300'); +INSERT INTO `base_administrative_division` VALUES ('440400', '广东省珠海市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440401', '广东省珠海市市辖区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440402', '广东省珠海市香洲区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440403', '广东省珠海市斗门区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440404', '广东省珠海市金湾区', '440400'); +INSERT INTO `base_administrative_division` VALUES ('440500', '广东省汕头市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440501', '广东省汕头市市辖区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440507', '广东省汕头市龙湖区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440511', '广东省汕头市金平区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440512', '广东省汕头市濠江区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440513', '广东省汕头市潮阳区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440514', '广东省汕头市潮南区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440515', '广东省汕头市澄海区', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440523', '广东省南澳县', '440500'); +INSERT INTO `base_administrative_division` VALUES ('440600', '广东省佛山市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440601', '广东省佛山市市辖区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440604', '广东省佛山市禅城区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440605', '广东省佛山市南海区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440606', '广东省佛山市顺德区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440607', '广东省佛山市三水区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440608', '广东省佛山市高明区', '440600'); +INSERT INTO `base_administrative_division` VALUES ('440700', '广东省江门市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440701', '广东省江门市市辖区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440703', '广东省江门市蓬江区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440704', '广东省江门市江海区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440705', '广东省江门市新会区', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440781', '广东省台山市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440783', '广东省开平市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440784', '广东省鹤山市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440785', '广东省恩平市', '440700'); +INSERT INTO `base_administrative_division` VALUES ('440800', '广东省湛江市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440801', '广东省湛江市市辖区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440802', '广东省湛江市赤坎区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440803', '广东省湛江市霞山区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440804', '广东省湛江市坡头区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440811', '广东省湛江市麻章区', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440823', '广东省遂溪县', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440825', '广东省徐闻县', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440881', '广东省廉江市', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440882', '广东省雷州市', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440883', '广东省吴川市', '440800'); +INSERT INTO `base_administrative_division` VALUES ('440900', '广东省茂名市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('440901', '广东省茂名市市辖区', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440902', '广东省茂名市茂南区', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440903', '广东省茂名市茂港区', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440923', '广东省电白县', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440981', '广东省高州市', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440982', '广东省化州市', '440900'); +INSERT INTO `base_administrative_division` VALUES ('440983', '广东省信宜市', '440900'); +INSERT INTO `base_administrative_division` VALUES ('441200', '广东省肇庆市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441201', '广东省肇庆市市辖区', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441202', '广东省肇庆市端州区', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441203', '广东省肇庆市鼎湖区', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441223', '广东省广宁县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441224', '广东省怀集县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441225', '广东省封开县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441226', '广东省德庆县', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441283', '广东省高要市', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441284', '广东省四会市', '441200'); +INSERT INTO `base_administrative_division` VALUES ('441300', '广东省惠州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441301', '广东省惠州市市辖区', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441302', '广东省惠州市惠城区', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441303', '广东省惠州市惠阳区', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441322', '广东省博罗县', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441323', '广东省惠东县', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441324', '广东省龙门县', '441300'); +INSERT INTO `base_administrative_division` VALUES ('441400', '广东省梅州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441401', '广东省梅州市市辖区', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441402', '广东省梅州市梅江区', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441421', '广东省梅县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441422', '广东省大埔县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441423', '广东省丰顺县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441424', '广东省五华县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441426', '广东省平远县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441427', '广东省蕉岭县', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441481', '广东省兴宁市', '441400'); +INSERT INTO `base_administrative_division` VALUES ('441500', '广东省汕尾市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441501', '广东省汕尾市市辖区', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441502', '广东省汕尾市城区', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441521', '广东省海丰县', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441523', '广东省陆河县', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441581', '广东省陆丰市', '441500'); +INSERT INTO `base_administrative_division` VALUES ('441600', '广东省河源市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441601', '广东省河源市市辖区', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441602', '广东省河源市源城区', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441621', '广东省紫金县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441622', '广东省龙川县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441623', '广东省连平县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441624', '广东省和平县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441625', '广东省东源县', '441600'); +INSERT INTO `base_administrative_division` VALUES ('441700', '广东省阳江市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441701', '广东省阳江市市辖区', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441702', '广东省阳江市江城区', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441721', '广东省阳西县', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441723', '广东省阳东县', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441781', '广东省阳春市', '441700'); +INSERT INTO `base_administrative_division` VALUES ('441800', '广东省清远市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('441801', '广东省清远市市辖区', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441802', '广东省清远市清城区', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441821', '广东省佛冈县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441823', '广东省阳山县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441825', '广东省连山壮族瑶族自治县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441826', '广东省连南瑶族自治县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441827', '广东省清新县', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441881', '广东省英德市', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441882', '广东省连州市', '441800'); +INSERT INTO `base_administrative_division` VALUES ('441900', '广东省东莞市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('442000', '广东省中山市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445100', '广东省潮州市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445101', '广东省潮州市市辖区', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445102', '广东省潮州市湘桥区', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445121', '广东省潮安县', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445122', '广东省饶平县', '445100'); +INSERT INTO `base_administrative_division` VALUES ('445200', '广东省揭阳市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445201', '广东省揭阳市市辖区', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445202', '广东省揭阳市榕城区', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445221', '广东省揭东县', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445222', '广东省揭西县', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445224', '广东省惠来县', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445281', '广东省普宁市', '445200'); +INSERT INTO `base_administrative_division` VALUES ('445300', '广东省云浮市', '440000'); +INSERT INTO `base_administrative_division` VALUES ('445301', '广东省云浮市市辖区', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445302', '广东省云浮市云城区', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445321', '广东省新兴县', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445322', '广东省郁南县', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445323', '广东省云安县', '445300'); +INSERT INTO `base_administrative_division` VALUES ('445381', '广东省罗定市', '445300'); +INSERT INTO `base_administrative_division` VALUES ('450000', '广西壮族自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('450100', '广西南宁市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450101', '广西南宁市市辖区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450102', '广西南宁市兴宁区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450103', '广西南宁市青秀区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450105', '广西南宁市江南区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450107', '广西南宁市西乡塘区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450108', '广西南宁市良庆区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450109', '广西南宁市邕宁区', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450122', '广西武鸣县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450123', '广西隆安县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450124', '广西马山县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450125', '广西上林县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450126', '广西宾阳县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450127', '广西横县', '450100'); +INSERT INTO `base_administrative_division` VALUES ('450200', '广西柳州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450201', '广西柳州市市辖区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450202', '广西柳州市城中区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450203', '广西柳州市鱼峰区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450204', '广西柳州市柳南区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450205', '广西柳州市柳北区', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450221', '广西柳江县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450222', '广西柳城县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450223', '广西鹿寨县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450224', '广西融安县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450225', '广西融水苗族自治县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450226', '广西三江侗族自治县', '450200'); +INSERT INTO `base_administrative_division` VALUES ('450300', '广西桂林市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450301', '广西桂林市市辖区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450302', '广西桂林市秀峰区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450303', '广西桂林市叠彩区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450304', '广西桂林市象山区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450305', '广西桂林市七星区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450311', '广西桂林市雁山区', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450321', '广西阳朔县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450322', '广西临桂县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450323', '广西灵川县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450324', '广西全州县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450325', '广西兴安县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450326', '广西永福县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450327', '广西灌阳县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450328', '广西龙胜各族自治县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450329', '广西资源县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450330', '广西平乐县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450331', '广西荔蒲县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450332', '广西恭城瑶族自治县', '450300'); +INSERT INTO `base_administrative_division` VALUES ('450400', '广西梧州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450401', '广西梧州市市辖区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450403', '广西梧州市万秀区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450404', '广西梧州市蝶山区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450405', '广西梧州市长洲区', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450421', '广西苍梧县', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450422', '广西藤县', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450423', '广西蒙山县', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450481', '广西岑溪市', '450400'); +INSERT INTO `base_administrative_division` VALUES ('450500', '广西北海市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450501', '广西北海市市辖区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450502', '广西北海市海城区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450503', '广西北海市银海区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450512', '广西北海市铁山港区', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450521', '广西合浦县', '450500'); +INSERT INTO `base_administrative_division` VALUES ('450600', '广西防城港市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450601', '广西防城港市市辖区', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450602', '广西防城港市港口区', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450603', '广西防城港市防城区', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450621', '广西上思县', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450681', '广西东兴市', '450600'); +INSERT INTO `base_administrative_division` VALUES ('450700', '广西钦州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450701', '广西钦州市市辖区', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450702', '广西钦州市钦南区', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450703', '广西钦州市钦北区', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450721', '广西灵山县', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450722', '广西浦北县', '450700'); +INSERT INTO `base_administrative_division` VALUES ('450800', '广西贵港市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450801', '广西贵港市市辖区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450802', '广西贵港市港北区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450803', '广西贵港市港南区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450804', '广西贵港市覃塘区', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450821', '广西平南县', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450881', '广西桂平市', '450800'); +INSERT INTO `base_administrative_division` VALUES ('450900', '广西玉林市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('450901', '广西玉林市市辖区', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450902', '广西玉林市玉州区', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450921', '广西容县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450922', '广西陆川县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450923', '广西博白县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450924', '广西兴业县', '450900'); +INSERT INTO `base_administrative_division` VALUES ('450981', '广西北流市', '450900'); +INSERT INTO `base_administrative_division` VALUES ('451000', '广西百色市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451001', '广西百色市市辖区', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451002', '广西百色市右江区', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451021', '广西田阳县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451022', '广西田东县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451023', '广西平果县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451024', '广西德保县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451025', '广西靖西县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451026', '广西那坡县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451027', '广西凌云县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451028', '广西乐业县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451029', '广西田林县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451030', '广西西林县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451031', '广西隆林各族自治县', '451000'); +INSERT INTO `base_administrative_division` VALUES ('451100', '广西贺州市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451101', '广西贺州市市辖区', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451102', '广西贺州市八步区', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451121', '广西昭平县', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451122', '广西钟山县', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451123', '广西富川瑶族自治县', '451100'); +INSERT INTO `base_administrative_division` VALUES ('451200', '广西河池市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451201', '广西河池市市辖区', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451202', '广西河池市金城江区', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451221', '广西南丹县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451222', '广西天峨县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451223', '广西凤山县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451224', '广西东兰县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451225', '广西罗城仫佬族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451226', '广西环江毛南族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451227', '广西巴马瑶族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451228', '广西都安瑶族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451229', '广西大化瑶族自治县', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451281', '广西宜州市', '451200'); +INSERT INTO `base_administrative_division` VALUES ('451300', '广西来宾市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451301', '广西来宾市市辖区', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451302', '广西来宾市兴宾区', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451321', '广西忻城县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451322', '广西象州县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451323', '广西武宣县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451324', '广西金秀瑶族自治县', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451381', '广西合山市', '451300'); +INSERT INTO `base_administrative_division` VALUES ('451400', '广西崇左市', '450000'); +INSERT INTO `base_administrative_division` VALUES ('451401', '广西崇左市市辖区', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451402', '广西崇左市江洲区', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451421', '广西扶绥县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451422', '广西宁明县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451423', '广西龙州县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451424', '广西大新县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451425', '广西天等县', '451400'); +INSERT INTO `base_administrative_division` VALUES ('451481', '广西凭祥市', '451400'); +INSERT INTO `base_administrative_division` VALUES ('460000', '海南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('460100', '海南省海口市', '460000'); +INSERT INTO `base_administrative_division` VALUES ('460101', '海南省海口市市辖区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460105', '海南省海口市秀英区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460106', '海南省海口市龙华区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460107', '海南省海口市琼山区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460108', '海南省海口市美兰区', '460100'); +INSERT INTO `base_administrative_division` VALUES ('460200', '海南省三亚市', '460000'); +INSERT INTO `base_administrative_division` VALUES ('460201', '海南省三亚市市辖区', '460200'); +INSERT INTO `base_administrative_division` VALUES ('469000', '海南省省直辖县级行政区划', '460000'); +INSERT INTO `base_administrative_division` VALUES ('469001', '海南省五指山市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469002', '海南省琼海市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469003', '海南省儋州市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469005', '海南省文昌市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469006', '海南省万宁市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469007', '海南省东方市', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469025', '海南省定安县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469026', '海南省屯昌县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469027', '海南省澄迈县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469028', '海南省临高县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469030', '海南省白沙黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469031', '海南省昌江黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469033', '海南省乐东黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469034', '海南省陵水黎族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469035', '海南省保亭黎族苗族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469036', '海南省琼中黎族苗族自治县', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469037', '海南省西沙群岛', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469038', '海南省南沙群岛', '469000'); +INSERT INTO `base_administrative_division` VALUES ('469039', '海南省中沙群岛的岛礁及其海域', '469000'); +INSERT INTO `base_administrative_division` VALUES ('500000', '重庆市', '0'); +INSERT INTO `base_administrative_division` VALUES ('500100', '重庆市市辖区', '500000'); +INSERT INTO `base_administrative_division` VALUES ('500101', '重庆市万州区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500102', '重庆市涪陵区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500103', '重庆市渝中区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500104', '重庆市大渡口区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500105', '重庆市江北区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500106', '重庆市沙坪坝区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500107', '重庆市九龙坡区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500108', '重庆市南岸区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500109', '重庆市北碚区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500110', '重庆市綦江区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500111', '重庆市大足区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500112', '重庆市渝北区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500113', '重庆市巴南区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500114', '重庆市黔江区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500115', '重庆市长寿区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500116', '重庆市江津区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500117', '重庆市合川区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500118', '重庆市永川区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500119', '重庆市南川区', '500100'); +INSERT INTO `base_administrative_division` VALUES ('500200', '重庆市县', '500000'); +INSERT INTO `base_administrative_division` VALUES ('500223', '重庆市潼南县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500224', '重庆市铜梁县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500226', '重庆市荣昌县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500227', '重庆市璧山县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500228', '重庆市梁平县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500229', '重庆市城口县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500230', '重庆市丰都县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500231', '重庆市垫江县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500232', '重庆市武隆县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500233', '重庆市忠县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500234', '重庆市开县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500235', '重庆市云阳县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500236', '重庆市奉节县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500237', '重庆市巫山县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500238', '重庆市巫溪县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500240', '重庆市石柱土家族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500241', '重庆市秀山土家族苗族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500242', '重庆市酉阳土家族苗族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('500243', '重庆市彭水苗族土家族自治县', '500200'); +INSERT INTO `base_administrative_division` VALUES ('510000', '四川省', '0'); +INSERT INTO `base_administrative_division` VALUES ('510100', '四川省成都市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510101', '四川省成都市市辖区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510104', '四川省成都市锦江区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510105', '四川省成都市青羊区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510106', '四川省成都市金牛区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510107', '四川省成都市武侯区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510108', '四川省成都市成华区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510112', '四川省成都市龙泉驿区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510113', '四川省成都市青白江区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510114', '四川省成都市新都区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510115', '四川省成都市温江区', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510121', '四川省金堂县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510122', '四川省双流县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510124', '四川省郫县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510129', '四川省大邑县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510131', '四川省蒲江县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510132', '四川省新津县', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510181', '四川省都江堰市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510182', '四川省彭州市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510183', '四川省邛崃市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510184', '四川省崇州市', '510100'); +INSERT INTO `base_administrative_division` VALUES ('510300', '四川省自贡市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510301', '四川省自贡市市辖区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510302', '四川省自贡市自流井区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510303', '四川省自贡市贡井区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510304', '四川省自贡市大安区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510311', '四川省自贡市沿滩区', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510321', '四川省荣县', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510322', '四川省富顺县', '510300'); +INSERT INTO `base_administrative_division` VALUES ('510400', '四川省攀枝花市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510401', '四川省攀枝花市市辖区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510402', '四川省攀枝花市东区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510403', '四川省攀枝花市西区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510411', '四川省攀枝花市仁和区', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510421', '四川省米易县', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510422', '四川省盐边县', '510400'); +INSERT INTO `base_administrative_division` VALUES ('510500', '四川省泸州市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510501', '四川省泸州市市辖区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510502', '四川省泸州市江阳区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510503', '四川省泸州市纳溪区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510504', '四川省泸州市龙马潭区', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510521', '四川省泸县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510522', '四川省合江县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510524', '四川省叙永县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510525', '四川省古蔺县', '510500'); +INSERT INTO `base_administrative_division` VALUES ('510600', '四川省德阳市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510601', '四川省德阳市市辖区', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510603', '四川省德阳市旌阳区', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510623', '四川省中江县', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510626', '四川省罗江县', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510681', '四川省广汉市', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510682', '四川省什邡市', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510683', '四川省绵竹市', '510600'); +INSERT INTO `base_administrative_division` VALUES ('510700', '四川省绵阳市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510701', '四川省绵阳市市辖区', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510703', '四川省绵阳市涪城区', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510704', '四川省绵阳市游仙区', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510722', '四川省三台县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510723', '四川省盐亭县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510724', '四川省安县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510725', '四川省梓潼县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510726', '四川省北川羌族自治县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510727', '四川省平武县', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510781', '四川省江油市', '510700'); +INSERT INTO `base_administrative_division` VALUES ('510800', '四川省广元市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510801', '四川省广元市市辖区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510802', '四川省广元市利州区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510811', '四川省广元市元坝区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510812', '四川省广元市朝天区', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510821', '四川省旺苍县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510822', '四川省青川县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510823', '四川省剑阁县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510824', '四川省苍溪县', '510800'); +INSERT INTO `base_administrative_division` VALUES ('510900', '四川省遂宁市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('510901', '四川省遂宁市市辖区', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510903', '四川省遂宁市船山区', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510904', '四川省遂宁市安居区', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510921', '四川省蓬溪县', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510922', '四川省射洪县', '510900'); +INSERT INTO `base_administrative_division` VALUES ('510923', '四川省大英县', '510900'); +INSERT INTO `base_administrative_division` VALUES ('511000', '四川省内江市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511001', '四川省内江市市辖区', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511002', '四川省内江市市中区', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511011', '四川省内江市东兴区', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511024', '四川省威远县', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511025', '四川省资中县', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511028', '四川省隆昌县', '511000'); +INSERT INTO `base_administrative_division` VALUES ('511100', '四川省乐山市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511101', '四川省乐山市市辖区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511102', '四川省乐山市市中区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511111', '四川省乐山市沙湾区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511112', '四川省乐山市五通桥区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511113', '四川省乐山市金口河区', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511123', '四川省犍为县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511124', '四川省井研县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511126', '四川省夹江县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511129', '四川省沐川县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511132', '四川省峨边彝族自治县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511133', '四川省马边彝族自治县', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511181', '四川省峨眉山市', '511100'); +INSERT INTO `base_administrative_division` VALUES ('511300', '四川省南充市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511301', '四川省南充市市辖区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511302', '四川省南充市顺庆区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511303', '四川省南充市高坪区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511304', '四川省南充市嘉陵区', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511321', '四川省南部县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511322', '四川省营山县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511323', '四川省蓬安县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511324', '四川省仪陇县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511325', '四川省西充县', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511381', '四川省阆中市', '511300'); +INSERT INTO `base_administrative_division` VALUES ('511400', '四川省眉山市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511401', '四川省眉山市市辖区', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511402', '四川省眉山市东坡区', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511421', '四川省仁寿县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511422', '四川省彭山县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511423', '四川省洪雅县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511424', '四川省丹棱县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511425', '四川省青神县', '511400'); +INSERT INTO `base_administrative_division` VALUES ('511500', '四川省宜宾市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511501', '四川省宜宾市市辖区', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511502', '四川省宜宾市翠屏区', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511503', '四川省宜宾市南溪区', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511521', '四川省宜宾县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511523', '四川省江安县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511524', '四川省长宁县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511525', '四川省高县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511526', '四川省珙县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511527', '四川省筠连县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511528', '四川省兴文县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511529', '四川省屏山县', '511500'); +INSERT INTO `base_administrative_division` VALUES ('511600', '四川省广安市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511601', '四川省广安市市辖区', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511602', '四川省广安市广安区', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511621', '四川省岳池县', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511622', '四川省武胜县', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511623', '四川省邻水县', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511681', '四川省华蓥市', '511600'); +INSERT INTO `base_administrative_division` VALUES ('511700', '四川省达州市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511701', '四川省达州市市辖区', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511702', '四川省达州市通川区', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511721', '四川省达县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511722', '四川省宣汉县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511723', '四川省开江县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511724', '四川省大竹县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511725', '四川省渠县', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511781', '四川省万源市', '511700'); +INSERT INTO `base_administrative_division` VALUES ('511800', '四川省雅安市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511801', '四川省雅安市市辖区', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511802', '四川省雅安市雨城区', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511821', '四川省名山县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511822', '四川省荥经县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511823', '四川省汉源县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511824', '四川省石棉县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511825', '四川省天全县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511826', '四川省芦山县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511827', '四川省宝兴县', '511800'); +INSERT INTO `base_administrative_division` VALUES ('511900', '四川省巴中市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('511901', '四川省巴中市市辖区', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511902', '四川省巴中市巴州区', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511921', '四川省通江县', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511922', '四川省南江县', '511900'); +INSERT INTO `base_administrative_division` VALUES ('511923', '四川省平昌县', '511900'); +INSERT INTO `base_administrative_division` VALUES ('512000', '四川省资阳市', '510000'); +INSERT INTO `base_administrative_division` VALUES ('512001', '四川省资阳市市辖区', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512002', '四川省资阳市雁江区', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512021', '四川省安岳县', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512022', '四川省乐至县', '512000'); +INSERT INTO `base_administrative_division` VALUES ('512081', '四川省简阳市', '512000'); +INSERT INTO `base_administrative_division` VALUES ('513200', '四川省阿坝藏族羌族自治州', '510000'); +INSERT INTO `base_administrative_division` VALUES ('513221', '四川省汶川县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513222', '四川省理县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513223', '四川省茂县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513224', '四川省松潘县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513225', '四川省九寨沟县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513226', '四川省金川县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513227', '四川省小金县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513228', '四川省黑水县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513229', '四川省马尔康县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513230', '四川省壤塘县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513231', '四川省阿坝县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513232', '四川省若尔盖县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513233', '四川省红原县', '513200'); +INSERT INTO `base_administrative_division` VALUES ('513300', '四川省甘孜藏族自治州', '510000'); +INSERT INTO `base_administrative_division` VALUES ('513321', '四川省康定县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513322', '四川省泸定县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513323', '四川省丹巴县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513324', '四川省九龙县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513325', '四川省雅江县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513326', '四川省道孚县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513327', '四川省炉霍县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513328', '四川省甘孜县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513329', '四川省新龙县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513330', '四川省德格县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513331', '四川省白玉县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513332', '四川省石渠县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513333', '四川省色达县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513334', '四川省理塘县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513335', '四川省巴塘县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513336', '四川省乡城县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513337', '四川省稻城县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513338', '四川省得荣县', '513300'); +INSERT INTO `base_administrative_division` VALUES ('513400', '四川省凉山彝族自治州', '510000'); +INSERT INTO `base_administrative_division` VALUES ('513401', '四川省西昌市', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513422', '四川省木里藏族自治县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513423', '四川省盐源县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513424', '四川省德昌县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513425', '四川省会理县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513426', '四川省会东县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513427', '四川省宁南县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513428', '四川省普格县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513429', '四川省布拖县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513430', '四川省金阳县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513431', '四川省昭觉县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513432', '四川省喜德县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513433', '四川省冕宁县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513434', '四川省越西县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513435', '四川省甘洛县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513436', '四川省美姑县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('513437', '四川省雷波县', '513400'); +INSERT INTO `base_administrative_division` VALUES ('520000', '贵州省', '0'); +INSERT INTO `base_administrative_division` VALUES ('520100', '贵州省贵阳市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520101', '贵州省贵阳市市辖区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520102', '贵州省贵阳市南明区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520103', '贵州省贵阳市云岩区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520111', '贵州省贵阳市花溪区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520112', '贵州省贵阳市乌当区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520113', '贵州省贵阳市白云区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520114', '贵州省贵阳市小河区', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520121', '贵州省开阳县', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520122', '贵州省息烽县', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520123', '贵州省修文县', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520181', '贵州省清镇市', '520100'); +INSERT INTO `base_administrative_division` VALUES ('520200', '贵州省六盘水市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520201', '贵州省六盘水市钟山区', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520203', '贵州省六盘水市六枝特区', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520221', '贵州省水城县', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520222', '贵州省盘县', '520200'); +INSERT INTO `base_administrative_division` VALUES ('520300', '贵州省遵义市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520301', '贵州省遵义市市辖区', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520302', '贵州省遵义市红花岗区', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520303', '贵州省遵义市汇川区', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520321', '贵州省遵义县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520322', '贵州省桐梓县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520323', '贵州省绥阳县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520324', '贵州省正安县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520325', '贵州省道真仡佬族苗族自治县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520326', '贵州省务川仡佬族苗族自治县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520327', '贵州省凤冈县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520328', '贵州省湄潭县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520329', '贵州省余庆县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520330', '贵州省习水县', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520381', '贵州省赤水市', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520382', '贵州省仁怀市', '520300'); +INSERT INTO `base_administrative_division` VALUES ('520400', '贵州省安顺市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520401', '贵州省安顺市市辖区', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520402', '贵州省安顺市西秀区', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520421', '贵州省平坝县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520422', '贵州省普定县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520423', '贵州省镇宁布依族苗族自治县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520424', '贵州省关岭布依族苗族自治县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520425', '贵州省紫云苗族布依族自治县', '520400'); +INSERT INTO `base_administrative_division` VALUES ('520500', '贵州省毕节市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520501', '贵州省毕节市市辖区', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520502', '贵州省毕节市七星关区', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520521', '贵州省大方县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520522', '贵州省黔西县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520523', '贵州省金沙县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520524', '贵州省织金县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520525', '贵州省纳雍县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520526', '贵州省威宁彝族回族苗族自治县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520527', '贵州省赫章县', '520500'); +INSERT INTO `base_administrative_division` VALUES ('520600', '贵州省铜仁市', '520000'); +INSERT INTO `base_administrative_division` VALUES ('520601', '贵州省铜仁市市辖区', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520602', '贵州省铜仁市碧江区', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520603', '贵州省铜仁市万山区', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520621', '贵州省江口县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520622', '贵州省玉屏侗族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520623', '贵州省石阡县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520624', '贵州省思南县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520625', '贵州省印江土家族苗族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520626', '贵州省德江县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520627', '贵州省沿河土家族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('520628', '贵州省松桃苗族自治县', '520600'); +INSERT INTO `base_administrative_division` VALUES ('522300', '贵州省黔西南布依族苗族自治州', '520000'); +INSERT INTO `base_administrative_division` VALUES ('522301', '贵州省兴义市', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522322', '贵州省兴仁县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522323', '贵州省普安县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522324', '贵州省晴隆县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522325', '贵州省贞丰县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522326', '贵州省望谟县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522327', '贵州省册亨县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522328', '贵州省安龙县', '522300'); +INSERT INTO `base_administrative_division` VALUES ('522600', '贵州省黔东南苗族侗族自治州', '520000'); +INSERT INTO `base_administrative_division` VALUES ('522601', '贵州省凯里市', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522622', '贵州省黄平县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522623', '贵州省施秉县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522624', '贵州省三穗县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522625', '贵州省镇远县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522626', '贵州省岑巩县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522627', '贵州省天柱县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522628', '贵州省锦屏县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522629', '贵州省剑河县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522630', '贵州省台江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522631', '贵州省黎平县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522632', '贵州省榕江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522633', '贵州省从江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522634', '贵州省雷山县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522635', '贵州省麻江县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522636', '贵州省丹寨县', '522600'); +INSERT INTO `base_administrative_division` VALUES ('522700', '贵州省黔南布依族苗族自治州', '520000'); +INSERT INTO `base_administrative_division` VALUES ('522701', '贵州省都匀市', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522702', '贵州省福泉市', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522722', '贵州省荔波县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522723', '贵州省贵定县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522725', '贵州省瓮安县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522726', '贵州省独山县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522727', '贵州省平塘县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522728', '贵州省罗甸县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522729', '贵州省长顺县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522730', '贵州省龙里县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522731', '贵州省惠水县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('522732', '贵州省三都水族自治县', '522700'); +INSERT INTO `base_administrative_division` VALUES ('530000', '云南省', '0'); +INSERT INTO `base_administrative_division` VALUES ('530100', '云南省昆明市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530101', '云南省昆明市市辖区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530102', '云南省昆明市五华区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530103', '云南省昆明市盘龙区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530111', '云南省昆明市官渡区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530112', '云南省昆明市西山区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530113', '云南省昆明市东川区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530114', '云南省昆明市呈贡区', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530122', '云南省晋宁县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530124', '云南省富民县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530125', '云南省宜良县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530126', '云南省石林彝族自治县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530127', '云南省嵩明县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530128', '云南省禄劝彝族苗族自治县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530129', '云南省寻甸回族彝族自治县', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530181', '云南省安宁市', '530100'); +INSERT INTO `base_administrative_division` VALUES ('530300', '云南省曲靖市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530301', '云南省曲靖市市辖区', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530302', '云南省曲靖市麒麟区', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530321', '云南省马龙县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530322', '云南省陆良县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530323', '云南省师宗县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530324', '云南省罗平县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530325', '云南省富源县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530326', '云南省会泽县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530328', '云南省沾益县', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530381', '云南省宣威市', '530300'); +INSERT INTO `base_administrative_division` VALUES ('530400', '云南省玉溪市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530401', '云南省玉溪市市辖区', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530402', '云南省玉溪市红塔区', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530421', '云南省江川县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530422', '云南省澄江县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530423', '云南省通海县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530424', '云南省华宁县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530425', '云南省易门县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530426', '云南省峨山彝族自治县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530427', '云南省新平彝族傣族自治县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530428', '云南省元江哈尼族彝族傣族自治县', '530400'); +INSERT INTO `base_administrative_division` VALUES ('530500', '云南省保山市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530501', '云南省保山市市辖区', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530502', '云南省保山市隆阳区', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530521', '云南省施甸县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530522', '云南省腾冲县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530523', '云南省龙陵县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530524', '云南省昌宁县', '530500'); +INSERT INTO `base_administrative_division` VALUES ('530600', '云南省昭通市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530601', '云南省昭通市市辖区', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530602', '云南省昭通市昭阳区', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530621', '云南省鲁甸县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530622', '云南省巧家县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530623', '云南省盐津县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530624', '云南省大关县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530625', '云南省永善县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530626', '云南省绥江县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530627', '云南省镇雄县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530628', '云南省彝良县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530629', '云南省威信县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530630', '云南省水富县', '530600'); +INSERT INTO `base_administrative_division` VALUES ('530700', '云南省丽江市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530701', '云南省丽江市市辖区', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530702', '云南省丽江市古城区', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530721', '云南省玉龙纳西族自治县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530722', '云南省永胜县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530723', '云南省华坪县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530724', '云南省宁蒗彝族自治县', '530700'); +INSERT INTO `base_administrative_division` VALUES ('530800', '云南省普洱市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530801', '云南省普洱市市辖区', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530802', '云南省普洱市思茅区', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530821', '云南省宁洱哈尼族彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530822', '云南省墨江哈尼族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530823', '云南省景东彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530824', '云南省景谷傣族彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530825', '云南省镇沅彝族哈尼族拉祜族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530826', '云南省江城哈尼族彝族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530827', '云南省孟连傣族拉祜族佤族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530828', '云南省澜沧拉祜族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530829', '云南省西盟佤族自治县', '530800'); +INSERT INTO `base_administrative_division` VALUES ('530900', '云南省临沧市', '530000'); +INSERT INTO `base_administrative_division` VALUES ('530901', '云南省临沧市市辖区', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530902', '云南省临沧市临翔区', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530921', '云南省凤庆县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530922', '云南省云县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530923', '云南省永德县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530924', '云南省镇康县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530925', '云南省双江拉祜族佤族布朗族傣族自治县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530926', '云南省耿马傣族佤族自治县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('530927', '云南省沧源佤族自治县', '530900'); +INSERT INTO `base_administrative_division` VALUES ('532300', '云南省楚雄彝族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532301', '云南省楚雄市', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532322', '云南省双柏县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532323', '云南省牟定县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532324', '云南省南华县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532325', '云南省姚安县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532326', '云南省大姚县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532327', '云南省永仁县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532328', '云南省元谋县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532329', '云南省武定县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532331', '云南省禄丰县', '532300'); +INSERT INTO `base_administrative_division` VALUES ('532500', '云南省红河哈尼族彝族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532501', '云南省个旧市', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532502', '云南省开远市', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532503', '云南省蒙自市', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532523', '云南省屏边苗族自治县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532524', '云南省建水县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532525', '云南省石屏县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532526', '云南省弥勒县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532527', '云南省泸西县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532528', '云南省元阳县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532529', '云南省红河县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532530', '云南省金平苗族瑶族傣族自治县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532531', '云南省绿春县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532532', '云南省河口瑶族自治县', '532500'); +INSERT INTO `base_administrative_division` VALUES ('532600', '云南省文山壮族苗族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532601', '云南省文山市', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532622', '云南省砚山县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532623', '云南省西畴县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532624', '云南省麻栗坡县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532625', '云南省马关县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532626', '云南省丘北县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532627', '云南省广南县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532628', '云南省富宁县', '532600'); +INSERT INTO `base_administrative_division` VALUES ('532800', '云南省西双版纳傣族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532801', '云南省景洪市', '532800'); +INSERT INTO `base_administrative_division` VALUES ('532822', '云南省勐海县', '532800'); +INSERT INTO `base_administrative_division` VALUES ('532823', '云南省勐腊县', '532800'); +INSERT INTO `base_administrative_division` VALUES ('532900', '云南省大理白族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('532901', '云南省大理市', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532922', '云南省漾濞彝族自治县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532923', '云南省祥云县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532924', '云南省宾川县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532925', '云南省弥渡县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532926', '云南省南涧彝族自治县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532927', '云南省巍山彝族回族自治县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532928', '云南省永平县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532929', '云南省云龙县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532930', '云南省洱源县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532931', '云南省剑川县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('532932', '云南省鹤庆县', '532900'); +INSERT INTO `base_administrative_division` VALUES ('533100', '云南省德宏傣族景颇族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('533102', '云南省瑞丽市', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533103', '云南省芒市', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533122', '云南省梁河县', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533123', '云南省盈江县', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533124', '云南省陇川县', '533100'); +INSERT INTO `base_administrative_division` VALUES ('533300', '云南省怒江傈僳族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('533321', '云南省泸水县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533323', '云南省福贡县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533324', '云南省贡山独龙族怒族自治县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533325', '云南省兰坪白族普米族自治县', '533300'); +INSERT INTO `base_administrative_division` VALUES ('533400', '云南省迪庆藏族自治州', '530000'); +INSERT INTO `base_administrative_division` VALUES ('533421', '云南省香格里拉县', '533400'); +INSERT INTO `base_administrative_division` VALUES ('533422', '云南省德钦县', '533400'); +INSERT INTO `base_administrative_division` VALUES ('533423', '云南省维西傈僳族自治县', '533400'); +INSERT INTO `base_administrative_division` VALUES ('540000', '西藏自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('540100', '西藏拉萨市', '540000'); +INSERT INTO `base_administrative_division` VALUES ('540101', '西藏拉萨市市辖区', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540102', '西藏拉萨市城关区', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540121', '西藏林周县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540122', '西藏当雄县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540123', '西藏尼木县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540124', '西藏曲水县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540125', '西藏堆龙德庆县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540126', '西藏达孜县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('540127', '西藏墨竹工卡县', '540100'); +INSERT INTO `base_administrative_division` VALUES ('542100', '西藏昌都地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542121', '西藏昌都县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542122', '西藏江达县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542123', '西藏贡觉县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542124', '西藏类乌齐县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542125', '西藏丁青县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542126', '西藏察雅县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542127', '西藏八宿县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542128', '西藏左贡县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542129', '西藏芒康县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542132', '西藏洛隆县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542133', '西藏边坝县', '542100'); +INSERT INTO `base_administrative_division` VALUES ('542200', '西藏山南地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542221', '西藏乃东县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542222', '西藏扎囊县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542223', '西藏贡嘎县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542224', '西藏桑日县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542225', '西藏琼结县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542226', '西藏曲松县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542227', '西藏措美县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542228', '西藏洛扎县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542229', '西藏加查县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542231', '西藏隆子县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542232', '西藏错那县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542233', '西藏浪卡子县', '542200'); +INSERT INTO `base_administrative_division` VALUES ('542300', '西藏日喀则地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542301', '西藏日喀则市', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542322', '西藏南木林县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542323', '西藏江孜县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542324', '西藏定日县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542325', '西藏萨迦县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542326', '西藏拉孜县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542327', '西藏昂仁县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542328', '西藏谢通门县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542329', '西藏白朗县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542330', '西藏仁布县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542331', '西藏康马县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542332', '西藏定结县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542333', '西藏仲巴县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542334', '西藏亚东县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542335', '西藏吉隆县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542336', '西藏聂拉木县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542337', '西藏萨嘎县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542338', '西藏岗巴县', '542300'); +INSERT INTO `base_administrative_division` VALUES ('542400', '西藏那曲地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542421', '西藏那曲县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542422', '西藏嘉黎县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542423', '西藏比如县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542424', '西藏聂荣县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542425', '西藏安多县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542426', '西藏申扎县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542427', '西藏索县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542428', '西藏班戈县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542429', '西藏巴青县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542430', '西藏尼玛县', '542400'); +INSERT INTO `base_administrative_division` VALUES ('542500', '西藏阿里地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542521', '西藏普兰县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542522', '西藏札达县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542523', '西藏噶尔县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542524', '西藏日土县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542525', '西藏革吉县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542526', '西藏改则县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542527', '西藏措勤县', '542500'); +INSERT INTO `base_administrative_division` VALUES ('542600', '西藏林芝地区', '540000'); +INSERT INTO `base_administrative_division` VALUES ('542621', '西藏林芝县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542622', '西藏工布江达县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542623', '西藏米林县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542624', '西藏墨脱县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542625', '西藏波密县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542626', '西藏察隅县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('542627', '西藏朗县', '542600'); +INSERT INTO `base_administrative_division` VALUES ('610000', '陕西省', '0'); +INSERT INTO `base_administrative_division` VALUES ('610100', '陕西省西安市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610101', '陕西省西安市市辖区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610102', '陕西省西安市新城区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610103', '陕西省西安市碑林区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610104', '陕西省西安市莲湖区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610111', '陕西省西安市灞桥区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610112', '陕西省西安市未央区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610113', '陕西省西安市雁塔区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610114', '陕西省西安市阎良区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610115', '陕西省西安市临潼区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610116', '陕西省西安市长安区', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610122', '陕西省蓝田县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610124', '陕西省周至县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610125', '陕西省户县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610126', '陕西省高陵县', '610100'); +INSERT INTO `base_administrative_division` VALUES ('610200', '陕西省铜川市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610201', '陕西省铜川市市辖区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610202', '陕西省铜川市王益区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610203', '陕西省铜川市印台区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610204', '陕西省铜川市耀州区', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610222', '陕西省宜君县', '610200'); +INSERT INTO `base_administrative_division` VALUES ('610300', '陕西省宝鸡市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610301', '陕西省宝鸡市市辖区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610302', '陕西省宝鸡市渭滨区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610303', '陕西省宝鸡市金台区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610304', '陕西省宝鸡市陈仓区', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610322', '陕西省凤翔县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610323', '陕西省岐山县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610324', '陕西省扶风县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610326', '陕西省眉县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610327', '陕西省陇县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610328', '陕西省千阳县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610329', '陕西省麟游县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610330', '陕西省凤县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610331', '陕西省太白县', '610300'); +INSERT INTO `base_administrative_division` VALUES ('610400', '陕西省咸阳市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610401', '陕西省咸阳市市辖区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610402', '陕西省咸阳市秦都区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610403', '陕西省杨凌示范区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610404', '陕西省咸阳市渭城区', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610422', '陕西省三原县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610423', '陕西省泾阳县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610424', '陕西省乾县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610425', '陕西省礼泉县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610426', '陕西省永寿县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610427', '陕西省彬县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610428', '陕西省长武县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610429', '陕西省旬邑县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610430', '陕西省淳化县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610431', '陕西省武功县', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610481', '陕西省兴平市', '610400'); +INSERT INTO `base_administrative_division` VALUES ('610500', '陕西省渭南市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610501', '陕西省渭南市市辖区', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610502', '陕西省渭南市临渭区', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610521', '陕西省华县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610522', '陕西省潼关县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610523', '陕西省大荔县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610524', '陕西省合阳县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610525', '陕西省澄城县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610526', '陕西省蒲城县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610527', '陕西省白水县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610528', '陕西省富平县', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610581', '陕西省韩城市', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610582', '陕西省华阴市', '610500'); +INSERT INTO `base_administrative_division` VALUES ('610600', '陕西省延安市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610601', '陕西省延安市市辖区', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610602', '陕西省延安市宝塔区', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610621', '陕西省延长县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610622', '陕西省延川县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610623', '陕西省子长县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610624', '陕西省安塞县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610625', '陕西省志丹县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610626', '陕西省吴起县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610627', '陕西省甘泉县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610628', '陕西省富县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610629', '陕西省洛川县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610630', '陕西省宜川县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610631', '陕西省黄龙县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610632', '陕西省黄陵县', '610600'); +INSERT INTO `base_administrative_division` VALUES ('610700', '陕西省汉中市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610701', '陕西省汉中市市辖区', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610702', '陕西省汉中市汉台区', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610721', '陕西省南郑县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610722', '陕西省城固县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610723', '陕西省洋县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610724', '陕西省西乡县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610725', '陕西省勉县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610726', '陕西省宁强县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610727', '陕西省略阳县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610728', '陕西省镇巴县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610729', '陕西省留坝县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610730', '陕西省佛坪县', '610700'); +INSERT INTO `base_administrative_division` VALUES ('610800', '陕西省榆林市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610801', '陕西省榆林市市辖区', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610802', '陕西省榆林市榆阳区', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610821', '陕西省神木县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610822', '陕西省府谷县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610823', '陕西省横山县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610824', '陕西省靖边县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610825', '陕西省定边县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610826', '陕西省绥德县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610827', '陕西省米脂县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610828', '陕西省佳县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610829', '陕西省吴堡县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610830', '陕西省清涧县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610831', '陕西省子洲县', '610800'); +INSERT INTO `base_administrative_division` VALUES ('610900', '陕西省安康市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('610901', '陕西省安康市市辖区', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610902', '陕西省安康市汉滨区', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610921', '陕西省汉阴县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610922', '陕西省石泉县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610923', '陕西省宁陕县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610924', '陕西省紫阳县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610925', '陕西省岚皋县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610926', '陕西省平利县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610927', '陕西省镇坪县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610928', '陕西省旬阳县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('610929', '陕西省白河县', '610900'); +INSERT INTO `base_administrative_division` VALUES ('611000', '陕西省商洛市', '610000'); +INSERT INTO `base_administrative_division` VALUES ('611001', '陕西省商洛市市辖区', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611002', '陕西省商洛市商州区', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611021', '陕西省洛南县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611022', '陕西省丹凤县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611023', '陕西省商南县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611024', '陕西省山阳县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611025', '陕西省镇安县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('611026', '陕西省柞水县', '611000'); +INSERT INTO `base_administrative_division` VALUES ('620000', '甘肃省', '0'); +INSERT INTO `base_administrative_division` VALUES ('620100', '甘肃省兰州市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620101', '甘肃省兰州市市辖区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620102', '甘肃省兰州市城关区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620103', '甘肃省兰州市七里河区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620104', '甘肃省兰州市西固区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620105', '甘肃省兰州市安宁区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620111', '甘肃省兰州市红古区', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620121', '甘肃省永登县', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620122', '甘肃省皋兰县', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620123', '甘肃省榆中县', '620100'); +INSERT INTO `base_administrative_division` VALUES ('620200', '甘肃省嘉峪关市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620201', '甘肃省嘉峪关市市辖区', '620200'); +INSERT INTO `base_administrative_division` VALUES ('620300', '甘肃省金昌市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620301', '甘肃省金昌市市辖区', '620300'); +INSERT INTO `base_administrative_division` VALUES ('620302', '甘肃省金昌市金川区', '620300'); +INSERT INTO `base_administrative_division` VALUES ('620321', '甘肃省永昌县', '620300'); +INSERT INTO `base_administrative_division` VALUES ('620400', '甘肃省白银市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620401', '甘肃省白银市市辖区', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620402', '甘肃省白银市白银区', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620403', '甘肃省白银市平川区', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620421', '甘肃省靖远县', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620422', '甘肃省会宁县', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620423', '甘肃省景泰县', '620400'); +INSERT INTO `base_administrative_division` VALUES ('620500', '甘肃省天水市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620501', '甘肃省天水市市辖区', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620502', '甘肃省天水市秦州区', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620503', '甘肃省天水市麦积区', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620521', '甘肃省清水县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620522', '甘肃省秦安县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620523', '甘肃省甘谷县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620524', '甘肃省武山县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620525', '甘肃省张家川回族自治县', '620500'); +INSERT INTO `base_administrative_division` VALUES ('620600', '甘肃省武威市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620601', '甘肃省武威市市辖区', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620602', '甘肃省武威市凉州区', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620621', '甘肃省民勤县', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620622', '甘肃省古浪县', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620623', '甘肃省天祝藏族自治县', '620600'); +INSERT INTO `base_administrative_division` VALUES ('620700', '甘肃省张掖市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620701', '甘肃省张掖市市辖区', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620702', '甘肃省张掖市甘州区', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620721', '甘肃省肃南裕固族自治县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620722', '甘肃省民乐县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620723', '甘肃省临泽县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620724', '甘肃省高台县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620725', '甘肃省山丹县', '620700'); +INSERT INTO `base_administrative_division` VALUES ('620800', '甘肃省平凉市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620801', '甘肃省平凉市市辖区', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620802', '甘肃省平凉市崆峒区', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620821', '甘肃省泾川县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620822', '甘肃省灵台县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620823', '甘肃省崇信县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620824', '甘肃省华亭县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620825', '甘肃省庄浪县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620826', '甘肃省静宁县', '620800'); +INSERT INTO `base_administrative_division` VALUES ('620900', '甘肃省酒泉市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('620901', '甘肃省酒泉市市辖区', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620902', '甘肃省酒泉市肃州区', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620921', '甘肃省金塔县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620922', '甘肃省瓜州县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620923', '甘肃省肃北蒙古族自治县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620924', '甘肃省阿克塞哈萨克族自治县', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620981', '甘肃省玉门市', '620900'); +INSERT INTO `base_administrative_division` VALUES ('620982', '甘肃省敦煌市', '620900'); +INSERT INTO `base_administrative_division` VALUES ('621000', '甘肃省庆阳市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('621001', '甘肃省庆阳市市辖区', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621002', '甘肃省庆阳市西峰区', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621021', '甘肃省庆城县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621022', '甘肃省环县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621023', '甘肃省华池县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621024', '甘肃省合水县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621025', '甘肃省正宁县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621026', '甘肃省宁县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621027', '甘肃省镇原县', '621000'); +INSERT INTO `base_administrative_division` VALUES ('621100', '甘肃省定西市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('621101', '甘肃省定西市市辖区', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621102', '甘肃省定西市安定区', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621121', '甘肃省通渭县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621122', '甘肃省陇西县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621123', '甘肃省渭源县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621124', '甘肃省临洮县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621125', '甘肃省漳县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621126', '甘肃省岷县', '621100'); +INSERT INTO `base_administrative_division` VALUES ('621200', '甘肃省陇南市', '620000'); +INSERT INTO `base_administrative_division` VALUES ('621201', '甘肃省陇南市市辖区', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621202', '甘肃省陇南市武都区', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621221', '甘肃省成县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621222', '甘肃省文县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621223', '甘肃省宕昌县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621224', '甘肃省康县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621225', '甘肃省西和县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621226', '甘肃省礼县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621227', '甘肃省徽县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('621228', '甘肃省两当县', '621200'); +INSERT INTO `base_administrative_division` VALUES ('622900', '甘肃省临夏回族自治州', '620000'); +INSERT INTO `base_administrative_division` VALUES ('622901', '甘肃省临夏市', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622921', '甘肃省临夏县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622922', '甘肃省康乐县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622923', '甘肃省永靖县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622924', '甘肃省广河县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622925', '甘肃省和政县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622926', '甘肃省东乡族自治县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('622927', '甘肃省积石山保安族东乡族撒拉族自治县', '622900'); +INSERT INTO `base_administrative_division` VALUES ('623000', '甘肃省甘南藏族自治州', '620000'); +INSERT INTO `base_administrative_division` VALUES ('623001', '甘肃省合作市', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623021', '甘肃省临潭县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623022', '甘肃省卓尼县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623023', '甘肃省舟曲县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623024', '甘肃省迭部县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623025', '甘肃省玛曲县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623026', '甘肃省碌曲县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('623027', '甘肃省夏河县', '623000'); +INSERT INTO `base_administrative_division` VALUES ('630000', '青海省', '0'); +INSERT INTO `base_administrative_division` VALUES ('630100', '青海省西宁市', '630000'); +INSERT INTO `base_administrative_division` VALUES ('630101', '青海省西宁市市辖区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630102', '青海省西宁市城东区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630103', '青海省西宁市城中区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630104', '青海省西宁市城西区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630105', '青海省西宁市城北区', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630121', '青海省大通回族土族自治县', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630122', '青海省湟中县', '630100'); +INSERT INTO `base_administrative_division` VALUES ('630123', '青海省湟源县', '630100'); +INSERT INTO `base_administrative_division` VALUES ('632100', '青海省海东地区', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632121', '青海省平安县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632122', '青海省民和回族土族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632123', '青海省乐都县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632126', '青海省互助土族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632127', '青海省化隆回族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632128', '青海省循化撒拉族自治县', '632100'); +INSERT INTO `base_administrative_division` VALUES ('632200', '青海省海北藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632221', '青海省门源回族自治县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632222', '青海省祁连县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632223', '青海省海晏县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632224', '青海省刚察县', '632200'); +INSERT INTO `base_administrative_division` VALUES ('632300', '青海省黄南藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632321', '青海省同仁县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632322', '青海省尖扎县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632323', '青海省泽库县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632324', '青海省河南蒙古族自治县', '632300'); +INSERT INTO `base_administrative_division` VALUES ('632500', '青海省海南藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632521', '青海省共和县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632522', '青海省同德县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632523', '青海省贵德县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632524', '青海省兴海县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632525', '青海省贵南县', '632500'); +INSERT INTO `base_administrative_division` VALUES ('632600', '青海省果洛藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632621', '青海省玛沁县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632622', '青海省班玛县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632623', '青海省甘德县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632624', '青海省达日县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632625', '青海省久治县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632626', '青海省玛多县', '632600'); +INSERT INTO `base_administrative_division` VALUES ('632700', '青海省玉树藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632721', '青海省玉树县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632722', '青海省杂多县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632723', '青海省称多县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632724', '青海省治多县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632725', '青海省囊谦县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632726', '青海省曲麻莱县', '632700'); +INSERT INTO `base_administrative_division` VALUES ('632800', '青海省海西蒙古族藏族自治州', '630000'); +INSERT INTO `base_administrative_division` VALUES ('632801', '青海省格尔木市', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632802', '青海省德令哈市', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632821', '青海省乌兰县', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632822', '青海省都兰县', '632800'); +INSERT INTO `base_administrative_division` VALUES ('632823', '青海省天峻县', '632800'); +INSERT INTO `base_administrative_division` VALUES ('640000', '宁夏回族自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('640100', '宁夏银川市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640101', '宁夏银川市市辖区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640104', '宁夏银川市兴庆区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640105', '宁夏银川市西夏区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640106', '宁夏银川市金凤区', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640121', '宁夏永宁县', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640122', '宁夏贺兰县', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640181', '宁夏灵武市', '640100'); +INSERT INTO `base_administrative_division` VALUES ('640200', '宁夏石嘴山市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640201', '宁夏石嘴山市市辖区', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640202', '宁夏石嘴山市大武口区', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640205', '宁夏石嘴山市惠农区', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640221', '宁夏平罗县', '640200'); +INSERT INTO `base_administrative_division` VALUES ('640300', '宁夏吴忠市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640301', '宁夏吴忠市市辖区', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640302', '宁夏吴忠市利通区', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640323', '宁夏盐池县', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640324', '宁夏同心县', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640381', '宁夏青铜峡市', '640300'); +INSERT INTO `base_administrative_division` VALUES ('640400', '宁夏固原市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640401', '宁夏固原市市辖区', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640402', '宁夏固原市原州区', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640422', '宁夏西吉县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640423', '宁夏隆德县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640424', '宁夏泾源县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640425', '宁夏彭阳县', '640400'); +INSERT INTO `base_administrative_division` VALUES ('640500', '宁夏中卫市', '640000'); +INSERT INTO `base_administrative_division` VALUES ('640501', '宁夏中卫市市辖区', '640500'); +INSERT INTO `base_administrative_division` VALUES ('640502', '宁夏中卫市沙坡头区', '640500'); +INSERT INTO `base_administrative_division` VALUES ('640521', '宁夏中宁县', '640500'); +INSERT INTO `base_administrative_division` VALUES ('640522', '宁夏海原县', '640500'); +INSERT INTO `base_administrative_division` VALUES ('650000', '新疆维吾尔自治区', '0'); +INSERT INTO `base_administrative_division` VALUES ('650100', '新疆乌鲁木齐市', '650000'); +INSERT INTO `base_administrative_division` VALUES ('650101', '新疆乌鲁木齐市市辖区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650102', '新疆乌鲁木齐市天山区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650103', '新疆乌鲁木齐市沙依巴克区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650104', '新疆乌鲁木齐市新市区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650105', '新疆乌鲁木齐市水磨沟区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650106', '新疆乌鲁木齐市头屯河区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650107', '新疆乌鲁木齐市达坂城区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650109', '新疆乌鲁木齐市米东区', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650121', '新疆乌鲁木齐县', '650100'); +INSERT INTO `base_administrative_division` VALUES ('650200', '新疆克拉玛依市', '650000'); +INSERT INTO `base_administrative_division` VALUES ('650201', '新疆克拉玛依市市辖区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650202', '新疆克拉玛依市独山子区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650203', '新疆克拉玛依市克拉玛依区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650204', '新疆克拉玛依市白碱滩区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('650205', '新疆克拉玛依市乌尔禾区', '650200'); +INSERT INTO `base_administrative_division` VALUES ('652100', '新疆克拉玛依市吐鲁番地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652101', '新疆吐鲁番市', '652100'); +INSERT INTO `base_administrative_division` VALUES ('652122', '新疆鄯善县', '652100'); +INSERT INTO `base_administrative_division` VALUES ('652123', '新疆托克逊县', '652100'); +INSERT INTO `base_administrative_division` VALUES ('652200', '新疆哈密地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652201', '新疆哈密市', '652200'); +INSERT INTO `base_administrative_division` VALUES ('652222', '新疆巴里坤哈萨克自治县', '652200'); +INSERT INTO `base_administrative_division` VALUES ('652223', '新疆伊吾县', '652200'); +INSERT INTO `base_administrative_division` VALUES ('652300', '新疆昌吉回族自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652301', '新疆昌吉市', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652302', '新疆阜康市', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652323', '新疆呼图壁县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652324', '新疆玛纳斯县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652325', '新疆奇台县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652327', '新疆吉木萨尔县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652328', '新疆木垒哈萨克自治县', '652300'); +INSERT INTO `base_administrative_division` VALUES ('652700', '新疆博尔塔拉蒙古自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652701', '新疆博乐市', '652700'); +INSERT INTO `base_administrative_division` VALUES ('652722', '新疆精河县', '652700'); +INSERT INTO `base_administrative_division` VALUES ('652723', '新疆温泉县', '652700'); +INSERT INTO `base_administrative_division` VALUES ('652800', '新疆巴音郭楞蒙古自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652801', '新疆库尔勒市', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652822', '新疆轮台县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652823', '新疆尉犁县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652824', '新疆若羌县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652825', '新疆且末县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652826', '新疆焉耆回族自治县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652827', '新疆和静县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652828', '新疆和硕县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652829', '新疆博湖县', '652800'); +INSERT INTO `base_administrative_division` VALUES ('652900', '新疆阿克苏地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('652901', '新疆阿克苏市', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652922', '新疆温宿县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652923', '新疆库车县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652924', '新疆沙雅县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652925', '新疆新和县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652926', '新疆拜城县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652927', '新疆乌什县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652928', '新疆阿瓦提县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('652929', '新疆柯坪县', '652900'); +INSERT INTO `base_administrative_division` VALUES ('653000', '新疆克孜勒苏柯尔克孜自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('653001', '新疆阿图什市', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653022', '新疆阿克陶县', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653023', '新疆阿合奇县', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653024', '新疆乌恰县', '653000'); +INSERT INTO `base_administrative_division` VALUES ('653100', '新疆喀什地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('653101', '新疆喀什市', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653121', '新疆疏附县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653122', '新疆疏勒县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653123', '新疆英吉沙县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653124', '新疆泽普县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653125', '新疆莎车县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653126', '新疆叶城县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653127', '新疆麦盖提县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653128', '新疆岳普湖县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653129', '新疆伽师县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653130', '新疆巴楚县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653131', '新疆塔什库尔干塔吉克自治县', '653100'); +INSERT INTO `base_administrative_division` VALUES ('653200', '新疆和田地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('653201', '新疆和田市', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653221', '新疆和田县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653222', '新疆墨玉县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653223', '新疆皮山县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653224', '新疆洛浦县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653225', '新疆策勒县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653226', '新疆于田县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('653227', '新疆民丰县', '653200'); +INSERT INTO `base_administrative_division` VALUES ('654000', '新疆伊犁哈萨克自治州', '650000'); +INSERT INTO `base_administrative_division` VALUES ('654002', '新疆伊宁市', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654003', '新疆奎屯市', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654021', '新疆伊宁县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654022', '新疆察布查尔锡伯自治县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654023', '新疆霍城县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654024', '新疆巩留县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654025', '新疆新源县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654026', '新疆昭苏县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654027', '新疆特克斯县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654028', '新疆尼勒克县', '654000'); +INSERT INTO `base_administrative_division` VALUES ('654200', '新疆塔城地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('654201', '新疆塔城市', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654202', '新疆乌苏市', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654221', '新疆额敏县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654223', '新疆沙湾县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654224', '新疆托里县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654225', '新疆裕民县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654226', '新疆和布克赛尔蒙古自治县', '654200'); +INSERT INTO `base_administrative_division` VALUES ('654300', '新疆阿勒泰地区', '650000'); +INSERT INTO `base_administrative_division` VALUES ('654301', '新疆阿勒泰市', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654321', '新疆布尔津县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654322', '新疆富蕴县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654323', '新疆福海县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654324', '新疆哈巴河县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654325', '新疆青河县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('654326', '新疆吉木乃县', '654300'); +INSERT INTO `base_administrative_division` VALUES ('659000', '新疆省直辖县级行政区划', '650000'); +INSERT INTO `base_administrative_division` VALUES ('659001', '新疆石河子市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('659002', '新疆阿拉尔市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('659003', '新疆图木舒克市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('659004', '新疆五家渠市', '659000'); +INSERT INTO `base_administrative_division` VALUES ('710000', '台湾省', '0'); +INSERT INTO `base_administrative_division` VALUES ('810000', '香港特别行政区', '0'); +INSERT INTO `base_administrative_division` VALUES ('820000', '澳门特别行政区', '0'); + +-- ---------------------------- +-- Records of base_college +-- ---------------------------- +INSERT INTO `base_college` VALUES ('01', '航空学院', '1'); +INSERT INTO `base_college` VALUES ('02', '航天学院', '2'); +INSERT INTO `base_college` VALUES ('03', '航海学院', '3'); +INSERT INTO `base_college` VALUES ('04', '材料学院', '4'); +INSERT INTO `base_college` VALUES ('05', '机电学院', '5'); +INSERT INTO `base_college` VALUES ('06', '力学与土木建筑学院', '6'); +INSERT INTO `base_college` VALUES ('07', '动力与能源学院', '7'); +INSERT INTO `base_college` VALUES ('08', '电子信息学院', '8'); +INSERT INTO `base_college` VALUES ('09', '自动化学院', '9'); +INSERT INTO `base_college` VALUES ('10', '计算机学院', '10'); +INSERT INTO `base_college` VALUES ('11', '理学院', '11'); +INSERT INTO `base_college` VALUES ('12', '管理学院', '12'); +INSERT INTO `base_college` VALUES ('13', '人文与经法学院', '13'); +INSERT INTO `base_college` VALUES ('14', '软件学院', '14'); +INSERT INTO `base_college` VALUES ('15', '生命学院', '15'); +INSERT INTO `base_college` VALUES ('16', '外国语学院', '16'); +INSERT INTO `base_college` VALUES ('17', '教育实验学院', '17'); +INSERT INTO `base_college` VALUES ('18', '西北工业大学伦敦玛丽女王大学工程学院', '18'); +INSERT INTO `base_college` VALUES ('19', '马克思主义学院', '19'); +INSERT INTO `base_college` VALUES ('20', '微电子学院', '20'); +INSERT INTO `base_college` VALUES ('21', '网络空间安全学院', '21'); +INSERT INTO `base_college` VALUES ('22', '民航学院', '22'); + +-- ---------------------------- +-- Records of base_ethnic +-- ---------------------------- +INSERT INTO `base_ethnic` VALUES ('00', '----'); +INSERT INTO `base_ethnic` VALUES ('01', '汉族'); +INSERT INTO `base_ethnic` VALUES ('02', '蒙古族'); +INSERT INTO `base_ethnic` VALUES ('03', '回族'); +INSERT INTO `base_ethnic` VALUES ('04', '藏族'); +INSERT INTO `base_ethnic` VALUES ('05', '维吾尔族'); +INSERT INTO `base_ethnic` VALUES ('06', '苗族'); +INSERT INTO `base_ethnic` VALUES ('07', '彝族'); +INSERT INTO `base_ethnic` VALUES ('08', '壮族'); +INSERT INTO `base_ethnic` VALUES ('09', '布依族'); +INSERT INTO `base_ethnic` VALUES ('10', '朝鲜族'); +INSERT INTO `base_ethnic` VALUES ('11', '满族'); +INSERT INTO `base_ethnic` VALUES ('12', '侗族'); +INSERT INTO `base_ethnic` VALUES ('13', '瑶族'); +INSERT INTO `base_ethnic` VALUES ('14', '白族'); +INSERT INTO `base_ethnic` VALUES ('15', '土家族'); +INSERT INTO `base_ethnic` VALUES ('16', '哈尼族'); +INSERT INTO `base_ethnic` VALUES ('17', '哈萨克族'); +INSERT INTO `base_ethnic` VALUES ('18', '傣族'); +INSERT INTO `base_ethnic` VALUES ('19', '黎族'); +INSERT INTO `base_ethnic` VALUES ('20', '傈傈族'); +INSERT INTO `base_ethnic` VALUES ('21', '佤族'); +INSERT INTO `base_ethnic` VALUES ('22', '畲族'); +INSERT INTO `base_ethnic` VALUES ('23', '高山族'); +INSERT INTO `base_ethnic` VALUES ('24', '拉祜族'); +INSERT INTO `base_ethnic` VALUES ('25', '水族'); +INSERT INTO `base_ethnic` VALUES ('26', '东乡族'); +INSERT INTO `base_ethnic` VALUES ('27', '纳西族'); +INSERT INTO `base_ethnic` VALUES ('28', '景颇族'); +INSERT INTO `base_ethnic` VALUES ('29', '柯尔克孜族'); +INSERT INTO `base_ethnic` VALUES ('30', '土族'); +INSERT INTO `base_ethnic` VALUES ('31', '达斡尔族'); +INSERT INTO `base_ethnic` VALUES ('32', '仫佬族'); +INSERT INTO `base_ethnic` VALUES ('33', '羌族'); +INSERT INTO `base_ethnic` VALUES ('34', '布朗族'); +INSERT INTO `base_ethnic` VALUES ('35', '撒拉族'); +INSERT INTO `base_ethnic` VALUES ('36', '毛难族'); +INSERT INTO `base_ethnic` VALUES ('37', '仡佬族'); +INSERT INTO `base_ethnic` VALUES ('38', '锡伯族'); +INSERT INTO `base_ethnic` VALUES ('39', '阿昌族'); +INSERT INTO `base_ethnic` VALUES ('40', '普米族'); +INSERT INTO `base_ethnic` VALUES ('41', '塔吉克族'); +INSERT INTO `base_ethnic` VALUES ('42', '怒族'); +INSERT INTO `base_ethnic` VALUES ('43', '乌孜别克族'); +INSERT INTO `base_ethnic` VALUES ('44', '俄罗斯族'); +INSERT INTO `base_ethnic` VALUES ('45', '鄂温克族'); +INSERT INTO `base_ethnic` VALUES ('46', '崩龙族'); +INSERT INTO `base_ethnic` VALUES ('47', '保安族'); +INSERT INTO `base_ethnic` VALUES ('48', '裕固族'); +INSERT INTO `base_ethnic` VALUES ('49', '京族'); +INSERT INTO `base_ethnic` VALUES ('50', '塔塔尔族'); +INSERT INTO `base_ethnic` VALUES ('51', '独龙族'); +INSERT INTO `base_ethnic` VALUES ('52', '鄂伦春族'); +INSERT INTO `base_ethnic` VALUES ('53', '赫哲族'); +INSERT INTO `base_ethnic` VALUES ('54', '门巴族'); +INSERT INTO `base_ethnic` VALUES ('55', '珞巴族'); +INSERT INTO `base_ethnic` VALUES ('56', '基诺族'); +INSERT INTO `base_ethnic` VALUES ('97', '其他'); +INSERT INTO `base_ethnic` VALUES ('98', '外国血统'); + +-- ---------------------------- +-- Records of base_major +-- ---------------------------- +INSERT INTO `base_major` VALUES ('010100', '哲学类'); +INSERT INTO `base_major` VALUES ('010101', '哲学'); +INSERT INTO `base_major` VALUES ('010102', '逻辑学'); +INSERT INTO `base_major` VALUES ('010103', '宗教学'); +INSERT INTO `base_major` VALUES ('010104', '伦理学'); +INSERT INTO `base_major` VALUES ('01010J', '哲学基地班'); +INSERT INTO `base_major` VALUES ('01SY00', '人文科学试验班类'); +INSERT INTO `base_major` VALUES ('01SY01', '人文科学试验班'); +INSERT INTO `base_major` VALUES ('020100', '经济学类'); +INSERT INTO `base_major` VALUES ('020101', '经济学'); +INSERT INTO `base_major` VALUES ('020102', '国际经济与贸易'); +INSERT INTO `base_major` VALUES ('020103', '财政学'); +INSERT INTO `base_major` VALUES ('020104', '金融学'); +INSERT INTO `base_major` VALUES ('020105', '国民经济管理'); +INSERT INTO `base_major` VALUES ('020106', '贸易经济'); +INSERT INTO `base_major` VALUES ('020107', '保险'); +INSERT INTO `base_major` VALUES ('020108', '环境经济'); +INSERT INTO `base_major` VALUES ('020109', '金融工程'); +INSERT INTO `base_major` VALUES ('02010J', '经济学基地班'); +INSERT INTO `base_major` VALUES ('020110', '税务'); +INSERT INTO `base_major` VALUES ('020111', '信用管理'); +INSERT INTO `base_major` VALUES ('020112', '网络经济学'); +INSERT INTO `base_major` VALUES ('020113', '体育经济'); +INSERT INTO `base_major` VALUES ('020114', '投资学'); +INSERT INTO `base_major` VALUES ('020115', '环境资源与发展经济学'); +INSERT INTO `base_major` VALUES ('020116', '海洋经济学'); +INSERT INTO `base_major` VALUES ('020117', '国际文化贸易'); +INSERT INTO `base_major` VALUES ('020119', '金融数学'); +INSERT INTO `base_major` VALUES ('020120', '经济与金融'); +INSERT INTO `base_major` VALUES ('020121', '能源经济'); +INSERT INTO `base_major` VALUES ('020303', '保险学'); +INSERT INTO `base_major` VALUES ('030100', '法学类'); +INSERT INTO `base_major` VALUES ('030101', '法学'); +INSERT INTO `base_major` VALUES ('030102', '知识产权法'); +INSERT INTO `base_major` VALUES ('030103', '知识产权'); +INSERT INTO `base_major` VALUES ('030120', '监狱学'); +INSERT INTO `base_major` VALUES ('030200', '马克思主义理论类'); +INSERT INTO `base_major` VALUES ('030201', '科学社会主义与国际共产主义运动'); +INSERT INTO `base_major` VALUES ('030202', '中国革命史与中国共产党党史'); +INSERT INTO `base_major` VALUES ('030300', '社会学类'); +INSERT INTO `base_major` VALUES ('030301', '社会学'); +INSERT INTO `base_major` VALUES ('030302', '社会工作'); +INSERT INTO `base_major` VALUES ('030303', '家政学'); +INSERT INTO `base_major` VALUES ('030304', '人类学'); +INSERT INTO `base_major` VALUES ('030305', '女性学'); +INSERT INTO `base_major` VALUES ('030400', '政治学类'); +INSERT INTO `base_major` VALUES ('030401', '政治学与行政学'); +INSERT INTO `base_major` VALUES ('030402', '国际政治'); +INSERT INTO `base_major` VALUES ('030403', '外交学'); +INSERT INTO `base_major` VALUES ('030404', '思想政治教育'); +INSERT INTO `base_major` VALUES ('030405', '国际文化交流'); +INSERT INTO `base_major` VALUES ('030406', '国际政治经济学'); +INSERT INTO `base_major` VALUES ('030407', '国际事务'); +INSERT INTO `base_major` VALUES ('030408', '国际事务与国际关系'); +INSERT INTO `base_major` VALUES ('030409', '欧洲事务与欧洲关系'); +INSERT INTO `base_major` VALUES ('030500', '公安学类'); +INSERT INTO `base_major` VALUES ('030501', '治安学'); +INSERT INTO `base_major` VALUES ('030502', '侦查学'); +INSERT INTO `base_major` VALUES ('030503', '边防管理'); +INSERT INTO `base_major` VALUES ('030504', '火灾勘查'); +INSERT INTO `base_major` VALUES ('030505', '禁毒学'); +INSERT INTO `base_major` VALUES ('030506', '警犬技术'); +INSERT INTO `base_major` VALUES ('030507', '经济犯罪侦查'); +INSERT INTO `base_major` VALUES ('030508', '边防指挥'); +INSERT INTO `base_major` VALUES ('030509', '消防指挥'); +INSERT INTO `base_major` VALUES ('030510', '警卫学'); +INSERT INTO `base_major` VALUES ('030511', '公安情报学'); +INSERT INTO `base_major` VALUES ('030512', '犯罪学'); +INSERT INTO `base_major` VALUES ('030513', '公安管理学'); +INSERT INTO `base_major` VALUES ('030514', '涉外警务'); +INSERT INTO `base_major` VALUES ('030515', '国内安全保卫'); +INSERT INTO `base_major` VALUES ('030516', '警务指挥与战术'); +INSERT INTO `base_major` VALUES ('03SY01', '社会科学试验班'); +INSERT INTO `base_major` VALUES ('040100', '教育学类'); +INSERT INTO `base_major` VALUES ('040101', '教育学'); +INSERT INTO `base_major` VALUES ('040102', '学前教育'); +INSERT INTO `base_major` VALUES ('040103', '特殊教育'); +INSERT INTO `base_major` VALUES ('040104', '教育技术学'); +INSERT INTO `base_major` VALUES ('040105', '小学教育'); +INSERT INTO `base_major` VALUES ('040106', '艺术教育'); +INSERT INTO `base_major` VALUES ('040107', '人文教育'); +INSERT INTO `base_major` VALUES ('040108', '科学教育'); +INSERT INTO `base_major` VALUES ('040109', '言语听觉科学'); +INSERT INTO `base_major` VALUES ('040110', '华文教育'); +INSERT INTO `base_major` VALUES ('040200', '体育学类'); +INSERT INTO `base_major` VALUES ('040201', '体育教育'); +INSERT INTO `base_major` VALUES ('040202', '运动训练'); +INSERT INTO `base_major` VALUES ('040203', '社会体育'); +INSERT INTO `base_major` VALUES ('040204', '运动人体科学'); +INSERT INTO `base_major` VALUES ('040205', '民族传统体育'); +INSERT INTO `base_major` VALUES ('040206', '运动康复与健康'); +INSERT INTO `base_major` VALUES ('040207', '休闲体育'); +INSERT INTO `base_major` VALUES ('040300', '职业技术教育类'); +INSERT INTO `base_major` VALUES ('040301', '农艺教育'); +INSERT INTO `base_major` VALUES ('040302', '园艺教育'); +INSERT INTO `base_major` VALUES ('040303', '特用作物教育'); +INSERT INTO `base_major` VALUES ('040304', '林木生产教育'); +INSERT INTO `base_major` VALUES ('040305', '特用动物教育'); +INSERT INTO `base_major` VALUES ('040306', '畜禽生产教育'); +INSERT INTO `base_major` VALUES ('040307', '水产养殖教育'); +INSERT INTO `base_major` VALUES ('040308', '应用生物教育'); +INSERT INTO `base_major` VALUES ('040309', '农业机械教育'); +INSERT INTO `base_major` VALUES ('040310', '农业建筑与环境控制教育'); +INSERT INTO `base_major` VALUES ('040311', '农产品储运与加工教育'); +INSERT INTO `base_major` VALUES ('040312', '农业经营管理教育'); +INSERT INTO `base_major` VALUES ('040313', '机械制造工艺教育'); +INSERT INTO `base_major` VALUES ('040314', '机械维修及检测技术教育'); +INSERT INTO `base_major` VALUES ('040315', '机电技术教育'); +INSERT INTO `base_major` VALUES ('040316', '电气技术教育'); +INSERT INTO `base_major` VALUES ('040317', '汽车维修工程教育'); +INSERT INTO `base_major` VALUES ('040318', '应用电子技术教育'); +INSERT INTO `base_major` VALUES ('040319', '制浆造纸工艺教育'); +INSERT INTO `base_major` VALUES ('040320', '印刷工艺教育'); +INSERT INTO `base_major` VALUES ('040321', '橡塑制品成型工艺教育'); +INSERT INTO `base_major` VALUES ('040322', '食品工艺教育'); +INSERT INTO `base_major` VALUES ('040323', '纺织工艺教育'); +INSERT INTO `base_major` VALUES ('040324', '染整工艺教育'); +INSERT INTO `base_major` VALUES ('040325', '化工工艺教育'); +INSERT INTO `base_major` VALUES ('040326', '化工分析与检测技术教育'); +INSERT INTO `base_major` VALUES ('040327', '建筑材料工程教育'); +INSERT INTO `base_major` VALUES ('040328', '建筑工程教育'); +INSERT INTO `base_major` VALUES ('040329', '服装设计与工艺教育'); +INSERT INTO `base_major` VALUES ('040330', '装潢设计与工艺教育'); +INSERT INTO `base_major` VALUES ('040331', '旅游管理与服务教育'); +INSERT INTO `base_major` VALUES ('040332', '食品营养与检验教育'); +INSERT INTO `base_major` VALUES ('040333', '烹饪与营养教育'); +INSERT INTO `base_major` VALUES ('040334', '财务会计教育'); +INSERT INTO `base_major` VALUES ('040335', '文秘教育'); +INSERT INTO `base_major` VALUES ('040336', '市场营销教育'); +INSERT INTO `base_major` VALUES ('040337', '职业技术教育管理'); +INSERT INTO `base_major` VALUES ('050100', '中国语言文学类'); +INSERT INTO `base_major` VALUES ('050101', '汉语言文学'); +INSERT INTO `base_major` VALUES ('050102', '汉语言'); +INSERT INTO `base_major` VALUES ('050103', '对外汉语'); +INSERT INTO `base_major` VALUES ('050104', '中国少数民族语言文学'); +INSERT INTO `base_major` VALUES ('050105', '古典文献'); +INSERT INTO `base_major` VALUES ('050106', '中国语言文化'); +INSERT INTO `base_major` VALUES ('050107', '应用语言学'); +INSERT INTO `base_major` VALUES ('05010J', '中国语言文学基地班'); +INSERT INTO `base_major` VALUES ('050200', '外国语言文学类'); +INSERT INTO `base_major` VALUES ('050201', '英语'); +INSERT INTO `base_major` VALUES ('050202', '俄语'); +INSERT INTO `base_major` VALUES ('050203', '德语'); +INSERT INTO `base_major` VALUES ('050204', '法语'); +INSERT INTO `base_major` VALUES ('050205', '西班牙语'); +INSERT INTO `base_major` VALUES ('050206', '阿拉伯语'); +INSERT INTO `base_major` VALUES ('050207', '日语'); +INSERT INTO `base_major` VALUES ('050208', '波斯语'); +INSERT INTO `base_major` VALUES ('050209', '朝鲜语'); +INSERT INTO `base_major` VALUES ('050210', '菲律宾语'); +INSERT INTO `base_major` VALUES ('050211', '梵语巴利语'); +INSERT INTO `base_major` VALUES ('050212', '印度尼西亚语'); +INSERT INTO `base_major` VALUES ('050213', '印地语'); +INSERT INTO `base_major` VALUES ('050214', '柬埔寨语'); +INSERT INTO `base_major` VALUES ('050215', '老挝语'); +INSERT INTO `base_major` VALUES ('050216', '缅甸语'); +INSERT INTO `base_major` VALUES ('050217', '马来语'); +INSERT INTO `base_major` VALUES ('050218', '蒙古语'); +INSERT INTO `base_major` VALUES ('050219', '僧加罗语'); +INSERT INTO `base_major` VALUES ('050220', '泰语'); +INSERT INTO `base_major` VALUES ('050221', '乌尔都语'); +INSERT INTO `base_major` VALUES ('050222', '希伯莱语'); +INSERT INTO `base_major` VALUES ('050223', '越南语'); +INSERT INTO `base_major` VALUES ('050224', '豪萨语'); +INSERT INTO `base_major` VALUES ('050225', '斯瓦希里语'); +INSERT INTO `base_major` VALUES ('050226', '阿尔巴尼亚语'); +INSERT INTO `base_major` VALUES ('050227', '保加利亚语'); +INSERT INTO `base_major` VALUES ('050228', '波兰语'); +INSERT INTO `base_major` VALUES ('050229', '捷克语'); +INSERT INTO `base_major` VALUES ('050230', '罗马尼亚语'); +INSERT INTO `base_major` VALUES ('050231', '葡萄牙语'); +INSERT INTO `base_major` VALUES ('050232', '瑞典语'); +INSERT INTO `base_major` VALUES ('050233', '塞尔维亚—克罗地亚语'); +INSERT INTO `base_major` VALUES ('050234', '土耳其语'); +INSERT INTO `base_major` VALUES ('050235', '希腊语'); +INSERT INTO `base_major` VALUES ('050236', '匈牙利语'); +INSERT INTO `base_major` VALUES ('050237', '意大利语'); +INSERT INTO `base_major` VALUES ('050238', '捷克语—斯洛伐克语'); +INSERT INTO `base_major` VALUES ('050239', '泰米尔语'); +INSERT INTO `base_major` VALUES ('050240', '普什图语'); +INSERT INTO `base_major` VALUES ('050241', '世界语'); +INSERT INTO `base_major` VALUES ('050242', '孟加拉语'); +INSERT INTO `base_major` VALUES ('050243', '尼泊尔语'); +INSERT INTO `base_major` VALUES ('050244', '塞尔维亚语—克罗地亚语'); +INSERT INTO `base_major` VALUES ('050245', '荷兰语'); +INSERT INTO `base_major` VALUES ('050246', '芬兰语'); +INSERT INTO `base_major` VALUES ('050247', '乌克兰语'); +INSERT INTO `base_major` VALUES ('050248', '韩国语'); +INSERT INTO `base_major` VALUES ('050249', '商务英语'); +INSERT INTO `base_major` VALUES ('050250', '塞尔维亚语'); +INSERT INTO `base_major` VALUES ('050251', '克罗地亚语'); +INSERT INTO `base_major` VALUES ('050252', '挪威语'); +INSERT INTO `base_major` VALUES ('050253', '丹麦语'); +INSERT INTO `base_major` VALUES ('050254', '冰岛语'); +INSERT INTO `base_major` VALUES ('050255', '翻译'); +INSERT INTO `base_major` VALUES ('050300', '新闻传播学类'); +INSERT INTO `base_major` VALUES ('050301', '新闻学'); +INSERT INTO `base_major` VALUES ('050302', '广播电视新闻学'); +INSERT INTO `base_major` VALUES ('050303', '广告学'); +INSERT INTO `base_major` VALUES ('050304', '编辑出版学'); +INSERT INTO `base_major` VALUES ('050305', '传播学'); +INSERT INTO `base_major` VALUES ('050306', '媒体创意'); +INSERT INTO `base_major` VALUES ('050307', '新媒体与信息网络'); +INSERT INTO `base_major` VALUES ('050308', '数字出版'); +INSERT INTO `base_major` VALUES ('050400', '艺术类'); +INSERT INTO `base_major` VALUES ('050401', '音乐学'); +INSERT INTO `base_major` VALUES ('050402', '作曲与作曲技术理论'); +INSERT INTO `base_major` VALUES ('050403', '音乐表演'); +INSERT INTO `base_major` VALUES ('050404', '绘画'); +INSERT INTO `base_major` VALUES ('050405', '雕塑'); +INSERT INTO `base_major` VALUES ('050406', '美术学'); +INSERT INTO `base_major` VALUES ('050407', '艺术设计学'); +INSERT INTO `base_major` VALUES ('050408', '艺术设计'); +INSERT INTO `base_major` VALUES ('050409', '舞蹈学'); +INSERT INTO `base_major` VALUES ('050410', '舞蹈编导'); +INSERT INTO `base_major` VALUES ('050411', '戏剧学'); +INSERT INTO `base_major` VALUES ('050412', '表演'); +INSERT INTO `base_major` VALUES ('050413', '导演'); +INSERT INTO `base_major` VALUES ('050414', '戏剧影视文学'); +INSERT INTO `base_major` VALUES ('050415', '戏剧影视美术设计'); +INSERT INTO `base_major` VALUES ('050416', '摄影'); +INSERT INTO `base_major` VALUES ('050417', '录音艺术'); +INSERT INTO `base_major` VALUES ('050418', '动画'); +INSERT INTO `base_major` VALUES ('050419', '播音与主持艺术'); +INSERT INTO `base_major` VALUES ('050420', '广播电视编导'); +INSERT INTO `base_major` VALUES ('050422', '艺术学'); +INSERT INTO `base_major` VALUES ('050423', '影视学'); +INSERT INTO `base_major` VALUES ('050424', '广播影视编导'); +INSERT INTO `base_major` VALUES ('050425', '书法学'); +INSERT INTO `base_major` VALUES ('050426', '照明艺术'); +INSERT INTO `base_major` VALUES ('050427', '会展艺术与技术'); +INSERT INTO `base_major` VALUES ('050428', '音乐科技与艺术'); +INSERT INTO `base_major` VALUES ('050429', '中国画'); +INSERT INTO `base_major` VALUES ('050430', '公共艺术'); +INSERT INTO `base_major` VALUES ('050431', '数字游戏设计'); +INSERT INTO `base_major` VALUES ('050432', '数字电影技术'); +INSERT INTO `base_major` VALUES ('05SY00', '文科试验班类'); +INSERT INTO `base_major` VALUES ('060100', '历史学类'); +INSERT INTO `base_major` VALUES ('060101', '历史学'); +INSERT INTO `base_major` VALUES ('060102', '世界历史'); +INSERT INTO `base_major` VALUES ('060103', '考古学'); +INSERT INTO `base_major` VALUES ('060104', '博物馆学'); +INSERT INTO `base_major` VALUES ('060105', '民族学'); +INSERT INTO `base_major` VALUES ('060106', '文物保护技术'); +INSERT INTO `base_major` VALUES ('06010J', '历史学基地班'); +INSERT INTO `base_major` VALUES ('070100', '数学类'); +INSERT INTO `base_major` VALUES ('070101', '数学与应用数学'); +INSERT INTO `base_major` VALUES ('070102', '信息与计算科学'); +INSERT INTO `base_major` VALUES ('070103', '数理基础科学'); +INSERT INTO `base_major` VALUES ('07010J', '数学基地班'); +INSERT INTO `base_major` VALUES ('070200', '物理学类'); +INSERT INTO `base_major` VALUES ('070201', '物理学'); +INSERT INTO `base_major` VALUES ('070202', '应用物理学'); +INSERT INTO `base_major` VALUES ('070203', '声学'); +INSERT INTO `base_major` VALUES ('070204', '核物理'); +INSERT INTO `base_major` VALUES ('07020J', '物理学基地班'); +INSERT INTO `base_major` VALUES ('070300', '化学类'); +INSERT INTO `base_major` VALUES ('070301', '化学'); +INSERT INTO `base_major` VALUES ('070302', '应用化学'); +INSERT INTO `base_major` VALUES ('070303', '化学生物学'); +INSERT INTO `base_major` VALUES ('070304', '分子科学与工程'); +INSERT INTO `base_major` VALUES ('07030J', '化学基地班'); +INSERT INTO `base_major` VALUES ('070400', '生物科学类'); +INSERT INTO `base_major` VALUES ('070401', '生物科学'); +INSERT INTO `base_major` VALUES ('070402', '生物技术'); +INSERT INTO `base_major` VALUES ('070403', '生物信息学'); +INSERT INTO `base_major` VALUES ('070404', '生物信息技术'); +INSERT INTO `base_major` VALUES ('070405', '生物科学与生物技术'); +INSERT INTO `base_major` VALUES ('070406', '动植物检疫'); +INSERT INTO `base_major` VALUES ('070407', '生物化学与分子生物学'); +INSERT INTO `base_major` VALUES ('070408', '医学信息学'); +INSERT INTO `base_major` VALUES ('070409', '植物生物技术'); +INSERT INTO `base_major` VALUES ('07040J', '生物学基地班'); +INSERT INTO `base_major` VALUES ('070410', '动物生物技术'); +INSERT INTO `base_major` VALUES ('070411', '生物资源科学'); +INSERT INTO `base_major` VALUES ('070412', '生物安全'); +INSERT INTO `base_major` VALUES ('070413', '生物医学英语'); +INSERT INTO `base_major` VALUES ('07041J', '生命科学与技术基地班'); +INSERT INTO `base_major` VALUES ('070500', '天文学类'); +INSERT INTO `base_major` VALUES ('070501', '天文学'); +INSERT INTO `base_major` VALUES ('070600', '地质学类'); +INSERT INTO `base_major` VALUES ('070601', '地质学'); +INSERT INTO `base_major` VALUES ('070602', '地球化学'); +INSERT INTO `base_major` VALUES ('07060J', '地质学基地班'); +INSERT INTO `base_major` VALUES ('070700', '地理科学类'); +INSERT INTO `base_major` VALUES ('070701', '地理科学'); +INSERT INTO `base_major` VALUES ('070702', '资源环境与城乡规划管理'); +INSERT INTO `base_major` VALUES ('070703', '地理信息系统'); +INSERT INTO `base_major` VALUES ('070704', '地球信息科学与技术'); +INSERT INTO `base_major` VALUES ('07070J', '地理学基地班'); +INSERT INTO `base_major` VALUES ('070800', '地球物理学类'); +INSERT INTO `base_major` VALUES ('070801', '地球物理学'); +INSERT INTO `base_major` VALUES ('070802', '地球与空间科学'); +INSERT INTO `base_major` VALUES ('070803', '空间科学与技术'); +INSERT INTO `base_major` VALUES ('070900', '大气科学类'); +INSERT INTO `base_major` VALUES ('070901', '大气科学'); +INSERT INTO `base_major` VALUES ('070902', '应用气象学'); +INSERT INTO `base_major` VALUES ('071000', '海洋科学类'); +INSERT INTO `base_major` VALUES ('071001', '海洋科学'); +INSERT INTO `base_major` VALUES ('071002', '海洋技术'); +INSERT INTO `base_major` VALUES ('071003', '海洋管理'); +INSERT INTO `base_major` VALUES ('071004', '军事海洋学'); +INSERT INTO `base_major` VALUES ('071005', '海洋生物资源与环境'); +INSERT INTO `base_major` VALUES ('071100', '力学类'); +INSERT INTO `base_major` VALUES ('071101', '理论与应用力学'); +INSERT INTO `base_major` VALUES ('071200', '电子信息科学类'); +INSERT INTO `base_major` VALUES ('071201', '电子信息科学与技术'); +INSERT INTO `base_major` VALUES ('071202', '微电子学'); +INSERT INTO `base_major` VALUES ('071203', '光信息科学与技术'); +INSERT INTO `base_major` VALUES ('071204', '科技防卫'); +INSERT INTO `base_major` VALUES ('071205', '信息安全'); +INSERT INTO `base_major` VALUES ('071206', '信息科学技术'); +INSERT INTO `base_major` VALUES ('071207', '光电子技术科学'); +INSERT INTO `base_major` VALUES ('071300', '材料科学类'); +INSERT INTO `base_major` VALUES ('071301', '材料物理'); +INSERT INTO `base_major` VALUES ('071302', '材料化学'); +INSERT INTO `base_major` VALUES ('071400', '环境科学类'); +INSERT INTO `base_major` VALUES ('071401', '环境科学'); +INSERT INTO `base_major` VALUES ('071402', '生态学'); +INSERT INTO `base_major` VALUES ('071403', '资源环境科学'); +INSERT INTO `base_major` VALUES ('071404', '地球环境科学'); +INSERT INTO `base_major` VALUES ('071500', '心理学类'); +INSERT INTO `base_major` VALUES ('071501', '心理学'); +INSERT INTO `base_major` VALUES ('071502', '应用心理学'); +INSERT INTO `base_major` VALUES ('071600', '统计学类'); +INSERT INTO `base_major` VALUES ('071601', '统计学'); +INSERT INTO `base_major` VALUES ('071700', '系统科学类'); +INSERT INTO `base_major` VALUES ('071701', '系统理论'); +INSERT INTO `base_major` VALUES ('071702', '系统科学与工程'); +INSERT INTO `base_major` VALUES ('07SY00', '理科试验班类'); +INSERT INTO `base_major` VALUES ('07SY01', '理科试验班'); +INSERT INTO `base_major` VALUES ('07SY02', '自然科学试验班'); +INSERT INTO `base_major` VALUES ('080100', '地矿类'); +INSERT INTO `base_major` VALUES ('080101', '采矿工程'); +INSERT INTO `base_major` VALUES ('080102', '石油工程'); +INSERT INTO `base_major` VALUES ('080103', '矿物加工工程'); +INSERT INTO `base_major` VALUES ('080104', '勘查技术与工程'); +INSERT INTO `base_major` VALUES ('080105', '资源勘查工程'); +INSERT INTO `base_major` VALUES ('080106', '地质工程'); +INSERT INTO `base_major` VALUES ('080107', '矿物资源工程'); +INSERT INTO `base_major` VALUES ('080108', '煤及煤层气工程'); +INSERT INTO `base_major` VALUES ('080109', '地下水科学与工程'); +INSERT INTO `base_major` VALUES ('080110', '能源与资源工程'); +INSERT INTO `base_major` VALUES ('080111', '海洋油气工程'); +INSERT INTO `base_major` VALUES ('080200', '材料类'); +INSERT INTO `base_major` VALUES ('080201', '冶金工程'); +INSERT INTO `base_major` VALUES ('080202', '金属材料工程'); +INSERT INTO `base_major` VALUES ('080203', '无机非金属材料工程'); +INSERT INTO `base_major` VALUES ('080204', '高分子材料与工程'); +INSERT INTO `base_major` VALUES ('080205', '材料科学与工程'); +INSERT INTO `base_major` VALUES ('080206', '复合材料与工程'); +INSERT INTO `base_major` VALUES ('080207', '焊接技术与工程'); +INSERT INTO `base_major` VALUES ('080208', '宝石及材料工艺学'); +INSERT INTO `base_major` VALUES ('080209', '粉体材料科学与工程'); +INSERT INTO `base_major` VALUES ('080210', '再生资源科学与技术'); +INSERT INTO `base_major` VALUES ('080211', '稀土工程'); +INSERT INTO `base_major` VALUES ('080212', '高分子材料加工工程'); +INSERT INTO `base_major` VALUES ('080213', '生物功能材料'); +INSERT INTO `base_major` VALUES ('080214', '电子封装技术'); +INSERT INTO `base_major` VALUES ('080215', '功能材料'); +INSERT INTO `base_major` VALUES ('080216', '纳米材料与技术'); +INSERT INTO `base_major` VALUES ('080217', '新能源材料与器件'); +INSERT INTO `base_major` VALUES ('080218', '资源循环科学与工程'); +INSERT INTO `base_major` VALUES ('080300', '机械类'); +INSERT INTO `base_major` VALUES ('080301', '机械设计制造及其自动化'); +INSERT INTO `base_major` VALUES ('080302', '材料成型及控制工程'); +INSERT INTO `base_major` VALUES ('080303', '工业设计'); +INSERT INTO `base_major` VALUES ('080304', '过程装备与控制工程'); +INSERT INTO `base_major` VALUES ('080305', '机械工程及自动化'); +INSERT INTO `base_major` VALUES ('080306', '车辆工程'); +INSERT INTO `base_major` VALUES ('080307', '机械电子工程'); +INSERT INTO `base_major` VALUES ('080308', '汽车服务工程'); +INSERT INTO `base_major` VALUES ('080309', '制造自动化与测控技术'); +INSERT INTO `base_major` VALUES ('080310', '微机电系统工程'); +INSERT INTO `base_major` VALUES ('080311', '制造工程'); +INSERT INTO `base_major` VALUES ('080312', '体育装备工程'); +INSERT INTO `base_major` VALUES ('080313', '工程机械'); +INSERT INTO `base_major` VALUES ('080400', '仪器仪表类'); +INSERT INTO `base_major` VALUES ('080401', '测控技术与仪器'); +INSERT INTO `base_major` VALUES ('080402', '电子信息技术及仪器'); +INSERT INTO `base_major` VALUES ('080500', '能源动力类'); +INSERT INTO `base_major` VALUES ('080501', '热能与动力工程'); +INSERT INTO `base_major` VALUES ('080502', '核工程与核技术'); +INSERT INTO `base_major` VALUES ('080503', '工程物理'); +INSERT INTO `base_major` VALUES ('080504', '能源与环境系统工程'); +INSERT INTO `base_major` VALUES ('080505', '能源工程及自动化'); +INSERT INTO `base_major` VALUES ('080506', '能源动力系统及自动化'); +INSERT INTO `base_major` VALUES ('080507', '风能与动力工程'); +INSERT INTO `base_major` VALUES ('080508', '核技术'); +INSERT INTO `base_major` VALUES ('080509', '辐射防护与环境工程'); +INSERT INTO `base_major` VALUES ('080510', '核化工与核燃料工程'); +INSERT INTO `base_major` VALUES ('080511', '核反应堆工程'); +INSERT INTO `base_major` VALUES ('080512', '新能源科学与工程'); +INSERT INTO `base_major` VALUES ('080600', '电气信息类'); +INSERT INTO `base_major` VALUES ('080601', '电气工程及其自动化'); +INSERT INTO `base_major` VALUES ('080602', '自动化'); +INSERT INTO `base_major` VALUES ('080603', '电子信息工程'); +INSERT INTO `base_major` VALUES ('080604', '通信工程'); +INSERT INTO `base_major` VALUES ('080605', '计算机科学与技术'); +INSERT INTO `base_major` VALUES ('080606', '电子科学与技术'); +INSERT INTO `base_major` VALUES ('080607', '生物医学工程'); +INSERT INTO `base_major` VALUES ('080608', '电气工程与自动化'); +INSERT INTO `base_major` VALUES ('080609', '信息工程'); +INSERT INTO `base_major` VALUES ('080610', '光源与照明'); +INSERT INTO `base_major` VALUES ('080611', '软件工程'); +INSERT INTO `base_major` VALUES ('080612', '影视艺术技术'); +INSERT INTO `base_major` VALUES ('080613', '网络工程'); +INSERT INTO `base_major` VALUES ('080614', '信息显示与光电技术'); +INSERT INTO `base_major` VALUES ('080615', '集成电路设计与集成系统'); +INSERT INTO `base_major` VALUES ('080616', '光电信息工程'); +INSERT INTO `base_major` VALUES ('080617', '广播电视工程'); +INSERT INTO `base_major` VALUES ('080618', '电气信息工程'); +INSERT INTO `base_major` VALUES ('080619', '计算机软件'); +INSERT INTO `base_major` VALUES ('080620', '电力工程与管理'); +INSERT INTO `base_major` VALUES ('080621', '微电子制造工程'); +INSERT INTO `base_major` VALUES ('080622', '假肢矫形工程'); +INSERT INTO `base_major` VALUES ('080623', '数字媒体艺术'); +INSERT INTO `base_major` VALUES ('080624', '医学信息工程'); +INSERT INTO `base_major` VALUES ('080625', '信息物理工程'); +INSERT INTO `base_major` VALUES ('080626', '医疗器械工程'); +INSERT INTO `base_major` VALUES ('080627', '智能科学与技术'); +INSERT INTO `base_major` VALUES ('080628', '数字媒体技术'); +INSERT INTO `base_major` VALUES ('080629', '医学影像工程'); +INSERT INTO `base_major` VALUES ('080630', '真空电子技术'); +INSERT INTO `base_major` VALUES ('080631', '电磁场与无线技术'); +INSERT INTO `base_major` VALUES ('080632', '电信工程及管理'); +INSERT INTO `base_major` VALUES ('080633', '电气工程与智能控制'); +INSERT INTO `base_major` VALUES ('080634', '信息与通信工程'); +INSERT INTO `base_major` VALUES ('080635', '电波传播与天线'); +INSERT INTO `base_major` VALUES ('080636', '船舶电子电气工程'); +INSERT INTO `base_major` VALUES ('080637', '电子与计算机工程'); +INSERT INTO `base_major` VALUES ('080638', '仿真科学与技术'); +INSERT INTO `base_major` VALUES ('080639', '电机电器智能化'); +INSERT INTO `base_major` VALUES ('080640', '物联网工程'); +INSERT INTO `base_major` VALUES ('080641', '传感网技术'); +INSERT INTO `base_major` VALUES ('080643', '光电子材料与器件'); +INSERT INTO `base_major` VALUES ('080644', '水声工程'); +INSERT INTO `base_major` VALUES ('080645', '智能电网信息工程'); +INSERT INTO `base_major` VALUES ('080700', '土建类'); +INSERT INTO `base_major` VALUES ('080701', '建筑学'); +INSERT INTO `base_major` VALUES ('080702', '城市规划'); +INSERT INTO `base_major` VALUES ('080703', '土木工程'); +INSERT INTO `base_major` VALUES ('080704', '建筑环境与设备工程'); +INSERT INTO `base_major` VALUES ('080705', '给水排水工程'); +INSERT INTO `base_major` VALUES ('080706', '城市地下空间工程'); +INSERT INTO `base_major` VALUES ('080707', '历史建筑保护工程'); +INSERT INTO `base_major` VALUES ('080708', '景观建筑设计'); +INSERT INTO `base_major` VALUES ('080709', '水务工程'); +INSERT INTO `base_major` VALUES ('080710', '建筑设施智能技术'); +INSERT INTO `base_major` VALUES ('080711', '给排水科学与工程'); +INSERT INTO `base_major` VALUES ('080712', '建筑电气与智能化'); +INSERT INTO `base_major` VALUES ('080713', '景观学'); +INSERT INTO `base_major` VALUES ('080714', '风景园林'); +INSERT INTO `base_major` VALUES ('080715', '总图设计与工业运输'); +INSERT INTO `base_major` VALUES ('080716', '建筑节能技术与工程'); +INSERT INTO `base_major` VALUES ('080724', '道路桥梁与渡河工程'); +INSERT INTO `base_major` VALUES ('080800', '水利类'); +INSERT INTO `base_major` VALUES ('080801', '水利水电工程'); +INSERT INTO `base_major` VALUES ('080802', '水文与水资源工程'); +INSERT INTO `base_major` VALUES ('080803', '港口航道与海岸工程'); +INSERT INTO `base_major` VALUES ('080804', '港口海岸及治河工程'); +INSERT INTO `base_major` VALUES ('080805', '水资源与海洋工程'); +INSERT INTO `base_major` VALUES ('080900', '测绘类'); +INSERT INTO `base_major` VALUES ('080901', '测绘工程'); +INSERT INTO `base_major` VALUES ('080902', '遥感科学与技术'); +INSERT INTO `base_major` VALUES ('080903', '空间信息与数字技术'); +INSERT INTO `base_major` VALUES ('081000', '环境与安全类'); +INSERT INTO `base_major` VALUES ('081001', '环境工程'); +INSERT INTO `base_major` VALUES ('081002', '安全工程'); +INSERT INTO `base_major` VALUES ('081003', '水质科学与技术'); +INSERT INTO `base_major` VALUES ('081004', '灾害防治工程'); +INSERT INTO `base_major` VALUES ('081005', '环境科学与工程'); +INSERT INTO `base_major` VALUES ('081006', '环境监察'); +INSERT INTO `base_major` VALUES ('081007', '雷电防护科学与技术'); +INSERT INTO `base_major` VALUES ('081008', '核安全工程'); +INSERT INTO `base_major` VALUES ('081009', '环保设备工程'); +INSERT INTO `base_major` VALUES ('081100', '化工与制药类'); +INSERT INTO `base_major` VALUES ('081101', '化学工程与工艺'); +INSERT INTO `base_major` VALUES ('081102', '制药工程'); +INSERT INTO `base_major` VALUES ('081103', '化工与制药'); +INSERT INTO `base_major` VALUES ('081104', '化学工程与工业生物工程'); +INSERT INTO `base_major` VALUES ('081105', '资源科学与工程'); +INSERT INTO `base_major` VALUES ('081106', '能源化学工程'); +INSERT INTO `base_major` VALUES ('081107', '生物制药'); +INSERT INTO `base_major` VALUES ('081200', '交通运输类'); +INSERT INTO `base_major` VALUES ('081201', '交通运输'); +INSERT INTO `base_major` VALUES ('081202', '交通工程'); +INSERT INTO `base_major` VALUES ('081203', '油气储运工程'); +INSERT INTO `base_major` VALUES ('081204', '飞行技术'); +INSERT INTO `base_major` VALUES ('081205', '航海技术'); +INSERT INTO `base_major` VALUES ('081206', '轮机工程'); +INSERT INTO `base_major` VALUES ('081207', '物流工程'); +INSERT INTO `base_major` VALUES ('081208', '海事管理'); +INSERT INTO `base_major` VALUES ('081209', '交通设备信息工程'); +INSERT INTO `base_major` VALUES ('081210', '交通建设与装备'); +INSERT INTO `base_major` VALUES ('081211', '救助与打捞工程'); +INSERT INTO `base_major` VALUES ('081212', '航空器适航技术'); +INSERT INTO `base_major` VALUES ('081213', '交通信息与控制工程'); +INSERT INTO `base_major` VALUES ('081300', '海洋工程类'); +INSERT INTO `base_major` VALUES ('081301', '船舶与海洋工程'); +INSERT INTO `base_major` VALUES ('081302', '海洋工程与技术'); +INSERT INTO `base_major` VALUES ('081303', '海洋资源开发技术'); +INSERT INTO `base_major` VALUES ('081400', '轻工纺织食品类'); +INSERT INTO `base_major` VALUES ('081401', '食品科学与工程'); +INSERT INTO `base_major` VALUES ('081402', '轻化工程'); +INSERT INTO `base_major` VALUES ('081403', '包装工程'); +INSERT INTO `base_major` VALUES ('081404', '印刷工程'); +INSERT INTO `base_major` VALUES ('081405', '纺织工程'); +INSERT INTO `base_major` VALUES ('081406', '服装设计与工程'); +INSERT INTO `base_major` VALUES ('081407', '食品质量与安全'); +INSERT INTO `base_major` VALUES ('081408', '酿酒工程'); +INSERT INTO `base_major` VALUES ('081409', '葡萄与葡萄酒工程'); +INSERT INTO `base_major` VALUES ('081410', '轻工生物技术'); +INSERT INTO `base_major` VALUES ('081411', '农产品质量与安全'); +INSERT INTO `base_major` VALUES ('081412', '非织造材料与工程'); +INSERT INTO `base_major` VALUES ('081413', '数字印刷'); +INSERT INTO `base_major` VALUES ('081414', '植物资源工程'); +INSERT INTO `base_major` VALUES ('081415', '粮食工程'); +INSERT INTO `base_major` VALUES ('081416', '乳品工程'); +INSERT INTO `base_major` VALUES ('081500', '航空航天类'); +INSERT INTO `base_major` VALUES ('081501', '飞行器设计与工程'); +INSERT INTO `base_major` VALUES ('081502', '飞行器动力工程'); +INSERT INTO `base_major` VALUES ('081503', '飞行器制造工程'); +INSERT INTO `base_major` VALUES ('081504', '飞行器环境与生命保障工程'); +INSERT INTO `base_major` VALUES ('081505', '航空航天工程'); +INSERT INTO `base_major` VALUES ('081506', '工程力学与航天航空工程'); +INSERT INTO `base_major` VALUES ('081507', '航天运输与控制'); +INSERT INTO `base_major` VALUES ('081508', '质量与可靠性工程'); +INSERT INTO `base_major` VALUES ('081600', '武器类'); +INSERT INTO `base_major` VALUES ('081601', '武器系统与发射工程'); +INSERT INTO `base_major` VALUES ('081602', '探测制导与控制技术'); +INSERT INTO `base_major` VALUES ('081603', '弹药工程与爆炸技术'); +INSERT INTO `base_major` VALUES ('081604', '特种能源工程与烟火技术'); +INSERT INTO `base_major` VALUES ('081605', '地面武器机动工程'); +INSERT INTO `base_major` VALUES ('081606', '信息对抗技术'); +INSERT INTO `base_major` VALUES ('081607', '武器系统与工程'); +INSERT INTO `base_major` VALUES ('081700', '工程力学类'); +INSERT INTO `base_major` VALUES ('081701', '工程力学'); +INSERT INTO `base_major` VALUES ('081702', '工程结构分析'); +INSERT INTO `base_major` VALUES ('081800', '生物工程类'); +INSERT INTO `base_major` VALUES ('081801', '生物工程'); +INSERT INTO `base_major` VALUES ('081900', '农业工程类'); +INSERT INTO `base_major` VALUES ('081901', '农业机械化及其自动化'); +INSERT INTO `base_major` VALUES ('081902', '农业电气化与自动化'); +INSERT INTO `base_major` VALUES ('081903', '农业建筑环境与能源工程'); +INSERT INTO `base_major` VALUES ('081904', '农业水利工程'); +INSERT INTO `base_major` VALUES ('081905', '农业工程'); +INSERT INTO `base_major` VALUES ('081906', '生物系统工程'); +INSERT INTO `base_major` VALUES ('082000', '林业工程类'); +INSERT INTO `base_major` VALUES ('082001', '森林工程'); +INSERT INTO `base_major` VALUES ('082002', '木材科学与工程'); +INSERT INTO `base_major` VALUES ('082003', '林产化工'); +INSERT INTO `base_major` VALUES ('082100', '公安技术类'); +INSERT INTO `base_major` VALUES ('082101', '刑事科学技术'); +INSERT INTO `base_major` VALUES ('082102', '消防工程'); +INSERT INTO `base_major` VALUES ('082103', '安全防范工程'); +INSERT INTO `base_major` VALUES ('082104', '交通管理工程'); +INSERT INTO `base_major` VALUES ('082105', '核生化消防'); +INSERT INTO `base_major` VALUES ('082106', '公安视听技术'); +INSERT INTO `base_major` VALUES ('082107', '网络安全与执法'); +INSERT INTO `base_major` VALUES ('082303', '农业电气化'); +INSERT INTO `base_major` VALUES ('082802', '城乡规划'); +INSERT INTO `base_major` VALUES ('08SY00', '工科试验班类'); +INSERT INTO `base_major` VALUES ('08SY01', '工科试验班'); +INSERT INTO `base_major` VALUES ('08SY02', '科技与创意设计试验班'); +INSERT INTO `base_major` VALUES ('090100', '植物生产类'); +INSERT INTO `base_major` VALUES ('090101', '农学'); +INSERT INTO `base_major` VALUES ('090102', '园艺'); +INSERT INTO `base_major` VALUES ('090103', '植物保护'); +INSERT INTO `base_major` VALUES ('090104', '茶学'); +INSERT INTO `base_major` VALUES ('090105', '烟草'); +INSERT INTO `base_major` VALUES ('090106', '植物科学与技术'); +INSERT INTO `base_major` VALUES ('090107', '种子科学与工程'); +INSERT INTO `base_major` VALUES ('090108', '应用生物科学'); +INSERT INTO `base_major` VALUES ('090109', '设施农业科学与工程'); +INSERT INTO `base_major` VALUES ('090200', '草业科学类'); +INSERT INTO `base_major` VALUES ('090201', '草业科学'); +INSERT INTO `base_major` VALUES ('090300', '森林资源类'); +INSERT INTO `base_major` VALUES ('090301', '林学'); +INSERT INTO `base_major` VALUES ('090302', '森林资源保护与游憩'); +INSERT INTO `base_major` VALUES ('090303', '野生动物与自然保护区管理'); +INSERT INTO `base_major` VALUES ('090400', '环境生态类'); +INSERT INTO `base_major` VALUES ('090401', '园林'); +INSERT INTO `base_major` VALUES ('090402', '水土保持与荒漠化防治'); +INSERT INTO `base_major` VALUES ('090403', '农业资源与环境'); +INSERT INTO `base_major` VALUES ('090500', '动物生产类'); +INSERT INTO `base_major` VALUES ('090501', '动物科学'); +INSERT INTO `base_major` VALUES ('090502', '蚕学'); +INSERT INTO `base_major` VALUES ('090503', '蜂学'); +INSERT INTO `base_major` VALUES ('090600', '动物医学类'); +INSERT INTO `base_major` VALUES ('090601', '动物医学'); +INSERT INTO `base_major` VALUES ('090602', '动物药学'); +INSERT INTO `base_major` VALUES ('090700', '水产类'); +INSERT INTO `base_major` VALUES ('090701', '水产养殖学'); +INSERT INTO `base_major` VALUES ('090702', '海洋渔业科学与技术'); +INSERT INTO `base_major` VALUES ('090703', '水族科学与技术'); +INSERT INTO `base_major` VALUES ('100100', '基础医学类'); +INSERT INTO `base_major` VALUES ('100101', '基础医学'); +INSERT INTO `base_major` VALUES ('100200', '预防医学类'); +INSERT INTO `base_major` VALUES ('100201', '预防医学'); +INSERT INTO `base_major` VALUES ('100202', '卫生检验'); +INSERT INTO `base_major` VALUES ('100203', '妇幼保健医学'); +INSERT INTO `base_major` VALUES ('100204', '营养学'); +INSERT INTO `base_major` VALUES ('100300', '临床医学与医学技术类'); +INSERT INTO `base_major` VALUES ('100301', '临床医学'); +INSERT INTO `base_major` VALUES ('100302', '麻醉学'); +INSERT INTO `base_major` VALUES ('100303', '医学影像学'); +INSERT INTO `base_major` VALUES ('100304', '医学检验'); +INSERT INTO `base_major` VALUES ('100305', '放射医学'); +INSERT INTO `base_major` VALUES ('100306', '眼视光学'); +INSERT INTO `base_major` VALUES ('100307', '康复治疗学'); +INSERT INTO `base_major` VALUES ('100308', '精神医学'); +INSERT INTO `base_major` VALUES ('100309', '医学技术'); +INSERT INTO `base_major` VALUES ('100310', '听力学'); +INSERT INTO `base_major` VALUES ('100311', '医学实验学'); +INSERT INTO `base_major` VALUES ('100312', '医学美容技术'); +INSERT INTO `base_major` VALUES ('100400', '口腔医学类'); +INSERT INTO `base_major` VALUES ('100401', '口腔医学'); +INSERT INTO `base_major` VALUES ('100402', '口腔修复工艺学'); +INSERT INTO `base_major` VALUES ('100500', '中医学类'); +INSERT INTO `base_major` VALUES ('100501', '中医学'); +INSERT INTO `base_major` VALUES ('100502', '针灸推拿学'); +INSERT INTO `base_major` VALUES ('100503', '蒙医学'); +INSERT INTO `base_major` VALUES ('100504', '藏医学'); +INSERT INTO `base_major` VALUES ('100505', '中西医临床医学'); +INSERT INTO `base_major` VALUES ('100506', '维医学'); +INSERT INTO `base_major` VALUES ('100600', '法医学类'); +INSERT INTO `base_major` VALUES ('100601', '法医学'); +INSERT INTO `base_major` VALUES ('100700', '护理学类'); +INSERT INTO `base_major` VALUES ('100701', '护理学'); +INSERT INTO `base_major` VALUES ('100800', '药学类'); +INSERT INTO `base_major` VALUES ('100801', '药学'); +INSERT INTO `base_major` VALUES ('100802', '中药学'); +INSERT INTO `base_major` VALUES ('100803', '药物制剂'); +INSERT INTO `base_major` VALUES ('100804', '中草药栽培与鉴定'); +INSERT INTO `base_major` VALUES ('100805', '藏药学'); +INSERT INTO `base_major` VALUES ('100806', '中药资源与开发'); +INSERT INTO `base_major` VALUES ('100807', '应用药学'); +INSERT INTO `base_major` VALUES ('100808', '临床药学'); +INSERT INTO `base_major` VALUES ('100809', '海洋药学'); +INSERT INTO `base_major` VALUES ('10080J', '基础药学基地班'); +INSERT INTO `base_major` VALUES ('100810', '药事管理'); +INSERT INTO `base_major` VALUES ('100811', '蒙药学'); +INSERT INTO `base_major` VALUES ('100812', '药物分析'); +INSERT INTO `base_major` VALUES ('100813', '药物化学'); +INSERT INTO `base_major` VALUES ('100814', '中药制药'); +INSERT INTO `base_major` VALUES ('101001', '医学检验技术'); +INSERT INTO `base_major` VALUES ('101003', '医学影像技术'); +INSERT INTO `base_major` VALUES ('101007', '卫生检验与检疫'); +INSERT INTO `base_major` VALUES ('10SY00', '医学试验班类'); +INSERT INTO `base_major` VALUES ('10SY01', '医学试验班'); +INSERT INTO `base_major` VALUES ('110100', '管理科学与工程类'); +INSERT INTO `base_major` VALUES ('110101', '管理科学'); +INSERT INTO `base_major` VALUES ('110102', '信息管理与信息系统'); +INSERT INTO `base_major` VALUES ('110103', '工业工程'); +INSERT INTO `base_major` VALUES ('110104', '工程管理'); +INSERT INTO `base_major` VALUES ('110105', '工程造价'); +INSERT INTO `base_major` VALUES ('110106', '房地产经营管理'); +INSERT INTO `base_major` VALUES ('110107', '产品质量工程'); +INSERT INTO `base_major` VALUES ('110108', '项目管理'); +INSERT INTO `base_major` VALUES ('110109', '管理科学工程'); +INSERT INTO `base_major` VALUES ('110110', '标准化工程'); +INSERT INTO `base_major` VALUES ('110200', '工商管理类'); +INSERT INTO `base_major` VALUES ('110201', '工商管理'); +INSERT INTO `base_major` VALUES ('110202', '市场营销'); +INSERT INTO `base_major` VALUES ('110203', '会计学'); +INSERT INTO `base_major` VALUES ('110204', '财务管理'); +INSERT INTO `base_major` VALUES ('110205', '人力资源管理'); +INSERT INTO `base_major` VALUES ('110206', '旅游管理'); +INSERT INTO `base_major` VALUES ('110207', '商品学'); +INSERT INTO `base_major` VALUES ('110208', '审计学'); +INSERT INTO `base_major` VALUES ('110209', '电子商务'); +INSERT INTO `base_major` VALUES ('110210', '物流管理'); +INSERT INTO `base_major` VALUES ('110211', '国际商务'); +INSERT INTO `base_major` VALUES ('110212', '物业管理'); +INSERT INTO `base_major` VALUES ('110213', '特许经营管理'); +INSERT INTO `base_major` VALUES ('110214', '连锁经营管理'); +INSERT INTO `base_major` VALUES ('110215', '资产评估'); +INSERT INTO `base_major` VALUES ('110216', '电子商务及法律'); +INSERT INTO `base_major` VALUES ('110217', '商务策划管理'); +INSERT INTO `base_major` VALUES ('110218', '酒店管理'); +INSERT INTO `base_major` VALUES ('110219', '采购管理'); +INSERT INTO `base_major` VALUES ('110300', '公共管理类'); +INSERT INTO `base_major` VALUES ('110301', '行政管理'); +INSERT INTO `base_major` VALUES ('110302', '公共事业管理'); +INSERT INTO `base_major` VALUES ('110303', '劳动与社会保障'); +INSERT INTO `base_major` VALUES ('110304', '土地资源管理'); +INSERT INTO `base_major` VALUES ('110305', '公共关系学'); +INSERT INTO `base_major` VALUES ('110306', '高等教育管理'); +INSERT INTO `base_major` VALUES ('110307', '公共政策学'); +INSERT INTO `base_major` VALUES ('110308', '城市管理'); +INSERT INTO `base_major` VALUES ('110309', '公共管理'); +INSERT INTO `base_major` VALUES ('110310', '文化产业管理'); +INSERT INTO `base_major` VALUES ('110311', '会展经济与管理'); +INSERT INTO `base_major` VALUES ('110312', '国防教育与管理'); +INSERT INTO `base_major` VALUES ('110313', '航运管理'); +INSERT INTO `base_major` VALUES ('110314', '劳动关系'); +INSERT INTO `base_major` VALUES ('110315', '公共安全管理'); +INSERT INTO `base_major` VALUES ('110316', '体育产业管理'); +INSERT INTO `base_major` VALUES ('110317', '食品经济管理'); +INSERT INTO `base_major` VALUES ('110318', '应急管理'); +INSERT INTO `base_major` VALUES ('110319', '海关管理'); +INSERT INTO `base_major` VALUES ('110400', '农业经济管理类'); +INSERT INTO `base_major` VALUES ('110401', '农林经济管理'); +INSERT INTO `base_major` VALUES ('110402', '农村区域发展'); +INSERT INTO `base_major` VALUES ('110500', '图书档案学类'); +INSERT INTO `base_major` VALUES ('110501', '图书馆学'); +INSERT INTO `base_major` VALUES ('110502', '档案学'); +INSERT INTO `base_major` VALUES ('110503', '信息资源管理'); +INSERT INTO `base_major` VALUES ('120201', '政治经济学'); +INSERT INTO `base_major` VALUES ('120301', '政治学'); +INSERT INTO `base_major` VALUES ('120302', '国际关系与安全'); +INSERT INTO `base_major` VALUES ('120303', '军事外交'); +INSERT INTO `base_major` VALUES ('120501', '中国语言文学'); +INSERT INTO `base_major` VALUES ('120502', '外国语言文学(外国军事)'); +INSERT INTO `base_major` VALUES ('120601', '军事历史'); +INSERT INTO `base_major` VALUES ('120701', '应用数学'); +INSERT INTO `base_major` VALUES ('120702', '军事气象学'); +INSERT INTO `base_major` VALUES ('120703', '军事海洋学'); +INSERT INTO `base_major` VALUES ('120704', '军事心理学'); +INSERT INTO `base_major` VALUES ('120801', '军用材料工程'); +INSERT INTO `base_major` VALUES ('120802', '机械装备类'); +INSERT INTO `base_major` VALUES ('120803', '车辆运用工程'); +INSERT INTO `base_major` VALUES ('120804', '油料储运工程'); +INSERT INTO `base_major` VALUES ('120805', '舰船动力工程'); +INSERT INTO `base_major` VALUES ('120806', '核动力工程'); +INSERT INTO `base_major` VALUES ('120807', '电力工程及其自动化'); +INSERT INTO `base_major` VALUES ('120808', '电子工程'); +INSERT INTO `base_major` VALUES ('120809', '雷达工程'); +INSERT INTO `base_major` VALUES ('120810', '导航工程'); +INSERT INTO `base_major` VALUES ('120811', '军用光电工程'); +INSERT INTO `base_major` VALUES ('120812', '航空反潜工程'); +INSERT INTO `base_major` VALUES ('120813', '侦测工程'); +INSERT INTO `base_major` VALUES ('120814', '信息研究与安全(密码学)'); +INSERT INTO `base_major` VALUES ('120815', '密码装备工程'); +INSERT INTO `base_major` VALUES ('120816', '仿真工程'); +INSERT INTO `base_major` VALUES ('120817', '指挥自动化工程'); +INSERT INTO `base_major` VALUES ('120818', '国防建筑学'); +INSERT INTO `base_major` VALUES ('120819', '土木工程'); +INSERT INTO `base_major` VALUES ('120820', '野战给水工程'); +INSERT INTO `base_major` VALUES ('120821', '国防建筑设备工程'); +INSERT INTO `base_major` VALUES ('120822', '道路桥梁与渡河濒海工程'); +INSERT INTO `base_major` VALUES ('120823', '测绘遥感类'); +INSERT INTO `base_major` VALUES ('120824', '测量工程'); +INSERT INTO `base_major` VALUES ('120825', '地图学与地理信息工程'); +INSERT INTO `base_major` VALUES ('120826', '工程物理'); +INSERT INTO `base_major` VALUES ('120827', '生化防护工程'); +INSERT INTO `base_major` VALUES ('120828', '国防工程与防护'); +INSERT INTO `base_major` VALUES ('120829', '伪装工程'); +INSERT INTO `base_major` VALUES ('120830', '舰船与海洋工程'); +INSERT INTO `base_major` VALUES ('120831', '飞行器系统与工程'); +INSERT INTO `base_major` VALUES ('120832', '空间工程'); +INSERT INTO `base_major` VALUES ('120833', '兵器工程'); +INSERT INTO `base_major` VALUES ('120834', '导弹工程'); +INSERT INTO `base_major` VALUES ('120835', '弹药工程'); +INSERT INTO `base_major` VALUES ('120836', '地雷爆破与破障工程'); +INSERT INTO `base_major` VALUES ('120837', '控制测试类'); +INSERT INTO `base_major` VALUES ('120838', '火力指挥与控制工程'); +INSERT INTO `base_major` VALUES ('120839', '测控工程'); +INSERT INTO `base_major` VALUES ('120840', '无人机运用工程'); +INSERT INTO `base_major` VALUES ('120841', '探测工程'); +INSERT INTO `base_major` VALUES ('121101', '管理工程'); +INSERT INTO `base_major` VALUES ('121102', '系统工程'); +INSERT INTO `base_major` VALUES ('121103', '经济管理类'); +INSERT INTO `base_major` VALUES ('121104', '军队财务管理'); +INSERT INTO `base_major` VALUES ('121105', '装备经济管理'); +INSERT INTO `base_major` VALUES ('121106', '军队审计'); +INSERT INTO `base_major` VALUES ('121107', '军队采办'); +INSERT INTO `base_major` VALUES ('121300', '兵种指挥类'); +INSERT INTO `base_major` VALUES ('121301', '炮兵指挥'); +INSERT INTO `base_major` VALUES ('121302', '防空兵指挥'); +INSERT INTO `base_major` VALUES ('121303', '装甲兵指挥'); +INSERT INTO `base_major` VALUES ('121304', '工程兵指挥'); +INSERT INTO `base_major` VALUES ('121305', '防化兵指挥'); +INSERT INTO `base_major` VALUES ('121400', '航空航天指挥类'); +INSERT INTO `base_major` VALUES ('121401', '航空飞行与指挥'); +INSERT INTO `base_major` VALUES ('121402', '地面领航与航空管制'); +INSERT INTO `base_major` VALUES ('121403', '航天指挥'); +INSERT INTO `base_major` VALUES ('121500', '信息作战指挥类'); +INSERT INTO `base_major` VALUES ('121501', '侦察与特种兵指挥'); +INSERT INTO `base_major` VALUES ('121502', '通信指挥'); +INSERT INTO `base_major` VALUES ('121503', '电子对抗指挥与工程'); +INSERT INTO `base_major` VALUES ('121504', '军事情报'); +INSERT INTO `base_major` VALUES ('121505', '作战信息管理'); +INSERT INTO `base_major` VALUES ('121506', '预警探测指挥'); +INSERT INTO `base_major` VALUES ('121600', '保障指挥类'); +INSERT INTO `base_major` VALUES ('121601', '军事交通指挥与工程'); +INSERT INTO `base_major` VALUES ('121602', '汽车指挥'); +INSERT INTO `base_major` VALUES ('121603', '船艇指挥'); +INSERT INTO `base_major` VALUES ('121604', '航空兵场站指挥'); +INSERT INTO `base_major` VALUES ('121605', '国防工程指挥'); +INSERT INTO `base_major` VALUES ('121606', '装备保障指挥'); +INSERT INTO `base_major` VALUES ('121607', '军需勤务指挥'); +INSERT INTO `base_major` VALUES ('121700', '武警指挥类'); +INSERT INTO `base_major` VALUES ('121701', '武警指挥'); +INSERT INTO `base_major` VALUES ('130101', '艺术史论'); +INSERT INTO `base_major` VALUES ('130201', '音乐表演'); +INSERT INTO `base_major` VALUES ('130202', '音乐学'); +INSERT INTO `base_major` VALUES ('130203', '作曲与作曲技术理论'); +INSERT INTO `base_major` VALUES ('130204', '舞蹈表演'); +INSERT INTO `base_major` VALUES ('130205', '舞蹈学'); +INSERT INTO `base_major` VALUES ('130206', '舞蹈编导'); +INSERT INTO `base_major` VALUES ('130301', '表演'); +INSERT INTO `base_major` VALUES ('130302', '戏剧学'); +INSERT INTO `base_major` VALUES ('130303', '电影学'); +INSERT INTO `base_major` VALUES ('130304', '戏剧影视文学'); +INSERT INTO `base_major` VALUES ('130305', '广播电视编导'); +INSERT INTO `base_major` VALUES ('130306', '戏剧影视导演'); +INSERT INTO `base_major` VALUES ('130307', '戏剧影视美术设计'); +INSERT INTO `base_major` VALUES ('130308', '录音艺术'); +INSERT INTO `base_major` VALUES ('130309', '播音与主持艺术'); +INSERT INTO `base_major` VALUES ('130310', '动画'); +INSERT INTO `base_major` VALUES ('130311', '影视摄影与制作'); +INSERT INTO `base_major` VALUES ('130401', '美术学'); +INSERT INTO `base_major` VALUES ('130402', '绘画'); +INSERT INTO `base_major` VALUES ('130403', '雕塑'); +INSERT INTO `base_major` VALUES ('130404', '摄影'); +INSERT INTO `base_major` VALUES ('130405', '书法学'); +INSERT INTO `base_major` VALUES ('130406', '中国画'); +INSERT INTO `base_major` VALUES ('130500', '设计学类'); +INSERT INTO `base_major` VALUES ('130501', '艺术设计学'); +INSERT INTO `base_major` VALUES ('130502', '视觉传达设计'); +INSERT INTO `base_major` VALUES ('130503', '环境设计'); +INSERT INTO `base_major` VALUES ('130504', '产品设计'); +INSERT INTO `base_major` VALUES ('130505', '服装与服饰设计'); +INSERT INTO `base_major` VALUES ('130506', '公共艺术'); +INSERT INTO `base_major` VALUES ('130507', '工艺美术'); +INSERT INTO `base_major` VALUES ('130508', '数字媒体艺术'); +INSERT INTO `base_major` VALUES ('130509', '艺术与科技'); + +INSERT INTO `base_political_status`(`id`, `name`) VALUES (0, '----'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (1, '中共党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (2, '中共预备党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (3, '共青团员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (4, '民革会员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (5, '民盟盟员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (6, '民建会员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (7, '民进会员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (8, '农工党党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (9, '致公党党员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (10, '九三学社社员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (11, '台盟盟员'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (12, '无党派民主人士'); +INSERT INTO `base_political_status`(`id`, `name`) VALUES (13, '群众'); + diff --git a/src/main/resources/static/assets/css/atlantis.css b/src/main/resources/static/assets/css/atlantis.css new file mode 100644 index 0000000..b6daf0d --- /dev/null +++ b/src/main/resources/static/assets/css/atlantis.css @@ -0,0 +1,8951 @@ +/*! + +[Table of contents] + +* Background +* Typography +* Layouts + + Body & Wrapper + + Main Header + + Sidebar +* Layouts Color +* Components + + Breadcrumbs + + Cards + - Card Stats + - Card Task + - Card States + - Card Posts + - Card Pricing + - Card Annoucement + - Card Profile + - Accordion + + Inputs + + Tables + + Navbars + + Navsearch + + Badges + + Dropdowns + + Charts + + Alerts + + Buttons + + Navtabs + + Popovers + + Progress + + Paginations + + Sliders + + Modals + + Timeline + + Maps + + Invoice + + Messages + + Tasks + + Settings +* Plugins + + jQueryUI + + jQuery Scrollbar + + Css Animate + + Full Calendar + + SweetAlert + + Datatables + +* Responsive + +# [Color codes] + +body-text-color: #575962 +white-color: #ffffff +black-color: #191919 +transparent-bg : transparent +default-color : #282a3c +primary-color : #177dff +secondary-color : #716aca +info-color : #36a3f7 +success-color : #35cd3a +warning-color : #ffa534 +danger-color : #f3545d + +-------------------------------------------------------------------*/ +*:focus { + outline: 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; } + +/* Typography */ +body, h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6, p, .navbar, .brand, .btn-simple, .alert, a, .td-name, td, button.close { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: 'Lato', sans-serif; } + +body { + font-size: 14px; + color: #575962; } + +a { + color: #1572E8; } + a:hover, a:focus { + color: #1269DB; } + +h1, +.h1 { + font-size: 1.725rem; } + +h2, +.h2 { + font-size: 1.35rem; } + +h3, +.h3 { + font-size: 1.1625rem; } + +h4, +.h4 { + font-size: 1.0375rem; } + +h5, +.h5 { + font-size: .9125rem; } + +h6, +.h6 { + font-size: .825rem; } + +p { + font-size: 14px; + line-height: 1.82; + margin-bottom: 1rem; + word-break: break-word; } + +h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { + line-height: 1.4; } + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, .h1 a, .h2 a, .h3 a, .h4 a, .h5 a, .h6 a { + color: inherit; } + +small, .small { + font-size: 13px; } + +b, .b, strong, .strong { + font-weight: 600; } + +.page-pretitle { + letter-spacing: .08em; + text-transform: uppercase; + color: #95aac9; } + +.page-title { + font-size: 23px; + font-weight: 600; + color: #444444; + line-height: 30px; + margin-bottom: 20px; } + +.page-category { + color: #444444; + line-height: 1.8; + margin-bottom: 25px; } + +.text-primary, .text-primary a { + color: #1572E8 !important; } + .text-primary:hover, .text-primary a:hover { + color: #1572E8 !important; } + +.text-secondary, .text-secondary a { + color: #6861CE !important; } + .text-secondary:hover, .text-secondary a:hover { + color: #6861CE !important; } + +.text-info, .text-info a { + color: #48ABF7 !important; } + .text-info:hover, .text-info a:hover { + color: #48ABF7 !important; } + +.text-success, .text-success a { + color: #31CE36 !important; } + .text-success:hover, .text-success a:hover { + color: #31CE36 !important; } + +.text-warning, .text-warning a { + color: #FFAD46 !important; } + .text-warning:hover, .text-warning a:hover { + color: #FFAD46 !important; } + +.text-danger, .text-danger a { + color: #F25961 !important; } + .text-danger:hover, .text-danger a:hover { + color: #F25961 !important; } + +label { + color: #495057 !important; + font-size: 14px !important; } + +.text-small { + font-size: 11px; } + +.metric-value { + margin-bottom: 5px; + line-height: 1; + white-space: nowrap; } + +.metric-label { + font-size: .975rem; + font-weight: 500; + color: #686f76; + white-space: nowrap; + margin-bottom: 0; } + +/* Font-weight */ +.fw-light { + font-weight: 300 !important; } + +.fw-normal { + font-weight: 400 !important; } + +.fw-mediumbold { + font-weight: 400 !important; } + +.fw-bold { + font-weight: 600 !important; } + +.fw-extrabold { + font-weight: 700 !important; } + +/* Opacity */ +.op-9 { + opacity: 0.9; } + +.op-8 { + opacity: 0.8; } + +.op-7 { + opacity: 0.7; } + +.op-6 { + opacity: 0.6; } + +.op-5 { + opacity: 0.5; } + +.op-4 { + opacity: 0.4; } + +.op-3 { + opacity: 0.3; } + +/* Layouts */ +body { + min-height: 100vh; + position: relative; + background: #f9fbfd; } + +.no-bd { + border: 0px !important; } + +.no-box-shadow { + box-shadow: none !important; } + +/* margin-top negative */ +.mt--5, .my--5 { + margin-top: -3rem !important; } + +.mt--4, .my--4 { + margin-top: -1.5rem !important; } + +.mt--3, .my--3 { + margin-top: -1rem !important; } + +.mt--2, .my--2 { + margin-top: -0.5rem !important; } + +.mt--1, .my--1 { + margin-top: -0.25rem !important; } + +/* Wrapper */ +.pull-right { + float: right; } + +.pull-left { + float: left; } + +.wrapper { + min-height: 100vh; + position: relative; + top: 0; + height: 100vh; } + +.main-header { + background: #ffffff; + min-height: 60px; + width: 100%; + position: fixed; + z-index: 1001; + box-shadow: 0px 0px 5px rgba(18, 23, 39, 0.5); } + .main-header .navbar-header { + min-height: 62px; } + .main-header .navbar-header .btn-toggle { + margin-right: 30px; + margin-left: 20px; } + +.logo-header { + float: left; + width: 250px; + height: 62px; + line-height: 60px; + color: #333333; + z-index: 1001; + font-size: 17px; + font-weight: 400; + padding-left: 25px; + padding-right: 25px; + z-index: 1001; + display: flex; + align-items: center; + position: relative; + transition: all .3s; } + .logo-header .big-logo { + margin-right: 8px; } + .logo-header .big-logo:hover { + text-decoration: none; } + .logo-header .big-logo .logo-img { + width: 35px; + height: 35px; } + .logo-header .logo { + color: #575962; + opacity: 1; + position: relative; + height: 100%; } + .logo-header .logo:hover { + text-decoration: none; } + .logo-header .logo .navbar-brand { + padding-top: 0px; + padding-bottom: 0px; + margin-right: 0px; } + .logo-header .nav-toggle { + position: absolute; + top: 0; + right: 18px; + z-index: 5; } + .logo-header .navbar-toggler { + padding-left: 0px; + padding-right: 0px; + opacity: 0; + display: none; } + .logo-header .navbar-toggler .navbar-toggler-icon { + height: 1em; + width: 1em; + color: #545454; + font-size: 22px; } + .logo-header .more { + background: transparent; + border: 0; + font-size: 22px; + padding: 0; + opacity: 0; + width: 0; + display: none; } + +.btn-toggle { + font-size: 20px !important; + line-height: 20px; + padding: 0px !important; + background: transparent !important; + color: #575962 !important; } + .btn-toggle:hover, .btn-toggle:focus { + opacity: 1; } + +#search-nav { + flex: 1; + max-width: 400px; } + +.sidebar .nav > .nav-item.active > a:before, .sidebar[data-background-color="white"] .nav > .nav-item.active > a:before, .sidebar .nav > .nav-item.active:hover > a:before, .sidebar[data-background-color="white"] .nav > .nav-item.active:hover > a:before, .sidebar .nav > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + opacity: 1 !important; + position: absolute; + z-index: 1; + width: 3px; + height: 100%; + content: ''; + left: 0; + top: 0; } + +.sidebar, .sidebar[data-background-color="white"] { + position: fixed; + top: 0; + bottom: 0; + left: 0; + width: 250px; + margin-top: 62px; + display: block; + z-index: 1000; + color: #ffffff; + font-weight: 200; + background: #ffffff; + -webkit-box-shadow: 4px 4px 10px rgba(69, 65, 78, 0.06); + -moz-box-shadow: 4px 4px 10px rgba(69, 65, 78, 0.06); + box-shadow: 4px 4px 10px rgba(69, 65, 78, 0.06); + transition: all .3s; } + .sidebar.full-height, .sidebar[data-background-color="white"].full-height { + margin-top: 0; } + .sidebar .user, .sidebar[data-background-color="white"] .user { + margin-top: 20px; + padding-left: 15px; + padding-right: 15px; + padding-bottom: 12.5px; + border-bottom: 1px solid #f1f1f1; + display: block; + margin-left: 10px; + margin-right: 10px; } + .sidebar .user .info a, .sidebar[data-background-color="white"] .user .info a { + white-space: nowrap; + display: block; + position: relative; } + .sidebar .user .info a:hover, .sidebar .user .info a:focus, .sidebar[data-background-color="white"] .user .info a:hover, .sidebar[data-background-color="white"] .user .info a:focus { + text-decoration: none; } + .sidebar .user .info a > span, .sidebar[data-background-color="white"] .user .info a > span { + font-size: 14px; + font-weight: 400; + color: #777; + display: flex; + flex-direction: column; } + .sidebar .user .info a > span .user-level, .sidebar[data-background-color="white"] .user .info a > span .user-level { + color: #555; + font-weight: 600; + font-size: 12px; + margin-top: 5px; } + .sidebar .user .info a .link-collapse, .sidebar[data-background-color="white"] .user .info a .link-collapse { + padding: 7px 0; } + .sidebar .user .info .caret, .sidebar[data-background-color="white"] .user .info .caret { + position: absolute; + top: 17px; + right: 0px; + border-top-color: #777; } + .sidebar .sidebar-wrapper, .sidebar[data-background-color="white"] .sidebar-wrapper { + position: relative; + max-height: calc(100vh - 75px); + min-height: 100%; + overflow: auto; + width: 100%; + z-index: 4; + padding-bottom: 100px; + transition: all .3s; } + .sidebar .sidebar-wrapper .sidebar-content, .sidebar[data-background-color="white"] .sidebar-wrapper .sidebar-content { + padding-top: 0px; + padding-bottom: 55px; } + .sidebar .sidebar-wrapper .scroll-element.scroll-y, .sidebar[data-background-color="white"] .sidebar-wrapper .scroll-element.scroll-y { + top: 5px !important; } + .sidebar .nav, .sidebar[data-background-color="white"] .nav { + display: block; + float: none; + margin-top: 20px; } + .sidebar .nav .nav-section, .sidebar[data-background-color="white"] .nav .nav-section { + margin: 15px 0 0 0; } + .sidebar .nav .nav-section .sidebar-mini-icon, .sidebar[data-background-color="white"] .nav .nav-section .sidebar-mini-icon { + text-align: center; + font-size: 15px; + color: #909093; + display: none; } + .sidebar .nav .nav-section .text-section, .sidebar[data-background-color="white"] .nav .nav-section .text-section { + padding: 2px 30px; + font-size: 12px; + color: #727275; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 12px; + margin-top: 20px; } + .sidebar .nav > .nav-item, .sidebar[data-background-color="white"] .nav > .nav-item { + display: list-item; } + .sidebar .nav > .nav-item.active > a, .sidebar[data-background-color="white"] .nav > .nav-item.active > a { + color: #575962 !important; } + .sidebar .nav > .nav-item.active > a:before, .sidebar[data-background-color="white"] .nav > .nav-item.active > a:before { + background: #1d7af3; } + .sidebar .nav > .nav-item.active > a p, .sidebar[data-background-color="white"] .nav > .nav-item.active > a p { + color: #575962 !important; + font-weight: 600; } + .sidebar .nav > .nav-item.active:hover > a:before, .sidebar[data-background-color="white"] .nav > .nav-item.active:hover > a:before { + background: #1d7af3; } + .sidebar .nav > .nav-item.active a i, .sidebar[data-background-color="white"] .nav > .nav-item.active a i { + color: #4d7cfe; } + .sidebar .nav > .nav-item.submenu, .sidebar[data-background-color="white"] .nav > .nav-item.submenu { + background: rgba(0, 0, 0, 0.03); } + .sidebar .nav > .nav-item.submenu > li > a i, .sidebar[data-background-color="white"] .nav > .nav-item.submenu > li > a i { + color: rgba(23, 125, 255, 0.76); } + .sidebar .nav > .nav-item > a:hover, .sidebar .nav > .nav-item a:focus, .sidebar[data-background-color="white"] .nav > .nav-item > a:hover, .sidebar[data-background-color="white"] .nav > .nav-item a:focus { + background: rgba(0, 0, 0, 0.03); } + .sidebar .nav > .nav-item a, .sidebar[data-background-color="white"] .nav > .nav-item a { + display: flex; + align-items: center; + color: #575962; + padding: 6px 25px; + width: 100%; + font-size: 14px; + font-weight: 400; + position: relative; + margin-bottom: 3px; } + .sidebar .nav > .nav-item a:hover, .sidebar .nav > .nav-item a:focus, .sidebar[data-background-color="white"] .nav > .nav-item a:hover, .sidebar[data-background-color="white"] .nav > .nav-item a:focus { + text-decoration: none; } + .sidebar .nav > .nav-item a:hover p, .sidebar .nav > .nav-item a:focus p, .sidebar[data-background-color="white"] .nav > .nav-item a:hover p, .sidebar[data-background-color="white"] .nav > .nav-item a:focus p { + color: #575962 !important; + font-weight: 600; } + .sidebar .nav > .nav-item a:hover i, .sidebar .nav > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav > .nav-item a:focus i { + color: #4d7cfe !important; } + .sidebar .nav > .nav-item a .letter-icon, .sidebar[data-background-color="white"] .nav > .nav-item a .letter-icon { + color: #a1a2a6; + margin-right: 15px; + width: 25px; + text-align: center; + vertical-align: middle; + float: left; + font-size: 20px; + font-weight: 200; } + .sidebar .nav > .nav-item a i, .sidebar[data-background-color="white"] .nav > .nav-item a i { + color: #8d9498; + margin-right: 15px; + width: 25px; + text-align: center; + vertical-align: middle; + float: left; + font-size: 18px; + line-height: 30px; } + .sidebar .nav > .nav-item a i[class^="flaticon-"], .sidebar[data-background-color="white"] .nav > .nav-item a i[class^="flaticon-"] { + font-size: 20px; } + .sidebar .nav > .nav-item a p, .sidebar[data-background-color="white"] .nav > .nav-item a p { + font-size: 14px; + margin-bottom: 0px; + margin-right: 5px; + white-space: nowrap; + color: #8d9498; } + .sidebar .nav > .nav-item a .caret, .sidebar[data-background-color="white"] .nav > .nav-item a .caret { + margin-left: auto; + margin-right: 10px; + transition: all .5s; + color: #8d9498; } + .sidebar .nav > .nav-item a[data-toggle=collapse][aria-expanded=true], .sidebar[data-background-color="white"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] { + background: transparent; } + .sidebar .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="white"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] p { + color: #575962; } + .sidebar .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #4d7cfe; } + .sidebar .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] .caret, .sidebar[data-background-color="white"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(-180deg); + transform: rotate(-180deg); } + .sidebar .nav > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #1d7af3; } + .sidebar .nav.nav-primary > .nav-item a:hover i, .sidebar .nav.nav-primary > .nav-item a:focus i, .sidebar .nav.nav-primary > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav.nav-primary > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav.nav-primary > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav.nav-primary > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #1572E8 !important; } + .sidebar .nav.nav-primary > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav.nav-primary > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #1572E8 !important; } + .sidebar .nav.nav-primary > .nav-item.active a:before, .sidebar[data-background-color="white"] .nav.nav-primary > .nav-item.active a:before { + background: #1572E8 !important; } + .sidebar .nav.nav-primary > .nav-item.active a i, .sidebar[data-background-color="white"] .nav.nav-primary > .nav-item.active a i { + color: #1572E8 !important; } + .sidebar .nav.nav-secondary > .nav-item a:hover i, .sidebar .nav.nav-secondary > .nav-item a:focus i, .sidebar .nav.nav-secondary > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav.nav-secondary > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav.nav-secondary > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav.nav-secondary > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #6861CE !important; } + .sidebar .nav.nav-secondary > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav.nav-secondary > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #6861CE !important; } + .sidebar .nav.nav-secondary > .nav-item.active a:before, .sidebar[data-background-color="white"] .nav.nav-secondary > .nav-item.active a:before { + background: #6861CE !important; } + .sidebar .nav.nav-secondary > .nav-item.active a i, .sidebar[data-background-color="white"] .nav.nav-secondary > .nav-item.active a i { + color: #6861CE !important; } + .sidebar .nav.nav-info > .nav-item a:hover i, .sidebar .nav.nav-info > .nav-item a:focus i, .sidebar .nav.nav-info > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav.nav-info > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav.nav-info > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav.nav-info > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #48ABF7 !important; } + .sidebar .nav.nav-info > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav.nav-info > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #48ABF7 !important; } + .sidebar .nav.nav-info > .nav-item.active a:before, .sidebar[data-background-color="white"] .nav.nav-info > .nav-item.active a:before { + background: #48ABF7 !important; } + .sidebar .nav.nav-info > .nav-item.active a i, .sidebar[data-background-color="white"] .nav.nav-info > .nav-item.active a i { + color: #48ABF7 !important; } + .sidebar .nav.nav-success > .nav-item a:hover i, .sidebar .nav.nav-success > .nav-item a:focus i, .sidebar .nav.nav-success > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav.nav-success > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav.nav-success > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav.nav-success > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #31CE36 !important; } + .sidebar .nav.nav-success > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav.nav-success > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #31CE36 !important; } + .sidebar .nav.nav-success > .nav-item.active a:before, .sidebar[data-background-color="white"] .nav.nav-success > .nav-item.active a:before { + background: #31CE36 !important; } + .sidebar .nav.nav-success > .nav-item.active a i, .sidebar[data-background-color="white"] .nav.nav-success > .nav-item.active a i { + color: #31CE36 !important; } + .sidebar .nav.nav-warning > .nav-item a:hover i, .sidebar .nav.nav-warning > .nav-item a:focus i, .sidebar .nav.nav-warning > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav.nav-warning > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav.nav-warning > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav.nav-warning > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #FFAD46 !important; } + .sidebar .nav.nav-warning > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav.nav-warning > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #FFAD46 !important; } + .sidebar .nav.nav-warning > .nav-item.active a:before, .sidebar[data-background-color="white"] .nav.nav-warning > .nav-item.active a:before { + background: #FFAD46 !important; } + .sidebar .nav.nav-warning > .nav-item.active a i, .sidebar[data-background-color="white"] .nav.nav-warning > .nav-item.active a i { + color: #FFAD46 !important; } + .sidebar .nav.nav-danger > .nav-item a:hover i, .sidebar .nav.nav-danger > .nav-item a:focus i, .sidebar .nav.nav-danger > .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="white"] .nav.nav-danger > .nav-item a:hover i, .sidebar[data-background-color="white"] .nav.nav-danger > .nav-item a:focus i, .sidebar[data-background-color="white"] .nav.nav-danger > .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #F25961 !important; } + .sidebar .nav.nav-danger > .nav-item a[data-toggle=collapse][aria-expanded=true]:before, .sidebar[data-background-color="white"] .nav.nav-danger > .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: #F25961 !important; } + .sidebar .nav.nav-danger > .nav-item.active a:before, .sidebar[data-background-color="white"] .nav.nav-danger > .nav-item.active a:before { + background: #F25961 !important; } + .sidebar .nav.nav-danger > .nav-item.active a i, .sidebar[data-background-color="white"] .nav.nav-danger > .nav-item.active a i { + color: #F25961 !important; } + .sidebar .nav-collapse, .sidebar[data-background-color="white"] .nav-collapse { + margin-top: 0px; + margin-bottom: 15px; + padding-bottom: 15px; + padding-top: 10px; } + .sidebar .nav-collapse li.active > a, .sidebar[data-background-color="white"] .nav-collapse li.active > a { + font-weight: 600; } + .sidebar .nav-collapse li a:before, .sidebar .nav-collapse li a:hover:before, .sidebar[data-background-color="white"] .nav-collapse li a:before, .sidebar[data-background-color="white"] .nav-collapse li a:hover:before { + opacity: 0 !important; } + .sidebar .nav-collapse li a, .sidebar[data-background-color="white"] .nav-collapse li a { + margin-bottom: 3px !important; + padding: 10px 25px !important; } + .sidebar .nav-collapse li a .sub-item, .sidebar[data-background-color="white"] .nav-collapse li a .sub-item { + font-size: 14px; + position: relative; + margin-left: 25px; + opacity: .85; } + .sidebar .nav-collapse li a .sub-item:before, .sidebar[data-background-color="white"] .nav-collapse li a .sub-item:before { + content: ''; + height: 4px; + width: 4px; + background: rgba(131, 132, 138, 0.89); + position: absolute; + left: -15px; + top: 50%; + transform: translateY(-50%); + border-radius: 100%; } + .sidebar .nav-collapse li a:hover .sub-item, .sidebar[data-background-color="white"] .nav-collapse li a:hover .sub-item { + opacity: 1; } + .sidebar .nav-collapse li a .sidebar-mini-icon, .sidebar[data-background-color="white"] .nav-collapse li a .sidebar-mini-icon { + font-size: 18px; + color: #C3C5CA; + margin-right: 15px; + width: 25px; + text-align: center; + vertical-align: middle; + float: left; + font-weight: 300 !important; } + .sidebar .nav-collapse.subnav, .sidebar[data-background-color="white"] .nav-collapse.subnav { + padding-bottom: 10px; + margin-bottom: 0px; } + .sidebar .nav-collapse.subnav li a, .sidebar[data-background-color="white"] .nav-collapse.subnav li a { + padding-left: 40px !important; } + +/* Sidebar style 2 */ +.sidebar.sidebar-style-2 .nav .nav-item { + padding: 0 15px; } + .sidebar.sidebar-style-2 .nav .nav-item a { + padding: 8px 10px; + border-radius: 5px; } + .sidebar.sidebar-style-2 .nav .nav-item a:hover, .sidebar.sidebar-style-2 .nav .nav-item a:focus, .sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + background: rgba(199, 199, 199, 0.2); } + .sidebar.sidebar-style-2 .nav .nav-item a:hover p, .sidebar.sidebar-style-2 .nav .nav-item a:hover i, .sidebar.sidebar-style-2 .nav .nav-item a:focus p, .sidebar.sidebar-style-2 .nav .nav-item a:focus i, .sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #575962 !important; } + .sidebar.sidebar-style-2 .nav .nav-item.active a:before { + background: transparent; } + .sidebar.sidebar-style-2 .nav .nav-item .active a { + background: rgba(199, 199, 199, 0.2); } + .sidebar.sidebar-style-2 .nav .nav-item .active a p, .sidebar.sidebar-style-2 .nav .nav-item .active a i { + color: #575962 !important; } + .sidebar.sidebar-style-2 .nav .nav-item.submenu { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true]:before { + background: transparent !important; } +.sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a { + background: #1572E8 !important; + box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1), 4px 4px 15px -5px rgba(21, 114, 232, 0.4) !important; } + .sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a:before { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a p, .sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a i, .sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a .caret, .sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a span { + color: #ffffff !important; } + .sidebar.sidebar-style-2 .nav.nav-primary > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i { + color: #ffffff !important; } +.sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a { + background: #6861CE !important; + box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1), 4px 4px 15px -5px rgba(104, 97, 206, 0.4) !important; } + .sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a:before { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a p, .sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a i, .sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a .caret, .sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a span { + color: #ffffff !important; } + .sidebar.sidebar-style-2 .nav.nav-secondary > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i { + color: #ffffff !important; } +.sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a { + background: #48ABF7 !important; + box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1), 4px 4px 15px -5px rgba(72, 171, 247, 0.4) !important; } + .sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a:before { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a p, .sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a i, .sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a .caret, .sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a span { + color: #ffffff !important; } + .sidebar.sidebar-style-2 .nav.nav-info > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i { + color: #ffffff !important; } +.sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a { + background: #31CE36 !important; + box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1), 4px 4px 15px -5px rgba(49, 206, 54, 0.4) !important; } + .sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a:before { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a p, .sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a i, .sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a .caret, .sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a span { + color: #ffffff !important; } + .sidebar.sidebar-style-2 .nav.nav-success > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i { + color: #ffffff !important; } +.sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a { + background: #FFAD46 !important; + box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1), 4px 4px 15px -5px rgba(255, 173, 70, 0.4) !important; } + .sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a:before { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a p, .sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a i, .sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a .caret, .sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a span { + color: #ffffff !important; } + .sidebar.sidebar-style-2 .nav.nav-warning > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i { + color: #ffffff !important; } +.sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a { + background: #F25961 !important; + box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1), 4px 4px 15px -5px rgba(242, 89, 97, 0.4) !important; } + .sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a:before { + background: transparent !important; } + .sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a p, .sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a i, .sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a .caret, .sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a span { + color: #ffffff !important; } + .sidebar.sidebar-style-2 .nav.nav-danger > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i { + color: #ffffff !important; } +.sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item a:hover p, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item a:hover i, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item a:focus p, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item a:focus i, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item a:hover p, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item a:hover i, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item a:focus p, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item a:focus i, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i { + color: #b9babf !important; } +.sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a { + color: #ffffff; } + .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a p, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a i, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a .caret, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a span, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a p, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a i, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a .caret, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a span { + color: #ffffff; } + .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] p, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] i, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] .caret, .sidebar.sidebar-style-2[data-background-color="dark"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] span, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] p, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] i, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] .caret, .sidebar.sidebar-style-2[data-background-color="dark2"] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] span { + color: #ffffff; } + +.main-panel { + position: relative; + width: calc(100% - 250px); + height: 100vh; + min-height: 100%; + float: right; + transition: all .3s; } + .main-panel > .content { + padding: 0px !important; + min-height: calc(100% - 123px); + margin-top: 62px; + overflow: hidden; } + .main-panel > .content-full { + padding: 0px !important; + min-height: calc(100% - 123px); + margin-top: 63px; + overflow: hidden; } + .main-panel .page-header { + display: flex; + align-items: center; + margin-bottom: 20px; } + .main-panel .page-header .page-title { + margin-bottom: 0px; } + .main-panel .page-header .btn-page-header-dropdown { + width: 35px; + height: 35px; + font-size: 14px; + padding: 0px; + color: #6b6b6b; + box-shadow: 0 2px 14px 0 rgba(144, 116, 212, 0.1) !important; + border: 0; } + .main-panel .page-header .btn-page-header-dropdown:after { + display: none; } + .main-panel .page-header .dropdown-menu { + margin-top: 15px; + top: 0px !important; } + .main-panel .page-header .dropdown-menu:after { + width: 0; + height: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-bottom: 8px solid #ffffff; + position: absolute; + top: -8px; + right: 32px; + content: ''; } + .main-panel .page-divider { + height: 0; + margin: .3rem 0 1rem; + overflow: hidden; + border-top: 1px solid #ebecec; } + +/* Page Wrapper */ +.page-wrapper { + min-height: calc(100vh - 57px); + position: relative; } + .page-wrapper.has-sidebar .page-inner { + margin-right: 22.5rem; } + +.page-navs { + position: relative; + display: block; + padding-right: 1rem; + padding-left: 1rem; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.07); + z-index: 1; } + .page-navs .nav .nav-link { + padding: 1rem !important; } + .page-navs .nav-line { + border: 0px !important; } + .page-navs .nav-line .nav-link { + border-bottom-width: 3px !important; } + +.nav-scroller .nav { + flex-wrap: nowrap; + overflow-x: auto; + white-space: nowrap; } + +@media (min-width: 992px) { + .page-navs { + padding-right: 2rem; + padding-left: 2rem; } } +.page-inner { + padding: 1.5rem 0; } + +@media (min-width: 576px) { + .page-inner { + padding-right: 1rem; + padding-left: 1rem; } } +@media (min-width: 992px) { + .page-inner { + padding-right: 2rem; + padding-left: 2rem; } } +.page-inner-fill { + padding: 0; + height: calc(100% - 57px); + display: flex; + flex-direction: column; } + +.page-sidebar { + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 100%; + display: flex; + flex-direction: column; + max-width: 22.5rem; + box-shadow: none; + transform: translate3d(100%, 0, 0); + overflow: auto; + z-index: 999; + transition: transform .2s ease-in-out; + border-left: 1px solid rgba(61, 70, 79, 0.125) !important; } + .page-sidebar .back { + width: 100%; + display: flex; + align-items: center; + padding: 1rem; + box-shadow: 0 0 0 1px rgba(61, 70, 79, 0.05), 0 1px 3px 0 rgba(61, 70, 79, 0.15); + font-size: 15px; } + +.page-sidebar-section { + flex: 1; + overflow-y: auto; } + +@media (min-width: 1200px) { + .page-sidebar { + transform: translateZ(0); } } +@media (max-width: 1200px) { + .page-wrapper.has-sidebar .page-inner { + margin-right: 0px; } + + .pagesidebar_open .page-sidebar { + transform: translate3d(0, 0, 0) !important; + max-width: unset; } } +.page-with-aside { + display: flex; } + .page-with-aside .page-aside { + width: 280px; + min-height: 100vh; + border-right: 1px solid #f1f1f1; + padding: 15px 0; } + .page-with-aside .page-aside .aside-header { + padding: 15px 22px; } + .page-with-aside .page-aside .aside-header .title { + font-size: 24px; } + .page-with-aside .page-aside .aside-header .description { + font-size: 12px; } + .page-with-aside .page-aside .aside-nav .nav { + flex-direction: column; } + .page-with-aside .page-aside .aside-nav .nav > li { + padding: 8px 22px; + margin-bottom: 5px; } + .page-with-aside .page-aside .aside-nav .nav > li:hover, .page-with-aside .page-aside .aside-nav .nav > li:focus, .page-with-aside .page-aside .aside-nav .nav > li.active { + background: rgba(51, 51, 51, 0.08); } + .page-with-aside .page-aside .aside-nav .nav > li.active { + padding: 12px 22px; + font-weight: 600; } + .page-with-aside .page-aside .aside-nav .nav > li.active > a { + color: #575962 !important; } + .page-with-aside .page-aside .aside-nav .nav > li > a { + color: #83848a; + display: flex; + align-items: center; + font-size: 12px; } + .page-with-aside .page-aside .aside-nav .nav > li > a:hover, .page-with-aside .page-aside .aside-nav .nav > li > a:focus { + text-decoration: none; } + .page-with-aside .page-aside .aside-nav .nav > li > a i { + font-size: 20px; + margin-right: 15px; + color: #a1a2a6; } + .page-with-aside .page-aside .aside-nav .label { + padding: 5px 22px; + margin-top: 22px; + margin-bottom: 5px; + display: block; } + .page-with-aside .page-aside .aside-compose { + padding: 25px 22px; } + .page-with-aside .page-content { + width: calc(100% - 280px); } + +.footer { + border-top: 1px solid #eee; + padding: 15px; + background: #ffffff; + position: absolute; + width: 100%; } + .footer .container, .footer .container-fluid { + display: flex; + align-items: center; } + +/* sidebar minimized */ +@media screen and (min-width: 991px) { + .sidebar_minimize .main-panel { + width: calc(100% - 75px); + transition: all .3s; } + .sidebar_minimize .logo-header { + width: 75px; + transition: all .3s; + padding: 0px; + text-align: center; } + .sidebar_minimize .logo-header .big-logo { + margin-right: 0px; } + .sidebar_minimize .logo-header .logo { + position: absolute; + transform: translate3d(25px, 0, 0); + opacity: 0; } + .sidebar_minimize .logo-header .logo img { + display: none; } + .sidebar_minimize .logo-header .nav-toggle { + position: absolute; + left: 50%; + transform: translateX(-50%); + height: 100%; + right: 0 !important; } + .sidebar_minimize .sidebar { + width: 75px; + transition: all .3s; } + .sidebar_minimize .sidebar .sidebar-wrapper { + width: 75px; + transition: all .3s; } + .sidebar_minimize .sidebar .sidebar-wrapper .user { + padding-left: 0px; + padding-right: 0px; } + .sidebar_minimize .sidebar .sidebar-wrapper .user [class^="avatar-"] { + float: none !important; + margin: auto; } + .sidebar_minimize .sidebar .sidebar-wrapper .user .info { + display: none; } + .sidebar_minimize .sidebar .sidebar-wrapper .user .info span { + display: none; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-item { + position: relative; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .letter-icon { + display: block !important; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a i { + margin-right: unset; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .badge, .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a span, .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .caret, .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a p { + display: none; + transition: all .3s; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .sidebar-mini-icon { + display: block !important; + margin-right: 0px; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-item.submenu .nav-collapse, .sidebar_minimize .sidebar .sidebar-wrapper .nav-item.active .nav-collapse { + display: none; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-section .text-section { + display: none; } + .sidebar_minimize .sidebar .sidebar-wrapper .nav-section .sidebar-mini-icon { + display: block; } + .sidebar_minimize .sidebar:hover { + width: 250px; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper { + width: 250px; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .user { + padding-left: 15px; + padding-right: 15px; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .user [class^="avatar-"] { + float: left !important; + margin-right: 11px !important; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .user .info { + display: block; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .user .info span { + display: block; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a i { + margin-right: 15px; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a .badge, .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a span, .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a .caret, .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a p { + display: block; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a .sidebar-mini-icon { + display: block !important; + margin-right: 15px; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item.submenu .nav-collapse, .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item.active .nav-collapse { + display: block; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-section .sidebar-mini-icon { + display: none; } + .sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-section .text-section { + display: block; } + .sidebar_minimize.sidebar_minimize_hover .logo-header { + width: 250px; + padding-left: 25px; + padding-right: 25px; + text-align: left; } + .sidebar_minimize.sidebar_minimize_hover .logo-header .logo { + opacity: 1 !important; + transform: translate3d(0, 0, 0) !important; + position: relative !important; } + .sidebar_minimize.sidebar_minimize_hover .logo-header .logo img { + display: inline-block !important; } + .sidebar_minimize.sidebar_minimize_hover .main-panel { + width: calc(100% - 250px); } + + .sidebar_minimize_hover .logo-header .nav-toggle { + right: 18px !important; + transform: translateX(0%) !important; + left: unset; } } +/* overlay sidebar */ +.overlay-sidebar:not(.is-show) .sidebar { + left: -250px; } +.overlay-sidebar .main-panel { + width: 100% !important; } + +/* compact wrapper */ +@media screen and (min-width: 991px) { + .compact-wrapper .main-header .logo-header { + width: 175px; } + .compact-wrapper .sidebar { + width: 175px; } + .compact-wrapper .sidebar .badge { + position: absolute; + top: 8px; + right: 8px; } + .compact-wrapper .sidebar .text-section { + text-align: center; } + .compact-wrapper .sidebar .nav > .nav-item a { + flex-direction: column; } + .compact-wrapper .sidebar .nav > .nav-item a i { + margin-right: 0px; } + .compact-wrapper .sidebar .nav > .nav-item a p { + margin-right: 0px; } + .compact-wrapper .sidebar .nav > .nav-item a .caret { + display: none; } + .compact-wrapper .sidebar .nav-collapse li a .sub-item { + margin-left: 0px; + text-align: center; } + .compact-wrapper .sidebar .nav-collapse li a .sub-item:before { + display: none; } + .compact-wrapper .main-panel { + width: calc(100% - 175px); } } +/* classic */ +@media screen and (min-width: 991px) { + .classic-wrapper .classic-grid { + margin: 93px 40px 30px; } + .classic-wrapper .main-header { + top: 0; } + .classic-wrapper .main-header .logo-header { + padding: 0 40px; + width: 290px; } + .classic-wrapper .sidebar { + position: relative; + float: left; + margin-top: 0px; } + .classic-wrapper .sidebar .sidebar-wrapper { + max-height: unset; + min-height: 100%; } + .classic-wrapper .navbar-header { + padding-right: 30px; } + .classic-wrapper .main-panel { + height: unset; } + .classic-wrapper .main-panel .content, .classic-wrapper .main-panel .content-full { + margin-top: 0px; } + .classic-wrapper .page-inner { + padding-right: 0px; + padding-top: 5px; } + .classic-wrapper .board { + height: 100%; } + + .sidebar_minimize .classic-wrapper .logo-header .logo { + position: relative; + transform: unset; + opacity: 1; } + .sidebar_minimize .classic-wrapper .logo-header .logo img { + display: inline-block; } + .sidebar_minimize .classic-wrapper .logo-header .nav-toggle { + left: unset; + transform: unset; + right: 18px !important; } } +.classic-wrapper { + height: unset; } + .classic-wrapper .main-panel { + height: unset; } + .classic-wrapper .footer { + position: unset; } + +.classic-grid { + min-height: 100vh; + height: 100%; + display: flex; + flex-direction: row; + flex-wrap: wrap; } + +/* Static Sidebar */ +@media screen and (min-width: 991px) { + .static-sidebar { + height: unset; } + .static-sidebar .sidebar { + position: static; + float: left; } + .static-sidebar .sidebar .sidebar-wrapper { + max-height: unset; + min-height: 100%; } + .static-sidebar .main-panel { + height: unset; } + .static-sidebar .main-panel .content { + margin-bottom: 60px; } + .static-sidebar .footer { + position: absolute; + bottom: 0; } } +/* Mail */ +.mail-wrapper .toggle-email-nav { + margin-top: 10px; + display: none; } +.mail-wrapper .mail-content .inbox-head, .mail-wrapper .mail-content .email-head { + padding: 35px 25px 20px; } + .mail-wrapper .mail-content .inbox-head h3, .mail-wrapper .mail-content .email-head h3 { + font-size: 22px; + font-weight: 300; + margin: 0px; } +.mail-wrapper .mail-content .email-head { + padding: 35px 25px; + border-bottom: 1px solid #f1f1f1; } + .mail-wrapper .mail-content .email-head .favorite { + color: #eee; + margin-right: 5px; } + .mail-wrapper .mail-content .email-head .favorite.active { + color: #FFC600; } + .mail-wrapper .mail-content .email-head .controls { + margin-left: auto; } + .mail-wrapper .mail-content .email-head .controls > a { + color: #9c9c9c; + font-size: 18px; + padding: 0 5px; } + .mail-wrapper .mail-content .email-head .controls > a:hover { + text-decoration: none; + opacity: 0.8; } + .mail-wrapper .mail-content .email-head .controls > a:last-child { + padding-right: 0px; } +.mail-wrapper .mail-content .email-sender { + padding: 14px 25px; + display: flex; + align-items: center; + border-bottom: 1px solid #f1f1f1; } + .mail-wrapper .mail-content .email-sender .avatar { + padding-right: 12px; } + .mail-wrapper .mail-content .email-sender .avatar img { + max-width: 40px; + max-height: 40px; + border-radius: 50%; } + .mail-wrapper .mail-content .email-sender .date { + margin-left: auto; } + .mail-wrapper .mail-content .email-sender .sender .action { + display: inline-block; } + .mail-wrapper .mail-content .email-sender .sender .action > a { + cursor: pointer; } +.mail-wrapper .mail-content .email-body { + padding: 30px 28px; } +.mail-wrapper .mail-content .email-attachments { + padding: 25px 28px; + border-top: 1px solid #f1f1f1; } + .mail-wrapper .mail-content .email-attachments .title { + font-weight: 400; + margin-bottom: 10px; } + .mail-wrapper .mail-content .email-attachments .title span { + font-weight: 400; } + .mail-wrapper .mail-content .email-attachments ul { + padding-left: 0px; + list-style: none; } + .mail-wrapper .mail-content .email-attachments ul li { + padding: 6px 0; } + .mail-wrapper .mail-content .email-attachments ul li a { + font-weight: 400; } + .mail-wrapper .mail-content .email-attachments ul li a:hover { + text-decoration: none; } + .mail-wrapper .mail-content .email-attachments ul li a i { + font-size: 20px; + display: inline-block; + vertical-align: middle; } + .mail-wrapper .mail-content .email-attachments ul li a span { + font-weight: 400; } +.mail-wrapper .mail-content .inbox-body { + padding: 20px 0px; } + .mail-wrapper .mail-content .inbox-body .mail-option { + padding: 0 20px; + margin-bottom: 20px; + display: flex; } + .mail-wrapper .mail-content .inbox-body .mail-option .chk-all { + display: inline-block; } + .mail-wrapper .mail-content .inbox-body .mail-option .btn-option { + color: #555 !important; + border: 1px solid #ebedf2 !important; + font-weight: 600; + background: #ffffff !important; + box-shadow: 2px 2px 3px 0px #f2f1f1 !important; } + .mail-wrapper .mail-content .inbox-body .mail-option .form-check { + padding: 0; } + .mail-wrapper .mail-content .inbox-body .mail-option .form-check .form-check-sign:before { + border: 1px solid #eee; + background: #eeeeee; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item { + padding: 14px 20px; + display: table; + cursor: pointer; + position: relative; + font-size: 12px; + width: 100%; + border-top: 1px solid #f1f1f1; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item:hover { + background: #f6f5f5; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions, .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail { + vertical-align: top; + display: table-cell; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions { + width: 50px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .custom-checkbox { + margin-right: 0px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite { + color: #eee; + font-size: 18px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite:hover { + text-decoration: none; + color: #969696; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite.active, .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite.active:hover { + color: #FFC600; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail p, .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .msg { + font-size: 12px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .msg { + margin-bottom: 0px; + margin-top: 8px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .from { + font-size: 13px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .date { + font-size: 12px; + display: flex; + align-items: center; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .date .paperclip { + font-size: 16px; + padding-right: 4px; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread { + font-weight: 400; + background: #fbfbfb; } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread:after { + content: ''; + display: block; + position: absolute; + width: 3px; + background: #1572E8; + top: -1px; + left: 0px; + bottom: -1px; + height: calc(100% + 2px); } + .mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread .email-list-detail .from { + font-weight: 600; } +.mail-wrapper .mail-content .email-compose-fields, .mail-wrapper .mail-content .email-editor { + padding: 20px 25px; } +.mail-wrapper .mail-content .email-compose-fields { + padding: 20px 25px; + border-bottom: 1px solid #f1f1f1; } +.mail-wrapper .mail-content .email-action { + text-align: right; + margin-bottom: 15px; } + .mail-wrapper .mail-content .email-action > .btn { + margin-right: 7px; } + .mail-wrapper .mail-content .email-action > .btn:last-child { + margin-right: 0px; } + +/* Flex-1 */ +.flex-1 { + -ms-flex: 1; + flex: 1; } + +/* Metric */ +.metric { + display: flex; + padding: 1rem; + flex-direction: column; } + +/* Customable Layouts Colors */ +.main-header .navbar-header[data-background-color] .nav-search .input-group { + border: 0; + background: rgba(0, 0, 0, 0.14) !important; + box-shadow: 3px 3px 6px 0 rgba(0, 0, 0, 0.07); + transition: all .4s; } + .main-header .navbar-header[data-background-color] .nav-search .input-group .form-control { + color: #ffffff !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group .form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + opacity: 1; } + .main-header .navbar-header[data-background-color] .nav-search .input-group .form-control::-moz-placeholder { + /* Firefox 19+ */ + opacity: 1; } + .main-header .navbar-header[data-background-color] .nav-search .input-group .form-control:-ms-input-placeholder { + /* IE 10+ */ + opacity: 1; } + .main-header .navbar-header[data-background-color] .nav-search .input-group .form-control:-moz-placeholder { + /* Firefox 18- */ + opacity: 1; } + .main-header .navbar-header[data-background-color] .nav-search .input-group .search-icon { + color: #ffffff !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus { + background: #fff !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control { + color: inherit !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #bfbfbf !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control::-moz-placeholder { + /* Firefox 19+ */ + color: #bfbfbf !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control:-ms-input-placeholder { + /* IE 10+ */ + color: #bfbfbf !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control:-moz-placeholder { + /* Firefox 18- */ + color: #bfbfbf !important; } + .main-header .navbar-header[data-background-color] .nav-search .input-group.focus .search-icon { + color: #bfbfbf !important; } +.main-header .navbar-header[data-background-color] .navbar-nav .nav-item .nav-link { + color: #ffffff !important; } + .main-header .navbar-header[data-background-color] .navbar-nav .nav-item .nav-link:hover, .main-header .navbar-header[data-background-color] .navbar-nav .nav-item .nav-link:focus { + background: rgba(31, 30, 30, 0.12) !important; } +.main-header .navbar-header[data-background-color] .navbar-nav .nav-item.active .nav-link { + background: rgba(31, 30, 30, 0.12) !important; } + +.main-header .navbar-header[data-background-color="dark"] .nav-search .input-group, .main-header .navbar-header[data-background-color="dark2"] .nav-search .input-group { + background: rgba(185, 185, 185, 0.18) !important; } +.main-header .navbar-header[data-background-color="dark"] .navbar-nav .nav-item .nav-link:hover, .main-header .navbar-header[data-background-color="dark"] .navbar-nav .nav-item .nav-link:focus, .main-header .navbar-header[data-background-color="dark2"] .navbar-nav .nav-item .nav-link:hover, .main-header .navbar-header[data-background-color="dark2"] .navbar-nav .nav-item .nav-link:focus { + background: rgba(185, 185, 185, 0.18) !important; } +.main-header .navbar-header[data-background-color="dark"] .navbar-nav .nav-item.active .nav-link, .main-header .navbar-header[data-background-color="dark2"] .navbar-nav .nav-item.active .nav-link { + background: rgba(185, 185, 185, 0.18) !important; } +.main-header .navbar-header[data-background-color="white"] .nav-search .input-group, .main-header .navbar-header .navbar-header-transparent .nav-search .input-group { + background: #eee; } + .main-header .navbar-header[data-background-color="white"] .nav-search .input-group .form-control, .main-header .navbar-header .navbar-header-transparent .nav-search .input-group .form-control { + color: #8d9498 !important; } + .main-header .navbar-header[data-background-color="white"] .nav-search .input-group .search-icon, .main-header .navbar-header .navbar-header-transparent .nav-search .input-group .search-icon { + color: #8d9498 !important; } +.main-header .navbar-header[data-background-color="white"] .navbar-nav .nav-item .nav-link, .main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item .nav-link { + color: #8d9498 !important; } + .main-header .navbar-header[data-background-color="white"] .navbar-nav .nav-item .nav-link:hover, .main-header .navbar-header[data-background-color="white"] .navbar-nav .nav-item .nav-link:focus, .main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item .nav-link:hover, .main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item .nav-link:focus { + background: #eee !important; } +.main-header .navbar-header[data-background-color="white"] .navbar-nav .nav-item.active .nav-link, .main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item.active .nav-link { + background: #eee !important; } + +.btn-toggle { + color: #fff !important; } + +.logo-header[data-background-color] .navbar-toggler .navbar-toggler-icon { + color: #ffffff !important; } +.logo-header[data-background-color] .more { + color: #ffffff !important; } +.logo-header[data-background-color="white"] .navbar-toggler .navbar-toggler-icon, .logo-header[data-background-color="white"] .more, .logo-header[data-background-color="white"] .btn-toggle { + color: #8d9498 !important; } + +.logo-header[data-background-color="white"] { + background: #ffffff !important; } + +.navbar-header[data-background-color="white"] { + background: #ffffff !important; } + +.logo-header[data-background-color="dark"] { + background: #1a2035 !important; } + +.logo-header[data-background-color="dark2"] { + background: #1f283e !important; } + +.navbar-header[data-background-color="dark"] { + background: #1a2035 !important; } + +.navbar-header[data-background-color="dark2"] { + background: #1f283e !important; } + +.logo-header[data-background-color="blue"] { + background: #1572E8 !important; } + +.logo-header[data-background-color="blue2"] { + background: #1269DB !important; } + +.navbar-header[data-background-color="blue"] { + background: #1572E8 !important; } + +.navbar-header[data-background-color="blue2"] { + background: #1269DB !important; } + +.logo-header[data-background-color="purple"] { + background: #6861CE !important; } + +.logo-header[data-background-color="purple2"] { + background: #5C55BF !important; } + +.navbar-header[data-background-color="purple"] { + background: #6861CE !important; } + +.navbar-header[data-background-color="purple2"] { + background: #5C55BF !important; } + +.logo-header[data-background-color="light-blue"] { + background: #48ABF7 !important; } + +.logo-header[data-background-color="light-blue2"] { + background: #3697E1 !important; } + +.navbar-header[data-background-color="light-blue"] { + background: #48ABF7 !important; } + +.navbar-header[data-background-color="light-blue2"] { + background: #3697E1 !important; } + +.logo-header[data-background-color="green"] { + background: #31CE36 !important; } + +.logo-header[data-background-color="green2"] { + background: #2BB930 !important; } + +.navbar-header[data-background-color="green"] { + background: #31CE36 !important; } + +.navbar-header[data-background-color="green2"] { + background: #2BB930 !important; } + +.logo-header[data-background-color="orange"] { + background: #FFAD46 !important; } + +.logo-header[data-background-color="orange2"] { + background: #FF9E27 !important; } + +.navbar-header[data-background-color="orange"] { + background: #FFAD46 !important; } + +.navbar-header[data-background-color="orange2"] { + background: #FF9E27 !important; } + +.logo-header[data-background-color="red"] { + background: #F25961 !important; } + +.logo-header[data-background-color="red2"] { + background: #EA4d56 !important; } + +.navbar-header[data-background-color="red"] { + background: #F25961 !important; } + +.navbar-header[data-background-color="red2"] { + background: #EA4d56 !important; } + +.sidebar[data-background-color="dark"] { + background: #1a2035 !important; } + .sidebar[data-background-color="dark"] .user { + border-color: rgba(181, 181, 181, 0.1) !important; } + .sidebar[data-background-color="dark"] .user .info a > span { + color: #b9babf; } + .sidebar[data-background-color="dark"] .user .info a > span .user-level { + color: #8d9498; } + .sidebar[data-background-color="dark"] .nav > .nav-item.active > a p { + color: #b9babf !important; } + .sidebar[data-background-color="dark"] .nav > .nav-item a { + color: #b9babf !important; } + .sidebar[data-background-color="dark"] .nav > .nav-item a:hover p, .sidebar[data-background-color="dark"] .nav > .nav-item a:focus p, .sidebar[data-background-color="dark"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] p { + color: #b9babf !important; } + .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:hover, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:focus, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #1a2035 !important; } + .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a p, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a i, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a .caret, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:hover p, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:hover i, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:hover .caret, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:focus p, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:focus i, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a:focus .caret, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="dark"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #1a2035 !important; } + .sidebar[data-background-color="dark"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="dark"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="dark"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="dark2"] { + background: #1f283e !important; } + .sidebar[data-background-color="dark2"] .user { + border-color: rgba(181, 181, 181, 0.1) !important; } + .sidebar[data-background-color="dark2"] .user .info a > span { + color: #b9babf; } + .sidebar[data-background-color="dark2"] .user .info a > span .user-level { + color: #8d9498; } + .sidebar[data-background-color="dark2"] .nav > .nav-item.active > a p { + color: #b9babf !important; } + .sidebar[data-background-color="dark2"] .nav > .nav-item a { + color: #b9babf !important; } + .sidebar[data-background-color="dark2"] .nav > .nav-item a:hover p, .sidebar[data-background-color="dark2"] .nav > .nav-item a:focus p, .sidebar[data-background-color="dark2"] .nav > .nav-item a[data-toggle=collapse][aria-expanded=true] p { + color: #b9babf !important; } + .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:hover, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:focus, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #1f283e !important; } + .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a p, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a i, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a .caret, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:hover p, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:hover i, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:hover .caret, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:focus p, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:focus i, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a:focus .caret, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="dark2"].sidebar-style-2 .nav .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #1f283e !important; } + .sidebar[data-background-color="dark2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="dark2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="dark2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="blue"] { + background: #1572E8 !important; } + .sidebar[data-background-color="blue"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="blue"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="blue"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="blue"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="blue"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="blue"] .nav .nav-item a p, .sidebar[data-background-color="blue"] .nav .nav-item a i, .sidebar[data-background-color="blue"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="blue"] .nav .nav-item a:hover, .sidebar[data-background-color="blue"] .nav .nav-item a:focus, .sidebar[data-background-color="blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="blue"] .nav .nav-item a:hover p, .sidebar[data-background-color="blue"] .nav .nav-item a:hover i, .sidebar[data-background-color="blue"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="blue"] .nav .nav-item a:focus p, .sidebar[data-background-color="blue"] .nav .nav-item a:focus i, .sidebar[data-background-color="blue"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="blue"] .nav > .nav-item.active > a, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #1572E8 !important; } + .sidebar[data-background-color="blue"] .nav > .nav-item.active > a p, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a i, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #1572E8 !important; } + .sidebar[data-background-color="blue"] .nav .nav-section .text-section, .sidebar[data-background-color="blue"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="blue"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="blue"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="blue"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="blue"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="blue2"] { + background: #1269DB !important; } + .sidebar[data-background-color="blue2"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="blue2"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="blue2"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="blue2"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="blue2"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="blue2"] .nav .nav-item a p, .sidebar[data-background-color="blue2"] .nav .nav-item a i, .sidebar[data-background-color="blue2"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="blue2"] .nav .nav-item a:hover, .sidebar[data-background-color="blue2"] .nav .nav-item a:focus, .sidebar[data-background-color="blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="blue2"] .nav .nav-item a:hover p, .sidebar[data-background-color="blue2"] .nav .nav-item a:hover i, .sidebar[data-background-color="blue2"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="blue2"] .nav .nav-item a:focus p, .sidebar[data-background-color="blue2"] .nav .nav-item a:focus i, .sidebar[data-background-color="blue2"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #1269DB !important; } + .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a p, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a i, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #1269DB !important; } + .sidebar[data-background-color="blue2"] .nav .nav-section .text-section, .sidebar[data-background-color="blue2"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="blue2"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="blue2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="blue2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="blue2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="purple"] { + background: #6861CE !important; } + .sidebar[data-background-color="purple"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="purple"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="purple"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="purple"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="purple"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="purple"] .nav .nav-item a p, .sidebar[data-background-color="purple"] .nav .nav-item a i, .sidebar[data-background-color="purple"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="purple"] .nav .nav-item a:hover, .sidebar[data-background-color="purple"] .nav .nav-item a:focus, .sidebar[data-background-color="purple"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="purple"] .nav .nav-item a:hover p, .sidebar[data-background-color="purple"] .nav .nav-item a:hover i, .sidebar[data-background-color="purple"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="purple"] .nav .nav-item a:focus p, .sidebar[data-background-color="purple"] .nav .nav-item a:focus i, .sidebar[data-background-color="purple"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="purple"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="purple"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="purple"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="purple"] .nav > .nav-item.active > a, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #6861CE !important; } + .sidebar[data-background-color="purple"] .nav > .nav-item.active > a p, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a i, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="purple"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #6861CE !important; } + .sidebar[data-background-color="purple"] .nav .nav-section .text-section, .sidebar[data-background-color="purple"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="purple"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="purple"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="purple"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="purple"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="purple2"] { + background: #5C55BF !important; } + .sidebar[data-background-color="purple2"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="purple2"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="purple2"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="purple2"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="purple2"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="purple2"] .nav .nav-item a p, .sidebar[data-background-color="purple2"] .nav .nav-item a i, .sidebar[data-background-color="purple2"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="purple2"] .nav .nav-item a:hover, .sidebar[data-background-color="purple2"] .nav .nav-item a:focus, .sidebar[data-background-color="purple2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="purple2"] .nav .nav-item a:hover p, .sidebar[data-background-color="purple2"] .nav .nav-item a:hover i, .sidebar[data-background-color="purple2"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="purple2"] .nav .nav-item a:focus p, .sidebar[data-background-color="purple2"] .nav .nav-item a:focus i, .sidebar[data-background-color="purple2"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="purple2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="purple2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="purple2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #5C55BF !important; } + .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a p, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a i, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="purple2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #5C55BF !important; } + .sidebar[data-background-color="purple2"] .nav .nav-section .text-section, .sidebar[data-background-color="purple2"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="purple2"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="purple2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="purple2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="purple2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="light-blue"] { + background: #48ABF7 !important; } + .sidebar[data-background-color="light-blue"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="light-blue"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="light-blue"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="light-blue"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="light-blue"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="light-blue"] .nav .nav-item a p, .sidebar[data-background-color="light-blue"] .nav .nav-item a i, .sidebar[data-background-color="light-blue"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="light-blue"] .nav .nav-item a:hover, .sidebar[data-background-color="light-blue"] .nav .nav-item a:focus, .sidebar[data-background-color="light-blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="light-blue"] .nav .nav-item a:hover p, .sidebar[data-background-color="light-blue"] .nav .nav-item a:hover i, .sidebar[data-background-color="light-blue"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="light-blue"] .nav .nav-item a:focus p, .sidebar[data-background-color="light-blue"] .nav .nav-item a:focus i, .sidebar[data-background-color="light-blue"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="light-blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="light-blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="light-blue"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #48ABF7 !important; } + .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a p, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a i, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="light-blue"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #48ABF7 !important; } + .sidebar[data-background-color="light-blue"] .nav .nav-section .text-section, .sidebar[data-background-color="light-blue"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="light-blue"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="light-blue"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="light-blue"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="light-blue"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="light-blue2"] { + background: #3697E1 !important; } + .sidebar[data-background-color="light-blue2"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="light-blue2"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="light-blue2"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="light-blue2"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="light-blue2"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="light-blue2"] .nav .nav-item a p, .sidebar[data-background-color="light-blue2"] .nav .nav-item a i, .sidebar[data-background-color="light-blue2"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="light-blue2"] .nav .nav-item a:hover, .sidebar[data-background-color="light-blue2"] .nav .nav-item a:focus, .sidebar[data-background-color="light-blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="light-blue2"] .nav .nav-item a:hover p, .sidebar[data-background-color="light-blue2"] .nav .nav-item a:hover i, .sidebar[data-background-color="light-blue2"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="light-blue2"] .nav .nav-item a:focus p, .sidebar[data-background-color="light-blue2"] .nav .nav-item a:focus i, .sidebar[data-background-color="light-blue2"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="light-blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="light-blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="light-blue2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #3697E1 !important; } + .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a p, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a i, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="light-blue2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #3697E1 !important; } + .sidebar[data-background-color="light-blue2"] .nav .nav-section .text-section, .sidebar[data-background-color="light-blue2"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="light-blue2"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="light-blue2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="light-blue2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="light-blue2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="green"] { + background: #31CE36 !important; } + .sidebar[data-background-color="green"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="green"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="green"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="green"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="green"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="green"] .nav .nav-item a p, .sidebar[data-background-color="green"] .nav .nav-item a i, .sidebar[data-background-color="green"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="green"] .nav .nav-item a:hover, .sidebar[data-background-color="green"] .nav .nav-item a:focus, .sidebar[data-background-color="green"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="green"] .nav .nav-item a:hover p, .sidebar[data-background-color="green"] .nav .nav-item a:hover i, .sidebar[data-background-color="green"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="green"] .nav .nav-item a:focus p, .sidebar[data-background-color="green"] .nav .nav-item a:focus i, .sidebar[data-background-color="green"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="green"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="green"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="green"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="green"] .nav > .nav-item.active > a, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="green"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #31CE36 !important; } + .sidebar[data-background-color="green"] .nav > .nav-item.active > a p, .sidebar[data-background-color="green"] .nav > .nav-item.active > a i, .sidebar[data-background-color="green"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="green"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="green"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="green"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="green"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #31CE36 !important; } + .sidebar[data-background-color="green"] .nav .nav-section .text-section, .sidebar[data-background-color="green"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="green"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="green"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="green"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="green"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="green2"] { + background: #2BB930 !important; } + .sidebar[data-background-color="green2"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="green2"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="green2"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="green2"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="green2"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="green2"] .nav .nav-item a p, .sidebar[data-background-color="green2"] .nav .nav-item a i, .sidebar[data-background-color="green2"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="green2"] .nav .nav-item a:hover, .sidebar[data-background-color="green2"] .nav .nav-item a:focus, .sidebar[data-background-color="green2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="green2"] .nav .nav-item a:hover p, .sidebar[data-background-color="green2"] .nav .nav-item a:hover i, .sidebar[data-background-color="green2"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="green2"] .nav .nav-item a:focus p, .sidebar[data-background-color="green2"] .nav .nav-item a:focus i, .sidebar[data-background-color="green2"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="green2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="green2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="green2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="green2"] .nav > .nav-item.active > a, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #2BB930 !important; } + .sidebar[data-background-color="green2"] .nav > .nav-item.active > a p, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a i, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="green2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #2BB930 !important; } + .sidebar[data-background-color="green2"] .nav .nav-section .text-section, .sidebar[data-background-color="green2"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="green2"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="green2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="green2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="green2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="orange"] { + background: #FFAD46 !important; } + .sidebar[data-background-color="orange"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="orange"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="orange"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="orange"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="orange"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="orange"] .nav .nav-item a p, .sidebar[data-background-color="orange"] .nav .nav-item a i, .sidebar[data-background-color="orange"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="orange"] .nav .nav-item a:hover, .sidebar[data-background-color="orange"] .nav .nav-item a:focus, .sidebar[data-background-color="orange"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="orange"] .nav .nav-item a:hover p, .sidebar[data-background-color="orange"] .nav .nav-item a:hover i, .sidebar[data-background-color="orange"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="orange"] .nav .nav-item a:focus p, .sidebar[data-background-color="orange"] .nav .nav-item a:focus i, .sidebar[data-background-color="orange"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="orange"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="orange"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="orange"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="orange"] .nav > .nav-item.active > a, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #FFAD46 !important; } + .sidebar[data-background-color="orange"] .nav > .nav-item.active > a p, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a i, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="orange"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #FFAD46 !important; } + .sidebar[data-background-color="orange"] .nav .nav-section .text-section, .sidebar[data-background-color="orange"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="orange"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="orange"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="orange"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="orange"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="orange2"] { + background: #FF9E27 !important; } + .sidebar[data-background-color="orange2"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="orange2"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="orange2"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="orange2"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="orange2"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="orange2"] .nav .nav-item a p, .sidebar[data-background-color="orange2"] .nav .nav-item a i, .sidebar[data-background-color="orange2"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="orange2"] .nav .nav-item a:hover, .sidebar[data-background-color="orange2"] .nav .nav-item a:focus, .sidebar[data-background-color="orange2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="orange2"] .nav .nav-item a:hover p, .sidebar[data-background-color="orange2"] .nav .nav-item a:hover i, .sidebar[data-background-color="orange2"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="orange2"] .nav .nav-item a:focus p, .sidebar[data-background-color="orange2"] .nav .nav-item a:focus i, .sidebar[data-background-color="orange2"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="orange2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="orange2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="orange2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #FF9E27 !important; } + .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a p, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a i, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="orange2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #FF9E27 !important; } + .sidebar[data-background-color="orange2"] .nav .nav-section .text-section, .sidebar[data-background-color="orange2"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="orange2"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="orange2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="orange2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="orange2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="red"] { + background: #F25961 !important; } + .sidebar[data-background-color="red"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="red"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="red"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="red"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="red"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="red"] .nav .nav-item a p, .sidebar[data-background-color="red"] .nav .nav-item a i, .sidebar[data-background-color="red"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="red"] .nav .nav-item a:hover, .sidebar[data-background-color="red"] .nav .nav-item a:focus, .sidebar[data-background-color="red"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="red"] .nav .nav-item a:hover p, .sidebar[data-background-color="red"] .nav .nav-item a:hover i, .sidebar[data-background-color="red"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="red"] .nav .nav-item a:focus p, .sidebar[data-background-color="red"] .nav .nav-item a:focus i, .sidebar[data-background-color="red"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="red"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="red"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="red"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="red"] .nav > .nav-item.active > a, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="red"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #F25961 !important; } + .sidebar[data-background-color="red"] .nav > .nav-item.active > a p, .sidebar[data-background-color="red"] .nav > .nav-item.active > a i, .sidebar[data-background-color="red"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="red"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="red"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="red"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="red"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #F25961 !important; } + .sidebar[data-background-color="red"] .nav .nav-section .text-section, .sidebar[data-background-color="red"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="red"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="red"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="red"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="red"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +.sidebar[data-background-color="red2"] { + background: #EA4d56 !important; } + .sidebar[data-background-color="red2"] .user { + margin-top: 0px; + padding-top: 12.5px; + border-top: 1px solid; + border-color: rgba(255, 255, 255, 0.1) !important; } + .sidebar[data-background-color="red2"] .user .info a > span { + color: #fff; } + .sidebar[data-background-color="red2"] .user .info a > span .user-level { + color: #eaeaea; } + .sidebar[data-background-color="red2"] .user .info .caret { + border-top-color: #fff; } + .sidebar[data-background-color="red2"] .nav .nav-item a { + color: #eaeaea !important; } + .sidebar[data-background-color="red2"] .nav .nav-item a p, .sidebar[data-background-color="red2"] .nav .nav-item a i, .sidebar[data-background-color="red2"] .nav .nav-item a .caret { + color: #eaeaea !important; } + .sidebar[data-background-color="red2"] .nav .nav-item a:hover, .sidebar[data-background-color="red2"] .nav .nav-item a:focus, .sidebar[data-background-color="red2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] { + color: #fff !important; } + .sidebar[data-background-color="red2"] .nav .nav-item a:hover p, .sidebar[data-background-color="red2"] .nav .nav-item a:hover i, .sidebar[data-background-color="red2"] .nav .nav-item a:hover .caret, .sidebar[data-background-color="red2"] .nav .nav-item a:focus p, .sidebar[data-background-color="red2"] .nav .nav-item a:focus i, .sidebar[data-background-color="red2"] .nav .nav-item a:focus .caret, .sidebar[data-background-color="red2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="red2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="red2"] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret { + color: #fff !important; } + .sidebar[data-background-color="red2"] .nav > .nav-item.active > a, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:hover, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:focus, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] { + background: #fff !important; + color: #EA4d56 !important; } + .sidebar[data-background-color="red2"] .nav > .nav-item.active > a p, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a i, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a .caret, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:hover p, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:hover i, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:hover .caret, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:focus p, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:focus i, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a:focus .caret, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] p, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] i, .sidebar[data-background-color="red2"] .nav > .nav-item.active > a[data-toggle=collapse][aria-expanded=true] .caret { + color: #EA4d56 !important; } + .sidebar[data-background-color="red2"] .nav .nav-section .text-section, .sidebar[data-background-color="red2"] .nav .nav-section .sidebar-mini-icon { + color: #eaeaea; } + .sidebar[data-background-color="red2"] .nav .nav-collapse li a .sub-item:before { + background: #eaeaea; } + .sidebar[data-background-color="red2"] .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #f7f7f7; } + .sidebar[data-background-color="red2"] .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .sidebar[data-background-color="red2"] .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #dcdbdb; } + +/* Avatar */ +.avatar { + position: relative; + display: inline-block; } + +.avatar-img { + width: 100%; + height: 100%; + -o-object-fit: cover; + object-fit: cover; } + +.avatar-title { + width: 100%; + height: 100%; + background-color: #6861CE; + color: #fff; + display: flex; + align-items: center; + justify-content: center; } + +.avatar-online::before, .avatar-offline::before, .avatar-away::before { + position: absolute; + right: 0; + bottom: 0; + width: 25%; + height: 25%; + border-radius: 50%; + content: ''; + border: 2px solid #fff; } + +.avatar-online::before { + background-color: #31CE36; } + +.avatar-offline::before { + background-color: #97a2b1; } + +.avatar-away::before { + background-color: #FFAD46; } + +.avatar { + width: 3rem; + height: 3rem; } + .avatar .border { + border-width: 3px !important; } + .avatar .rounded { + border-radius: 6px !important; } + .avatar .avatar-title { + font-size: 18px; } + +.avatar-xs { + width: 1.65rem; + height: 1.65rem; } + .avatar-xs .border { + border-width: 2px !important; } + .avatar-xs .rounded { + border-radius: 4px !important; } + .avatar-xs .avatar-title { + font-size: 12px; } + .avatar-xs.avatar-online::before, .avatar-xs.avatar-offline::before, .avatar-xs.avatar-away::before { + border-width: 1px; } + +.avatar-sm { + width: 2.5rem; + height: 2.5rem; } + .avatar-sm .border { + border-width: 3px !important; } + .avatar-sm .rounded { + border-radius: 4px !important; } + .avatar-sm .avatar-title { + font-size: 15px; } + .avatar-sm.avatar-online::before, .avatar-sm.avatar-offline::before, .avatar-sm.avatar-away::before { + border-width: 2px; } + +.avatar-lg { + width: 3.75rem; + height: 3.75rem; } + .avatar-lg .border { + border-width: 3px !important; } + .avatar-lg .rounded { + border-radius: 8px !important; } + .avatar-lg .avatar-title { + font-size: 24px; } + .avatar-lg.avatar-online::before, .avatar-lg.avatar-offline::before, .avatar-lg.avatar-away::before { + border-width: 3px; } + +.avatar-xl { + width: 5rem; + height: 5rem; } + .avatar-xl .border { + border-width: 4px !important; } + .avatar-xl .rounded { + border-radius: 8px !important; } + .avatar-xl .avatar-title { + font-size: 28px; } + .avatar-xl.avatar-online::before, .avatar-xl.avatar-offline::before, .avatar-xl.avatar-away::before { + border-width: 4px; } + +.avatar-xxl { + width: 5.125rem; + height: 5.125rem; } + .avatar-xxl .border { + border-width: 6px !important; } + .avatar-xxl .rounded { + border-radius: 8px !important; } + .avatar-xxl .avatar-title { + font-size: 30px; } + .avatar-xxl.avatar-online::before, .avatar-xxl.avatar-offline::before, .avatar-xxl.avatar-away::before { + border-width: 4px; } + +@media (min-width: 768px) { + .avatar-xxl { + width: 8rem; + height: 8rem; } + .avatar-xxl .border { + border-width: 4px !important; } + .avatar-xxl .rounded { + border-radius: 12px !important; } + .avatar-xxl .avatar-title { + font-size: 42px; } + .avatar-xxl.avatar-online::before, .avatar-xxl.avatar-offline::before, .avatar-xxl.avatar-away::before { + border-width: 4px; } } +.avatar-group { + display: inline-flex; } + .avatar-group .avatar + .avatar { + margin-left: -.75rem; } + .avatar-group .avatar-xs + .avatar-xs { + margin-left: -.40625rem; } + .avatar-group .avatar-sm + .avatar-sm { + margin-left: -.625rem; } + .avatar-group .avatar-lg + .avatar-lg { + margin-left: -1rem; } + .avatar-group .avatar-xl + .avatar-xl { + margin-left: -1.28125rem; } + .avatar-group .avatar:hover { + z-index: 1; } + +.border-dark { + border-color: #202940 !important; } + +/* Breadcrumb */ +.breadcrumbs { + list-style: none; + display: inline; + width: auto; + border-left: 1px solid #efefef; + margin-left: 25px; + padding-left: 25px; + margin-bottom: 0px; + padding-top: 8px; + padding-bottom: 8px; + height: 100%; } + .breadcrumbs li { + display: inline-block; } + .breadcrumbs li a { + color: #575962; + font-size: 13px; } + .breadcrumbs li a i { + font-size: 16px; } + .breadcrumbs li a:hover { + text-decoration: none; } + .breadcrumbs li.separator { + padding-left: 10px; + padding-right: 10px; + font-size: 12px; } + +/* Card */ +.card, .card-light { + border-radius: 5px; + background-color: #ffffff; + margin-bottom: 30px; + -webkit-box-shadow: 2px 6px 15px 0px rgba(69, 65, 78, 0.1); + -moz-box-shadow: 2px 6px 15px 0px rgba(69, 65, 78, 0.1); + box-shadow: 2px 6px 15px 0px rgba(69, 65, 78, 0.1); + border: 0px; } + .card .card-header, .card-light .card-header { + padding: 1rem 1.25rem; + background-color: transparent; + border-bottom: 1px solid #ebecec !important; } + .card .card-header:first-child, .card-light .card-header:first-child { + border-radius: 0px; } + .card .card-header .card-head-row, .card-light .card-header .card-head-row { + display: flex; + align-items: center; } + .card .card-header .card-head-row .card-tools, .card-light .card-header .card-head-row .card-tools { + margin-left: auto; + float: right; + padding-left: 15px; } + .card .separator-solid, .card-light .separator-solid { + border-top: 1px solid #ebecec; + margin: 15px 0; } + .card .separator-dashed, .card-light .separator-dashed { + border-top: 1px dashed #ebecec; + margin: 15px 0; } + .card .separator-dot, .card-light .separator-dot { + border-top: 1px dotted #ebecec; + margin: 15px 0; } + .card .full-width-separator, .card-light .full-width-separator { + margin: 15px -20px 15px; } + .card .b-b1, .card-light .b-b1 { + border-bottom: 1px solid rgba(255, 255, 255, 0.3); } + .card .card-body, .card-light .card-body { + padding: 1.25rem; } + .card .card-footer, .card-light .card-footer { + background-color: transparent; + line-height: 30px; + border-top: 1px solid #ebecec !important; + font-size: 13px; } + .card .pull-in, .card-light .pull-in { + margin-left: -1.25rem; + margin-right: -1.25rem; } + .card .pull-in.sparkline-fix, .card-light .pull-in.sparkline-fix { + margin-left: -1.35rem; + margin-right: -1.35rem; + margin-bottom: -3px; } + .card .chart-as-background, .card-light .chart-as-background { + position: absolute; + bottom: 0; + width: calc(100% + 2px); } + .card .card-action, .card-light .card-action { + padding: 30px; + background-color: transparent; + line-height: 30px; + border-top: 1px solid #ebecec !important; + font-size: 14px; } + .card .card-footer hr, .card-light .card-footer hr { + margin-top: 5px; + margin-bottom: 5px; } + .card .card-footer .legend, .card-light .card-footer .legend { + display: inline-block; } + +@media screen and (max-width: 476px) { + .card .card-header .card-head-row:not(.card-tools-still-right) { + flex-direction: column; + align-items: unset; } + .card .card-header .card-head-row:not(.card-tools-still-right) .card-tools { + margin-left: 0px; + float: left; + padding-left: 0px; + padding-top: 10px; } } +.card.full-height { + height: calc(100% - 30px); } + +.card-space { + padding: 0 30px; } + .card-space > .card-header, .card-space > .card-body, .card-space > .card-footer, .card-space > .card-action { + padding-left: 0px !important; + padding-right: 0px !important; } + +.card-with-nav .card-header { + border-bottom: 0px !important; + padding-top: 0px !important; + padding-bottom: 0px !important; } +.card-with-nav .card-body { + padding: 15px 25px !important; } + +.card-list { + padding: 10px 0; } + .card-list .item-list { + display: flex; + flex-direction: row; + padding: 10px 0; + align-items: center; } + .card-list .item-list .info-user { + flex: 1; } + .card-list .item-list .info-user .username, .card-list .item-list .info-user a.username { + color: #1572E8; + font-size: 13px; + margin-bottom: 5px; + font-weight: 400; } + .card-list .item-list .info-user .status { + font-size: 11px; + color: #7d7b7b; } + +.card-title { + margin: 0; + color: #575962; + font-size: 20px; + font-weight: 400; + line-height: 1.6; } + .card-title a, .card-title a:hover, .card-title a:focus { + color: #575962; + text-decoration: none; } + +.card-sub { + display: block; + margin: 5px 0 10px 0; + font-size: .9rem; + background: #f7f8fa; + color: #575962; + padding: 0.85rem 1.5rem; + border-radius: 4px; + line-height: 1.82; } + +.card-category { + margin-top: 8px; + font-size: 14px; + color: #8d9498; + margin-bottom: 0px; + word-break: normal; } + +label { + font-size: 14px; + font-weight: 400; + color: #8d9498; + margin-bottom: 0px; } + +.card-transparent { + background: transparent !important; + box-shadow: none; + border-color: transparent !important; } + +/* Card Stats */ +.card-stats .card-body { + padding: 15px !important; } +.card-stats .card-title { + margin-bottom: 0px !important; } +.card-stats .card-category { + margin-top: 0px; } +.card-stats .col-icon { + width: 65px; + height: 65px; + margin-left: 15px; } +.card-stats .icon-big { + width: 100%; + height: 100%; + font-size: 2.2em; + min-height: 64px; + display: flex; + align-items: center; + justify-content: center; } + .card-stats .icon-big.icon-default, .card-stats .icon-big.icon-primary, .card-stats .icon-big.icon-secondary, .card-stats .icon-big.icon-success, .card-stats .icon-big.icon-info, .card-stats .icon-big.icon-warning, .card-stats .icon-big.icon-danger { + border-radius: 5px; } + .card-stats .icon-big.icon-default i, .card-stats .icon-big.icon-primary i, .card-stats .icon-big.icon-secondary i, .card-stats .icon-big.icon-success i, .card-stats .icon-big.icon-info i, .card-stats .icon-big.icon-warning i, .card-stats .icon-big.icon-danger i { + color: #ffffff !important; } + .card-stats .icon-big.icon-default { + background: #1a2035; } + .card-stats .icon-big.icon-primary { + background: #1572E8; } + .card-stats .icon-big.icon-secondary { + background: #6861CE; } + .card-stats .icon-big.icon-success { + background: #31CE36; } + .card-stats .icon-big.icon-warning { + background: #FFAD46; } + .card-stats .icon-big.icon-info { + background: #48ABF7; } + .card-stats .icon-big.icon-danger { + background: #F25961; } + .card-stats .icon-big.round { + border-radius: 50% !important; } +.card-stats .col-stats { + align-items: center; + display: flex; + padding-left: 15px; } + +/* Card Task */ +.card-tasks .table { + margin-bottom: 0px; } + .card-tasks .table .form-check { + padding: 0 0 0 0.75rem !important; } + .card-tasks .table .form-check label { + margin-bottom: 0px !important; } + .card-tasks .table tbody td:first-child, .card-tasks .table thead th:first-child { + padding-left: 15px; + padding-right: 15px; } + .card-tasks .table tbody td:last-child, .card-tasks .table thead th:last-child { + padding-right: 15px; } + .card-tasks .table tbody tr:last-child td { + border-bottom-width: 0px !important; } +.card-tasks .card-body { + padding-top: 0px; + padding-bottom: 0px; } + .card-tasks .card-body .table td { + font-size: 13px; } + .card-tasks .card-body .table td .btn { + font-size: 15px; + opacity: 0.7; + transition: all .3s; } + .card-tasks .card-body .table td:hover .btn { + opacity: 1; } +.card-tasks .form-button-action { + display: block !important; } + +/* Card States */ +.card-dark, .card-default, .card-primary, .card-secondary, .card-info, .card-success, .card-warning, .card-danger { + color: #ffffff; + border: 0px; } + +.card-dark .card-header, .card-default .card-header, .card-primary .card-header, .card-secondary .card-header, .card-info .card-header, .card-success .card-header, .card-warning .card-header, .card-danger .card-header { + border-bottom: transparent !important; } + +.card-dark .card-category, .card-default .card-category, .card-primary .card-category, .card-secondary .card-category, .card-info .card-category, .card-success .card-category, .card-warning .card-category, .card-danger .card-category, .card-dark .card-title, .card-default .card-title, .card-primary .card-title, .card-secondary .card-title, .card-info .card-title, .card-success .card-title, .card-warning .card-title, .card-danger .card-title, .card-dark label, .card-default label, .card-primary label, .card-info label, .card-success label, .card-warning label, .card-danger label { + color: #ffffff; } + +.card-dark .icon-big > i, .card-default .icon-big > i, .card-primary .icon-big > i, .card-secondary .icon-big > i, .card-info .icon-big > i, .card-success .icon-big > i, .card-warning .icon-big > i, .card-danger .icon-big > i { + color: #ffffff !important; } + +.card-dark .card-footer, .card-default .card-footer, .card-primary .card-footer, .card-secondary .card-footer, .card-info .card-footer, .card-success .card-footer, .card-warning .card-footer, .card-danger .card-footer { + border-top: transparent !important; } + +.card-default { + background: #1a2035 !important; } + +.card-primary { + background: #1572E8 !important; } + +.card-secondary { + background: #6861CE !important; } + +.card-info { + background: #48ABF7 !important; } + +.card-success { + background: #31CE36 !important; } + +.card-warning { + background: #FFAD46 !important; } + +.card-danger { + background: #F25961 !important; } + +.card-round { + border-radius: 5px; } + +/* Progress Card */ +.progress-card { + margin-bottom: 25px; } + .progress-card .progress-status { + display: flex; + margin-bottom: 10px; + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; } + +/* Card Posts */ +.card-post .info-post .username { + margin-bottom: 0px; + font-weight: 600; } +.card-post .info-post .date { + margin-bottom: 0px; } + +/* Card Pricing */ +.card-pricing { + padding: 20px 5px; + text-align: center; + border-radius: 5px; } + .card-pricing .card-header { + border-bottom: 0px !important; } + .card-pricing .card-footer { + border-top: 0px !important; + padding: 15px 15px 10px 15px; } + .card-pricing .card-title { + font-weight: 400; + font-size: 20px; } + .card-pricing .card-price .price { + font-size: 36px; + font-weight: 400; } + .card-pricing .card-price .text { + font-size: 18px; + font-weight: 400; + color: #d1d7e3; } + .card-pricing .specification-list { + list-style: none; + padding-left: 0px; } + .card-pricing .specification-list li { + padding: 8px 0 12px; + border-bottom: 1px solid #eee; + text-align: left; + font-size: 12px; + margin-bottom: 5px; } + .card-pricing .specification-list li .name-specification { + color: #83848a; } + .card-pricing .specification-list li .status-specification { + margin-left: auto; + float: right; + font-weight: 400; } + .card-pricing.card-pricing-focus { + padding: 40px 5px; } + .card-pricing.card-default .name-specification, .card-pricing.card-primary .name-specification, .card-pricing.card-secondary .name-specification, .card-pricing.card-info .name-specification, .card-pricing.card-success .name-specification, .card-pricing.card-danger .name-specification, .card-pricing.card-warning .name-specification { + color: #ffffff !important; } + .card-pricing.card-primary .specification-list li { + border-color: #2f8bff !important; } + .card-pricing.card-primary .btn-light { + color: #1572E8 !important; } + .card-pricing.card-success .specification-list li { + border-color: #64e069 !important; } + .card-pricing.card-success .btn-light { + color: #31CE36 !important; } + .card-pricing.card-secondary .specification-list li { + border-color: #7f77dc !important; } + .card-pricing.card-secondary .btn-light { + color: #6861CE !important; } + .card-pricing.card-default .specification-list li { + border-color: #6f8996 !important; } + .card-pricing.card-default .btn-light { + color: #1a2035 !important; } + .card-pricing.card-info .specification-list li { + border-color: #11c0e4 !important; } + .card-pricing.card-info .btn-light { + color: #48ABF7 !important; } + .card-pricing.card-danger .specification-list li { + border-color: #ff6972 !important; } + .card-pricing.card-danger .btn-light { + color: #F25961 !important; } + .card-pricing.card-warning .specification-list li { + border-color: #ffbc67 !important; } + .card-pricing.card-warning .btn-light { + color: #FFAD46 !important; } + +.card-pricing2 { + padding-bottom: 10px; + background: #fff !important; + border-bottom: 7px solid; + text-align: center; + overflow: hidden; + position: relative; + border-radius: 5px; + -webkit-box-shadow: 0px 1px 15px 1px rgba(69, 65, 78, 0.08); + -moz-box-shadow: 0px 1px 15px 1px rgba(69, 65, 78, 0.08); + box-shadow: 0px 1px 15px 1px rgba(69, 65, 78, 0.08); } + .card-pricing2:before { + content: ""; + width: 100%; + height: 350px; + position: absolute; + top: -150px; + left: 0; + transform: skewY(-20deg); } + .card-pricing2 .price-value:after, .card-pricing2 .price-value:before { + content: ""; + left: 50%; + transform: translateX(-50%) scaleY(0.5) rotate(45deg); } + .card-pricing2 .value:after, .card-pricing2 .value:before { + content: ""; + left: 50%; + transform: translateX(-50%) scaleY(0.5) rotate(45deg); } + .card-pricing2 .pricing-header { + padding: 20px 20px 60px; + text-align: left; + position: relative; } + .card-pricing2 .sub-title { + display: block; + font-size: 16px; } + .card-pricing2 .value { + background: #fff; } + .card-pricing2 .price-value { + display: inline-block; + width: 170px; + height: 110px; + padding: 15px; + border: 2px solid; + border-top: none; + border-bottom: none; + position: relative; } + .card-pricing2 .price-value:after, .card-pricing2 .price-value:before { + width: 121px; + height: 121px; + border: 3px solid; + border-right: none; + border-bottom: none; + position: absolute; + top: -60px; } + .card-pricing2 .price-value:after { + border-top: none; + border-left: none; + border-bottom: 3px solid; + border-right: 3px solid; + top: auto; + bottom: -60px; } + .card-pricing2 .value { + width: 100%; + height: 100%; + border: 2px solid; + border-top: none; + border-bottom: none; + z-index: 1; + position: relative; } + .card-pricing2 .value:after, .card-pricing2 .value:before { + width: 97px; + height: 97px; + background: #fff; + border: 3px solid; + border-bottom: none; + border-right: none; + position: absolute; + top: -48px; + z-index: -1; } + .card-pricing2 .value:after { + border-right: 3px solid; + border-bottom: 3px solid; + border-top: none; + border-left: none; + top: auto; + bottom: -48px; } + .card-pricing2 .currency { + display: inline-block; + font-size: 30px; + margin-top: 7px; + vertical-align: top; } + .card-pricing2 .amount { + display: inline-block; + font-size: 40px; + font-weight: 600; + line-height: 65px; } + .card-pricing2 .amount span { + display: inline-block; + font-size: 30px; + font-weight: 400; + vertical-align: top; + margin-top: -7px; } + .card-pricing2 .month { + display: block; + font-size: 16px; + line-height: 0; } + .card-pricing2 .pricing-content { + padding: 50px 0 0 80px; + margin-bottom: 20px; + list-style: none; + text-align: left; + transition: all .3s ease 0s; } + .card-pricing2 .pricing-content li { + padding: 7px 0; + font-size: 13px; + color: grey; + position: relative; } + .card-pricing2 .pricing-content li.disable:before, .card-pricing2 .pricing-content li:before { + content: "\f00c"; + font-family: 'Font Awesome 5 Solid'; + font-weight: 900; + width: 20px; + height: 20px; + line-height: 20px; + border-radius: 50%; + background: #98c458; + text-align: center; + color: #fff; + position: absolute; + left: -50px; + font-size: 9px; } + .card-pricing2 .pricing-content li.disable:before { + content: "\f00d"; + background: #fe6c6c; } + .card-pricing2.card-default { + border-bottom-color: #1a2035; } + .card-pricing2.card-default .price-value:before, .card-pricing2.card-default .value:before { + border-left-color: #1a2035; + border-top-color: #1a2035; } + .card-pricing2.card-default .price-value, .card-pricing2.card-default .value { + border-right-color: #1a2035; } + .card-pricing2.card-default .price-value:after, .card-pricing2.card-default .value:after { + border-right-color: #1a2035; } + .card-pricing2.card-default .price-value:after, .card-pricing2.card-default .value:after { + border-bottom-color: #1a2035; } + .card-pricing2.card-default .value { + color: #1a2035; } + .card-pricing2.card-default:before { + background: #1a2035; } + .card-pricing2.card-default .price-value, .card-pricing2.card-default .value { + border-left-color: #1a2035; } + .card-pricing2.card-primary { + border-bottom-color: #1572E8; } + .card-pricing2.card-primary .price-value:before, .card-pricing2.card-primary .value:before { + border-left-color: #1572E8; + border-top-color: #1572E8; } + .card-pricing2.card-primary .price-value, .card-pricing2.card-primary .value { + border-right-color: #1572E8; } + .card-pricing2.card-primary .price-value:after, .card-pricing2.card-primary .value:after { + border-right-color: #1572E8; } + .card-pricing2.card-primary .price-value:after, .card-pricing2.card-primary .value:after { + border-bottom-color: #1572E8; } + .card-pricing2.card-primary .value { + color: #1572E8; } + .card-pricing2.card-primary:before { + background: #1572E8; } + .card-pricing2.card-primary .price-value, .card-pricing2.card-primary .value { + border-left-color: #1572E8; } + .card-pricing2.card-secondary { + border-bottom-color: #6861CE; } + .card-pricing2.card-secondary .price-value:before, .card-pricing2.card-secondary .value:before { + border-left-color: #6861CE; + border-top-color: #6861CE; } + .card-pricing2.card-secondary .price-value, .card-pricing2.card-secondary .value { + border-right-color: #6861CE; } + .card-pricing2.card-secondary .price-value:after, .card-pricing2.card-secondary .value:after { + border-right-color: #6861CE; } + .card-pricing2.card-secondary .price-value:after, .card-pricing2.card-secondary .value:after { + border-bottom-color: #6861CE; } + .card-pricing2.card-secondary .value { + color: #6861CE; } + .card-pricing2.card-secondary:before { + background: #6861CE; } + .card-pricing2.card-secondary .price-value, .card-pricing2.card-secondary .value { + border-left-color: #6861CE; } + .card-pricing2.card-info { + border-bottom-color: #48ABF7; } + .card-pricing2.card-info .price-value:before, .card-pricing2.card-info .value:before { + border-left-color: #48ABF7; + border-top-color: #48ABF7; } + .card-pricing2.card-info .price-value, .card-pricing2.card-info .value { + border-right-color: #48ABF7; } + .card-pricing2.card-info .price-value:after, .card-pricing2.card-info .value:after { + border-right-color: #48ABF7; } + .card-pricing2.card-info .price-value:after, .card-pricing2.card-info .value:after { + border-bottom-color: #48ABF7; } + .card-pricing2.card-info .value { + color: #48ABF7; } + .card-pricing2.card-info:before { + background: #48ABF7; } + .card-pricing2.card-info .price-value, .card-pricing2.card-info .value { + border-left-color: #48ABF7; } + .card-pricing2.card-success { + border-bottom-color: #31CE36; } + .card-pricing2.card-success .price-value:before, .card-pricing2.card-success .value:before { + border-left-color: #31CE36; + border-top-color: #31CE36; } + .card-pricing2.card-success .price-value, .card-pricing2.card-success .value { + border-right-color: #31CE36; } + .card-pricing2.card-success .price-value:after, .card-pricing2.card-success .value:after { + border-right-color: #31CE36; } + .card-pricing2.card-success .price-value:after, .card-pricing2.card-success .value:after { + border-bottom-color: #31CE36; } + .card-pricing2.card-success .value { + color: #31CE36; } + .card-pricing2.card-success:before { + background: #31CE36; } + .card-pricing2.card-success .price-value, .card-pricing2.card-success .value { + border-left-color: #31CE36; } + .card-pricing2.card-warning { + border-bottom-color: #FFAD46; } + .card-pricing2.card-warning .price-value:before, .card-pricing2.card-warning .value:before { + border-left-color: #FFAD46; + border-top-color: #FFAD46; } + .card-pricing2.card-warning .price-value, .card-pricing2.card-warning .value { + border-right-color: #FFAD46; } + .card-pricing2.card-warning .price-value:after, .card-pricing2.card-warning .value:after { + border-right-color: #FFAD46; } + .card-pricing2.card-warning .price-value:after, .card-pricing2.card-warning .value:after { + border-bottom-color: #FFAD46; } + .card-pricing2.card-warning .value { + color: #FFAD46; } + .card-pricing2.card-warning:before { + background: #FFAD46; } + .card-pricing2.card-warning .price-value, .card-pricing2.card-warning .value { + border-left-color: #FFAD46; } + .card-pricing2.card-danger { + border-bottom-color: #F25961; } + .card-pricing2.card-danger .price-value:before, .card-pricing2.card-danger .value:before { + border-left-color: #F25961; + border-top-color: #F25961; } + .card-pricing2.card-danger .price-value, .card-pricing2.card-danger .value { + border-right-color: #F25961; } + .card-pricing2.card-danger .price-value:after, .card-pricing2.card-danger .value:after { + border-right-color: #F25961; } + .card-pricing2.card-danger .price-value:after, .card-pricing2.card-danger .value:after { + border-bottom-color: #F25961; } + .card-pricing2.card-danger .value { + color: #F25961; } + .card-pricing2.card-danger:before { + background: #F25961; } + .card-pricing2.card-danger .price-value, .card-pricing2.card-danger .value { + border-left-color: #F25961; } + +/* Card Product */ +.row-cardProduct { + padding: 0 5px; + white-space: nowrap; + overflow-x: auto; + display: block !important; + margin-right: -2rem; + width: unset !important; } + +.col-cardProduct { + width: 225px; + padding: 0 10px; + display: inline-block; } + +.card-product { + background: #fff; + border-radius: 5px; + overflow: hidden; + box-shadow: 0px 7px 15px rgba(0, 0, 0, 0.12); + margin-bottom: 15px; } + .card-product .product-summary { + padding: 15px; } + +@media screen and (max-width: 768px) { + .col-cardProduct { + width: 175px; } + + .card-product .title-product { + font-size: 14px; } + .card-product .price-product { + font-size: 18px; } } +/* Card Shadow */ +.skew-shadow { + position: relative; + overflow: hidden; } + .skew-shadow:before { + content: ''; + position: absolute; + background: rgba(255, 255, 255, 0.1); + width: 50%; + min-width: 150px; + height: 100%; + top: 0; + right: -25%; + transform: skewX(-32.5deg); } + +.bubble-shadow { + position: relative; + overflow: hidden; } + .bubble-shadow:before { + position: absolute; + top: -10%; + right: -140px; + width: 300px; + height: 300px; + content: ""; + border-radius: 50%; + background: rgba(255, 255, 255, 0.05); } + .bubble-shadow:after { + position: absolute; + top: -65px; + right: 80px; + width: 150px; + height: 150px; + content: ""; + border-radius: 50%; + background: rgba(255, 255, 255, 0.05); } + +.curves-shadow { + position: relative; + overflow: hidden; } + .curves-shadow:before { + content: ''; + position: absolute; + background: url(../img/img-shadow.png); + background-size: cover; + width: 100%; + height: 100%; + top: 0; + left: 0; } + +@media only screen and (max-width: 990px) { + .card-pricing2 { + margin-bottom: 30px; } } +@media only screen and (max-width: 767px) { + .card-pricing2:before { + transform: skewY(-15deg); } } +/* Card Annoucement */ +.card-annoucement .card-body { + padding: 50px 25px; } +.card-annoucement .card-opening { + font-size: 20px; + font-weight: 400; + letter-spacing: 0.01em; } +.card-annoucement .card-desc { + padding: 15px 0; + font-size: 16px; + line-height: 1.65; + font-weight: 300; } +.card-annoucement.card-primary .btn-light { + color: #1572E8 !important; } +.card-annoucement.card-success .btn-light { + color: #31CE36 !important; } +.card-annoucement.card-secondary .btn-light { + color: #6861CE !important; } +.card-annoucement.card-default .btn-light { + color: #1a2035 !important; } +.card-annoucement.card-info .btn-light { + color: #48ABF7 !important; } +.card-annoucement.card-danger .btn-light { + color: #F25961 !important; } +.card-annoucement.card-warning .btn-light { + color: #FFAD46 !important; } + +/* Card Profile */ +.card-profile { + color: #575962; } + .card-profile .profile-picture { + text-align: center; + position: absolute; + margin: 0 auto; + left: 0; + right: 0; + bottom: -41px; + width: 100%; + box-sizing: border-box; } + .card-profile .user-profile .name { + font-size: 20px; + font-weight: 400; + margin-bottom: 5px; } + .card-profile .user-profile .job { + color: #83848a; + margin-bottom: 5px; } + .card-profile .user-profile .desc { + color: #bbb; + margin-bottom: 15px; } + .card-profile .user-profile .social-media { + margin-bottom: 20px; } + .card-profile .user-profile .social-media .btn { + padding: 5px !important; } + .card-profile .user-profile .social-media .btn i { + font-size: 22px !important; } + .card-profile .user-stats { + margin-bottom: 10px; } + .card-profile .user-stats [class^="col"] { + border-right: 1px solid #ebebeb; } + .card-profile .user-stats [class^="col"]:last-child { + border-right: 0px; } + .card-profile .user-stats .number { + font-weight: 400; + font-size: 15px; } + .card-profile .user-stats .title { + color: #7d7b7b; } + .card-profile .card-header { + border-bottom: 0px; + height: 100px; + position: relative; } + .card-profile .card-body { + padding-top: 60px; } + .card-profile .card-footer { + border-top: 0px; } + .card-profile.card-secondary .card-header { + background: #6861CE; } + +/* Row Card No Padding */ +.row-card-no-pd { + border-radius: 5px; + margin-left: 0; + margin-right: 0; + background: #ffffff; + margin-bottom: 30px; + padding-top: 15px; + padding-bottom: 15px; + position: relative; + -webkit-box-shadow: 2px 6px 15px 0px rgba(69, 65, 78, 0.1); + -moz-box-shadow: 2px 6px 15px 0px rgba(69, 65, 78, 0.1); + box-shadow: 2px 6px 15px 0px rgba(69, 65, 78, 0.1); + border: 0px; } + .row-card-no-pd .card { + margin-bottom: 0px; + border-width: 0px; + box-shadow: none; + position: unset; } + .row-card-no-pd .card .card-header { + padding-left: 0px !important; + padding-top: 0px !important; + padding-right: 0px !important; } + .row-card-no-pd [class*=col] .card:before { + position: absolute; + height: calc(100%); + width: 1px; + background: #eee; + content: ''; + right: 0px; } + .row-card-no-pd [class*=col]:last-child .card:before { + width: 0px; } + +/* Accordion */ +.accordion .card { + border-radius: 5px !important; + background: #f7f7f7 !important; + color: #575962 !important; + border: 0; + box-shadow: none; } + .accordion .card .span-icon { + font-size: 22px; + padding-left: 15px; + padding-right: 15px; } + .accordion .card > .card-header { + border: 0px !important; + display: flex; + flex-direction: row; + align-items: center; + cursor: pointer; + border-radius: 0 !important; } + .accordion .card > .card-header > .span-mode { + margin-left: auto; } + .accordion .card > .card-header > .span-mode:before { + content: "\f068" !important; + font-family: 'Font Awesome 5 Solid'; + font-weight: 900; + font-size: 16px; } + .accordion .card > .card-header.collapsed > .span-mode:before { + content: "\f067" !important; } + .accordion .card .card-body { + border-top: 1px solid #ebebeb; + padding: 30px; } +.accordion.accordion-default .card .card-header, .accordion.accordion-default .card .card-header .btn-link, .accordion.accordion-primary .card .card-header, .accordion.accordion-primary .card .card-header .btn-link, .accordion.accordion-secondary .card .card-header, .accordion.accordion-secondary .card .card-header .btn-link, .accordion.accordion-info .card .card-header, .accordion.accordion-info .card .card-header .btn-link, .accordion.accordion-success .card .card-header, .accordion.accordion-success .card .card-header .btn-link, .accordion.accordion-warning .card .card-header, .accordion.accordion-warning .card .card-header .btn-link, .accordion.accordion-danger .card .card-header, .accordion.accordion-danger .card .card-header .btn-link { + font-size: 14px; } +.accordion.accordion-default .card .card-header { + color: #1a2035; } + .accordion.accordion-default .card .card-header .btn-link { + color: #1a2035 !important; } +.accordion.accordion-primary .card .card-header { + color: #1572E8; } + .accordion.accordion-primary .card .card-header .btn-link { + color: #1572E8 !important; } +.accordion.accordion-secondary .card .card-header { + color: #6861CE; } + .accordion.accordion-secondary .card .card-header .btn-link { + color: #6861CE !important; } +.accordion.accordion-info .card .card-header { + color: #48ABF7; } + .accordion.accordion-info .card .card-header .btn-link { + color: #48ABF7 !important; } +.accordion.accordion-success .card .card-header { + color: #31CE36; } + .accordion.accordion-success .card .card-header .btn-link { + color: #31CE36 !important; } +.accordion.accordion-warning .card .card-header { + color: #FFAD46; } + .accordion.accordion-warning .card .card-header .btn-link { + color: #FFAD46 !important; } +.accordion.accordion-danger .card .card-header { + color: #F25961; } + .accordion.accordion-danger .card .card-header .btn-link { + color: #F25961 !important; } + +.border-transparent { + border-color: transparent !important; } + +.gutters-0 { + margin-right: 0; + margin-left: 0; } + .gutters-0 > .col, .gutters-0 > [class*="col-"] { + padding-right: 0; + padding-left: 0; } + .gutters-0 .card { + margin-bottom: 0; } + +.gutters-xs { + margin-right: -0.25rem; + margin-left: -0.25rem; } + .gutters-xs > .col, .gutters-xs > [class*="col-"] { + padding-right: 0.25rem; + padding-left: 0.25rem; } + .gutters-xs .card { + margin-bottom: 0.5rem; } + +.gutters-sm { + margin-right: -0.5rem; + margin-left: -0.5rem; } + .gutters-sm > .col, .gutters-sm > [class*="col-"] { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .gutters-sm .card { + margin-bottom: 1rem; } + +.gutters-lg { + margin-right: -1rem; + margin-left: -1rem; } + .gutters-lg > .col, .gutters-lg > [class*="col-"] { + padding-right: 1rem; + padding-left: 1rem; } + .gutters-lg .card { + margin-bottom: 2rem; } + +.gutters-xl { + margin-right: -1.5rem; + margin-left: -1.5rem; } + .gutters-xl > .col, .gutters-xl > [class*="col-"] { + padding-right: 1.5rem; + padding-left: 1.5rem; } + .gutters-xl .card { + margin-bottom: 3rem; } + +.stamp { + color: #fff; + background: #6861CE; + display: inline-block; + min-width: 2rem; + height: 2rem; + padding: 0 .25rem; + line-height: 2rem; + text-align: center; + border-radius: 3px; + font-weight: 600; } + +.stamp-md { + min-width: 2.5rem; + height: 2.5rem; + line-height: 2.5rem; } + +/* Form */ +.form-control { + font-size: 14px; + border-color: #ebedf2; + padding: .6rem 1rem; + height: inherit !important; } + .form-control:focus { + border-color: #3e93ff; } + +/* Form Control Sizes */ +.form-control-lg, .input-group-lg > .form-control, .input-group-lg > .input-group-append > .btn, .input-group-lg > .input-group-append > .input-group-text, .input-group-lg > .input-group-prepend > .btn, .input-group-lg > .input-group-prepend > .input-group-text { + padding: .5rem 1rem !important; + font-size: 1.25rem !important; } + +.form-control-sm, .input-group-sm > .form-control, .input-group-sm > .input-group-append > .btn, .input-group-sm > .input-group-append > .input-group-text, .input-group-sm > .input-group-prepend > .btn, .input-group-sm > .input-group-prepend > .input-group-text { + padding: .25rem .5rem !important; + font-size: .875rem !important; + line-height: 1.5; } + +.form-control::-webkit-input-placeholder { + color: inherit; + opacity: 0.7; } + +.form-control:-moz-placeholder { + color: inherit; + opacity: 0.7; } + +.form-control::-moz-placeholder { + color: inherit; + opacity: 0.7; } + +.form-control:-ms-input-placeholder { + color: inherit; + opacity: 0.7; } + +.form-control::-ms-input-placeholder { + color: inherit; + opacity: 0.7; } + +.input-group-text { + border-color: #ebedf2 !important; } + +.form-button-action { + display: inline-flex; } + +.form-check-label, .form-radio-label { + margin-right: 15px; } + +/* CheckBox Input */ +.select-all-checkbox + .form-check-sign:before { + background: #ccc !important; + border-color: #ccc !important; } + +.form-check [type="checkbox"]:not(:checked), .form-check [type="checkbox"]:checked { + position: absolute; + left: -9999px; } +.form-check [type="checkbox"]:not(:checked) + .form-check-sign, .form-check [type="checkbox"]:checked + .form-check-sign, .form-check [type="checkbox"] + .form-check-sign { + position: relative; + padding-left: 2em; + color: #575962; + cursor: pointer; } +.form-check [type="checkbox"]:not(:checked) + .form-check-sign:before, .form-check [type="checkbox"]:checked + .form-check-sign:before, .form-check [type="checkbox"] + .form-check-sign:before { + content: ''; + position: absolute; + left: 0; + top: 1px; + width: 16px; + height: 16px; + border: 1px solid #ccc; + background: transparent; + border-radius: 4px; } +.form-check [type="checkbox"]:not(:checked) + .form-check-sign:after, .form-check [type="checkbox"]:checked + .form-check-sign:after, .form-check [type="checkbox"] + .form-check-sign:after { + content: "\f00c"; + display: inline-block; + position: absolute; + top: -1px; + left: 2px; + width: 18px; + height: 18px; + text-align: center; + font-size: 1.3em; + line-height: 0.8; + color: #1572E8; + transition: all .2s; + font-family: 'Font Awesome 5 Solid'; } +.form-check [type="checkbox"]:not(:checked) + .form-check-sign:after { + opacity: 0; + transform: scale(0); } +.form-check [type="checkbox"]:checked + .form-check-sign { + font-weight: 400; } + .form-check [type="checkbox"]:checked + .form-check-sign:after { + opacity: 1; + transform: scale(1); } +.form-check [type="checkbox"]:disabled:not(:checked) + .form-check-sign:before { + box-shadow: none; + border-color: #bbb; + background-color: #ddd; } +.form-check [type="checkbox"]:disabled:checked + .form-check-sign:before { + box-shadow: none; + border-color: #bbb; + background-color: #ddd; } +.form-check [type="checkbox"]:disabled:checked + .form-check-sign:after { + color: #999; } +.form-check [type="checkbox"]:disabled + .form-check-sign { + color: #aaa; } +.form-check [type="checkbox"]:checked:focus + .form-check-sign:before, .form-check [type="checkbox"]:not(:checked):focus + .form-check-sign:before { + border: 1px solid #ccc; } + +.form-check-sign:hover:before { + border: 1px solid #ccc !important; } + +.form-check { + padding-left: 0.75rem; } + +.form-check-input { + position: relative; + margin-top: .3rem; } + +/* Radio Input */ +.form-radio [type="radio"]:not(:checked), .form-radio [type="radio"]:checked { + position: absolute; + left: -9999px; } +.form-radio [type="radio"]:not(:checked) + .form-radio-sign, .form-radio [type="radio"]:checked + .form-radio-sign { + color: #575962; + position: relative; + padding-left: 2em; + cursor: pointer; + line-height: 22px; + font-weight: 400; } +.form-radio [type="radio"]:not(:checked) + .form-radio-sign:before { + content: "\f18a"; + font-size: 22px; + font-family: LineAwesome; + position: absolute; + left: 0; + top: auto; + background: transparent; + line-height: 1; + color: #bbb; } +.form-radio [type="radio"]:checked + .form-radio-sign:before { + content: "\f18a"; + font-size: 22px; + font-family: LineAwesome; + position: absolute; + left: 0; + top: auto; + background: transparent; + line-height: 1; + display: none; } +.form-radio [type="radio"]:not(:checked) + .form-radio-sign:after, .form-radio [type="radio"]:checked + .form-radio-sign:after { + content: "\f1bc"; + position: absolute; + left: 0px; + top: auto; + text-align: center; + font-size: 22px; + color: #4D7CFE; + transition: all .2s; + line-height: 1; + font-family: LineAwesome; } +.form-radio [type="radio"]:not(:checked) + .form-radio-sign:after { + opacity: 0; + transform: scale(0); } +.form-radio [type="radio"]:checked + .form-radio-sign { + font-weight: 400; } + .form-radio [type="radio"]:checked + .form-radio-sign:after { + opacity: 1; + transform: scale(1); } +.form-radio [type="radio"]:disabled:not(:checked) + .form-radio-sign:before { + box-shadow: none; + opacity: 0.65; } +.form-radio [type="radio"]:disabled:checked + .form-radio-sign:before { + box-shadow: none; + opacity: 0.65; } +.form-radio [type="radio"]:disabled:checked + .form-radio-sign:after { + opacity: 0.65; } +.form-radio [type="radio"]:disabled + .form-radio-sign { + color: #aaa; + opacity: 0.65; } +.form-radio [type="radio"]:checked:focus + .form-radio-sign:before, .form-radio [type="radio"]:not(:checked):focus + .form-radio-sign:before { + border: 1px solid #ccc; } + +.form-radio { + padding-left: 0.75rem; } + +.form-radio-input { + position: relative; + margin-top: .3rem; } + +/* Custom Checkbox */ +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before { + background-color: #1572E8; } +.custom-checkbox.checkbox-default .custom-control-input:checked ~ .custom-control-label::before { + background-color: #1a2035; } +.custom-checkbox.checkbox-primary .custom-control-input:checked ~ .custom-control-label::before { + background-color: #1572E8; } +.custom-checkbox.checkbox-secondary .custom-control-input:checked ~ .custom-control-label::before { + background-color: #6861CE; } +.custom-checkbox.checkbox-info .custom-control-input:checked ~ .custom-control-label::before { + background-color: #48ABF7; } +.custom-checkbox.checkbox-success .custom-control-input:checked ~ .custom-control-label::before { + background-color: #31CE36; } +.custom-checkbox.checkbox-warning .custom-control-input:checked ~ .custom-control-label::before { + background-color: #FFAD46; } +.custom-checkbox.checkbox-danger .custom-control-input:checked ~ .custom-control-label::before { + background-color: #F25961; } + +/* Label */ +.col-form-label { + line-height: 1.8; } + +.required-label { + color: red; } + +.label-align-left { + text-align: left; } + +.label-align-right { + text-align: right; } + +.label-align-center { + text-align: center; } + +/* Input */ +.form-group, .form-check { + margin-bottom: 0; + padding: 10px; } + +.form-group label, .form-check label { + margin-bottom: .5rem; + color: #495057; + font-weight: 600; + font-size: 1rem; + white-space: nowrap; } + +.form-group-default { + background-color: #ffffff; + border: 1px solid rgba(0, 0, 0, 0.07); + border-radius: 4px; + padding-top: 7px; + padding-left: 12px; + padding-right: 12px; + padding-bottom: 4px; + overflow: hidden; + width: 100%; + -webkit-transition: background-color .2s ease; + transition: background-color .2s ease; + margin-bottom: 15px; } + .form-group-default label { + opacity: 1; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + margin: 0; + display: block; + -webkit-transition: opacity .2s ease; + transition: opacity .2s ease; } + .form-group-default label:not(.error) { + font-size: 10.5px !important; + letter-spacing: .06em; + text-transform: uppercase; + font-weight: 400; } + .form-group-default .form-control { + border: 0; + min-height: 25px; + padding: 0; + margin-top: 6px; + background: 0 0; + font-size: 14px; } + .form-group-default select.form-control:not([size]):not([multiple]) { + height: unset !important; } + .form-group-default.active { + border-color: rgba(0, 0, 0, 0.1) !important; + background-color: #f0f0f0; } + .form-group-default.active label { + opacity: 0.5; } + +.form-floating-label { + position: relative; } + .form-floating-label .placeholder { + position: absolute; + padding: .375rem .75rem; + transition: all .2s; + opacity: 0.8; + margin-bottom: 0 !important; + font-size: 14px !important; + font-weight: 400; + top: 12px; } + .form-floating-label .form-control:focus + .placeholder, .form-floating-label .form-control:valid + .placeholder, .form-floating-label .form-control.filled + .placeholder { + font-size: 85% !important; + transform: translate3d(0, -10px, 0); + top: 0; + opacity: 1; + padding: .375rem 0 .75rem; + font-weight: 600; } + .form-floating-label .form-control.filled + .placeholder { + color: #1572E8 !important; } + .form-floating-label .form-control ::-webkit-input-placeholder { + color: transparent; } + .form-floating-label .form-control :-moz-placeholder { + color: transparent; } + .form-floating-label .form-control ::-moz-placeholder { + color: transparent; } + .form-floating-label .form-control :-ms-input-placeholder { + color: transparent; } + .form-floating-label .input-border-bottom + .placeholder { + padding: .375rem 0 .75rem; } + +.form-inline label { + margin-bottom: 0 !important; } + +.input-fixed { + width: 200px; } + +.form-control.input-full { + width: 100% !important; } + +.has-success label { + color: #31CE36 !important; } +.has-success .form-control { + border-color: #31CE36 !important; + color: #31CE36 !important; } +.has-success .input-group-text { + border-color: #31CE36 !important; + background: #31CE36 !important; + color: #ffffff !important; } + +.has-error label { + color: #F25961 !important; } +.has-error .form-control { + border-color: #F25961 !important; + color: #F25961 !important; } +.has-error .input-group-text { + border-color: #F25961 !important; + background: #F25961 !important; + color: #ffffff !important; } + +.input-group label.error, .input-group label.success { + width: 100%; + order: 100; } + +.custom-control { + position: relative; } + .custom-control.custom-radio, .custom-control.custom-checkbox { + margin-bottom: 0; + padding-left: 2em; + cursor: pointer; + line-height: 24px; + margin-right: 25px; + display: inline-block; } + .custom-control.custom-radio label.error, .custom-control.custom-radio label.success, .custom-control.custom-checkbox label.error, .custom-control.custom-checkbox label.success { + position: absolute; + width: 100vh; + top: 23px; + left: 0; } + +.has-feedback { + position: relative; } + +.form-control-feedback { + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 20px; } + +.has-success .form-control-feedback { + color: #31CE36; } + +.has-error .form-control-feedback { + color: #F25961; } + +.input-group.has-icon { + border-radius: .25rem; + border: 1px solid #ced4da; } +.input-group.has-success, .input-group.has-icon.has-success { + border: 1px solid #31CE36 !important; + color: #31CE36; } +.input-group.has-error { + border: 1px solid #F25961 !important; + color: #F25961; } +.input-group.has-icon.has-error { + border: 1px solid #F25961 !important; + color: #F25961; } +.input-group.has-icon .form-control { + border-radius: .25rem; + border: 0px; + position: relative; } +.input-group.has-icon .input-group-icon { + background: transparent; + border: 0px; } + +.input-square { + border-radius: 0px !important; } + +.input-pill { + border-radius: 1.3rem !important; } + +.input-solid { + background: #e8e8e8 !important; + border-color: #e8e8e8 !important; } + +.input-border-bottom { + border-width: 0 0 1px 0; + border-radius: 0px; + padding: .75rem 0; + background: transparent !important; } + +/* Input File */ +.input-file input[type="file"], .input-file .form-control, .input-file .form-control-file { + width: 0.1px; + height: 0.1px; + opacity: 0; + overflow: hidden; + position: absolute; + z-index: -1; } +.input-file label.error, .input-file label.success { + display: block; } +.input-file input[type="file"] + label:not(.error), .input-file .form-control + label:not(.error), .input-file .form-control-file + label:not(.error), .input-file .label-input-file { + font-weight: 600; + letter-spacing: 0.02em; + color: white !important; + display: inline-block; } +.input-file.input-file-image img.img-upload-preview { + max-width: 100%; + display: block; + margin-bottom: 15px; + box-shadow: 0 1px 15px 1px rgba(39, 39, 39, 0.1); } + .input-file.input-file-image img.img-upload-preview.img-circle { + border-radius: 2000px; } + +.form-control:disabled, .form-control[readonly] { + background: #e8e8e8 !important; + border-color: #e8e8e8 !important; } +.form-control:disabled, .form-control[readonly] { + opacity: 0.6 !important; } + +/* Input Group */ +.input-group-text { + font-size: 14px; } + .input-group-text i.la { + font-size: 21px; } + .input-group-text i[class*="flaticon"] { + font-size: 17px; } + +/* Input Icon */ +.input-icon { + position: relative; } + .input-icon .form-control:not(:first-child) { + padding-left: 2.5rem; } + .input-icon .form-control:not(:last-child) { + padding-right: 2.5rem; } + .input-icon .input-icon-addon { + position: absolute; + left: 1rem; + top: 0; + height: 100%; + display: flex; + align-items: center; } + .input-icon .input-icon-addon:last-child { + left: auto; + right: 1rem; } + +/* Label States */ +label.error { + color: #F25961 !important; + font-size: 80% !important; + margin-top: .5rem; } + +/* Label states for select2 */ +.select2-input { + position: relative; } + .select2-input label.error, .select2-input label.success { + position: absolute; + bottom: -30px; } + .select2-input .select2 { + margin-bottom: 15px; } + +/* Custom Dropzone */ +.dropzone { + padding: 70px 60px 80px !important; + border: 2px dashed rgba(0, 0, 0, 0.13) !important; + background: transparent !important; } + .dropzone:hover { + background: #fafafa !important; + transition: all .5s !important; } + .dropzone .dz-message .icon { + margin-bottom: 15px; + font-size: 39px; } + .dropzone .dz-message .message { + font-size: 34px; + font-weight: 200; } + .dropzone .dz-message .note { + font-size: 16px; + margin-top: 18px; + font-weight: 300; } + +/* Custom Summernote */ +.note-editor.note-frame { + border: 0px !important; + box-shadow: none !important; } + .note-editor.note-frame .note-toolbar { + padding: 0 !important; + border-bottom: 0px !important; } + .note-editor.note-frame .note-btn { + border: 1px solid #eee !important; + background: #fafafa !important; } + .note-editor.note-frame .note-placeholder { + margin-top: 15px !important; } + .note-editor.note-frame .note-codable { + margin-top: 15px !important; } + .note-editor.note-frame .note-editing-area .note-editable { + margin-top: 15px !important; + border: 1px solid #eee !important; } + +/* Table */ +.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { + vertical-align: middle; } +.table > tbody > tr > td, .table > tbody > tr > th { + padding: 8px; } +.table > tfoot > tr > td, .table > tfoot > tr > th { + padding: 8px; } +.table thead th { + border-bottom-width: 2px; + font-weight: 600; } +.table td, .table th { + font-size: 14px; + border-top-width: 0px; + border-bottom: 1px solid; + border-color: #ebedf2 !important; + padding: 0 25px !important; + height: 60px; + vertical-align: middle !important; } + +/* table full-width */ +.table-full-width { + margin-left: -15px; + margin-right: -15px; } + +/* table bordered states */ +.table-bordered-bd-default td, .table-bordered-bd-default th { + border: 1px solid #1a2035 !important; } + +.table-bordered-bd-primary td, .table-bordered-bd-primary th { + border: 1px solid #1572E8 !important; } + +.table-bordered-bd-secondary td, .table-bordered-bd-secondary th { + border: 1px solid #6861CE !important; } + +.table-bordered-bd-info td, .table-bordered-bd-info th { + border: 1px solid #48ABF7 !important; } + +.table-bordered-bd-success td, .table-bordered-bd-success th { + border: 1px solid #31CE36 !important; } + +.table-bordered-bd-warning td, .table-bordered-bd-warning th { + border: 1px solid #FFAD46 !important; } + +.table-bordered-bd-danger td, .table-bordered-bd-danger th { + border: 1px solid #F25961 !important; } + +.table-striped td, .table-striped th { + border-top: 0 !important; + border-bottom: 0 !important; } + +/* table head background states*/ +.table-head-bg-default thead { + border: 1px solid #1a2035 !important; } + +.table-head-bg-primary thead { + border: 1px solid #1572E8 !important; } + +.table-head-bg-secondary thead { + border: 1px solid #6861CE !important; } + +.table-head-bg-info thead { + border: 1px solid #48ABF7 !important; } + +.table-head-bg-success thead { + border: 1px solid #31CE36 !important; } + +.table-head-bg-warning thead { + border: 1px solid #FFAD46 !important; } + +.table-head-bg-danger thead { + border: 1px solid #F25961 !important; } + +.table-head-bg-default thead th, .table-striped-bg-default tbody tr:nth-of-type(odd) { + background: #1a2035 !important; + color: #ffffff !important; + border: 0px !important; } + +.table-head-bg-primary thead th, .table-striped-bg-primary tbody tr:nth-of-type(odd) { + background: #1572E8 !important; + color: #ffffff !important; + border: 0px !important; } + +.table-head-bg-secondary thead th, .table-striped-bg-secondary tbody tr:nth-of-type(odd) { + background: #6861CE !important; + color: #ffffff !important; + border: 0px !important; } + +.table-head-bg-info thead th, .table-striped-bg-info tbody tr:nth-of-type(odd) { + background: #48ABF7 !important; + color: #ffffff !important; + border: 0px !important; } + +.table-head-bg-success thead th, .table-striped-bg-success tbody tr:nth-of-type(odd) { + background: #31CE36 !important; + color: #ffffff !important; + border: 0px !important; } + +.table-head-bg-warning thead th, .table-striped-bg-warning tbody tr:nth-of-type(odd) { + background: #FFAD46 !important; + color: #ffffff !important; + border: 0px !important; } + +.table-head-bg-danger thead th, .table-striped-bg-danger tbody tr:nth-of-type(odd) { + background: #F25961 !important; + color: #ffffff !important; + border: 0px !important; } + +/* table-responsive */ +.table-responsive { + width: 100% !important; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } + +/* Navbar */ +.navbar .navbar-nav .nav-item { + margin-right: 7px; } + .navbar .navbar-nav .nav-item:last-child { + margin-right: 0px; } + .navbar .navbar-nav .nav-item .nav-link { + display: inline-block; + vertical-align: middle; + color: #666; + letter-spacing: 0.04em; + padding: 10px; + border-radius: 3px; + position: relative; + font-size: 12px; + font-weight: 400; + text-align: center; } + .navbar .navbar-nav .nav-item .nav-link:hover, .navbar .navbar-nav .nav-item .nav-link:focus { + background: #eee !important; } + .navbar .navbar-nav .nav-item .nav-link i { + font-size: 18px; + vertical-align: middle; + line-height: 1 !important; } + .navbar .navbar-nav .nav-item.active .nav-link { + background: #eee !important; } + +.navbar-expand-lg .navbar-nav .dropdown-menu { + left: auto; + right: 0; } + +.dropdown-item { + font-size: 13px; } + +.navbar .navbar-nav .notification { + position: absolute; + background-color: #31CE36; + text-align: center; + border-radius: 10px; + min-width: 17px; + height: 17px; + font-size: 10px; + color: #ffffff; + font-weight: 300; + line-height: 17px; + top: 3px; + right: 3px; + letter-spacing: -1px; } + +.navbar-header { + padding: 0px 15px; } + .navbar-header .dropdown-toggle::after { + margin-left: 0; } + +.profile-pic:hover, .profile-pic:focus { + text-decoration: none; } + +.navbar-header .dropdown-toggle::after { + vertical-align: middle; + color: #555; } + +.hidden-caret .dropdown-toggle::after { + display: none !important; } + +.profile-pic span { + font-size: 13px; + font-weight: 300; + padding: 0 10px; + color: #555; } + +.navbar[class*="bg-"] { + border-bottom: 1px solid rgba(255, 255, 255, 0.2) !important; + border-left: 1px solid rgba(255, 255, 255, 0.1) !important; } + .navbar[class*="bg-"] .navbar-brand { + color: #ffffff; } + .navbar[class*="bg-"] .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } + .navbar[class*="bg-"] .navbar-nav > .nav-item > .nav-link { + color: #ffffff; } + .navbar[class*="bg-"] .navbar-nav > .nav-item > .nav-link.disabled { + color: #d8d8d8 !important; } + .navbar[class*="bg-"] .navbar-nav > .nav-item > .nav-link:hover { + background: rgba(255, 255, 255, 0.22) !important; } + .navbar[class*="bg-"] .navbar-nav > .nav-item.active > .nav-link { + background: rgba(255, 255, 255, 0.22) !important; } + .navbar[class*="bg-"] .btn-toggle { + background: rgba(19, 19, 19, 0.25) !important; + color: #ffffff !important; } + .navbar[class*="bg-"] .nav-search .input-group { + border: 0; + background: rgba(19, 19, 19, 0.25) !important; } + .navbar[class*="bg-"] .nav-search .input-group .form-control { + color: #ffffff !important; } + .navbar[class*="bg-"] .nav-search .search-icon { + color: #ffffff !important; } + +.row-nav-line { + margin-left: -20px; + margin-right: -20px; } + +.nav.nav-line { + width: 100%; + border-bottom: 1px solid #f1f1f1; } + .nav.nav-line .nav-link { + padding: 15px 20px; + color: #575962; + border-width: 0px; + font-size: 14px; + font-weight: 600; } + .nav.nav-line .nav-link:hover, .nav.nav-line .nav-link:focus { + color: #1572E8; + border-width: 0px; } + .nav.nav-line .nav-link.active { + border-width: 0; + background-color: transparent; + color: #1572E8; + border-bottom: 2px solid #1572E8; + border-radius: 0px; } + .nav.nav-line.nav-color-default .nav-link:hover, .nav.nav-line.nav-color-default .nav-link:focus { + color: #1a2035; } + .nav.nav-line.nav-color-default .nav-link.active { + color: #1a2035; + border-color: #1a2035; } + .nav.nav-line.nav-color-primary .nav-link:hover, .nav.nav-line.nav-color-primary .nav-link:focus { + color: #1572E8; } + .nav.nav-line.nav-color-primary .nav-link.active { + color: #1572E8; + border-color: #1572E8; } + .nav.nav-line.nav-color-secondary .nav-link:hover, .nav.nav-line.nav-color-secondary .nav-link:focus { + color: #6861CE; } + .nav.nav-line.nav-color-secondary .nav-link.active { + color: #6861CE; + border-color: #6861CE; } + .nav.nav-line.nav-color-info .nav-link:hover, .nav.nav-line.nav-color-info .nav-link:focus { + color: #48ABF7; } + .nav.nav-line.nav-color-info .nav-link.active { + color: #48ABF7; + border-color: #48ABF7; } + .nav.nav-line.nav-color-success .nav-link:hover, .nav.nav-line.nav-color-success .nav-link:focus { + color: #31CE36; } + .nav.nav-line.nav-color-success .nav-link.active { + color: #31CE36; + border-color: #31CE36; } + .nav.nav-line.nav-color-danger .nav-link:hover, .nav.nav-line.nav-color-danger .nav-link:focus { + color: #F25961; } + .nav.nav-line.nav-color-danger .nav-link.active { + color: #F25961; + border-color: #F25961; } + .nav.nav-line.nav-color-warning .nav-link:hover, .nav.nav-line.nav-color-warning .nav-link:focus { + color: #FFAD46; } + .nav.nav-line.nav-color-warning .nav-link.active { + color: #FFAD46; + border-color: #FFAD46; } + .nav.nav-line.nav-color-light .nav-link:hover, .nav.nav-line.nav-color-light .nav-link:focus { + color: #ffffff; } + .nav.nav-line.nav-color-light .nav-link.active { + color: #ffffff; + border-color: #ffffff; } + .nav.nav-line.nav-color-light .nav-link { + color: #f1f1f1; } + +/* Nav Search */ +.nav-search .input-group { + border: 1px solid #eee; + background: #eee; + border-radius: 5px; } + .nav-search .input-group:hover, .nav-search .input-group:focus { + border: 1px solid #ddd; } +.nav-search .form-control { + border: 0; + background: transparent !important; + font-size: 14px; + padding: 0.75em 1em; + min-width: 200px; + max-width: 100%; } +.nav-search .input-group-text { + border: 0; + background: transparent; } +.nav-search .search-icon { + font-size: 18px; + color: #8d9498; } +.nav-search .btn-search { + background: transparent; + padding: .375rem 1rem; } + +/* Badge */ +.badge { + border-radius: 50px; + margin-left: auto; + line-height: 1; + padding: 6px 10px; + vertical-align: middle; + font-weight: 400; + font-size: 11px; + border: 1px solid #ddd; } + +[class*="badge-"]:not(.badge-count) { + border: 0px !important; } + +.badge-default { + background: #1a2035; + color: #ffffff !important; } + +.badge-primary { + background: #1572E8; } + +.badge-secondary { + background: #6861CE; } + +.badge-info { + background: #48ABF7; } + +.badge-success { + background-color: #31CE36; } + +.badge-warning { + background: #FFAD46; + color: #ffffff !important; } + +.badge-danger { + background-color: #F25961; } + +/* Dropdown */ +.dropdown-menu { + border: 0px; + border-radius: 3px; + box-shadow: 0 1px 11px rgba(0, 0, 0, 0.15) !important; + padding-bottom: 8px; + margin-top: 3px; } + +/* Notification dropdown */ +.dropdown-title { + border-bottom: 1px solid #f1f1f1; + color: #444444; + font-size: 14px; + font-weight: 600; + padding: 12px 15px; + text-align: center; } + +.notif-box, .messages-notif-box { + width: 280px; + padding: 0 !important; } + .notif-box .notif-center a, .messages-notif-box .notif-center a { + display: flex; + color: #4d585f; } + .notif-box .notif-center a:hover, .messages-notif-box .notif-center a:hover { + text-decoration: none; + background: #fafafa; + transition: all .2s; } + .notif-box .notif-center a .notif-icon, .messages-notif-box .notif-center a .notif-icon { + display: inline-flex; + width: 40px; + height: 40px; + margin: 10px; + align-items: center; + justify-content: center; + background: #eee; + border-radius: 50%; } + .notif-box .notif-center a .notif-img, .messages-notif-box .notif-center a .notif-img { + display: inline-flex; + width: 40px; + height: 40px; + margin: 10px; + align-items: center; + justify-content: center; + background: #eee; + border-radius: 50%; } + .notif-box .notif-center a .notif-img img, .messages-notif-box .notif-center a .notif-img img { + width: 100%; + height: 100%; + border-radius: 50%; } + .notif-box .notif-center a .notif-icon.notif-default, .notif-box .notif-center a .notif-icon.notif-primary, .notif-box .notif-center a .notif-icon.notif-secondary, .notif-box .notif-center a .notif-icon.notif-info, .notif-box .notif-center a .notif-icon.notif-success, .notif-box .notif-center a .notif-icon.notif-warning, .notif-box .notif-center a .notif-icon.notif-danger, .messages-notif-box .notif-center a .notif-icon.notif-default, .messages-notif-box .notif-center a .notif-icon.notif-primary, .messages-notif-box .notif-center a .notif-icon.notif-secondary, .messages-notif-box .notif-center a .notif-icon.notif-info, .messages-notif-box .notif-center a .notif-icon.notif-success, .messages-notif-box .notif-center a .notif-icon.notif-warning, .messages-notif-box .notif-center a .notif-icon.notif-danger { + color: #ffffff !important; } + .notif-box .notif-center a .notif-icon.notif-default, .messages-notif-box .notif-center a .notif-icon.notif-default { + background: #1a2035 !important; } + .notif-box .notif-center a .notif-icon.notif-primary, .messages-notif-box .notif-center a .notif-icon.notif-primary { + background: #1572E8 !important; } + .notif-box .notif-center a .notif-icon.notif-secondary, .messages-notif-box .notif-center a .notif-icon.notif-secondary { + background: #6861CE !important; } + .notif-box .notif-center a .notif-icon.notif-info, .messages-notif-box .notif-center a .notif-icon.notif-info { + background: #48ABF7 !important; } + .notif-box .notif-center a .notif-icon.notif-success, .messages-notif-box .notif-center a .notif-icon.notif-success { + background: #31CE36 !important; } + .notif-box .notif-center a .notif-icon.notif-warning, .messages-notif-box .notif-center a .notif-icon.notif-warning { + background: #FFAD46 !important; } + .notif-box .notif-center a .notif-icon.notif-danger, .messages-notif-box .notif-center a .notif-icon.notif-danger { + background: #F25961 !important; } + .notif-box .notif-center a .notif-icon i, .messages-notif-box .notif-center a .notif-icon i { + font-size: 15px; } + .notif-box .notif-center a .notif-content, .messages-notif-box .notif-center a .notif-content { + padding: 10px 15px 10px 0; } + .notif-box .notif-center a .message-content, .messages-notif-box .notif-center a .message-content { + padding: 7px 15px 10px 0; } + .notif-box .notif-center a .notif-content .subject, .messages-notif-box .notif-center a .notif-content .subject { + font-size: 13px; + font-weight: 600; + display: block; + margin-bottom: 2px; } + .notif-box .notif-center a .notif-content .block, .messages-notif-box .notif-center a .notif-content .block { + font-size: 13px; + line-height: 20px; + display: block; } + .notif-box .notif-center a .notif-content .time, .messages-notif-box .notif-center a .notif-content .time { + color: #7d8c95; + font-size: 11px; } + .notif-box .see-all, .messages-notif-box .see-all { + border-top: 1px solid #f1f1f1; + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 20px; + color: #555; + font-size: 13px; + font-weight: 400; + text-decoration: none; } + .notif-box .see-all:hover, .messages-notif-box .see-all:hover { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 20px; + color: #555; + font-size: 13px; + font-weight: 400; + text-decoration: none; } + .notif-box .see-all i, .messages-notif-box .see-all i { + float: right; } + +.notif-box .notif-scroll { + max-height: 256px; } + +.messages-notif-box .message-notif-scroll { + max-height: 250px; } +.messages-notif-box .notif-center a { + border-bottom: 1px solid #f1f1f1; } + .messages-notif-box .notif-center a:last-child { + border-bottom: 0px; } + .messages-notif-box .notif-center a .notif-content { + padding: 7px 15px 7px 5px; } + +/* User Dropdown */ +.dropdown-user { + width: 260px; } + +.user-box { + display: flex; + padding: .25rem 1rem; } + .user-box .u-text { + padding: 0 10px; } + .user-box .u-text h4 { + margin-bottom: 5px; + margin-top: 4px; + font-size: 14px; + font-weight: 400; + line-height: 1; } + .user-box .u-text .text-muted { + font-size: 12px; + margin-bottom: 5px; } + .user-box .u-text .btn { + font-size: 11px; } + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: .255em; + vertical-align: .255em; + content: ""; + border-top: .3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; } + +/* Quick Actions Dropdown */ +.quick-actions { + width: 350px; + padding: 0px; } + .quick-actions:after { + border-bottom-color: #1572E8 !important; } + .quick-actions .quick-actions-header { + display: flex; + align-items: center; + flex-direction: column; + background: #1572E8; + color: #fff; + padding: 15px; + border-radius: 3px 3px 0 0; } + .quick-actions .quick-actions-header .title { + font-size: 18px; } + .quick-actions .quick-actions-header .subtitle { + font-size: 13px; } + .quick-actions .quick-actions-items { + padding: 15px 7.5px; } + .quick-actions a:hover { + text-decoration: none; } + .quick-actions .quick-actions-item { + display: flex; + flex-direction: column; + margin: 7.5px 7.5px; + padding: 10px; + align-items: center; + color: #1572E8; + border: 1px solid #f1f1f1; + border-bottom: 1px solid #f1f1f1; + border-radius: 3px; + transition: all .2s; } + .quick-actions .quick-actions-item:hover { + background: #fdfdff; + color: #1572E8; + box-shadow: 3px 3px 10px #f7f1f1; } + .quick-actions .quick-actions-item i { + color: #7d8c95; + font-size: 27px; } + .quick-actions .quick-actions-item .text { + text-align: center; + font-size: 13px; + margin-top: 8px; } + .quick-actions.quick-actions-default:after { + border-bottom-color: #1a2035 !important; } + .quick-actions.quick-actions-default .quick-actions-header { + background: #1a2035; } + .quick-actions.quick-actions-default .quick-actions-item { + color: #1a2035; } + .quick-actions.quick-actions-primary:after { + border-bottom-color: #1572E8 !important; } + .quick-actions.quick-actions-primary .quick-actions-header { + background: #1572E8; } + .quick-actions.quick-actions-primary .quick-actions-item { + color: #1572E8; } + .quick-actions.quick-actions-secondary:after { + border-bottom-color: #6861CE !important; } + .quick-actions.quick-actions-secondary .quick-actions-header { + background: #6861CE; } + .quick-actions.quick-actions-secondary .quick-actions-item { + color: #6861CE; } + .quick-actions.quick-actions-info:after { + border-bottom-color: #48ABF7 !important; } + .quick-actions.quick-actions-info .quick-actions-header { + background: #48ABF7; } + .quick-actions.quick-actions-info .quick-actions-item { + color: #48ABF7; } + .quick-actions.quick-actions-warning:after { + border-bottom-color: #FFAD46 !important; } + .quick-actions.quick-actions-warning .quick-actions-header { + background: #FFAD46; } + .quick-actions.quick-actions-warning .quick-actions-item { + color: #FFAD46; } + .quick-actions.quick-actions-success:after { + border-bottom-color: #31CE36 !important; } + .quick-actions.quick-actions-success .quick-actions-header { + background: #31CE36; } + .quick-actions.quick-actions-success .quick-actions-item { + color: #31CE36; } + .quick-actions.quick-actions-danger:after { + border-bottom-color: #F25961 !important; } + .quick-actions.quick-actions-danger .quick-actions-header { + background: #F25961; } + .quick-actions.quick-actions-danger .quick-actions-item { + color: #F25961; } + +@media screen and (max-width: 991px) { + .notif-box .notif-scroll, .messages-notif-box .message-notif-scroll, .quick-actions .quick-actions-scroll { + max-height: calc(100vh - 200px); } + + .dropdown-user .dropdown-user-scroll { + max-height: calc(100vh - 132px); } } +@media screen and (min-width: 991px) { + .navbar-header .dropdown-menu { + margin-top: 13px; } + .navbar-header .dropdown-menu:after { + border-bottom: 8px solid #fff; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + content: ""; + right: 10px; + top: -8px; + position: absolute; + z-index: 1001; } } +/* Chart Circle */ +.chart-circle { + display: flex; + justify-content: center; } + .chart-circle .circles-text { + font-size: 25px !important; } + +/* Chart JS Container */ +.chart-container { + min-height: 300px; + position: relative; } + +/* HTML legend */ +.html-legend { + list-style: none; + cursor: pointer; + padding-left: 0; + text-align: center; + margin-top: 1rem; } + +.html-legend li { + display: inline-block; + vertical-align: middle; + padding: 0 5px; + margin-right: 5px; + margin-bottom: 6px; + color: #8d9498; + font-size: 12px; } + +.html-legend li.hidden { + text-decoration: line-through; } + +.html-legend li span { + border-radius: 15px; + display: inline-block; + height: 15px; + margin-right: 10px; + width: 15px; + vertical-align: top; } + +.jqstooltip { + box-sizing: content-box; } + +/* Alert */ +.alert { + border: 0px; + position: relative; + padding: .95rem 1.25rem; + border-radius: 1px; + color: inherit; + background-color: #ffffff; + -webkit-box-shadow: 1px 1px 14px 0px rgba(18, 38, 63, 0.26); + -moz-box-shadow: 1px 1px 14px 0px rgba(18, 38, 63, 0.26); + box-shadow: 1px 1px 14px 0px rgba(18, 38, 63, 0.26); } + .alert [data-notify="icon"] { + display: block; } + .alert [data-notify="icon"]::before { + line-height: 35px; + font-size: 22px; + display: block; + left: 15px; + position: absolute; + top: 50%; + transform: translateY(-50%); + width: 35px; + height: 35px; + border-radius: 30px; + text-align: center; + color: #fff; } + .alert [data-notify="title"] { + display: block; + color: #2b2b2b; + font-weight: 700; + font-size: 14px; + margin-bottom: 5px; } + .alert [data-notify="message"] { + font-size: 13px; + color: #908e8e; } + .alert .close { + background: rgba(255, 255, 255, 0.8); + width: 25px; + height: 25px; + line-height: 25px; + top: 12px !important; + border-radius: 50%; } + +/* Alert States */ +.alert-default { + border-left: 4px solid #1a2035; } + .alert-default [data-notify="icon"]:before { + background: #1a2035; } + +.alert-primary { + border-left: 4px solid #1572E8; } + .alert-primary [data-notify="icon"]:before { + background: #1572E8; } + +.alert-secondary { + border-left: 4px solid #6861CE; } + .alert-secondary [data-notify="icon"]:before { + background: #6861CE; } + +.alert-info { + border-left: 4px solid #48ABF7; } + .alert-info [data-notify="icon"]:before { + background: #48ABF7; } + +.alert-success { + border-left: 4px solid #31CE36; } + .alert-success [data-notify="icon"]:before { + background: #31CE36; } + +.alert-warning { + border-left: 4px solid #FFAD46; } + .alert-warning [data-notify="icon"]:before { + background: #FFAD46; } + +.alert-danger { + border-left: 4px solid #F25961; } + .alert-danger [data-notify="icon"]:before { + background: #F25961; } + +/* Button */ +.btn { + padding: .65rem 1.4rem; + font-size: 14px; + opacity: 1; + border-radius: 3px; } + .btn:hover, .btn:focus { + opacity: 0.9; + transition: all .3s; } + .btn .btn-label { + display: inline-block; } + .btn .btn-label i { + font-size: 16px; + vertical-align: middle; + margin-right: 2px; + margin-left: -2px; + line-height: 0; + margin-top: -2.5px; } + .btn .btn-label.just-icon i { + margin-left: 0 !important; + margin-right: 0px !important; } + +/* Button Sizes */ +.btn-lg { + font-size: 15px; + border-radius: 3px; + padding: 12.5px 27.5px; + font-weight: 400; } + .btn-lg .btn-label i { + font-size: 27px; + vertical-align: middle; + margin-right: 2px; + margin-left: -7px; + line-height: 0; + margin-top: -2.5px; } + .btn-lg .btn-label.just-icon i { + margin-left: 0 !important; + margin-right: 0px !important; } + +.btn-sm { + font-size: 11px; + padding: 7px 13px; } + +.btn-xs { + font-size: 10px; + padding: 5px 9px; } + +.btn.disabled:hover, .btn:hover:disabled { + opacity: 0.65; } + +/* Button Icon */ +.btn-icon { + font-size: .9375rem; + height: 2.5125rem; + line-height: normal; + min-width: 2.5125rem; + overflow: hidden; + padding: 0; + position: relative; + width: 2.5125rem; } + .btn-icon.btn-lg { + height: 2.75rem; + min-width: 2.75rem; + width: 2.75rem; } + .btn-icon.btn-sm { + height: 2rem; + min-width: 2rem; + width: 2rem; } + .btn-icon.btn-xs { + height: 1.6875rem; + min-width: 1.6875rem; + width: 1.6875rem; } + +/* Button States */ +.btn-white { + background: #ffffff !important; + color: #1a2035 !important; } + .btn-white:hover, .btn-white:focus, .btn-white:disabled { + background: #ffffff !important; + color: #1a2035 !important; } + +.btn-default { + background: #1a2035 !important; + color: #ffffff !important; } + .btn-default:hover, .btn-default:focus, .btn-default:disabled { + background: #1a2035 !important; + color: #ffffff !important; } + +.btn-primary { + background: #1572E8 !important; + border-color: #1572E8 !important; } + .btn-primary:hover, .btn-primary:focus, .btn-primary:disabled { + background: #1572E8 !important; + border-color: #1572E8 !important; } + +.btn-secondary { + background: #6861CE !important; + border-color: #6861CE !important; } + .btn-secondary:hover, .btn-secondary:focus, .btn-secondary:disabled { + background: #6861CE !important; + border-color: #6861CE !important; } + +.btn-info { + background: #48ABF7 !important; + border-color: #48ABF7 !important; } + .btn-info:hover, .btn-info:focus, .btn-info:disabled { + background: #48ABF7 !important; + border-color: #48ABF7 !important; } + +.btn-success { + background: #31CE36 !important; + border-color: #31CE36 !important; } + .btn-success:hover, .btn-success:focus, .btn-success:disabled { + background: #31CE36 !important; + border-color: #31CE36 !important; } + +.btn-warning { + background: #FFAD46 !important; + border-color: #FFAD46 !important; + color: #ffffff !important; } + .btn-warning:hover, .btn-warning:focus, .btn-warning:disabled { + background: #FFAD46 !important; + border-color: #FFAD46 !important; + color: #ffffff !important; } + +.btn-danger { + background: #F25961 !important; + border-color: #F25961 !important; } + .btn-danger:hover, .btn-danger:focus, .btn-danger:disabled { + background: #F25961 !important; + border-color: #F25961 !important; } + +.btn-light { + background: #ffffff !important; + border-color: transparent; } + .btn-light:hover, .btn-light:focus, .btn-light:disabled { + background: #ebecec !important; + border-color: transparent; } + +.btn-dropdown-card-header { + padding: 0; + background: transparent; + color: inherit; + font-size: 15px; } + .btn-dropdown-card-header:after { + display: none; } + +/* Button Border */ +.btn-border { + background: transparent !important; } + .btn-border:hover, .btn-border:focus { + background: transparent !important; } + .btn-border.btn-white { + color: #ffffff !important; + border: 1px solid #ffffff !important; } + .btn-border.btn-default { + color: #1a2035 !important; + border: 1px solid #1a2035 !important; } + .btn-border.btn-primary { + color: #1572E8 !important; + border: 1px solid #1572E8 !important; } + .btn-border.btn-secondary { + color: #6861CE !important; + border: 1px solid #6861CE !important; } + .btn-border.btn-info { + color: #48ABF7 !important; + border: 1px solid #48ABF7 !important; } + .btn-border.btn-success { + color: #31CE36 !important; + border: 1px solid #31CE36 !important; } + .btn-border.btn-warning { + color: #FFAD46 !important; + border: 1px solid #FFAD46 !important; } + .btn-border.btn-danger { + color: #F25961 !important; + border: 1px solid #F25961 !important; } + .btn-border.btn-light { + border: 1px solid #efefef; + background: #fff !important; } + +/* Button Rounded */ +.btn-round { + border-radius: 100px !important; } + +/* Button Link */ +.btn-link { + border: 0 !important; + background: transparent !important; } + .btn-link:hover, .btn-link:focus { + text-decoration: underline !important; + background: transparent !important; + border: 0 !important; } + .btn-link.btn-default { + color: #1a2035 !important; } + .btn-link.btn-default:hover { + color: #1a2035 !important; } + .btn-link.btn-primary { + color: #1572E8 !important; } + .btn-link.btn-primary:hover { + color: #1572E8 !important; } + .btn-link.btn-secondary { + color: #6861CE !important; } + .btn-link.btn-secondary:hover { + color: #6861CE !important; } + .btn-link.btn-info { + color: #48ABF7 !important; } + .btn-link.btn-info:hover { + color: #48ABF7 !important; } + .btn-link.btn-success { + color: #31CE36 !important; } + .btn-link.btn-success:hover { + color: #31CE36 !important; } + .btn-link.btn-warning { + color: #FFAD46 !important; } + .btn-link.btn-warning:hover { + color: #FFAD46 !important; } + .btn-link.btn-danger { + color: #F25961 !important; } + .btn-link.btn-danger:hover { + color: #F25961 !important; } + +.toggle-on.btn { + color: #ffffff !important; } + +.toggle-handle { + background: #ffffff !important; } + .toggle-handle:hover { + background: #ffffff !important; } + +.btn-round .toggle-handle { + border-radius: 50px; } + +.btn-rounded { + border-radius: 60px !important; } + +.btn-full { + width: 100%; } + +.btn-no-radius { + border-radius: 0px; } + +/* Nav Pill */ +.nav-pills > li:first-child > .nav-link { + border-radius: 4px 0 0 4px !important; } +.nav-pills > li:last-child > .nav-link { + border-radius: 0 4px 4px 0 !important; } + +.nav-link.disabled { + color: #6c757d !important; } + +.nav-pills .nav-link { + padding: 10px 20px; } +.nav-pills > li > .nav-link { + margin-left: -1px; + border-radius: 0 !important; + margin-top: 5px; + margin-bottom: 5px; + border: 1px solid #1572E8; + color: #585c5d; } + .nav-pills > li > .nav-link.active { + background: #1572E8; } + .nav-pills > li > .nav-link:hover { + background: rgba(222, 222, 222, 0.4); } +.nav-pills.nav-pills-no-bd li { + margin-left: 15px !important; } + .nav-pills.nav-pills-no-bd li .nav-link { + border: 0px !important; + border-radius: 50px !important; + background: rgba(222, 222, 222, 0.4); } + .nav-pills.nav-pills-no-bd li .nav-link.active { + border-radius: 50px !important; } + .nav-pills.nav-pills-no-bd li:first-child { + margin-left: 0px !important; } +.nav-pills.nav-pills-no-bd.nav-pills-icons .nav-link, .nav-pills.nav-pills-no-bd.nav-pills-icons .nav-link.active { + border-radius: 5px !important; } +.nav-pills.flex-column .nav-link { + border-radius: 0 !important; + border: 1px solid #1572E8; + color: #585c5d; + margin-top: -1px; + text-align: center; + word-wrap: normal; + padding: 10px 0; } + .nav-pills.flex-column .nav-link:hover { + background: rgba(222, 222, 222, 0.4); } + .nav-pills.flex-column .nav-link.active { + background: #1572E8; } + .nav-pills.flex-column .nav-link:first-child { + border-radius: 4px 4px 0 0 !important; } + .nav-pills.flex-column .nav-link:last-child { + border-radius: 0 0 4px 4px !important; } +.nav-pills.flex-column.nav-pills-no-bd .nav-link { + border: 0px !important; + border-radius: 50px !important; + background: rgba(222, 222, 222, 0.4); + margin-top: 5px; + margin-bottom: 5px; } + .nav-pills.flex-column.nav-pills-no-bd .nav-link.active { + border-radius: 50px !important; } +.nav-pills.flex-column.nav-pills-icons .nav-link, .nav-pills.flex-column.nav-pills-icons .nav-link.active { + border-radius: 5px !important; } +.nav-pills.nav-pills-icons .nav-link, .nav-pills.nav-pills-icons .nav-link.active { + border-radius: 5px !important; + padding-top: 12px; + padding-bottom: 12px; } +.nav-pills.nav-pills-icons i { + display: block; + text-align: center; + font-size: 2em; + line-height: 50px; } +.nav-pills.nav-default .nav-link, .nav-pills.nav-primary .nav-link, .nav-pills.nav-secondary .nav-link, .nav-pills.nav-info .nav-link, .nav-pills.nav-warning .nav-link, .nav-pills.nav-success .nav-link, .nav-pills.nav-danger .nav-link { + border: 1px solid #eeeeee; } +.nav-pills.nav-default .nav-link.active, .nav-pills.nav-primary .nav-link.active, .nav-pills.nav-secondary .nav-link.active, .nav-pills.nav-info .nav-link.active, .nav-pills.nav-warning .nav-link.active, .nav-pills.nav-success .nav-link.active, .nav-pills.nav-danger .nav-link.active { + color: #ffffff !important; } +.nav-pills.nav-default .nav-link.active { + background: #1a2035; + border: 1px solid #1a2035; } +.nav-pills.nav-primary .nav-link.active { + background: #1572E8; + border: 1px solid #1572E8; } +.nav-pills.nav-secondary .nav-link.active { + background: #6861CE; + border: 1px solid #6861CE; } +.nav-pills.nav-info .nav-link.active { + background: #48ABF7; + border: 1px solid #48ABF7; } +.nav-pills.nav-success .nav-link.active { + background: #31CE36; + border: 1px solid #31CE36; } +.nav-pills.nav-warning .nav-link.active { + background: #FFAD46; + border: 1px solid #FFAD46; } +.nav-pills.nav-danger .nav-link.active { + background: #F25961; + border: 1px solid #F25961; } + +/* Size Nav */ +.nav-sm .nav-link { + font-size: 11px !important; + padding: 8px 16px !important; } + +/* Popover */ +.popover { + max-width: 240px; + line-height: 1.7; + border: 0; + box-shadow: 0px 0px 20px 1px rgba(69, 65, 78, 0.2); } + .popover .popover-header { + background: transparent; + font-size: 14px; + border-bottom: 0px; + text-transform: capitalize; + margin-top: 5px; + color: #aaaaaa; + font-weight: 400; } + .popover .popover-body { + margin-bottom: 5px; } + .popover .popover-body p { + font-size: 13px; + margin-bottom: 1rem; } + .popover.bs-popover-top .arrow:before, .popover.bs-popover-bottom .arrow:before, .popover.bs-popover-left .arrow:before, .popover.bs-popover-right .arrow:before { + border: transparent; } + +.popover.bs-popover-auto[x-placement^=right], .popover.bs-popover-right { + margin-left: 10px; } + +.popover.bs-popover-auto[x-placement^=left], .popover.bs-popover-left { + margin-right: 10px; } + +.popover.bs-popover-auto[x-placement^=top], .popover.bs-popover-top { + margin-bottom: 10px; } + +.popover.bs-popover-auto[x-placement^=bottom], .popover.bs-popover-bottom { + margin-top: 10px; } + +/* Progress */ +.progress { + border-radius: 100px; + height: 14px; } + .progress .progress-bar { + border-radius: 100px; } + .progress.progress-sm { + height: 8px; } + .progress.progress-lg { + height: 20px; } + +/* Pagination */ +.pagination > li > a, .pagination > li:first-child > a, .pagination > li:last-child > a, .pagination > li > span, .pagination > li:first-child > span, .pagination > li:last-child > span { + border-radius: 100px !important; + margin: 0 2px; + color: #777777; + border-color: #ddd; } +.pagination.pg-default > li.active > a, .pagination.pg-default > li.active:first-child > a, .pagination.pg-default > li.active:last-child > a, .pagination.pg-default > li.active > span, .pagination.pg-default > li.active:first-child > span, .pagination.pg-default > li.active:last-child > span { + background: #1a2035; + border-color: #1a2035; + color: #ffffff; } +.pagination.pg-primary > li.active > a, .pagination.pg-primary > li.active:first-child > a, .pagination.pg-primary > li.active:last-child > a, .pagination.pg-primary > li.active > span, .pagination.pg-primary > li.active:first-child > span, .pagination.pg-primary > li.active:last-child > span { + background: #1572E8; + border-color: #1572E8; + color: #ffffff; } +.pagination.pg-secondary > li.active > a, .pagination.pg-secondary > li.active:first-child > a, .pagination.pg-secondary > li.active:last-child > a, .pagination.pg-secondary > li.active > span, .pagination.pg-secondary > li.active:first-child > span, .pagination.pg-secondary > li.active:last-child > span { + background: #6861CE; + border-color: #6861CE; + color: #ffffff; } +.pagination.pg-info > li.active > a, .pagination.pg-info > li.active:first-child > a, .pagination.pg-info > li.active:last-child > a, .pagination.pg-info > li.active > span, .pagination.pg-info > li.active:first-child > span, .pagination.pg-info > li.active:last-child > span { + background: #48ABF7; + border-color: #48ABF7; + color: #ffffff; } +.pagination.pg-success > li.active > a, .pagination.pg-success > li.active:first-child > a, .pagination.pg-success > li.active:last-child > a, .pagination.pg-success > li.active > span, .pagination.pg-success > li.active:first-child > span, .pagination.pg-success > li.active:last-child > span { + background: #31CE36; + border-color: #31CE36; + color: #ffffff; } +.pagination.pg-warning > li.active > a, .pagination.pg-warning > li.active:first-child > a, .pagination.pg-warning > li.active:last-child > a, .pagination.pg-warning > li.active > span, .pagination.pg-warning > li.active:first-child > span, .pagination.pg-warning > li.active:last-child > span { + background: #FFAD46; + border-color: #FFAD46; + color: #ffffff; } +.pagination.pg-danger > li.active > a, .pagination.pg-danger > li.active:first-child > a, .pagination.pg-danger > li.active:last-child > a, .pagination.pg-danger > li.active > span, .pagination.pg-danger > li.active:first-child > span, .pagination.pg-danger > li.active:last-child > span { + background: #F25961; + border-color: #F25961; + color: #ffffff; } + +/* Slider */ +.slider-default .ui-slider-range { + background: #1a2035; } + +.slider-primary .ui-slider-range { + background: #1572E8; } + +.slider-secondary .ui-slider-range { + background: #6861CE; } + +.slider-info .ui-slider-range { + background: #48ABF7; } + +.slider-success .ui-slider-range { + background: #31CE36; } + +.slider-warning .ui-slider-range { + background: #FFAD46; } + +.slider-danger .ui-slider-range { + background: #F25961; } + +/* Modal */ +.modal .bg-default .modal-title, .modal .bg-primary .modal-title, .modal .bg-secondary .modal-title, .modal .bg-info .modal-title, .modal .bg-success .modal-title, .modal .bg-warning .modal-title, .modal .bg-danger .modal-title { + color: #ffffff !important; } + +.modal-content { + border-radius: .4rem !important; + border: 0 !important; } + +.activity-feed { + padding: 15px; + list-style: none; } + .activity-feed .feed-item { + position: relative; + padding-bottom: 20px; + padding-left: 30px; + border-left: 2px solid #e4e8eb; } + .activity-feed .feed-item:last-child { + border-color: transparent; } + .activity-feed .feed-item::after { + content: ""; + display: block; + position: absolute; + top: 0; + left: -7px; + width: 12px; + height: 12px; + border-radius: 50%; + background: #177dff; } + +.feed-item-default::after { + background: #1a2035 !important; } + +.feed-item-primary::after { + background: #1572E8 !important; } + +.feed-item-secondary::after { + background: #6861CE !important; } + +.feed-item-success::after { + background: #31CE36 !important; } + +.feed-item-danger::after { + background: #F25961 !important; } + +.feed-item-info::after { + background: #48ABF7 !important; } + +.feed-item-warning::after { + background: #FFAD46 !important; } + +.activity-feed .feed-item .date { + display: block; + position: relative; + top: -5px; + color: #8c96a3; + text-transform: uppercase; + font-size: 13px; } +.activity-feed .feed-item .text { + position: relative; + top: -3px; } + +/* Timeline */ +.timeline { + list-style: none; + padding: 20px 0 20px; + position: relative; } + .timeline:before { + top: 0; + bottom: 0; + position: absolute; + content: " "; + width: 3px; + background-color: #eeeeee; + left: 50%; + margin-left: -1.5px; } + .timeline > li { + margin-bottom: 20px; + position: relative; } + .timeline > li:before { + content: " "; + display: table; } + .timeline > li:after { + content: " "; + display: table; + clear: both; } + .timeline > li:before { + content: " "; + display: table; } + .timeline > li:after { + content: " "; + display: table; + clear: both; } + .timeline > li > .timeline-panel { + width: 50%; + float: left; + border: 1px solid #eeeeee; + background: #ffffff; + border-radius: 3px; + padding: 20px; + position: relative; + -webkit-box-shadow: 0px 1px 20px 1px rgba(69, 65, 78, 0.06); + -moz-box-shadow: 0px 1px 20px 1px rgba(69, 65, 78, 0.06); + box-shadow: 0px 1px 20px 1px rgba(69, 65, 78, 0.06); } + .timeline > li.timeline-inverted + li:not(.timeline-inverted) { + margin-top: -60px; } + .timeline > li:not(.timeline-inverted) { + padding-right: 90px; } + .timeline > li:not(.timeline-inverted) + li.timeline-inverted { + margin-top: -60px; } + .timeline > li.timeline-inverted { + padding-left: 90px; } + .timeline > li.timeline-inverted > .timeline-panel { + float: right; } + .timeline > li.timeline-inverted > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; } + .timeline > li.timeline-inverted > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; } + .timeline > li > .timeline-panel:before { + position: absolute; + top: 26px; + right: -15px; + display: inline-block; + border-top: 15px solid transparent; + border-left: 15px solid #eeeeee; + border-right: 0 solid #eeeeee; + border-bottom: 15px solid transparent; + content: " "; } + .timeline > li > .timeline-panel:after { + position: absolute; + top: 27px; + right: -14px; + display: inline-block; + border-top: 14px solid transparent; + border-left: 14px solid #ffffff; + border-right: 0 solid #ffffff; + border-bottom: 14px solid transparent; + content: " "; } + .timeline > li > .timeline-badge { + color: #ffffff; + width: 50px; + height: 50px; + line-height: 50px; + font-size: 1.8em; + text-align: center; + position: absolute; + top: 16px; + left: 50%; + margin-left: -25px; + background-color: #999999; + z-index: 100; + border-top-right-radius: 50%; + border-top-left-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; } + +.timeline-badge.default { + background-color: #1a2035 !important; } +.timeline-badge.primary { + background-color: #1572E8 !important; } +.timeline-badge.secondary { + background-color: #6861CE !important; } +.timeline-badge.success { + background-color: #31CE36 !important; } +.timeline-badge.warning { + background-color: #FFAD46 !important; } +.timeline-badge.danger { + background-color: #F25961 !important; } +.timeline-badge.info { + background-color: #48ABF7 !important; } + +.timeline-title { + font-size: 17px; + margin-top: 0; + color: inherit; + font-weight: 400; } + +.timeline-heading i { + font-size: 22px; + display: inline-block; + vertical-align: middle; + margin-right: 5px; } + +.timeline-body > p, .timeline-body > ul { + margin-bottom: 0; } +.timeline-body > p + p { + margin-top: 5px; } + +/* Google Maps */ +.full-screen-maps { + height: 100vh !important; } + +/* jQVMap */ +.vmap { + width: 100%; + min-height: 265px; } + .vmap > svg { + margin: auto; + display: flex; } + .vmap > svg > g { + transition: all ease-in-out .2s; } + +.jqvmap-label, .jqvmap-pin { + pointer-events: none; } + +.jqvmap-label { + position: absolute; + display: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #292929; + color: #ffffff; + font-size: smaller; + padding: 3px; } + +.jqvmap-zoomin, .jqvmap-zoomout { + position: absolute; + left: 10px; + border-radius: 13px; + background: #35cd3a; + padding: 6px 7px; + color: #ffffff; + cursor: pointer; + line-height: 10px; + text-align: center; + font-size: 14px; } + +.jqvmap-zoomin { + top: 15px; } + +.jqvmap-zoomout { + top: 45px; } + +.jqvmap-region { + cursor: pointer; } + +.jqvmap-ajax_response { + width: 100%; + height: 500px; } + +.list-group .list-group-header { + font-size: 12px; + font-weight: 600; + padding: .75rem 1rem; } +.list-group .list-group-item { + display: flex; + align-items: stretch; + border-width: 1px 0; + border-color: #ebecec; } +.list-group .list-group-item-figure { + align-self: start; + display: flex; + -ms-flex-align: center; + align-items: center; + color: #a9acb0; } +.list-group .list-group-item-body { + flex: 1; + min-width: 0; + align-self: center; + font-size: .875rem; } +.list-group .list-group-item-text { + margin-bottom: 0; + line-height: 1.25rem; + color: #686f76; } + +.list-group-file-item .list-group-item { + padding: 0px; } +.list-group-file-item .list-group-item-figure { + padding: .75rem 1rem; } +.list-group-file-item .list-group-item-body { + padding: .75rem 0; } + +.list-group-bordered .list-group-item { + border: 1px solid #e3ebf6; } + .list-group-bordered .list-group-item.active { + background: #1572E8; + border-color: #1572E8; } + +.list-group-lg .list-group-item { + padding-top: 1.5rem; + padding-bottom: 1.5rem; } + +.selectgroup { + display: -ms-inline-flexbox; + display: inline-flex; } + +.selectgroup-item { + -ms-flex-positive: 1; + flex-grow: 1; + position: relative; + font-weight: 400 !important; } + .selectgroup-item + .selectgroup-item { + margin-left: -1px; } + .selectgroup-item:not(:first-child) .selectgroup-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .selectgroup-item:not(:last-child) .selectgroup-button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.selectgroup-input { + opacity: 0; + position: absolute; + z-index: -1; + top: 0; + left: 0; } + +.selectgroup-button { + display: block; + border: 1px solid rgba(0, 40, 100, 0.12); + text-align: center; + padding: 0.375rem 1rem; + position: relative; + cursor: pointer; + border-radius: 3px; + color: #9aa0ac; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: 14px; + line-height: 1.5rem; + min-width: 2.375rem; } + +.selectgroup-button-icon { + padding-left: .5rem; + padding-right: .5rem; + font-size: 1rem; } + +.selectgroup-input:checked + .selectgroup-button { + border-color: #1572E8; + z-index: 1; + color: #1572E8; + background: rgba(21, 114, 232, 0.15); } +.selectgroup-input:focus + .selectgroup-button { + border-color: #1572E8; + z-index: 2; + color: #1572E8; + box-shadow: 0 0 0 2px rgba(21, 114, 232, 0.25); } + +.selectgroup-pills { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: start; + align-items: flex-start; } + .selectgroup-pills .selectgroup-item { + margin-right: .5rem; + -ms-flex-positive: 0; + flex-grow: 0; } + .selectgroup-pills .selectgroup-button { + border-radius: 50px !important; } + +.selectgroup.selectgroup-primary .selectgroup-input:checked + .selectgroup-button { + border-color: #1572E8; + color: #1572E8; + background: rgba(21, 114, 232, 0.15); } +.selectgroup.selectgroup-primary .selectgroup-input:focus + .selectgroup-button { + border-color: #1572E8; + color: #1572E8; + box-shadow: 0 0 0 2px rgba(21, 114, 232, 0.25); } +.selectgroup.selectgroup-secondary .selectgroup-input:checked + .selectgroup-button { + border-color: #6861CE; + color: #6861CE; + background: rgba(104, 97, 206, 0.15); } +.selectgroup.selectgroup-secondary .selectgroup-input:focus + .selectgroup-button { + border-color: #6861CE; + color: #6861CE; + box-shadow: 0 0 0 2px rgba(104, 97, 206, 0.25); } +.selectgroup.selectgroup-info .selectgroup-input:checked + .selectgroup-button { + border-color: #48ABF7; + color: #48ABF7; + background: rgba(72, 171, 247, 0.15); } +.selectgroup.selectgroup-info .selectgroup-input:focus + .selectgroup-button { + border-color: #48ABF7; + color: #48ABF7; + box-shadow: 0 0 0 2px rgba(72, 171, 247, 0.25); } +.selectgroup.selectgroup-success .selectgroup-input:checked + .selectgroup-button { + border-color: #31CE36; + color: #31CE36; + background: rgba(49, 206, 54, 0.15); } +.selectgroup.selectgroup-success .selectgroup-input:focus + .selectgroup-button { + border-color: #31CE36; + color: #31CE36; + box-shadow: 0 0 0 2px rgba(49, 206, 54, 0.25); } +.selectgroup.selectgroup-warning .selectgroup-input:checked + .selectgroup-button { + border-color: #FFAD46; + color: #FFAD46; + background: rgba(255, 173, 70, 0.15); } +.selectgroup.selectgroup-warning .selectgroup-input:focus + .selectgroup-button { + border-color: #FFAD46; + color: #FFAD46; + box-shadow: 0 0 0 2px rgba(255, 173, 70, 0.25); } +.selectgroup.selectgroup-danger .selectgroup-input:checked + .selectgroup-button { + border-color: #F25961; + color: #F25961; + background: rgba(242, 89, 97, 0.15); } +.selectgroup.selectgroup-danger .selectgroup-input:focus + .selectgroup-button { + border-color: #F25961; + color: #F25961; + box-shadow: 0 0 0 2px rgba(242, 89, 97, 0.25); } + +.colorinput { + margin: 0; + position: relative; + cursor: pointer; } + +.colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; } + +.colorinput-color { + display: inline-block; + width: 1.75rem; + height: 1.75rem; + border-radius: 3px; + border: 1px solid rgba(0, 40, 100, 0.12); + color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); } + .colorinput-color:before { + content: ''; + opacity: 0; + position: absolute; + top: .25rem; + left: .25rem; + height: 1.25rem; + width: 1.25rem; + transition: .3s opacity; + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") no-repeat center center/50% 50%; } + +.colorinput-input:checked ~ .colorinput-color:before { + opacity: 1; } +.colorinput-input:focus ~ .colorinput-color { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); } + +.imagecheck { + margin: 0; + position: relative; + cursor: pointer; } + +.imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; } + +.imagecheck-figure { + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + margin: 0; + position: relative; } + +.imagecheck-input:focus ~ .imagecheck-figure { + border-color: #1572E8; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); } +.imagecheck-input:checked ~ .imagecheck-figure { + border-color: rgba(0, 40, 100, 0.24); } + +.imagecheck-figure:before { + content: ''; + position: absolute; + top: .25rem; + left: .25rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: #1572E8 url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") no-repeat center center/50% 50%; + color: #fff; + z-index: 1; + border-radius: 3px; + opacity: 0; + transition: .3s opacity; } + +.imagecheck-input:checked ~ .imagecheck-figure:before { + opacity: 1; } + +.imagecheck-image { + max-width: 100%; + opacity: .64; + transition: .3s opacity; } + .imagecheck-image:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; } + .imagecheck-image:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; } + +.imagecheck:hover .imagecheck-image { + opacity: 1; } + +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-image, .imagecheck-input:checked ~ .imagecheck-figure .imagecheck-image { + opacity: 1; } + +.imagecheck-caption { + text-align: center; + padding: .25rem .25rem; + color: #9aa0ac; + font-size: 0.875rem; + transition: .3s color; } + +.imagecheck:hover .imagecheck-caption { + color: #495057; } + +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-caption, .imagecheck-input:checked ~ .imagecheck-figure .imagecheck-caption { + color: #495057; } + +.loader, .is-loading:after { + display: block; + width: 1.5rem; + height: 1.5rem; + background: transparent; + border: 3px solid #6861CE; + border-bottom-color: transparent; + border-radius: 50%; + animation: 1s spin linear infinite; } + +.loader-lg, .is-loading-lg:after { + width: 2rem; + height: 2rem; + border-width: 5px; } + +.loader-sm, .is-loading-sm:after { + width: 1rem; + height: 1rem; + border-width: 2px; } + +.is-loading { + position: relative; + color: transparent !important; } + .is-loading > * { + opacity: 0.2 !important; } + .is-loading:after { + position: absolute; + top: calc(50% - 1.5rem/2); + left: calc(50% - 1.5rem/2); + content: ''; } + +.is-loading-lg:after { + top: calc(50% - 2rem/2); + left: calc(50% - 2rem/2); } + +.is-loading-sm:after { + top: calc(50% - 1rem/2); + left: calc(50% - 1rem/2); } + +.btn-default.is-loading:after, .card-default.is-loading:after, .btn-primary.is-loading:after, .card-primary.is-loading:after, .btn-secondary.is-loading:after, .card-secondary.is-loading:after, .btn-info.is-loading:after, .card-info.is-loading:after, .btn-success.is-loading:after, .card-success.is-loading:after, .btn-warning.is-loading:after, .card-warning.is-loading:after, .btn-danger.is-loading:after, .card-danger.is-loading:after, .loader-default, +.is-loading-default:after, .loader-primary, +.is-loading-primary:after, .loader-secondary, +.is-loading-secondary:after, .loader-info, +.is-loading-info:after, .loader-success, +.is-loading-success:after, .loader-warning, +.is-loading-warning:after, .loader-danger, +.is-loading-danger:after { + border-bottom-color: transparent !important; } + +.btn-default.is-loading:after, .card-default.is-loading:after, .btn-primary.is-loading:after, .card-primary.is-loading:after, .btn-secondary.is-loading:after, .card-secondary.is-loading:after, .btn-info.is-loading:after, .card-info.is-loading:after, .btn-success.is-loading:after, .card-success.is-loading:after, .btn-warning.is-loading:after, .card-warning.is-loading:after, .btn-danger.is-loading:after, .card-danger.is-loading:after { + border-color: #fff; } + +.loader-default, +.is-loading-default:after { + border-color: #1a2035; } + +.loader-primary, +.is-loading-primary:after { + border-color: #1572E8; } + +.loader-secondary, +.is-loading-secondary:after { + border-color: #6861CE; } + +.loader-info, +.is-loading-info:after { + border-color: #48ABF7; } + +.loader-success, +.is-loading-success:after { + border-color: #31CE36; } + +.loader-warning, +.is-loading-warning:after { + border-color: #FFAD46; } + +.loader-danger, +.is-loading-danger:after { + border-color: #F25961; } + +@keyframes spin { + from { + transform: rotate(0deg); } + to { + transform: rotate(360deg); } } +/* jQuery Ui */ +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; } + +.ui-helper-hidden { + display: none; } + +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; } + +.ui-helper-clearfix:after, .ui-helper-clearfix:before { + content: ""; + display: table; + border-collapse: collapse; } +.ui-helper-clearfix:after { + clear: both; } + +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter: Alpha(Opacity=0); } + +.ui-front { + z-index: 100; } + +.ui-state-disabled { + cursor: default !important; + pointer-events: none; } + +.ui-icon { + display: inline-block; + vertical-align: middle; + margin-top: -.25em; + position: relative; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; } + +.ui-widget-icon-block { + left: 50%; + margin-left: -8px; + display: block; } + +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.ui-resizable { + position: relative; } + +.ui-resizable-handle { + position: absolute; + font-size: .1px; + display: block; + -ms-touch-action: none; + touch-action: none; } + +.ui-resizable-autohide .ui-resizable-handle, .ui-resizable-disabled .ui-resizable-handle { + display: none; } + +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; } + +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; } + +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; } + +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; } + +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; } + +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; } + +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; } + +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; } + +.ui-selectable { + -ms-touch-action: none; + touch-action: none; } + +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted #000; } + +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; } + +.ui-slider { + position: relative; + text-align: left; + background: #ddd; } + .ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1em; + height: 1em; + cursor: default; + -ms-touch-action: none; + touch-action: none; } + .ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; } + .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; } + +.ui-slider-horizontal { + height: .4em; } + .ui-slider-horizontal .ui-slider-handle { + top: -.4em; + margin-left: -.6em; } + .ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; } + .ui-slider-horizontal .ui-slider-range-min { + left: 0; } + .ui-slider-horizontal .ui-slider-range-max { + right: 0; } + +.ui-slider-vertical { + width: .8em; + height: 100px; } + .ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; } + .ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; } + .ui-slider-vertical .ui-slider-range-min { + bottom: 0; } + .ui-slider-vertical .ui-slider-range-max { + top: 0; } + +.ui-slider-handle { + background: #ffffff; + background: -moz-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(100%, #f7f7f7)); + background: -webkit-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: -o-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: -ms-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: linear-gradient(to bottom, #ffffff 0, #f7f7f7 100%); + border-radius: 50px; + box-shadow: 0 1px 4px 0 #9191ab !important; } + .ui-slider-handle:focus { + background: #ffffff; + background: -moz-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(100%, #f7f7f7)); + background: -webkit-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: -o-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: -ms-linear-gradient(top, #ffffff 0, #f7f7f7 100%); + background: linear-gradient(to bottom, #ffffff 0, #f7f7f7 100%); + border-radius: 50px; + box-shadow: 0 1px 4px 0 #9191ab !important; } + +/* jQuery Scrollbar */ +.scroll-wrapper { + overflow: hidden !important; + padding: 0 !important; + position: relative; } + .scroll-wrapper > .scroll-content { + border: none !important; + box-sizing: content-box !important; + height: auto; + left: 0; + margin: 0; + max-height: none; + max-width: none !important; + overflow: scroll !important; + padding: 0; + position: relative !important; + top: 0; + width: auto !important; } + .scroll-wrapper > .scroll-content::-webkit-scrollbar { + height: 0; + width: 0; } + +.scroll-element { + display: none; + box-sizing: content-box; } + .scroll-element div { + box-sizing: content-box; } + .scroll-element.scroll-x.scroll-scrollx_visible, .scroll-element.scroll-y.scroll-scrolly_visible { + display: block; } + .scroll-element .scroll-arrow, .scroll-element .scroll-bar { + cursor: default; } + +.scroll-textarea { + border: 1px solid #ccc; + border-top-color: #999; } + .scroll-textarea > .scroll-content { + overflow: hidden !important; } + .scroll-textarea > .scroll-content > textarea { + border: none !important; + box-sizing: border-box; + height: 100% !important; + margin: 0; + max-height: none !important; + max-width: none !important; + overflow: scroll !important; + outline: 0; + padding: 2px; + position: relative !important; + top: 0; + width: 100% !important; } + +.scrollbar-inner > .scroll-element .scroll-element_outer, .scrollbar-outer > .scroll-element .scroll-element_outer { + overflow: hidden; } + +.scroll-textarea > .scroll-content > textarea::-webkit-scrollbar { + height: 0; + width: 0; } + +.scrollbar-inner > .scroll-element { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; } + .scrollbar-inner > .scroll-element div { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-inner > .scroll-element.scroll-x { + bottom: 2px; + height: 7px; + left: 0; + width: 100%; } + .scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -12px; } + .scrollbar-inner > .scroll-element.scroll-y { + height: 100%; + right: 2px; + top: 0; + width: 7px; } + .scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -12px; } + .scrollbar-inner > .scroll-element .scroll-bar, .scrollbar-inner > .scroll-element .scroll-element_outer, .scrollbar-inner > .scroll-element .scroll-element_track { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } + .scrollbar-inner > .scroll-element .scroll-bar { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + opacity: .4; } + .scrollbar-inner > .scroll-element .scroll-element_track { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + filter: alpha(opacity=40); + opacity: .4; + background-color: #e0e0e0; } + .scrollbar-inner > .scroll-element .scroll-bar { + background-color: #c2c2c2; } + .scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar, .scrollbar-inner > .scroll-element:hover .scroll-bar { + background-color: #919191; } + +.scrollbar-outer > .scroll-element { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + background-color: #ffffff; } + .scrollbar-outer > .scroll-element div { + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-outer > .scroll-element.scroll-x { + bottom: 0; + height: 12px; + left: 0; + width: 100%; } + .scrollbar-outer > .scroll-element.scroll-y { + height: 100%; + right: 0; + top: 0; + width: 12px; } + .scrollbar-outer > .scroll-element.scroll-x .scroll-element_outer { + height: 7px; + top: 2px; } + .scrollbar-outer > .scroll-element.scroll-y .scroll-element_outer { + left: 2px; + width: 7px; } + .scrollbar-outer > .scroll-element .scroll-element_track { + background-color: #eee; } + .scrollbar-outer > .scroll-element .scroll-bar, .scrollbar-outer > .scroll-element .scroll-element_outer, .scrollbar-outer > .scroll-element .scroll-element_track { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } + .scrollbar-outer > .scroll-element .scroll-bar { + background-color: #d9d9d9; } + .scrollbar-outer > .scroll-element .scroll-bar:hover { + background-color: #c2c2c2; } + .scrollbar-outer > .scroll-element.scroll-draggable .scroll-bar { + background-color: #919191; } +.scrollbar-outer > .scroll-content.scroll-scrolly_visible { + left: -12px; + margin-left: 12px; } +.scrollbar-outer > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-outer > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -14px; } +.scrollbar-outer > .scroll-content.scroll-scrollx_visible { + top: -12px; + margin-top: 12px; } +.scrollbar-outer > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-outer > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -14px; } +.scrollbar-outer > .scroll-element.scroll-x .scroll-bar { + min-width: 10px; } +.scrollbar-outer > .scroll-element.scroll-y .scroll-bar { + min-height: 10px; } + +.scrollbar-macosx > .scroll-element { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; } + .scrollbar-macosx > .scroll-element div { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-macosx > .scroll-element .scroll-element_track { + display: none; } + .scrollbar-macosx > .scroll-element .scroll-bar { + background-color: #6C6E71; + display: block; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + -o-transition: opacity .2s linear; + -ms-transition: opacity .2s linear; + transition: opacity .2s linear; } +.scrollbar-macosx:hover > .scroll-element .scroll-bar { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70); + opacity: .7; } +.scrollbar-macosx > .scroll-element.scroll-draggable .scroll-bar { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70); + opacity: .7; } +.scrollbar-macosx > .scroll-element.scroll-x { + bottom: 0; + height: 0; + left: 0; + min-width: 100%; + overflow: visible; + width: 100%; } +.scrollbar-macosx > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 0; + top: 0; + width: 0; } +.scrollbar-macosx > .scroll-element.scroll-x .scroll-bar { + height: 7px; + min-width: 10px; + top: -9px; } +.scrollbar-macosx > .scroll-element.scroll-y .scroll-bar { + left: -9px; + min-height: 10px; + width: 7px; } +.scrollbar-macosx > .scroll-element.scroll-x .scroll-element_outer { + left: 2px; } +.scrollbar-macosx > .scroll-element.scroll-x .scroll-element_size { + left: -4px; } +.scrollbar-macosx > .scroll-element.scroll-y .scroll-element_outer { + top: 2px; } +.scrollbar-macosx > .scroll-element.scroll-y .scroll-element_size { + top: -4px; } +.scrollbar-macosx > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size { + left: -11px; } +.scrollbar-macosx > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size { + top: -11px; } + +.scrollbar-light > .scroll-element { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + background-color: #ffffff; } + .scrollbar-light > .scroll-element div { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-light > .scroll-element .scroll-element_outer { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; } + .scrollbar-light > .scroll-element .scroll-element_size { + background: -moz-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: -webkit-gradient(linear, left top, right top, color-stop(0, #dbdbdb), color-stop(100%, #e8e8e8)); + background: -webkit-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: -o-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: -ms-linear-gradient(left, #dbdbdb 0, #e8e8e8 100%); + background: linear-gradient(to right, #dbdbdb 0, #e8e8e8 100%); + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; } + .scrollbar-light > .scroll-element.scroll-x { + bottom: 0; + height: 17px; + left: 0; + min-width: 100%; + width: 100%; } + .scrollbar-light > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 0; + top: 0; + width: 17px; } + .scrollbar-light > .scroll-element .scroll-bar { + background: -moz-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: -webkit-gradient(linear, left top, right top, color-stop(0, #fefefe), color-stop(100%, #f5f5f5)); + background: -webkit-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: -o-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: -ms-linear-gradient(left, #fefefe 0, #f5f5f5 100%); + background: linear-gradient(to right, #fefefe 0, #f5f5f5 100%); + border: 1px solid #dbdbdb; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; } +.scrollbar-light > .scroll-content.scroll-scrolly_visible { + left: -17px; + margin-left: 17px; } +.scrollbar-light > .scroll-content.scroll-scrollx_visible { + top: -17px; + margin-top: 17px; } +.scrollbar-light > .scroll-element.scroll-x .scroll-bar { + height: 10px; + min-width: 10px; + top: 0; } +.scrollbar-light > .scroll-element.scroll-y .scroll-bar { + left: 0; + min-height: 10px; + width: 10px; } +.scrollbar-light > .scroll-element.scroll-x .scroll-element_outer { + height: 12px; + left: 2px; + top: 2px; } +.scrollbar-light > .scroll-element.scroll-x .scroll-element_size { + left: -4px; } +.scrollbar-light > .scroll-element.scroll-y .scroll-element_outer { + left: 2px; + top: 2px; + width: 12px; } +.scrollbar-light > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-light > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -19px; } +.scrollbar-light > .scroll-element.scroll-y .scroll-element_size { + top: -4px; } +.scrollbar-light > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-light > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -19px; } + +.scrollbar-rail > .scroll-element { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + background-color: #ffffff; } + .scrollbar-rail > .scroll-element div { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-rail > .scroll-element .scroll-element_size { + background-color: #999; + background-color: rgba(0, 0, 0, 0.3); } + .scrollbar-rail > .scroll-element .scroll-element_outer:hover .scroll-element_size { + background-color: #666; + background-color: rgba(0, 0, 0, 0.5); } + .scrollbar-rail > .scroll-element.scroll-x { + bottom: 0; + height: 12px; + left: 0; + min-width: 100%; + padding: 3px 0 2px; + width: 100%; } + .scrollbar-rail > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + padding: 0 2px 0 3px; + right: 0; + top: 0; + width: 12px; } + .scrollbar-rail > .scroll-element .scroll-bar { + background-color: #d0b9a0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5); } + .scrollbar-rail > .scroll-element .scroll-element_outer:hover .scroll-bar { + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.6); } +.scrollbar-rail > .scroll-content.scroll-scrolly_visible { + left: -17px; + margin-left: 17px; } +.scrollbar-rail > .scroll-content.scroll-scrollx_visible { + margin-top: 17px; + top: -17px; } +.scrollbar-rail > .scroll-element.scroll-x .scroll-bar { + height: 10px; + min-width: 10px; + top: 1px; } +.scrollbar-rail > .scroll-element.scroll-y .scroll-bar { + left: 1px; + min-height: 10px; + width: 10px; } +.scrollbar-rail > .scroll-element.scroll-x .scroll-element_outer { + height: 15px; + left: 5px; } +.scrollbar-rail > .scroll-element.scroll-x .scroll-element_size { + height: 2px; + left: -10px; + top: 5px; } +.scrollbar-rail > .scroll-element.scroll-y .scroll-element_outer { + top: 5px; + width: 15px; } +.scrollbar-rail > .scroll-element.scroll-y .scroll-element_size { + left: 5px; + top: -10px; + width: 2px; } +.scrollbar-rail > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-rail > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -25px; } +.scrollbar-rail > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-rail > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -25px; } + +.scrollbar-dynamic > .scroll-element { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; } + .scrollbar-dynamic > .scroll-element div { + background: 0 0; + border: none; + margin: 0; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-dynamic > .scroll-element.scroll-x { + bottom: 2px; + height: 7px; + left: 0; + min-width: 100%; + width: 100%; } + .scrollbar-dynamic > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 2px; + top: 0; + width: 7px; } + .scrollbar-dynamic > .scroll-element .scroll-element_outer { + opacity: .3; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; } + .scrollbar-dynamic > .scroll-element .scroll-element_size { + background-color: #ccc; + opacity: 0; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + -webkit-transition: opacity .2s; + -moz-transition: opacity .2s; + -o-transition: opacity .2s; + -ms-transition: opacity .2s; + transition: opacity .2s; } + .scrollbar-dynamic > .scroll-element .scroll-bar { + background-color: #6c6e71; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; } + .scrollbar-dynamic > .scroll-element.scroll-x .scroll-bar { + bottom: 0; + height: 7px; + min-width: 24px; + top: auto; } + .scrollbar-dynamic > .scroll-element.scroll-y .scroll-bar { + left: auto; + min-height: 24px; + right: 0; + width: 7px; } + .scrollbar-dynamic > .scroll-element.scroll-x .scroll-element_outer { + bottom: 0; + top: auto; + left: 2px; + -webkit-transition: height .2s; + -moz-transition: height .2s; + -o-transition: height .2s; + -ms-transition: height .2s; + transition: height .2s; } + .scrollbar-dynamic > .scroll-element.scroll-y .scroll-element_outer { + left: auto; + right: 0; + top: 2px; + -webkit-transition: width .2s; + -moz-transition: width .2s; + -o-transition: width .2s; + -ms-transition: width .2s; + transition: width .2s; } + .scrollbar-dynamic > .scroll-element.scroll-x .scroll-element_size { + left: -4px; } + .scrollbar-dynamic > .scroll-element.scroll-y .scroll-element_size { + top: -4px; } + .scrollbar-dynamic > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size { + left: -11px; } + .scrollbar-dynamic > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size { + top: -11px; } + .scrollbar-dynamic > .scroll-element.scroll-draggable .scroll-element_outer, .scrollbar-dynamic > .scroll-element:hover .scroll-element_outer { + overflow: hidden; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + filter: alpha(opacity=70); + opacity: .7; } + .scrollbar-dynamic > .scroll-element.scroll-draggable .scroll-element_outer .scroll-element_size, .scrollbar-dynamic > .scroll-element:hover .scroll-element_outer .scroll-element_size { + opacity: 1; } + .scrollbar-dynamic > .scroll-element.scroll-draggable .scroll-element_outer .scroll-bar, .scrollbar-dynamic > .scroll-element:hover .scroll-element_outer .scroll-bar { + height: 100%; + width: 100%; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; } + .scrollbar-dynamic > .scroll-element.scroll-x.scroll-draggable .scroll-element_outer, .scrollbar-dynamic > .scroll-element.scroll-x:hover .scroll-element_outer { + height: 20px; + min-height: 7px; } + .scrollbar-dynamic > .scroll-element.scroll-y.scroll-draggable .scroll-element_outer, .scrollbar-dynamic > .scroll-element.scroll-y:hover .scroll-element_outer { + min-width: 7px; + width: 20px; } + +.scrollbar-chrome > .scroll-element { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + background-color: #ffffff; } + .scrollbar-chrome > .scroll-element div { + border: none; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + z-index: 10; + display: block; + height: 100%; + left: 0; + top: 0; + width: 100%; } + .scrollbar-chrome > .scroll-element .scroll-element_track { + background: #f1f1f1; + border: 1px solid #dbdbdb; } + .scrollbar-chrome > .scroll-element.scroll-x { + bottom: 0; + height: 16px; + left: 0; + min-width: 100%; + width: 100%; } + .scrollbar-chrome > .scroll-element.scroll-y { + height: 100%; + min-height: 100%; + right: 0; + top: 0; + width: 16px; } + .scrollbar-chrome > .scroll-element .scroll-bar { + background-color: #d9d9d9; + border: 1px solid #bdbdbd; + cursor: default; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; } + .scrollbar-chrome > .scroll-element .scroll-bar:hover { + background-color: #c2c2c2; + border-color: #a9a9a9; } + .scrollbar-chrome > .scroll-element.scroll-draggable .scroll-bar { + background-color: #919191; + border-color: #7e7e7e; } +.scrollbar-chrome > .scroll-content.scroll-scrolly_visible { + left: -16px; + margin-left: 16px; } +.scrollbar-chrome > .scroll-content.scroll-scrollx_visible { + top: -16px; + margin-top: 16px; } +.scrollbar-chrome > .scroll-element.scroll-x .scroll-bar { + height: 5px; + min-width: 10px; + top: 3px; } +.scrollbar-chrome > .scroll-element.scroll-y .scroll-bar { + left: 3px; + min-height: 10px; + width: 5px; } +.scrollbar-chrome > .scroll-element.scroll-x .scroll-element_outer { + border-left: 1px solid #dbdbdb; } +.scrollbar-chrome > .scroll-element.scroll-x .scroll-element_track { + height: 14px; + left: -3px; } +.scrollbar-chrome > .scroll-element.scroll-x .scroll-element_size { + height: 14px; + left: -4px; } +.scrollbar-chrome > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size, .scrollbar-chrome > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { + left: -19px; } +.scrollbar-chrome > .scroll-element.scroll-y .scroll-element_outer { + border-top: 1px solid #dbdbdb; } +.scrollbar-chrome > .scroll-element.scroll-y .scroll-element_track { + top: -3px; + width: 14px; } +.scrollbar-chrome > .scroll-element.scroll-y .scroll-element_size { + top: -4px; + width: 14px; } +.scrollbar-chrome > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size, .scrollbar-chrome > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { + top: -19px; } + +/*! +* animate.css -http://daneden.me/animate +* Version - 3.6.0 +* Licensed under the MIT license - http://opensource.org/licenses/MIT +* +* Copyright (c) 2018 Daniel Eden +*/ +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } + .animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; } + +@-webkit-keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); } + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); } + 90% { + -webkit-transform: translate3d(0, -4px, 0); + transform: translate3d(0, -4px, 0); } } +@keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); } + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); } + 90% { + -webkit-transform: translate3d(0, -4px, 0); + transform: translate3d(0, -4px, 0); } } +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; } + +@-webkit-keyframes flash { + from, 50%, to { + opacity: 1; } + 25%, 75% { + opacity: 0; } } +@keyframes flash { + from, 50%, to { + opacity: 1; } + 25%, 75% { + opacity: 0; } } +.flash { + -webkit-animation-name: flash; + animation-name: flash; } + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +@keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; } + +@-webkit-keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); } + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); } + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); } + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); } + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +@keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); } + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); } + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); } + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); } + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +.rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; } + +@-webkit-keyframes shake { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); } + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); } } +@keyframes shake { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); } + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); } } +.shake { + -webkit-animation-name: shake; + animation-name: shake; } + +@-webkit-keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); } + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); } + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); } + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); } + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); } + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); } } +@keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); } + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); } + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); } + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); } + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); } + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); } } +.headShake { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-name: headShake; + animation-name: headShake; } + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); } + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); } + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); } + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); } + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); } } +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); } + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); } + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); } + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); } + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); } } +.swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; } + +@-webkit-keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 10%, 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); } + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +@keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 10%, 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); } + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +.tada { + -webkit-animation-name: tada; + animation-name: tada; } + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes wobble { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes wobble { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; } + +@-webkit-keyframes jello { + from, 11.1%, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); } + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); } + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); } + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); } + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); } + 77.7% { + -webkit-transform: skewX(0.39063deg) skewY(0.39063deg); + transform: skewX(0.39063deg) skewY(0.39063deg); } + 88.8% { + -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg); + transform: skewX(-0.19531deg) skewY(-0.19531deg); } } +@keyframes jello { + from, 11.1%, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); } + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); } + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); } + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); } + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); } + 77.7% { + -webkit-transform: skewX(0.39063deg) skewY(0.39063deg); + transform: skewX(0.39063deg) skewY(0.39063deg); } + 88.8% { + -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg); + transform: skewX(-0.19531deg) skewY(-0.19531deg); } } +.jello { + -webkit-animation-name: jello; + animation-name: jello; + -webkit-transform-origin: center; + transform-origin: center; } + +@-webkit-keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +@keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +.bounceIn { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-animation-name: bounceIn; + animation-name: bounceIn; } + +@-webkit-keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); } + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); } + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); } + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); } + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; } + +@-webkit-keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); } + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); } + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); } + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); } + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; } + +@-webkit-keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); } + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); } + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); } + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); } + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; } + +@-webkit-keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); } + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); } + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); } + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); } + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; } + +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); } + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); } + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } } +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); } + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); } + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } } +.bounceOut { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-animation-name: bounceOut; + animation-name: bounceOut; } + +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); } } +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); } } +.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; } + +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); } } +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); } } +.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; } + +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); } } +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); } } +.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; } + +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); } } +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); } } +.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; } + +@-webkit-keyframes fadeIn { + from { + opacity: 0; } + to { + opacity: 1; } } +@keyframes fadeIn { + from { + opacity: 0; } + to { + opacity: 1; } } +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; } + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; } + +@-webkit-keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; } + +@-webkit-keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; } + +@-webkit-keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; } + +@-webkit-keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; } + +@-webkit-keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; } + +@-webkit-keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; } + +@-webkit-keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; } + +@-webkit-keyframes fadeOut { + from { + opacity: 1; } + to { + opacity: 0; } } +@keyframes fadeOut { + from { + opacity: 1; } + to { + opacity: 0; } } +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; } + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } } +@keyframes fadeOutDown { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } } +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; } + +@-webkit-keyframes fadeOutDownBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); } } +@keyframes fadeOutDownBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); } } +.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; } + +@-webkit-keyframes fadeOutLeft { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } } +@keyframes fadeOutLeft { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } } +.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; } + +@-webkit-keyframes fadeOutLeftBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); } } +@keyframes fadeOutLeftBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); } } +.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; } + +@-webkit-keyframes fadeOutRight { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); } } +@keyframes fadeOutRight { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); } } +.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; } + +@-webkit-keyframes fadeOutRightBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); } } +@keyframes fadeOutRightBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); } } +.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; } + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } } +@keyframes fadeOutUp { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } } +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; } + +@-webkit-keyframes fadeOutUpBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); } } +@keyframes fadeOutUpBig { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); } } +.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; } + +@-webkit-keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; } + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; } + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + 80% { + -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } } +@keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; } + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; } + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + 80% { + -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + transform: perspective(400px) scale3d(0.95, 0.95, 0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } } +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; } + +@-webkit-keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); } } +@keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); } } +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; } + +@-webkit-keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; } + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; } + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); } } +@keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; } + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; } + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); } } +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; } + +@-webkit-keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; } } +@keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; } } +.flipOutX { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; } + +@-webkit-keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); } + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; } + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; } } +@keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); } + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; } + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; } } +.flipOutY { + -webkit-animation-duration: 0.75s; + animation-duration: 0.75s; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; } + +@-webkit-keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; } + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; } + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +@keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; } + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; } + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +.lightSpeedIn { + -webkit-animation-name: lightSpeedIn; + animation-name: lightSpeedIn; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; } + +@-webkit-keyframes lightSpeedOut { + from { + opacity: 1; } + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; } } +@keyframes lightSpeedOut { + from { + opacity: 1; } + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; } } +.lightSpeedOut { + -webkit-animation-name: lightSpeedOut; + animation-name: lightSpeedOut; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; } + +@-webkit-keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; } + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +@keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; } + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +.rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; } + +@-webkit-keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +@keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +.rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; } + +@-webkit-keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +@keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +.rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; } + +@-webkit-keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +@keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +.rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; } + +@-webkit-keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +@keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; } } +.rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; } + +@-webkit-keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; } + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; } } +@keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; } + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; } } +.rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; } + +@-webkit-keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; } } +@keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; } } +.rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; } + +@-webkit-keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; } } +@keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; } } +.rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; } + +@-webkit-keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; } } +@keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; } + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; } } +.rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; } + +@-webkit-keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; } } +@keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; } + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; } } +.rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; } + +@-webkit-keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; } + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; } + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; } + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; } } +@keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; } + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; } + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; } + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; } } +.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; + -webkit-animation-name: hinge; + animation-name: hinge; } + +@-webkit-keyframes jackInTheBox { + from { + opacity: 0; + -webkit-transform: scale(0.1) rotate(30deg); + transform: scale(0.1) rotate(30deg); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; } + 50% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); } + 70% { + -webkit-transform: rotate(3deg); + transform: rotate(3deg); } + to { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); } } +@keyframes jackInTheBox { + from { + opacity: 0; + -webkit-transform: scale(0.1) rotate(30deg); + transform: scale(0.1) rotate(30deg); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; } + 50% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); } + 70% { + -webkit-transform: rotate(3deg); + transform: rotate(3deg); } + to { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); } } +.jackInTheBox { + -webkit-animation-name: jackInTheBox; + animation-name: jackInTheBox; } + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; } + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes rollOut { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } +@keyframes rollOut { + from { + opacity: 1; } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } +.rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; } + +@-webkit-keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +@keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.zoomIn { + -webkit-animation-name: zoomIn; + animation-name: zoomIn; } + +@-webkit-keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +@keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +.zoomInDown { + -webkit-animation-name: zoomInDown; + animation-name: zoomInDown; } + +@-webkit-keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +@keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +.zoomInLeft { + -webkit-animation-name: zoomInLeft; + animation-name: zoomInLeft; } + +@-webkit-keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +@keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +.zoomInRight { + -webkit-animation-name: zoomInRight; + animation-name: zoomInRight; } + +@-webkit-keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +@keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +.zoomInUp { + -webkit-animation-name: zoomInUp; + animation-name: zoomInUp; } + +@-webkit-keyframes zoomOut { + from { + opacity: 1; } + 50% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } + to { + opacity: 0; } } +@keyframes zoomOut { + from { + opacity: 1; } + 50% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); } + to { + opacity: 0; } } +.zoomOut { + -webkit-animation-name: zoomOut; + animation-name: zoomOut; } + +@-webkit-keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +@keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +.zoomOutDown { + -webkit-animation-name: zoomOutDown; + animation-name: zoomOutDown; } + +@-webkit-keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); } + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); + transform: scale(0.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; } } +@keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); } + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); + transform: scale(0.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; } } +.zoomOutLeft { + -webkit-animation-name: zoomOutLeft; + animation-name: zoomOutLeft; } + +@-webkit-keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); } + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); + transform: scale(0.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; } } +@keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); } + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); + transform: scale(0.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; } } +.zoomOutRight { + -webkit-animation-name: zoomOutRight; + animation-name: zoomOutRight; } + +@-webkit-keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +@keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } +.zoomOutUp { + -webkit-animation-name: zoomOutUp; + animation-name: zoomOutUp; } + +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; } + +@-webkit-keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; } + +@-webkit-keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; } + +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } } +.slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; } + +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } } +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } } +.slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; } + +@-webkit-keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } } +@keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } } +.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; } + +@-webkit-keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); } } +@keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); } } +.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; } + +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } } +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); } } +.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; } + +/* Sweet Alert */ +.swal-footer { + text-align: center !important; + margin-bottom: 20px !important; } + +/* Datatable */ +table.dataTable { + clear: both; + margin-top: 15px !important; + margin-bottom: 15px !important; + max-width: none !important; + border-collapse: separate !important; } + table.dataTable td, table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; } + table.dataTable td.dataTables_empty, table.dataTable th.dataTables_empty { + text-align: center; } + table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; } + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; } +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; } +div.dataTables_wrapper div.dataTables_filter { + text-align: right; } + div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; } + div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; } +div.dataTables_wrapper div.dataTables_info { + padding-top: 0.85em; + white-space: nowrap; } +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; } + div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; + justify-content: flex-end; } +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; } + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > td.sorting_asc, table.dataTable thead > tr > td.sorting_desc, table.dataTable thead > tr > td.sorting { + padding-right: 30px; } +table.dataTable thead > tr > th:active, table.dataTable thead > tr > td:active { + outline: none; } +table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; } +table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_asc:after, table.dataTable thead .sorting_desc:before, table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:before, table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 0.9em; + display: block; + opacity: 0.5; } +table.dataTable thead .sorting:before, table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_desc:before, table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_desc_disabled:before { + right: 1em; + content: "\2191"; + font-size: 15px; } +table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:after, table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after { + right: 0.5em; + content: "\2193"; + font-size: 15px; } +table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_desc:after { + opacity: 1; } +table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_desc_disabled:after { + opacity: 0; } + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; } +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; } + div.dataTables_scrollBody table thead .sorting:after, div.dataTables_scrollBody table thead .sorting_asc:after, div.dataTables_scrollBody table thead .sorting_desc:after { + display: none; } + div.dataTables_scrollBody table tbody tr:first-child th, div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; } +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; } + div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; } + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, div.dataTables_wrapper div.dataTables_filter, div.dataTables_wrapper div.dataTables_info, div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + margin-top: 11px; + margin-bottom: 10px; } + div.dataTables_wrapper div div.dataTables_paginate ul.pagination { + flex-wrap: wrap !important; + justify-content: center !important; } + div.dataTables_wrapper div div.dataTables_paginate ul.pagination li { + margin-bottom: 10px; } + div.dataTables_wrapper div div.dataTables_paginate ul.pagination li a { + font-size: 11px; } } +table.dataTable.table-sm > thead > tr > th { + padding-right: 20px; } +table.dataTable.table-sm .sorting:before, table.dataTable.table-sm .sorting_asc:before, table.dataTable.table-sm .sorting_desc:before { + top: 5px; + right: 0.85em; } +table.dataTable.table-sm .sorting:after, table.dataTable.table-sm .sorting_asc:after, table.dataTable.table-sm .sorting_desc:after { + top: 5px; } +table.table-bordered.dataTable th, table.table-bordered.dataTable td { + border-left-width: 0; } +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable td:last-child { + border-right-width: 0; } +table.table-bordered.dataTable tbody th, table.table-bordered.dataTable tbody td { + border-bottom-width: 0; } + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; } +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; } + div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child, div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-left: 0; + padding-right: 0; } + +/* Responsive */ +@media screen and (max-width: 576px) { + .row-card-no-pd [class*=col-] .card:before { + width: calc(100% - 30px) !important; + right: 15px !important; + height: 1px !important; } + .row-card-no-pd [class*=col-]:first-child .card:before { + display: none !important; } } +@media screen and (min-width: 991px) { + .main-panel.full-height > .content, .main-panel.full-height > .content-full { + margin-top: 0; } + .main-panel.full-height .navbar-header { + min-height: 62px; } + + .logo-header { + line-height: 57px; } + + .toggle-nav-search { + display: none; } + + #search-nav { + display: block !important; } + + .sidebar .scroll-element { + opacity: 0; + transition: all .2s; } + .sidebar:hover .scroll-element { + opacity: 1; } + + .sidebar[data-background-color]:before { + background: rgba(255, 255, 255, 0.2) !important; + z-index: 1000; } } +@media screen and (max-width: 991px) { + .main-header[data-background-color] .navbar-header { + border-top: 1px solid rgba(0, 0, 0, 0.1); } + + .sidebar { + position: fixed; + left: 0 !important; + right: 0; + -webkit-transform: translate3d(-270px, 0, 0); + -moz-transform: translate3d(-270px, 0, 0); + -o-transform: translate3d(-270px, 0, 0); + -ms-transform: translate3d(-270px, 0, 0); + transform: translate3d(-270px, 0, 0) !important; + transition: all .5s; + margin-top: 0px; } + .sidebar:before { + background: none; } + + .nav_open .sidebar { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate3d(0px, 0, 0); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0) !important; + border-right: 1px solid #f1f1f1; } + + .sidebar .sidebar-wrapper { + padding-top: 0px; } + .sidebar .sidebar-wrapper .sidebar-content { + padding-top: 0px !important; } + .sidebar .sidebar-wrapper .scroll-element.scroll-y { + top: 0px !important; } + + .nav_open { + overflow: hidden !important; } + .nav_open .wrapper { + overflow-x: hidden; } + .nav_open .main-panel, .nav_open .main-header { + -webkit-transform: translate3d(250px, 0, 0); + -moz-transform: translate3d(250px, 0, 0); + -o-transform: translate3d(250px, 0, 0); + -ms-transform: translate3d(250px, 0, 0); + transform: translate3d(250px, 0, 0) !important; } + + .quick_sidebar_open .quick-sidebar { + width: 350px; } + + .main-header { + transition: all .5s; } + + #search-nav { + margin: 0 auto !important; } + + .main-panel { + width: 100%; + transition: all .5s; } + .main-panel .page-header .dropdown-menu:after { + right: 16px !important; } + + .page-inner { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; } + + .page-sidebar { + background: #fff; } + + .logo-header { + display: flex; + width: 100% !important; + text-align: left; + position: relative; + padding-left: 15px; + padding-right: 15px; } + .logo-header .logo { + position: absolute; + left: 50%; + transform: translateX(-50%); } + .logo-header .navbar-toggler { + height: 100%; + margin-left: 0px !important; + opacity: 1; + display: block; + order: 1; } + .logo-header .more { + opacity: 1; + color: #545454; + cursor: pointer; + display: inline-block; + line-height: 56px; + order: 3; + width: unset; + margin-left: auto; } + .logo-header .navbar-brand { + position: unset !important; + margin-right: 0px; } + + .nav-search { + width: 100%; + margin-right: 0 !important; } + + .navbar-header { + position: absolute; + width: 100%; + transform: translate3d(0, -200px, 0) !important; + transition: all .5s; } + + .topbar_open .navbar-header { + transform: translate3d(0, 61px, 0) !important; + padding: 6px; } + .topbar_open .navbar-header .navbar-nav > .nav-item .nav-link i { + font-size: 19px; } + .topbar_open .navbar-header .navbar-nav > .nav-item:last-child .nav-link { + padding: 0px !important; } + .topbar_open .navbar-header .navbar-nav > .nav-item:last-child .quick-sidebar-toggler { + padding-left: 5px !important; } + .topbar_open .toggle-nav-search { + display: list-item; } + .topbar_open #search-nav { + text-align: center; + width: 100%; + padding: 10px 15px 0px; + order: 1; } + .topbar_open .main-panel { + transform: translate3d(0, 62px, 0) !important; } + .topbar_open > .content { + margin-top: 0px !important; } + + .nav_open.topbar_open .main-panel { + transform: translate3d(250px, 60px, 0) !important; } + + .navbar-header .navbar-nav { + width: 100%; + flex-direction: row; + justify-content: center; + margin-left: 0px !important; + position: relative; } + .navbar-header .navbar-nav .dropdown { + position: unset; } + .navbar-header .navbar-nav .dropdown-menu { + position: absolute; + left: 0; + right: 0; + margin: 0 auto; + max-width: 280px; } + + .profile-pic span { + display: none; } + + .nav-toggle { + display: none; } + + .page-title { + font-size: 18px; } + + .card .card-title { + font-size: 18px; } + + .mail-wrapper .mail-option .email-filters-left { + width: 50%; } + .mail-wrapper .mail-option .email-filters-left .btn-group { + margin-bottom: 10px; } + + /* Dropzone */ + .dropzone { + padding: 20px 15px !important; } + .dropzone .dz-message .message { + font-size: 23px; } + .dropzone .dz-message .note { + font-size: 15px; } } +@media screen and (min-width: 856px) { + .mail-wrapper .aside-nav { + display: block !important; } } +@media screen and (max-width: 856px) { + .mail-wrapper { + flex-direction: column; } + .mail-wrapper .page-aside { + width: 100%; + height: unset; + min-height: unset; + border-bottom: 1px solid #eee; + border-left: 0; + border-right: 0; + background: transparent; + padding-top: 0px; + padding-bottom: 0px; } + .mail-wrapper .page-aside .aside-header { + padding-top: 25px; + padding-bottom: 25px; + background: #f1f1f1; } + .mail-wrapper .page-aside .aside-nav { + background: #ffffff; + padding-top: 15px; + padding-bottom: 15px; } + .mail-wrapper .mail-content { + width: 100%; } + .mail-wrapper .mail-content .inbox-head { + flex-direction: column; + align-items: left; } + .mail-wrapper .mail-content .inbox-head h3 { + font-size: 18px; } + .mail-wrapper .mail-content .inbox-head form { + margin-left: 0px !important; + margin-top: 15px; } + .mail-wrapper .mail-content .email-head h3 { + font-size: 18px; } + .mail-wrapper .mail-content .email-compose-fields { + padding: 20px 15px; } + .mail-wrapper .mail-option { + flex-direction: column; } + .mail-wrapper .mail-option .email-filters-left { + width: 100%; + margin-bottom: 10px; } + .mail-wrapper .toggle-email-nav { + display: inline-block !important; } + .mail-wrapper .table-inbox tr td .badge { + margin-top: 5px; + float: left; } } +@media screen and (max-width: 767px) { + .wizard-container { + margin-left: 15px; + margin-right: 15px; } + + .main-panel .page-header { + flex-direction: column; + align-items: normal; + position: relative; + min-height: 43px; + justify-content: center; } + .main-panel .page-header .breadcrumbs { + margin-left: 0px; + padding-top: 15px; + padding-left: 5px; + padding-bottom: 0px; + border-left: 0px; } + .main-panel .page-header .btn-group-page-header { + position: absolute; + right: 0px; } + + .footer .container-fluid { + flex-direction: column; } + .footer .container-fluid .copyright { + margin-left: 0 !important; + margin-top: 10px; + margin-bottom: 15px; } } +@media screen and (max-width: 576px) { + #chart-container { + min-height: 250px; } + + .form-check-inline { + display: flex; + flex-direction: column; + align-items: left; } + + #calendar .fc-toolbar { + display: flex; + flex-direction: column; } + #calendar .fc-toolbar .fc-left, #calendar .fc-toolbar .fc-right, #calendar .fc-toolbar .fc-center { + margin: auto; + margin-bottom: 15px; } + #calendar .fc-toolbar .fc-left { + order: 1; } + #calendar .fc-toolbar .fc-right { + order: 3; } + #calendar .fc-toolbar .fc-center { + order: 2; } + + .conversations .conversations-body { + padding: 1.5rem 1rem; } } +@media screen and (max-width: 350px) { + .quick_sidebar_open .quick-sidebar { + width: 100%; + padding: 20px; } } +/* Background Body */ +body { + background: #f9fbfd; } + body[data-background-color="bg1"] { + background: #f9fbfd; } + body[data-background-color="bg2"] { + background: #ffffff; } + body[data-background-color="bg3"] { + background: #f1f1f1; } + body[data-background-color="dark"] { + background: #1a2035; } + body[data-background-color="dark"] .main-header { + box-shadow: 0px 0px 5px #121727; } + body[data-background-color="dark"] .main-panel { + color: rgba(169, 175, 187, 0.82) !important; } + body[data-background-color="dark"] .main-panel label { + color: #fff !important; } + body[data-background-color="dark"] .card, body[data-background-color="dark"] .row-card-no-pd, body[data-background-color="dark"] .list-group-item, body[data-background-color="dark"] .timeline > li > .timeline-panel { + background: #202940; } + body[data-background-color="dark"] .card-pricing2 { + background: #202940 !important; } + body[data-background-color="dark"] .row-card-no-pd [class*=col] .card:before { + background: rgba(181, 181, 181, 0.1) !important; } + body[data-background-color="dark"] .card .card-header, body[data-background-color="dark"] .card .card-footer, body[data-background-color="dark"] .card .card-action, body[data-background-color="dark"] .card-profile .user-stats [class^="col"], body[data-background-color="dark"] .timeline > li > .timeline-panel, body[data-background-color="dark"] .table td, body[data-background-color="dark"] .table th, body[data-background-color="dark"] .breadcrumbs, body[data-background-color="dark"] .separator-dashed, body[data-background-color="dark"] .separator-solid, body[data-background-color="dark"] .separator-dot, body[data-background-color="dark"] .list-group .list-group-item, body[data-background-color="dark"] .conversations .messages-form, body[data-background-color="dark"] .mail-wrapper .mail-content .inbox-body .email-list .email-list-item, body[data-background-color="dark"] .page-with-aside .page-aside, body[data-background-color="dark"] .mail-wrapper .mail-content .email-head, body[data-background-color="dark"] .mail-wrapper .mail-content .email-sender, body[data-background-color="dark"] .main-panel .page-divider { + border-color: rgba(181, 181, 181, 0.1) !important; } + body[data-background-color="dark"] .timeline > li > .timeline-panel:before { + border-left-color: rgba(181, 181, 181, 0.1); + border-right-color: rgba(181, 181, 181, 0.1); } + body[data-background-color="dark"] .timeline > li > .timeline-panel:after { + border-left-color: #202940; + border-right-color: #202940; } + body[data-background-color="dark"] .page-title, body[data-background-color="dark"] .breadcrumbs li a { + color: rgba(169, 175, 187, 0.82); } + body[data-background-color="dark"] .page-category { + color: #828282; } + body[data-background-color="dark"] .card-title, body[data-background-color="dark"] .card-title a, body[data-background-color="dark"] .card-title a:hover, body[data-background-color="dark"] .card-title a:focus { + color: #fff; } + body[data-background-color="dark"] .card-category { + color: #8b92a9; } + body[data-background-color="dark"] .card-default, body[data-background-color="dark"] .card-primary, body[data-background-color="dark"] .card-secondary, body[data-background-color="dark"] .card-info, body[data-background-color="dark"] .card-success, body[data-background-color="dark"] .card-warning, body[data-background-color="dark"] .card-danger { + color: #fff; } + body[data-background-color="dark"] .card-default .card-title, body[data-background-color="dark"] .card-default .card-category, body[data-background-color="dark"] .card-primary .card-title, body[data-background-color="dark"] .card-primary .card-category, body[data-background-color="dark"] .card-secondary .card-title, body[data-background-color="dark"] .card-secondary .card-category, body[data-background-color="dark"] .card-info .card-title, body[data-background-color="dark"] .card-info .card-category, body[data-background-color="dark"] .card-success .card-title, body[data-background-color="dark"] .card-success .card-category, body[data-background-color="dark"] .card-warning .card-title, body[data-background-color="dark"] .card-warning .card-category, body[data-background-color="dark"] .card-danger .card-title, body[data-background-color="dark"] .card-danger .card-category { + color: #fff; } + body[data-background-color="dark"] .nav-pills .nav-link:not(.active) { + background: #fff; } + body[data-background-color="dark"] .card-pricing .specification-list li { + border-color: #373d4c; } + body[data-background-color="dark"] .input-group-text { + border-color: #2f374b !important; + background-color: #1f283e; + color: #fff; } + body[data-background-color="dark"] .input-solid { + background: #363b4c !important; + border-color: #363b4c !important; } + body[data-background-color="dark"] .list-group-messages .list-group-item-title a, body[data-background-color="dark"] .list-group .list-group-item-text { + color: inherit; } + body[data-background-color="dark"] .footer { + border-top: 1px solid #293247; + background: #1f283e; } + body[data-background-color="dark"] .form-control, body[data-background-color="dark"] .form-group-default, body[data-background-color="dark"] .select2-container--bootstrap .select2-selection { + background-color: #1a2035; + color: #fff; + border-color: #2f374b; } + body[data-background-color="dark"] .bootstrap-tagsinput { + background: transparent; } + body[data-background-color="dark"] .selectgroup-button { + border: 1px solid #2f374b; } + body[data-background-color="dark"] .conversations .message-header { + background: #1a2035; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.07); } + body[data-background-color="dark"] .conversations .conversations-content { + color: #575962; + border-color: #2e364a; } + body[data-background-color="dark"] .mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread { + background: #1f283e !important; } + body[data-background-color="dark"] .mail-wrapper .mail-content .inbox-body .email-list .email-list-item:hover { + background: #171e2f !important; } + body[data-background-color="dark"] .page-with-aside .page-aside .aside-nav .nav > li:hover, body[data-background-color="dark"] .page-with-aside .page-aside .aside-nav .nav > li:focus, body[data-background-color="dark"] .page-with-aside .page-aside .aside-nav .nav > li.active { + background: rgba(0, 0, 0, 0.03); } + body[data-background-color="dark"] .page-with-aside .page-aside .aside-nav .nav > li.active > a { + color: #b9babf !important; } + body[data-background-color="dark"] .board { + color: #575962; } + +/* Background */ +.bg-dark { + background-color: #1a2035 !important; } + +.bg-dark2 { + background-color: #1f283e !important; } + +.bg-primary { + background-color: #1572E8 !important; } + +.bg-primary2 { + background-color: #1269DB !important; } + +.bg-secondary { + background-color: #6861CE !important; } + +.bg-secondary2 { + background-color: #5C55BF !important; } + +.bg-info { + background-color: #48ABF7 !important; } + +.bg-info2 { + background-color: #3697E1 !important; } + +.bg-success { + background-color: #31CE36 !important; } + +.bg-success2 { + background-color: #2BB930 !important; } + +.bg-warning { + background-color: #FFAD46 !important; } + +.bg-warning2 { + background-color: #FF9E27 !important; } + +.bg-danger { + background-color: #F25961 !important; } + +.bg-danger2 { + background-color: #EA4d56 !important; } + +.bg-grey1 { + background: #f9fbfd !important; } + +.bg-grey2 { + background: #f1f1f1; } + +.bg-dark-gradient { + background: #1f283e !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #0A0B11, #1f283e) !important; + background: linear-gradient(-45deg, #0A0B11, #1f283e) !important; } + +.bg-primary-gradient { + background: #1572E8 !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #06418E, #1572E8) !important; + background: linear-gradient(-45deg, #06418E, #1572E8) !important; } + +.bg-secondary-gradient { + background: #6861CE !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #2A20AC, #6861CE) !important; + background: linear-gradient(-45deg, #2A20AC, #6861CE) !important; } + +.bg-info-gradient { + background: #48ABF7 !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #0A5A97, #48ABF7) !important; + background: linear-gradient(-45deg, #0A5A97, #48ABF7) !important; } + +.bg-success-gradient { + background: #31CE36 !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #179D08, #31CE36) !important; + background: linear-gradient(-45deg, #179D08, #31CE36) !important; } + +.bg-warning-gradient { + background: #FFAD46 !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #E1810B, #FFAD46) !important; + background: linear-gradient(-45deg, #E1810B, #FFAD46) !important; } + +.bg-danger-gradient { + background: #F25961 !important; + background: -webkit-linear-gradient(legacy-direction(-45deg), #E80A15, #F25961) !important; + background: linear-gradient(-45deg, #E80A15, #F25961) !important; } + +/*# sourceMappingURL=atlantis.css.map */ diff --git a/src/main/resources/static/assets/css/atlantis.css.map b/src/main/resources/static/assets/css/atlantis.css.map new file mode 100644 index 0000000..d0d61de --- /dev/null +++ b/src/main/resources/static/assets/css/atlantis.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../sass/atlantis.scss","../sass/atlantis/_outlinefocus.scss","../sass/atlantis/_typography.scss","../sass/atlantis/_variables.scss","../sass/atlantis/_opacity.scss","../sass/atlantis/_layouts.scss","../sass/atlantis/_layouts-colors.scss","../sass/atlantis/components/_avatars.scss","../sass/atlantis/components/_breadcrumbs.scss","../sass/atlantis/components/_cards.scss","../sass/atlantis/components/_gutters.scss","../sass/atlantis/components/_stamps.scss","../sass/atlantis/components/_inputs.scss","../sass/atlantis/components/_tables.scss","../sass/atlantis/components/_navbars.scss","../sass/atlantis/components/_navsearch.scss","../sass/atlantis/components/_badges.scss","../sass/atlantis/components/_dropdowns.scss","../sass/atlantis/components/_charts.scss","../sass/atlantis/components/_alerts.scss","../sass/atlantis/components/_buttons.scss","../sass/atlantis/components/_navtabs.scss","../sass/atlantis/components/_popovers.scss","../sass/atlantis/components/_progress.scss","../sass/atlantis/components/_paginations.scss","../sass/atlantis/components/_sliders.scss","../sass/atlantis/components/_modals.scss","../sass/atlantis/components/_activityfeed.scss","../sass/atlantis/components/_timeline.scss","../sass/atlantis/components/_maps.scss","../sass/atlantis/components/_listgroup.scss","../sass/atlantis/components/_selectgroup.scss","../sass/atlantis/components/_colorinputs.scss","../sass/atlantis/components/_imagecheck.scss","../sass/atlantis/components/_loader.scss","../sass/atlantis/plugins/_jqueryui.scss","../sass/atlantis/plugins/_jqueryscrollbar.scss","../sass/atlantis/plugins/_animate.scss","../sass/atlantis/plugins/_sweetalert.scss","../sass/atlantis/plugins/_datatables.scss","../sass/atlantis/_responsive.scss","../sass/atlantis/_background.scss"], +"names": [], +"file": "atlantis.css" +} diff --git a/src/main/resources/static/assets/css/atlantis.min.css b/src/main/resources/static/assets/css/atlantis.min.css new file mode 100644 index 0000000..aa73322 --- /dev/null +++ b/src/main/resources/static/assets/css/atlantis.min.css @@ -0,0 +1,74 @@ +/*! + +[Table of contents] + +* Background +* Typography +* Layouts + + Body & Wrapper + + Main Header + + Sidebar +* Layouts Color +* Components + + Breadcrumbs + + Cards + - Card Stats + - Card Task + - Card States + - Card Posts + - Card Pricing + - Card Annoucement + - Card Profile + - Accordion + + Inputs + + Tables + + Navbars + + Navsearch + + Badges + + Dropdowns + + Charts + + Alerts + + Buttons + + Navtabs + + Popovers + + Progress + + Paginations + + Sliders + + Modals + + Timeline + + Maps + + Invoice + + Messages + + Tasks + + Settings +* Plugins + + jQueryUI + + jQuery Scrollbar + + Css Animate + + Full Calendar + + SweetAlert + + Datatables + +* Responsive + +# [Color codes] + +body-text-color: #575962 +white-color: #ffffff +black-color: #191919 +transparent-bg : transparent +default-color : #282a3c +primary-color : #177dff +secondary-color : #716aca +info-color : #36a3f7 +success-color : #35cd3a +warning-color : #ffa534 +danger-color : #f3545d + +-------------------------------------------------------------------*/:focus{outline:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.alert,.brand,.btn-simple,.h1,.h2,.h3,.h4,.h5,.h6,.navbar,.td-name,a,body,button.close,h1,h2,h3,h4,h5,h6,p,td{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Lato,sans-serif}body{font-size:14px;color:#575962}a{color:#1572e8}a:focus,a:hover{color:#1269db}.h1,h1{font-size:1.725rem}.h2,h2{font-size:1.35rem}.h3,h3{font-size:1.1625rem}.h4,h4{font-size:1.0375rem}.h5,h5{font-size:.9125rem}.h6,h6{font-size:.825rem}p{font-size:14px;line-height:1.82;margin-bottom:1rem;word-break:break-word}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{line-height:1.4}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}.small,small{font-size:13px}.b,.strong,b,strong{font-weight:600}.page-pretitle{letter-spacing:.08em;text-transform:uppercase;color:#95aac9}.page-title{font-size:23px;font-weight:600;color:#444;line-height:30px;margin-bottom:20px}.page-category{color:#444;line-height:1.8;margin-bottom:25px}.text-primary,.text-primary a{color:#1572e8!important}.text-primary a:hover,.text-primary:hover{color:#1572e8!important}.text-secondary,.text-secondary a{color:#6861ce!important}.text-secondary a:hover,.text-secondary:hover{color:#6861ce!important}.text-info,.text-info a{color:#48abf7!important}.text-info a:hover,.text-info:hover{color:#48abf7!important}.text-success,.text-success a{color:#31ce36!important}.text-success a:hover,.text-success:hover{color:#31ce36!important}.text-warning,.text-warning a{color:#ffad46!important}.text-warning a:hover,.text-warning:hover{color:#ffad46!important}.text-danger,.text-danger a{color:#f25961!important}.text-danger a:hover,.text-danger:hover{color:#f25961!important}label{color:#495057!important;font-size:14px!important}.text-small{font-size:11px}.metric-value{margin-bottom:5px;line-height:1;white-space:nowrap}.metric-label{font-size:.975rem;font-weight:500;color:#686f76;white-space:nowrap;margin-bottom:0}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-mediumbold{font-weight:400!important}.fw-bold{font-weight:600!important}.fw-extrabold{font-weight:700!important}.op-9{opacity:.9}.op-8{opacity:.8}.op-7{opacity:.7}.op-6{opacity:.6}.op-5{opacity:.5}.op-4{opacity:.4}.op-3{opacity:.3}body{min-height:100vh;position:relative;background:#f9fbfd}.no-bd{border:0!important}.no-box-shadow{box-shadow:none!important}.mt--5,.my--5{margin-top:-3rem!important}.mt--4,.my--4{margin-top:-1.5rem!important}.mt--3,.my--3{margin-top:-1rem!important}.mt--2,.my--2{margin-top:-.5rem!important}.mt--1,.my--1{margin-top:-.25rem!important}.pull-right{float:right}.pull-left{float:left}.wrapper{min-height:100vh;position:relative;top:0;height:100vh}.main-header{background:#fff;min-height:60px;width:100%;position:fixed;z-index:1001;box-shadow:0 0 5px rgba(18,23,39,.5)}.main-header .navbar-header{min-height:62px}.main-header .navbar-header .btn-toggle{margin-right:30px;margin-left:20px}.logo-header{float:left;width:250px;height:62px;line-height:60px;color:#333;z-index:1001;font-size:17px;font-weight:400;padding-left:25px;padding-right:25px;z-index:1001;display:flex;align-items:center;position:relative;transition:all .3s}.logo-header .big-logo{margin-right:8px}.logo-header .big-logo:hover{text-decoration:none}.logo-header .big-logo .logo-img{width:35px;height:35px}.logo-header .logo{color:#575962;opacity:1;position:relative;height:100%}.logo-header .logo:hover{text-decoration:none}.logo-header .logo .navbar-brand{padding-top:0;padding-bottom:0;margin-right:0}.logo-header .nav-toggle{position:absolute;top:0;right:18px;z-index:5}.logo-header .navbar-toggler{padding-left:0;padding-right:0;opacity:0;display:none}.logo-header .navbar-toggler .navbar-toggler-icon{height:1em;width:1em;color:#545454;font-size:22px}.logo-header .more{background:0 0;border:0;font-size:22px;padding:0;opacity:0;width:0;display:none}.btn-toggle{font-size:20px!important;line-height:20px;padding:0!important;background:0 0!important;color:#575962!important}.btn-toggle:focus,.btn-toggle:hover{opacity:1}#search-nav{flex:1;max-width:400px}.sidebar .nav>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar .nav>.nav-item.active:hover>a:before,.sidebar .nav>.nav-item.active>a:before,.sidebar[data-background-color=white] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav>.nav-item.active:hover>a:before,.sidebar[data-background-color=white] .nav>.nav-item.active>a:before{opacity:1!important;position:absolute;z-index:1;width:3px;height:100%;content:'';left:0;top:0}.sidebar,.sidebar[data-background-color=white]{position:fixed;top:0;bottom:0;left:0;width:250px;margin-top:62px;display:block;z-index:1000;color:#fff;font-weight:200;background:#fff;-webkit-box-shadow:4px 4px 10px rgba(69,65,78,.06);-moz-box-shadow:4px 4px 10px rgba(69,65,78,.06);box-shadow:4px 4px 10px rgba(69,65,78,.06);transition:all .3s}.sidebar.full-height,.sidebar[data-background-color=white].full-height{margin-top:0}.sidebar .user,.sidebar[data-background-color=white] .user{margin-top:20px;padding-left:15px;padding-right:15px;padding-bottom:12.5px;border-bottom:1px solid #f1f1f1;display:block;margin-left:10px;margin-right:10px}.sidebar .user .info a,.sidebar[data-background-color=white] .user .info a{white-space:nowrap;display:block;position:relative}.sidebar .user .info a:focus,.sidebar .user .info a:hover,.sidebar[data-background-color=white] .user .info a:focus,.sidebar[data-background-color=white] .user .info a:hover{text-decoration:none}.sidebar .user .info a>span,.sidebar[data-background-color=white] .user .info a>span{font-size:14px;font-weight:400;color:#777;display:flex;flex-direction:column}.sidebar .user .info a>span .user-level,.sidebar[data-background-color=white] .user .info a>span .user-level{color:#555;font-weight:600;font-size:12px;margin-top:5px}.sidebar .user .info a .link-collapse,.sidebar[data-background-color=white] .user .info a .link-collapse{padding:7px 0}.sidebar .user .info .caret,.sidebar[data-background-color=white] .user .info .caret{position:absolute;top:17px;right:0;border-top-color:#777}.sidebar .sidebar-wrapper,.sidebar[data-background-color=white] .sidebar-wrapper{position:relative;max-height:calc(100vh - 75px);min-height:100%;overflow:auto;width:100%;z-index:4;padding-bottom:100px;transition:all .3s}.sidebar .sidebar-wrapper .sidebar-content,.sidebar[data-background-color=white] .sidebar-wrapper .sidebar-content{padding-top:0;padding-bottom:55px}.sidebar .sidebar-wrapper .scroll-element.scroll-y,.sidebar[data-background-color=white] .sidebar-wrapper .scroll-element.scroll-y{top:5px!important}.sidebar .nav,.sidebar[data-background-color=white] .nav{display:block;float:none;margin-top:20px}.sidebar .nav .nav-section,.sidebar[data-background-color=white] .nav .nav-section{margin:15px 0 0 0}.sidebar .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=white] .nav .nav-section .sidebar-mini-icon{text-align:center;font-size:15px;color:#909093;display:none}.sidebar .nav .nav-section .text-section,.sidebar[data-background-color=white] .nav .nav-section .text-section{padding:2px 30px;font-size:12px;color:#727275;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;margin-top:20px}.sidebar .nav>.nav-item,.sidebar[data-background-color=white] .nav>.nav-item{display:list-item}.sidebar .nav>.nav-item.active>a,.sidebar[data-background-color=white] .nav>.nav-item.active>a{color:#575962!important}.sidebar .nav>.nav-item.active>a:before,.sidebar[data-background-color=white] .nav>.nav-item.active>a:before{background:#1d7af3}.sidebar .nav>.nav-item.active>a p,.sidebar[data-background-color=white] .nav>.nav-item.active>a p{color:#575962!important;font-weight:600}.sidebar .nav>.nav-item.active:hover>a:before,.sidebar[data-background-color=white] .nav>.nav-item.active:hover>a:before{background:#1d7af3}.sidebar .nav>.nav-item.active a i,.sidebar[data-background-color=white] .nav>.nav-item.active a i{color:#4d7cfe}.sidebar .nav>.nav-item.submenu,.sidebar[data-background-color=white] .nav>.nav-item.submenu{background:rgba(0,0,0,.03)}.sidebar .nav>.nav-item.submenu>li>a i,.sidebar[data-background-color=white] .nav>.nav-item.submenu>li>a i{color:rgba(23,125,255,.76)}.sidebar .nav>.nav-item a:focus,.sidebar .nav>.nav-item>a:hover,.sidebar[data-background-color=white] .nav>.nav-item a:focus,.sidebar[data-background-color=white] .nav>.nav-item>a:hover{background:rgba(0,0,0,.03)}.sidebar .nav>.nav-item a,.sidebar[data-background-color=white] .nav>.nav-item a{display:flex;align-items:center;color:#575962;padding:6px 25px;width:100%;font-size:14px;font-weight:400;position:relative;margin-bottom:3px}.sidebar .nav>.nav-item a:focus,.sidebar .nav>.nav-item a:hover,.sidebar[data-background-color=white] .nav>.nav-item a:focus,.sidebar[data-background-color=white] .nav>.nav-item a:hover{text-decoration:none}.sidebar .nav>.nav-item a:focus p,.sidebar .nav>.nav-item a:hover p,.sidebar[data-background-color=white] .nav>.nav-item a:focus p,.sidebar[data-background-color=white] .nav>.nav-item a:hover p{color:#575962!important;font-weight:600}.sidebar .nav>.nav-item a:focus i,.sidebar .nav>.nav-item a:hover i,.sidebar[data-background-color=white] .nav>.nav-item a:focus i,.sidebar[data-background-color=white] .nav>.nav-item a:hover i{color:#4d7cfe!important}.sidebar .nav>.nav-item a .letter-icon,.sidebar[data-background-color=white] .nav>.nav-item a .letter-icon{color:#a1a2a6;margin-right:15px;width:25px;text-align:center;vertical-align:middle;float:left;font-size:20px;font-weight:200}.sidebar .nav>.nav-item a i,.sidebar[data-background-color=white] .nav>.nav-item a i{color:#8d9498;margin-right:15px;width:25px;text-align:center;vertical-align:middle;float:left;font-size:18px;line-height:30px}.sidebar .nav>.nav-item a i[class^=flaticon-],.sidebar[data-background-color=white] .nav>.nav-item a i[class^=flaticon-]{font-size:20px}.sidebar .nav>.nav-item a p,.sidebar[data-background-color=white] .nav>.nav-item a p{font-size:14px;margin-bottom:0;margin-right:5px;white-space:nowrap;color:#8d9498}.sidebar .nav>.nav-item a .caret,.sidebar[data-background-color=white] .nav>.nav-item a .caret{margin-left:auto;margin-right:10px;transition:all .5s;color:#8d9498}.sidebar .nav>.nav-item a[data-toggle=collapse][aria-expanded=true],.sidebar[data-background-color=white] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true]{background:0 0}.sidebar .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] p,.sidebar[data-background-color=white] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#575962}.sidebar .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#4d7cfe}.sidebar .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=white] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] .caret{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.sidebar .nav>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#1d7af3}.sidebar .nav.nav-primary>.nav-item a:focus i,.sidebar .nav.nav-primary>.nav-item a:hover i,.sidebar .nav.nav-primary>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav.nav-primary>.nav-item a:focus i,.sidebar[data-background-color=white] .nav.nav-primary>.nav-item a:hover i,.sidebar[data-background-color=white] .nav.nav-primary>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#1572e8!important}.sidebar .nav.nav-primary>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav.nav-primary>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#1572e8!important}.sidebar .nav.nav-primary>.nav-item.active a:before,.sidebar[data-background-color=white] .nav.nav-primary>.nav-item.active a:before{background:#1572e8!important}.sidebar .nav.nav-primary>.nav-item.active a i,.sidebar[data-background-color=white] .nav.nav-primary>.nav-item.active a i{color:#1572e8!important}.sidebar .nav.nav-secondary>.nav-item a:focus i,.sidebar .nav.nav-secondary>.nav-item a:hover i,.sidebar .nav.nav-secondary>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav.nav-secondary>.nav-item a:focus i,.sidebar[data-background-color=white] .nav.nav-secondary>.nav-item a:hover i,.sidebar[data-background-color=white] .nav.nav-secondary>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#6861ce!important}.sidebar .nav.nav-secondary>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav.nav-secondary>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#6861ce!important}.sidebar .nav.nav-secondary>.nav-item.active a:before,.sidebar[data-background-color=white] .nav.nav-secondary>.nav-item.active a:before{background:#6861ce!important}.sidebar .nav.nav-secondary>.nav-item.active a i,.sidebar[data-background-color=white] .nav.nav-secondary>.nav-item.active a i{color:#6861ce!important}.sidebar .nav.nav-info>.nav-item a:focus i,.sidebar .nav.nav-info>.nav-item a:hover i,.sidebar .nav.nav-info>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav.nav-info>.nav-item a:focus i,.sidebar[data-background-color=white] .nav.nav-info>.nav-item a:hover i,.sidebar[data-background-color=white] .nav.nav-info>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#48abf7!important}.sidebar .nav.nav-info>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav.nav-info>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#48abf7!important}.sidebar .nav.nav-info>.nav-item.active a:before,.sidebar[data-background-color=white] .nav.nav-info>.nav-item.active a:before{background:#48abf7!important}.sidebar .nav.nav-info>.nav-item.active a i,.sidebar[data-background-color=white] .nav.nav-info>.nav-item.active a i{color:#48abf7!important}.sidebar .nav.nav-success>.nav-item a:focus i,.sidebar .nav.nav-success>.nav-item a:hover i,.sidebar .nav.nav-success>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav.nav-success>.nav-item a:focus i,.sidebar[data-background-color=white] .nav.nav-success>.nav-item a:hover i,.sidebar[data-background-color=white] .nav.nav-success>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#31ce36!important}.sidebar .nav.nav-success>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav.nav-success>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#31ce36!important}.sidebar .nav.nav-success>.nav-item.active a:before,.sidebar[data-background-color=white] .nav.nav-success>.nav-item.active a:before{background:#31ce36!important}.sidebar .nav.nav-success>.nav-item.active a i,.sidebar[data-background-color=white] .nav.nav-success>.nav-item.active a i{color:#31ce36!important}.sidebar .nav.nav-warning>.nav-item a:focus i,.sidebar .nav.nav-warning>.nav-item a:hover i,.sidebar .nav.nav-warning>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav.nav-warning>.nav-item a:focus i,.sidebar[data-background-color=white] .nav.nav-warning>.nav-item a:hover i,.sidebar[data-background-color=white] .nav.nav-warning>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#ffad46!important}.sidebar .nav.nav-warning>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav.nav-warning>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#ffad46!important}.sidebar .nav.nav-warning>.nav-item.active a:before,.sidebar[data-background-color=white] .nav.nav-warning>.nav-item.active a:before{background:#ffad46!important}.sidebar .nav.nav-warning>.nav-item.active a i,.sidebar[data-background-color=white] .nav.nav-warning>.nav-item.active a i{color:#ffad46!important}.sidebar .nav.nav-danger>.nav-item a:focus i,.sidebar .nav.nav-danger>.nav-item a:hover i,.sidebar .nav.nav-danger>.nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=white] .nav.nav-danger>.nav-item a:focus i,.sidebar[data-background-color=white] .nav.nav-danger>.nav-item a:hover i,.sidebar[data-background-color=white] .nav.nav-danger>.nav-item a[data-toggle=collapse][aria-expanded=true] i{color:#f25961!important}.sidebar .nav.nav-danger>.nav-item a[data-toggle=collapse][aria-expanded=true]:before,.sidebar[data-background-color=white] .nav.nav-danger>.nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:#f25961!important}.sidebar .nav.nav-danger>.nav-item.active a:before,.sidebar[data-background-color=white] .nav.nav-danger>.nav-item.active a:before{background:#f25961!important}.sidebar .nav.nav-danger>.nav-item.active a i,.sidebar[data-background-color=white] .nav.nav-danger>.nav-item.active a i{color:#f25961!important}.sidebar .nav-collapse,.sidebar[data-background-color=white] .nav-collapse{margin-top:0;margin-bottom:15px;padding-bottom:15px;padding-top:10px}.sidebar .nav-collapse li.active>a,.sidebar[data-background-color=white] .nav-collapse li.active>a{font-weight:600}.sidebar .nav-collapse li a:before,.sidebar .nav-collapse li a:hover:before,.sidebar[data-background-color=white] .nav-collapse li a:before,.sidebar[data-background-color=white] .nav-collapse li a:hover:before{opacity:0!important}.sidebar .nav-collapse li a,.sidebar[data-background-color=white] .nav-collapse li a{margin-bottom:3px!important;padding:10px 25px!important}.sidebar .nav-collapse li a .sub-item,.sidebar[data-background-color=white] .nav-collapse li a .sub-item{font-size:14px;position:relative;margin-left:25px;opacity:.85}.sidebar .nav-collapse li a .sub-item:before,.sidebar[data-background-color=white] .nav-collapse li a .sub-item:before{content:'';height:4px;width:4px;background:rgba(131,132,138,.89);position:absolute;left:-15px;top:50%;transform:translateY(-50%);border-radius:100%}.sidebar .nav-collapse li a:hover .sub-item,.sidebar[data-background-color=white] .nav-collapse li a:hover .sub-item{opacity:1}.sidebar .nav-collapse li a .sidebar-mini-icon,.sidebar[data-background-color=white] .nav-collapse li a .sidebar-mini-icon{font-size:18px;color:#c3c5ca;margin-right:15px;width:25px;text-align:center;vertical-align:middle;float:left;font-weight:300!important}.sidebar .nav-collapse.subnav,.sidebar[data-background-color=white] .nav-collapse.subnav{padding-bottom:10px;margin-bottom:0}.sidebar .nav-collapse.subnav li a,.sidebar[data-background-color=white] .nav-collapse.subnav li a{padding-left:40px!important}.sidebar.sidebar-style-2 .nav .nav-item{padding:0 15px}.sidebar.sidebar-style-2 .nav .nav-item a{padding:8px 10px;border-radius:5px}.sidebar.sidebar-style-2 .nav .nav-item a:focus,.sidebar.sidebar-style-2 .nav .nav-item a:hover,.sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{background:rgba(199,199,199,.2)}.sidebar.sidebar-style-2 .nav .nav-item a:focus i,.sidebar.sidebar-style-2 .nav .nav-item a:focus p,.sidebar.sidebar-style-2 .nav .nav-item a:hover i,.sidebar.sidebar-style-2 .nav .nav-item a:hover p,.sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#575962!important}.sidebar.sidebar-style-2 .nav .nav-item.active a:before{background:0 0}.sidebar.sidebar-style-2 .nav .nav-item .active a{background:rgba(199,199,199,.2)}.sidebar.sidebar-style-2 .nav .nav-item .active a i,.sidebar.sidebar-style-2 .nav .nav-item .active a p{color:#575962!important}.sidebar.sidebar-style-2 .nav .nav-item.submenu{background:0 0!important}.sidebar.sidebar-style-2 .nav .nav-item a[data-toggle=collapse][aria-expanded=true]:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a{background:#1572e8!important;box-shadow:4px 4px 10px 0 rgba(0,0,0,.1),4px 4px 15px -5px rgba(21,114,232,.4)!important}.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a .caret,.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a i,.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a p,.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a span{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-primary>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a{background:#6861ce!important;box-shadow:4px 4px 10px 0 rgba(0,0,0,.1),4px 4px 15px -5px rgba(104,97,206,.4)!important}.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a .caret,.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a i,.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a p,.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a span{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-secondary>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a{background:#48abf7!important;box-shadow:4px 4px 10px 0 rgba(0,0,0,.1),4px 4px 15px -5px rgba(72,171,247,.4)!important}.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a .caret,.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a i,.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a p,.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a span{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-info>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a{background:#31ce36!important;box-shadow:4px 4px 10px 0 rgba(0,0,0,.1),4px 4px 15px -5px rgba(49,206,54,.4)!important}.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a .caret,.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a i,.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a p,.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a span{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-success>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a{background:#ffad46!important;box-shadow:4px 4px 10px 0 rgba(0,0,0,.1),4px 4px 15px -5px rgba(255,173,70,.4)!important}.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a .caret,.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a i,.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a p,.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a span{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-warning>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a{background:#f25961!important;box-shadow:4px 4px 10px 0 rgba(0,0,0,.1),4px 4px 15px -5px rgba(242,89,97,.4)!important}.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a:before{background:0 0!important}.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a .caret,.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a i,.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a p,.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a span{color:#fff!important}.sidebar.sidebar-style-2 .nav.nav-danger>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i{color:#fff!important}.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item a:focus i,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item a:focus p,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item a:hover i,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item a:hover p,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item a:focus i,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item a:focus p,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item a:hover i,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item a:hover p,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#b9babf!important}.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a{color:#fff}.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a .caret,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a i,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a p,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a span,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a .caret,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a i,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a p,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a span{color:#fff}.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] i,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] p,.sidebar.sidebar-style-2[data-background-color=dark2] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] span,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] i,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] p,.sidebar.sidebar-style-2[data-background-color=dark] .nav .nav-item.active a[data-toggle=collapse][aria-expanded=true] span{color:#fff}.main-panel{position:relative;width:calc(100% - 250px);height:100vh;min-height:100%;float:right;transition:all .3s}.main-panel>.content{padding:0!important;min-height:calc(100% - 123px);margin-top:62px;overflow:hidden}.main-panel>.content-full{padding:0!important;min-height:calc(100% - 123px);margin-top:63px;overflow:hidden}.main-panel .page-header{display:flex;align-items:center;margin-bottom:20px}.main-panel .page-header .page-title{margin-bottom:0}.main-panel .page-header .btn-page-header-dropdown{width:35px;height:35px;font-size:14px;padding:0;color:#6b6b6b;box-shadow:0 2px 14px 0 rgba(144,116,212,.1)!important;border:0}.main-panel .page-header .btn-page-header-dropdown:after{display:none}.main-panel .page-header .dropdown-menu{margin-top:15px;top:0!important}.main-panel .page-header .dropdown-menu:after{width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #fff;position:absolute;top:-8px;right:32px;content:''}.main-panel .page-divider{height:0;margin:.3rem 0 1rem;overflow:hidden;border-top:1px solid #ebecec}.page-wrapper{min-height:calc(100vh - 57px);position:relative}.page-wrapper.has-sidebar .page-inner{margin-right:22.5rem}.page-navs{position:relative;display:block;padding-right:1rem;padding-left:1rem;box-shadow:0 1px 1px 0 rgba(0,0,0,.07);z-index:1}.page-navs .nav .nav-link{padding:1rem!important}.page-navs .nav-line{border:0!important}.page-navs .nav-line .nav-link{border-bottom-width:3px!important}.nav-scroller .nav{flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}@media (min-width:992px){.page-navs{padding-right:2rem;padding-left:2rem}}.page-inner{padding:1.5rem 0}@media (min-width:576px){.page-inner{padding-right:1rem;padding-left:1rem}}@media (min-width:992px){.page-inner{padding-right:2rem;padding-left:2rem}}.page-inner-fill{padding:0;height:calc(100% - 57px);display:flex;flex-direction:column}.page-sidebar{position:absolute;top:0;right:0;bottom:0;width:100%;display:flex;flex-direction:column;max-width:22.5rem;box-shadow:none;transform:translate3d(100%,0,0);overflow:auto;z-index:999;transition:transform .2s ease-in-out;border-left:1px solid rgba(61,70,79,.125)!important}.page-sidebar .back{width:100%;display:flex;align-items:center;padding:1rem;box-shadow:0 0 0 1px rgba(61,70,79,.05),0 1px 3px 0 rgba(61,70,79,.15);font-size:15px}.page-sidebar-section{flex:1;overflow-y:auto}@media (min-width:1200px){.page-sidebar{transform:translateZ(0)}}@media (max-width:1200px){.page-wrapper.has-sidebar .page-inner{margin-right:0}.pagesidebar_open .page-sidebar{transform:translate3d(0,0,0)!important;max-width:unset}}.page-with-aside{display:flex}.page-with-aside .page-aside{width:280px;min-height:100vh;border-right:1px solid #f1f1f1;padding:15px 0}.page-with-aside .page-aside .aside-header{padding:15px 22px}.page-with-aside .page-aside .aside-header .title{font-size:24px}.page-with-aside .page-aside .aside-header .description{font-size:12px}.page-with-aside .page-aside .aside-nav .nav{flex-direction:column}.page-with-aside .page-aside .aside-nav .nav>li{padding:8px 22px;margin-bottom:5px}.page-with-aside .page-aside .aside-nav .nav>li.active,.page-with-aside .page-aside .aside-nav .nav>li:focus,.page-with-aside .page-aside .aside-nav .nav>li:hover{background:rgba(51,51,51,.08)}.page-with-aside .page-aside .aside-nav .nav>li.active{padding:12px 22px;font-weight:600}.page-with-aside .page-aside .aside-nav .nav>li.active>a{color:#575962!important}.page-with-aside .page-aside .aside-nav .nav>li>a{color:#83848a;display:flex;align-items:center;font-size:12px}.page-with-aside .page-aside .aside-nav .nav>li>a:focus,.page-with-aside .page-aside .aside-nav .nav>li>a:hover{text-decoration:none}.page-with-aside .page-aside .aside-nav .nav>li>a i{font-size:20px;margin-right:15px;color:#a1a2a6}.page-with-aside .page-aside .aside-nav .label{padding:5px 22px;margin-top:22px;margin-bottom:5px;display:block}.page-with-aside .page-aside .aside-compose{padding:25px 22px}.page-with-aside .page-content{width:calc(100% - 280px)}.footer{border-top:1px solid #eee;padding:15px;background:#fff;position:absolute;width:100%}.footer .container,.footer .container-fluid{display:flex;align-items:center}@media screen and (min-width:991px){.sidebar_minimize .main-panel{width:calc(100% - 75px);transition:all .3s}.sidebar_minimize .logo-header{width:75px;transition:all .3s;padding:0;text-align:center}.sidebar_minimize .logo-header .big-logo{margin-right:0}.sidebar_minimize .logo-header .logo{position:absolute;transform:translate3d(25px,0,0);opacity:0}.sidebar_minimize .logo-header .logo img{display:none}.sidebar_minimize .logo-header .nav-toggle{position:absolute;left:50%;transform:translateX(-50%);height:100%;right:0!important}.sidebar_minimize .sidebar{width:75px;transition:all .3s}.sidebar_minimize .sidebar .sidebar-wrapper{width:75px;transition:all .3s}.sidebar_minimize .sidebar .sidebar-wrapper .user{padding-left:0;padding-right:0}.sidebar_minimize .sidebar .sidebar-wrapper .user [class^=avatar-]{float:none!important;margin:auto}.sidebar_minimize .sidebar .sidebar-wrapper .user .info{display:none}.sidebar_minimize .sidebar .sidebar-wrapper .user .info span{display:none}.sidebar_minimize .sidebar .sidebar-wrapper .nav-item{position:relative}.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .letter-icon{display:block!important}.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a i{margin-right:unset}.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .badge,.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .caret,.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a p,.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a span{display:none;transition:all .3s}.sidebar_minimize .sidebar .sidebar-wrapper .nav-item a .sidebar-mini-icon{display:block!important;margin-right:0}.sidebar_minimize .sidebar .sidebar-wrapper .nav-item.active .nav-collapse,.sidebar_minimize .sidebar .sidebar-wrapper .nav-item.submenu .nav-collapse{display:none}.sidebar_minimize .sidebar .sidebar-wrapper .nav-section .text-section{display:none}.sidebar_minimize .sidebar .sidebar-wrapper .nav-section .sidebar-mini-icon{display:block}.sidebar_minimize .sidebar:hover{width:250px}.sidebar_minimize .sidebar:hover .sidebar-wrapper{width:250px}.sidebar_minimize .sidebar:hover .sidebar-wrapper .user{padding-left:15px;padding-right:15px}.sidebar_minimize .sidebar:hover .sidebar-wrapper .user [class^=avatar-]{float:left!important;margin-right:11px!important}.sidebar_minimize .sidebar:hover .sidebar-wrapper .user .info{display:block}.sidebar_minimize .sidebar:hover .sidebar-wrapper .user .info span{display:block}.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a i{margin-right:15px}.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a .badge,.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a .caret,.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a p,.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a span{display:block}.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item a .sidebar-mini-icon{display:block!important;margin-right:15px}.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item.active .nav-collapse,.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-item.submenu .nav-collapse{display:block}.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-section .sidebar-mini-icon{display:none}.sidebar_minimize .sidebar:hover .sidebar-wrapper .nav-section .text-section{display:block}.sidebar_minimize.sidebar_minimize_hover .logo-header{width:250px;padding-left:25px;padding-right:25px;text-align:left}.sidebar_minimize.sidebar_minimize_hover .logo-header .logo{opacity:1!important;transform:translate3d(0,0,0)!important;position:relative!important}.sidebar_minimize.sidebar_minimize_hover .logo-header .logo img{display:inline-block!important}.sidebar_minimize.sidebar_minimize_hover .main-panel{width:calc(100% - 250px)}.sidebar_minimize_hover .logo-header .nav-toggle{right:18px!important;transform:translateX(0)!important;left:unset}}.overlay-sidebar:not(.is-show) .sidebar{left:-250px}.overlay-sidebar .main-panel{width:100%!important}@media screen and (min-width:991px){.compact-wrapper .main-header .logo-header{width:175px}.compact-wrapper .sidebar{width:175px}.compact-wrapper .sidebar .badge{position:absolute;top:8px;right:8px}.compact-wrapper .sidebar .text-section{text-align:center}.compact-wrapper .sidebar .nav>.nav-item a{flex-direction:column}.compact-wrapper .sidebar .nav>.nav-item a i{margin-right:0}.compact-wrapper .sidebar .nav>.nav-item a p{margin-right:0}.compact-wrapper .sidebar .nav>.nav-item a .caret{display:none}.compact-wrapper .sidebar .nav-collapse li a .sub-item{margin-left:0;text-align:center}.compact-wrapper .sidebar .nav-collapse li a .sub-item:before{display:none}.compact-wrapper .main-panel{width:calc(100% - 175px)}}@media screen and (min-width:991px){.classic-wrapper .classic-grid{margin:93px 40px 30px}.classic-wrapper .main-header{top:0}.classic-wrapper .main-header .logo-header{padding:0 40px;width:290px}.classic-wrapper .sidebar{position:relative;float:left;margin-top:0}.classic-wrapper .sidebar .sidebar-wrapper{max-height:unset;min-height:100%}.classic-wrapper .navbar-header{padding-right:30px}.classic-wrapper .main-panel{height:unset}.classic-wrapper .main-panel .content,.classic-wrapper .main-panel .content-full{margin-top:0}.classic-wrapper .page-inner{padding-right:0;padding-top:5px}.classic-wrapper .board{height:100%}.sidebar_minimize .classic-wrapper .logo-header .logo{position:relative;transform:unset;opacity:1}.sidebar_minimize .classic-wrapper .logo-header .logo img{display:inline-block}.sidebar_minimize .classic-wrapper .logo-header .nav-toggle{left:unset;transform:unset;right:18px!important}}.classic-wrapper{height:unset}.classic-wrapper .main-panel{height:unset}.classic-wrapper .footer{position:unset}.classic-grid{min-height:100vh;height:100%;display:flex;flex-direction:row;flex-wrap:wrap}@media screen and (min-width:991px){.static-sidebar{height:unset}.static-sidebar .sidebar{position:static;float:left}.static-sidebar .sidebar .sidebar-wrapper{max-height:unset;min-height:100%}.static-sidebar .main-panel{height:unset}.static-sidebar .main-panel .content{margin-bottom:60px}.static-sidebar .footer{position:absolute;bottom:0}}.mail-wrapper .toggle-email-nav{margin-top:10px;display:none}.mail-wrapper .mail-content .email-head,.mail-wrapper .mail-content .inbox-head{padding:35px 25px 20px}.mail-wrapper .mail-content .email-head h3,.mail-wrapper .mail-content .inbox-head h3{font-size:22px;font-weight:300;margin:0}.mail-wrapper .mail-content .email-head{padding:35px 25px;border-bottom:1px solid #f1f1f1}.mail-wrapper .mail-content .email-head .favorite{color:#eee;margin-right:5px}.mail-wrapper .mail-content .email-head .favorite.active{color:#ffc600}.mail-wrapper .mail-content .email-head .controls{margin-left:auto}.mail-wrapper .mail-content .email-head .controls>a{color:#9c9c9c;font-size:18px;padding:0 5px}.mail-wrapper .mail-content .email-head .controls>a:hover{text-decoration:none;opacity:.8}.mail-wrapper .mail-content .email-head .controls>a:last-child{padding-right:0}.mail-wrapper .mail-content .email-sender{padding:14px 25px;display:flex;align-items:center;border-bottom:1px solid #f1f1f1}.mail-wrapper .mail-content .email-sender .avatar{padding-right:12px}.mail-wrapper .mail-content .email-sender .avatar img{max-width:40px;max-height:40px;border-radius:50%}.mail-wrapper .mail-content .email-sender .date{margin-left:auto}.mail-wrapper .mail-content .email-sender .sender .action{display:inline-block}.mail-wrapper .mail-content .email-sender .sender .action>a{cursor:pointer}.mail-wrapper .mail-content .email-body{padding:30px 28px}.mail-wrapper .mail-content .email-attachments{padding:25px 28px;border-top:1px solid #f1f1f1}.mail-wrapper .mail-content .email-attachments .title{font-weight:400;margin-bottom:10px}.mail-wrapper .mail-content .email-attachments .title span{font-weight:400}.mail-wrapper .mail-content .email-attachments ul{padding-left:0;list-style:none}.mail-wrapper .mail-content .email-attachments ul li{padding:6px 0}.mail-wrapper .mail-content .email-attachments ul li a{font-weight:400}.mail-wrapper .mail-content .email-attachments ul li a:hover{text-decoration:none}.mail-wrapper .mail-content .email-attachments ul li a i{font-size:20px;display:inline-block;vertical-align:middle}.mail-wrapper .mail-content .email-attachments ul li a span{font-weight:400}.mail-wrapper .mail-content .inbox-body{padding:20px 0}.mail-wrapper .mail-content .inbox-body .mail-option{padding:0 20px;margin-bottom:20px;display:flex}.mail-wrapper .mail-content .inbox-body .mail-option .chk-all{display:inline-block}.mail-wrapper .mail-content .inbox-body .mail-option .btn-option{color:#555!important;border:1px solid #ebedf2!important;font-weight:600;background:#fff!important;box-shadow:2px 2px 3px 0 #f2f1f1!important}.mail-wrapper .mail-content .inbox-body .mail-option .form-check{padding:0}.mail-wrapper .mail-content .inbox-body .mail-option .form-check .form-check-sign:before{border:1px solid #eee;background:#eee}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item{padding:14px 20px;display:table;cursor:pointer;position:relative;font-size:12px;width:100%;border-top:1px solid #f1f1f1}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item:hover{background:#f6f5f5}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions,.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail{vertical-align:top;display:table-cell}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions{width:50px}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .custom-checkbox{margin-right:0}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite{color:#eee;font-size:18px}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite:hover{text-decoration:none;color:#969696}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite.active,.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-actions .favorite.active:hover{color:#ffc600}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .msg,.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail p{font-size:12px}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .msg{margin-bottom:0;margin-top:8px}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .from{font-size:13px}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .date{font-size:12px;display:flex;align-items:center}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item .email-list-detail .date .paperclip{font-size:16px;padding-right:4px}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread{font-weight:400;background:#fbfbfb}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread:after{content:'';display:block;position:absolute;width:3px;background:#1572e8;top:-1px;left:0;bottom:-1px;height:calc(100% + 2px)}.mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread .email-list-detail .from{font-weight:600}.mail-wrapper .mail-content .email-compose-fields,.mail-wrapper .mail-content .email-editor{padding:20px 25px}.mail-wrapper .mail-content .email-compose-fields{padding:20px 25px;border-bottom:1px solid #f1f1f1}.mail-wrapper .mail-content .email-action{text-align:right;margin-bottom:15px}.mail-wrapper .mail-content .email-action>.btn{margin-right:7px}.mail-wrapper .mail-content .email-action>.btn:last-child{margin-right:0}.flex-1{-ms-flex:1;flex:1}.metric{display:flex;padding:1rem;flex-direction:column}.main-header .navbar-header[data-background-color] .nav-search .input-group{border:0;background:rgba(0,0,0,.14)!important;box-shadow:3px 3px 6px 0 rgba(0,0,0,.07);transition:all .4s}.main-header .navbar-header[data-background-color] .nav-search .input-group .form-control{color:#fff!important}.main-header .navbar-header[data-background-color] .nav-search .input-group .form-control::-webkit-input-placeholder{opacity:1}.main-header .navbar-header[data-background-color] .nav-search .input-group .form-control::-moz-placeholder{opacity:1}.main-header .navbar-header[data-background-color] .nav-search .input-group .form-control:-ms-input-placeholder{opacity:1}.main-header .navbar-header[data-background-color] .nav-search .input-group .form-control:-moz-placeholder{opacity:1}.main-header .navbar-header[data-background-color] .nav-search .input-group .search-icon{color:#fff!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus{background:#fff!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control{color:inherit!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control::-webkit-input-placeholder{color:#bfbfbf!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control::-moz-placeholder{color:#bfbfbf!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control:-ms-input-placeholder{color:#bfbfbf!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus .form-control:-moz-placeholder{color:#bfbfbf!important}.main-header .navbar-header[data-background-color] .nav-search .input-group.focus .search-icon{color:#bfbfbf!important}.main-header .navbar-header[data-background-color] .navbar-nav .nav-item .nav-link{color:#fff!important}.main-header .navbar-header[data-background-color] .navbar-nav .nav-item .nav-link:focus,.main-header .navbar-header[data-background-color] .navbar-nav .nav-item .nav-link:hover{background:rgba(31,30,30,.12)!important}.main-header .navbar-header[data-background-color] .navbar-nav .nav-item.active .nav-link{background:rgba(31,30,30,.12)!important}.main-header .navbar-header[data-background-color=dark2] .nav-search .input-group,.main-header .navbar-header[data-background-color=dark] .nav-search .input-group{background:rgba(185,185,185,.18)!important}.main-header .navbar-header[data-background-color=dark2] .navbar-nav .nav-item .nav-link:focus,.main-header .navbar-header[data-background-color=dark2] .navbar-nav .nav-item .nav-link:hover,.main-header .navbar-header[data-background-color=dark] .navbar-nav .nav-item .nav-link:focus,.main-header .navbar-header[data-background-color=dark] .navbar-nav .nav-item .nav-link:hover{background:rgba(185,185,185,.18)!important}.main-header .navbar-header[data-background-color=dark2] .navbar-nav .nav-item.active .nav-link,.main-header .navbar-header[data-background-color=dark] .navbar-nav .nav-item.active .nav-link{background:rgba(185,185,185,.18)!important}.main-header .navbar-header .navbar-header-transparent .nav-search .input-group,.main-header .navbar-header[data-background-color=white] .nav-search .input-group{background:#eee}.main-header .navbar-header .navbar-header-transparent .nav-search .input-group .form-control,.main-header .navbar-header[data-background-color=white] .nav-search .input-group .form-control{color:#8d9498!important}.main-header .navbar-header .navbar-header-transparent .nav-search .input-group .search-icon,.main-header .navbar-header[data-background-color=white] .nav-search .input-group .search-icon{color:#8d9498!important}.main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item .nav-link,.main-header .navbar-header[data-background-color=white] .navbar-nav .nav-item .nav-link{color:#8d9498!important}.main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item .nav-link:focus,.main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item .nav-link:hover,.main-header .navbar-header[data-background-color=white] .navbar-nav .nav-item .nav-link:focus,.main-header .navbar-header[data-background-color=white] .navbar-nav .nav-item .nav-link:hover{background:#eee!important}.main-header .navbar-header .navbar-header-transparent .navbar-nav .nav-item.active .nav-link,.main-header .navbar-header[data-background-color=white] .navbar-nav .nav-item.active .nav-link{background:#eee!important}.btn-toggle{color:#fff!important}.logo-header[data-background-color] .navbar-toggler .navbar-toggler-icon{color:#fff!important}.logo-header[data-background-color] .more{color:#fff!important}.logo-header[data-background-color=white] .btn-toggle,.logo-header[data-background-color=white] .more,.logo-header[data-background-color=white] .navbar-toggler .navbar-toggler-icon{color:#8d9498!important}.logo-header[data-background-color=white]{background:#fff!important}.navbar-header[data-background-color=white]{background:#fff!important}.logo-header[data-background-color=dark]{background:#1a2035!important}.logo-header[data-background-color=dark2]{background:#1f283e!important}.navbar-header[data-background-color=dark]{background:#1a2035!important}.navbar-header[data-background-color=dark2]{background:#1f283e!important}.logo-header[data-background-color=blue]{background:#1572e8!important}.logo-header[data-background-color=blue2]{background:#1269db!important}.navbar-header[data-background-color=blue]{background:#1572e8!important}.navbar-header[data-background-color=blue2]{background:#1269db!important}.logo-header[data-background-color=purple]{background:#6861ce!important}.logo-header[data-background-color=purple2]{background:#5c55bf!important}.navbar-header[data-background-color=purple]{background:#6861ce!important}.navbar-header[data-background-color=purple2]{background:#5c55bf!important}.logo-header[data-background-color=light-blue]{background:#48abf7!important}.logo-header[data-background-color=light-blue2]{background:#3697e1!important}.navbar-header[data-background-color=light-blue]{background:#48abf7!important}.navbar-header[data-background-color=light-blue2]{background:#3697e1!important}.logo-header[data-background-color=green]{background:#31ce36!important}.logo-header[data-background-color=green2]{background:#2bb930!important}.navbar-header[data-background-color=green]{background:#31ce36!important}.navbar-header[data-background-color=green2]{background:#2bb930!important}.logo-header[data-background-color=orange]{background:#ffad46!important}.logo-header[data-background-color=orange2]{background:#ff9e27!important}.navbar-header[data-background-color=orange]{background:#ffad46!important}.navbar-header[data-background-color=orange2]{background:#ff9e27!important}.logo-header[data-background-color=red]{background:#f25961!important}.logo-header[data-background-color=red2]{background:#ea4d56!important}.navbar-header[data-background-color=red]{background:#f25961!important}.navbar-header[data-background-color=red2]{background:#ea4d56!important}.sidebar[data-background-color=dark]{background:#1a2035!important}.sidebar[data-background-color=dark] .user{border-color:rgba(181,181,181,.1)!important}.sidebar[data-background-color=dark] .user .info a>span{color:#b9babf}.sidebar[data-background-color=dark] .user .info a>span .user-level{color:#8d9498}.sidebar[data-background-color=dark] .nav>.nav-item.active>a p{color:#b9babf!important}.sidebar[data-background-color=dark] .nav>.nav-item a{color:#b9babf!important}.sidebar[data-background-color=dark] .nav>.nav-item a:focus p,.sidebar[data-background-color=dark] .nav>.nav-item a:hover p,.sidebar[data-background-color=dark] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#b9babf!important}.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:focus,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:hover,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#1a2035!important}.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a .caret,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a i,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a p,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:focus .caret,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:focus i,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:focus p,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:hover .caret,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:hover i,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a:hover p,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=dark].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#1a2035!important}.sidebar[data-background-color=dark] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=dark] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=dark] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=dark2]{background:#1f283e!important}.sidebar[data-background-color=dark2] .user{border-color:rgba(181,181,181,.1)!important}.sidebar[data-background-color=dark2] .user .info a>span{color:#b9babf}.sidebar[data-background-color=dark2] .user .info a>span .user-level{color:#8d9498}.sidebar[data-background-color=dark2] .nav>.nav-item.active>a p{color:#b9babf!important}.sidebar[data-background-color=dark2] .nav>.nav-item a{color:#b9babf!important}.sidebar[data-background-color=dark2] .nav>.nav-item a:focus p,.sidebar[data-background-color=dark2] .nav>.nav-item a:hover p,.sidebar[data-background-color=dark2] .nav>.nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#b9babf!important}.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:focus,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:hover,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#1f283e!important}.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a .caret,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a i,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a p,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:focus .caret,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:focus i,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:focus p,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:hover .caret,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:hover i,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a:hover p,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=dark2].sidebar-style-2 .nav .nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#1f283e!important}.sidebar[data-background-color=dark2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=dark2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=dark2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=blue]{background:#1572e8!important}.sidebar[data-background-color=blue] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=blue] .user .info a>span{color:#fff}.sidebar[data-background-color=blue] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=blue] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=blue] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=blue] .nav .nav-item a .caret,.sidebar[data-background-color=blue] .nav .nav-item a i,.sidebar[data-background-color=blue] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=blue] .nav .nav-item a:focus,.sidebar[data-background-color=blue] .nav .nav-item a:hover,.sidebar[data-background-color=blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=blue] .nav .nav-item a:focus .caret,.sidebar[data-background-color=blue] .nav .nav-item a:focus i,.sidebar[data-background-color=blue] .nav .nav-item a:focus p,.sidebar[data-background-color=blue] .nav .nav-item a:hover .caret,.sidebar[data-background-color=blue] .nav .nav-item a:hover i,.sidebar[data-background-color=blue] .nav .nav-item a:hover p,.sidebar[data-background-color=blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=blue] .nav>.nav-item.active>a,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#1572e8!important}.sidebar[data-background-color=blue] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=blue] .nav>.nav-item.active>a i,.sidebar[data-background-color=blue] .nav>.nav-item.active>a p,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=blue] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#1572e8!important}.sidebar[data-background-color=blue] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=blue] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=blue] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=blue] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=blue] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=blue] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=blue2]{background:#1269db!important}.sidebar[data-background-color=blue2] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=blue2] .user .info a>span{color:#fff}.sidebar[data-background-color=blue2] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=blue2] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=blue2] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=blue2] .nav .nav-item a .caret,.sidebar[data-background-color=blue2] .nav .nav-item a i,.sidebar[data-background-color=blue2] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=blue2] .nav .nav-item a:focus,.sidebar[data-background-color=blue2] .nav .nav-item a:hover,.sidebar[data-background-color=blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=blue2] .nav .nav-item a:focus .caret,.sidebar[data-background-color=blue2] .nav .nav-item a:focus i,.sidebar[data-background-color=blue2] .nav .nav-item a:focus p,.sidebar[data-background-color=blue2] .nav .nav-item a:hover .caret,.sidebar[data-background-color=blue2] .nav .nav-item a:hover i,.sidebar[data-background-color=blue2] .nav .nav-item a:hover p,.sidebar[data-background-color=blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=blue2] .nav>.nav-item.active>a,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#1269db!important}.sidebar[data-background-color=blue2] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a i,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a p,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#1269db!important}.sidebar[data-background-color=blue2] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=blue2] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=blue2] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=blue2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=blue2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=blue2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=purple]{background:#6861ce!important}.sidebar[data-background-color=purple] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=purple] .user .info a>span{color:#fff}.sidebar[data-background-color=purple] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=purple] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=purple] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=purple] .nav .nav-item a .caret,.sidebar[data-background-color=purple] .nav .nav-item a i,.sidebar[data-background-color=purple] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=purple] .nav .nav-item a:focus,.sidebar[data-background-color=purple] .nav .nav-item a:hover,.sidebar[data-background-color=purple] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=purple] .nav .nav-item a:focus .caret,.sidebar[data-background-color=purple] .nav .nav-item a:focus i,.sidebar[data-background-color=purple] .nav .nav-item a:focus p,.sidebar[data-background-color=purple] .nav .nav-item a:hover .caret,.sidebar[data-background-color=purple] .nav .nav-item a:hover i,.sidebar[data-background-color=purple] .nav .nav-item a:hover p,.sidebar[data-background-color=purple] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=purple] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=purple] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=purple] .nav>.nav-item.active>a,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=purple] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#6861ce!important}.sidebar[data-background-color=purple] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=purple] .nav>.nav-item.active>a i,.sidebar[data-background-color=purple] .nav>.nav-item.active>a p,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=purple] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=purple] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=purple] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=purple] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#6861ce!important}.sidebar[data-background-color=purple] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=purple] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=purple] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=purple] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=purple] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=purple] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=purple2]{background:#5c55bf!important}.sidebar[data-background-color=purple2] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=purple2] .user .info a>span{color:#fff}.sidebar[data-background-color=purple2] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=purple2] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=purple2] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=purple2] .nav .nav-item a .caret,.sidebar[data-background-color=purple2] .nav .nav-item a i,.sidebar[data-background-color=purple2] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=purple2] .nav .nav-item a:focus,.sidebar[data-background-color=purple2] .nav .nav-item a:hover,.sidebar[data-background-color=purple2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=purple2] .nav .nav-item a:focus .caret,.sidebar[data-background-color=purple2] .nav .nav-item a:focus i,.sidebar[data-background-color=purple2] .nav .nav-item a:focus p,.sidebar[data-background-color=purple2] .nav .nav-item a:hover .caret,.sidebar[data-background-color=purple2] .nav .nav-item a:hover i,.sidebar[data-background-color=purple2] .nav .nav-item a:hover p,.sidebar[data-background-color=purple2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=purple2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=purple2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=purple2] .nav>.nav-item.active>a,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#5c55bf!important}.sidebar[data-background-color=purple2] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a i,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a p,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=purple2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#5c55bf!important}.sidebar[data-background-color=purple2] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=purple2] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=purple2] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=purple2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=purple2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=purple2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=light-blue]{background:#48abf7!important}.sidebar[data-background-color=light-blue] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=light-blue] .user .info a>span{color:#fff}.sidebar[data-background-color=light-blue] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=light-blue] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=light-blue] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=light-blue] .nav .nav-item a .caret,.sidebar[data-background-color=light-blue] .nav .nav-item a i,.sidebar[data-background-color=light-blue] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=light-blue] .nav .nav-item a:focus,.sidebar[data-background-color=light-blue] .nav .nav-item a:hover,.sidebar[data-background-color=light-blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=light-blue] .nav .nav-item a:focus .caret,.sidebar[data-background-color=light-blue] .nav .nav-item a:focus i,.sidebar[data-background-color=light-blue] .nav .nav-item a:focus p,.sidebar[data-background-color=light-blue] .nav .nav-item a:hover .caret,.sidebar[data-background-color=light-blue] .nav .nav-item a:hover i,.sidebar[data-background-color=light-blue] .nav .nav-item a:hover p,.sidebar[data-background-color=light-blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=light-blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=light-blue] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#48abf7!important}.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a i,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a p,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=light-blue] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#48abf7!important}.sidebar[data-background-color=light-blue] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=light-blue] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=light-blue] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=light-blue] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=light-blue] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=light-blue] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=light-blue2]{background:#3697e1!important}.sidebar[data-background-color=light-blue2] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=light-blue2] .user .info a>span{color:#fff}.sidebar[data-background-color=light-blue2] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=light-blue2] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=light-blue2] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=light-blue2] .nav .nav-item a .caret,.sidebar[data-background-color=light-blue2] .nav .nav-item a i,.sidebar[data-background-color=light-blue2] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=light-blue2] .nav .nav-item a:focus,.sidebar[data-background-color=light-blue2] .nav .nav-item a:hover,.sidebar[data-background-color=light-blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=light-blue2] .nav .nav-item a:focus .caret,.sidebar[data-background-color=light-blue2] .nav .nav-item a:focus i,.sidebar[data-background-color=light-blue2] .nav .nav-item a:focus p,.sidebar[data-background-color=light-blue2] .nav .nav-item a:hover .caret,.sidebar[data-background-color=light-blue2] .nav .nav-item a:hover i,.sidebar[data-background-color=light-blue2] .nav .nav-item a:hover p,.sidebar[data-background-color=light-blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=light-blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=light-blue2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#3697e1!important}.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a i,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a p,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=light-blue2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#3697e1!important}.sidebar[data-background-color=light-blue2] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=light-blue2] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=light-blue2] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=light-blue2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=light-blue2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=light-blue2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=green]{background:#31ce36!important}.sidebar[data-background-color=green] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=green] .user .info a>span{color:#fff}.sidebar[data-background-color=green] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=green] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=green] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=green] .nav .nav-item a .caret,.sidebar[data-background-color=green] .nav .nav-item a i,.sidebar[data-background-color=green] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=green] .nav .nav-item a:focus,.sidebar[data-background-color=green] .nav .nav-item a:hover,.sidebar[data-background-color=green] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=green] .nav .nav-item a:focus .caret,.sidebar[data-background-color=green] .nav .nav-item a:focus i,.sidebar[data-background-color=green] .nav .nav-item a:focus p,.sidebar[data-background-color=green] .nav .nav-item a:hover .caret,.sidebar[data-background-color=green] .nav .nav-item a:hover i,.sidebar[data-background-color=green] .nav .nav-item a:hover p,.sidebar[data-background-color=green] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=green] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=green] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=green] .nav>.nav-item.active>a,.sidebar[data-background-color=green] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=green] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=green] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#31ce36!important}.sidebar[data-background-color=green] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=green] .nav>.nav-item.active>a i,.sidebar[data-background-color=green] .nav>.nav-item.active>a p,.sidebar[data-background-color=green] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=green] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=green] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=green] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=green] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=green] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=green] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=green] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=green] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#31ce36!important}.sidebar[data-background-color=green] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=green] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=green] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=green] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=green] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=green] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=green2]{background:#2bb930!important}.sidebar[data-background-color=green2] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=green2] .user .info a>span{color:#fff}.sidebar[data-background-color=green2] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=green2] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=green2] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=green2] .nav .nav-item a .caret,.sidebar[data-background-color=green2] .nav .nav-item a i,.sidebar[data-background-color=green2] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=green2] .nav .nav-item a:focus,.sidebar[data-background-color=green2] .nav .nav-item a:hover,.sidebar[data-background-color=green2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=green2] .nav .nav-item a:focus .caret,.sidebar[data-background-color=green2] .nav .nav-item a:focus i,.sidebar[data-background-color=green2] .nav .nav-item a:focus p,.sidebar[data-background-color=green2] .nav .nav-item a:hover .caret,.sidebar[data-background-color=green2] .nav .nav-item a:hover i,.sidebar[data-background-color=green2] .nav .nav-item a:hover p,.sidebar[data-background-color=green2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=green2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=green2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=green2] .nav>.nav-item.active>a,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=green2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#2bb930!important}.sidebar[data-background-color=green2] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=green2] .nav>.nav-item.active>a i,.sidebar[data-background-color=green2] .nav>.nav-item.active>a p,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=green2] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=green2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=green2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=green2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#2bb930!important}.sidebar[data-background-color=green2] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=green2] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=green2] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=green2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=green2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=green2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=orange]{background:#ffad46!important}.sidebar[data-background-color=orange] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=orange] .user .info a>span{color:#fff}.sidebar[data-background-color=orange] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=orange] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=orange] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=orange] .nav .nav-item a .caret,.sidebar[data-background-color=orange] .nav .nav-item a i,.sidebar[data-background-color=orange] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=orange] .nav .nav-item a:focus,.sidebar[data-background-color=orange] .nav .nav-item a:hover,.sidebar[data-background-color=orange] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=orange] .nav .nav-item a:focus .caret,.sidebar[data-background-color=orange] .nav .nav-item a:focus i,.sidebar[data-background-color=orange] .nav .nav-item a:focus p,.sidebar[data-background-color=orange] .nav .nav-item a:hover .caret,.sidebar[data-background-color=orange] .nav .nav-item a:hover i,.sidebar[data-background-color=orange] .nav .nav-item a:hover p,.sidebar[data-background-color=orange] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=orange] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=orange] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=orange] .nav>.nav-item.active>a,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=orange] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#ffad46!important}.sidebar[data-background-color=orange] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=orange] .nav>.nav-item.active>a i,.sidebar[data-background-color=orange] .nav>.nav-item.active>a p,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=orange] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=orange] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=orange] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=orange] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#ffad46!important}.sidebar[data-background-color=orange] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=orange] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=orange] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=orange] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=orange] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=orange] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=orange2]{background:#ff9e27!important}.sidebar[data-background-color=orange2] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=orange2] .user .info a>span{color:#fff}.sidebar[data-background-color=orange2] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=orange2] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=orange2] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=orange2] .nav .nav-item a .caret,.sidebar[data-background-color=orange2] .nav .nav-item a i,.sidebar[data-background-color=orange2] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=orange2] .nav .nav-item a:focus,.sidebar[data-background-color=orange2] .nav .nav-item a:hover,.sidebar[data-background-color=orange2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=orange2] .nav .nav-item a:focus .caret,.sidebar[data-background-color=orange2] .nav .nav-item a:focus i,.sidebar[data-background-color=orange2] .nav .nav-item a:focus p,.sidebar[data-background-color=orange2] .nav .nav-item a:hover .caret,.sidebar[data-background-color=orange2] .nav .nav-item a:hover i,.sidebar[data-background-color=orange2] .nav .nav-item a:hover p,.sidebar[data-background-color=orange2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=orange2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=orange2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=orange2] .nav>.nav-item.active>a,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#ff9e27!important}.sidebar[data-background-color=orange2] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a i,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a p,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=orange2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#ff9e27!important}.sidebar[data-background-color=orange2] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=orange2] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=orange2] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=orange2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=orange2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=orange2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=red]{background:#f25961!important}.sidebar[data-background-color=red] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=red] .user .info a>span{color:#fff}.sidebar[data-background-color=red] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=red] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=red] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=red] .nav .nav-item a .caret,.sidebar[data-background-color=red] .nav .nav-item a i,.sidebar[data-background-color=red] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=red] .nav .nav-item a:focus,.sidebar[data-background-color=red] .nav .nav-item a:hover,.sidebar[data-background-color=red] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=red] .nav .nav-item a:focus .caret,.sidebar[data-background-color=red] .nav .nav-item a:focus i,.sidebar[data-background-color=red] .nav .nav-item a:focus p,.sidebar[data-background-color=red] .nav .nav-item a:hover .caret,.sidebar[data-background-color=red] .nav .nav-item a:hover i,.sidebar[data-background-color=red] .nav .nav-item a:hover p,.sidebar[data-background-color=red] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=red] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=red] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=red] .nav>.nav-item.active>a,.sidebar[data-background-color=red] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=red] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=red] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#f25961!important}.sidebar[data-background-color=red] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=red] .nav>.nav-item.active>a i,.sidebar[data-background-color=red] .nav>.nav-item.active>a p,.sidebar[data-background-color=red] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=red] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=red] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=red] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=red] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=red] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=red] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=red] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=red] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#f25961!important}.sidebar[data-background-color=red] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=red] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=red] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=red] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=red] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=red] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.sidebar[data-background-color=red2]{background:#ea4d56!important}.sidebar[data-background-color=red2] .user{margin-top:0;padding-top:12.5px;border-top:1px solid;border-color:rgba(255,255,255,.1)!important}.sidebar[data-background-color=red2] .user .info a>span{color:#fff}.sidebar[data-background-color=red2] .user .info a>span .user-level{color:#eaeaea}.sidebar[data-background-color=red2] .user .info .caret{border-top-color:#fff}.sidebar[data-background-color=red2] .nav .nav-item a{color:#eaeaea!important}.sidebar[data-background-color=red2] .nav .nav-item a .caret,.sidebar[data-background-color=red2] .nav .nav-item a i,.sidebar[data-background-color=red2] .nav .nav-item a p{color:#eaeaea!important}.sidebar[data-background-color=red2] .nav .nav-item a:focus,.sidebar[data-background-color=red2] .nav .nav-item a:hover,.sidebar[data-background-color=red2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true]{color:#fff!important}.sidebar[data-background-color=red2] .nav .nav-item a:focus .caret,.sidebar[data-background-color=red2] .nav .nav-item a:focus i,.sidebar[data-background-color=red2] .nav .nav-item a:focus p,.sidebar[data-background-color=red2] .nav .nav-item a:hover .caret,.sidebar[data-background-color=red2] .nav .nav-item a:hover i,.sidebar[data-background-color=red2] .nav .nav-item a:hover p,.sidebar[data-background-color=red2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=red2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=red2] .nav .nav-item a[data-toggle=collapse][aria-expanded=true] p{color:#fff!important}.sidebar[data-background-color=red2] .nav>.nav-item.active>a,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:focus,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:hover,.sidebar[data-background-color=red2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true]{background:#fff!important;color:#ea4d56!important}.sidebar[data-background-color=red2] .nav>.nav-item.active>a .caret,.sidebar[data-background-color=red2] .nav>.nav-item.active>a i,.sidebar[data-background-color=red2] .nav>.nav-item.active>a p,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:focus .caret,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:focus i,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:focus p,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:hover .caret,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:hover i,.sidebar[data-background-color=red2] .nav>.nav-item.active>a:hover p,.sidebar[data-background-color=red2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] .caret,.sidebar[data-background-color=red2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] i,.sidebar[data-background-color=red2] .nav>.nav-item.active>a[data-toggle=collapse][aria-expanded=true] p{color:#ea4d56!important}.sidebar[data-background-color=red2] .nav .nav-section .sidebar-mini-icon,.sidebar[data-background-color=red2] .nav .nav-section .text-section{color:#eaeaea}.sidebar[data-background-color=red2] .nav .nav-collapse li a .sub-item:before{background:#eaeaea}.sidebar[data-background-color=red2] .scrollbar-inner>.scroll-element .scroll-bar{background-color:#f7f7f7}.sidebar[data-background-color=red2] .scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.sidebar[data-background-color=red2] .scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#dcdbdb}.avatar{position:relative;display:inline-block}.avatar-img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.avatar-title{width:100%;height:100%;background-color:#6861ce;color:#fff;display:flex;align-items:center;justify-content:center}.avatar-away::before,.avatar-offline::before,.avatar-online::before{position:absolute;right:0;bottom:0;width:25%;height:25%;border-radius:50%;content:'';border:2px solid #fff}.avatar-online::before{background-color:#31ce36}.avatar-offline::before{background-color:#97a2b1}.avatar-away::before{background-color:#ffad46}.avatar{width:3rem;height:3rem}.avatar .border{border-width:3px!important}.avatar .rounded{border-radius:6px!important}.avatar .avatar-title{font-size:18px}.avatar-xs{width:1.65rem;height:1.65rem}.avatar-xs .border{border-width:2px!important}.avatar-xs .rounded{border-radius:4px!important}.avatar-xs .avatar-title{font-size:12px}.avatar-xs.avatar-away::before,.avatar-xs.avatar-offline::before,.avatar-xs.avatar-online::before{border-width:1px}.avatar-sm{width:2.5rem;height:2.5rem}.avatar-sm .border{border-width:3px!important}.avatar-sm .rounded{border-radius:4px!important}.avatar-sm .avatar-title{font-size:15px}.avatar-sm.avatar-away::before,.avatar-sm.avatar-offline::before,.avatar-sm.avatar-online::before{border-width:2px}.avatar-lg{width:3.75rem;height:3.75rem}.avatar-lg .border{border-width:3px!important}.avatar-lg .rounded{border-radius:8px!important}.avatar-lg .avatar-title{font-size:24px}.avatar-lg.avatar-away::before,.avatar-lg.avatar-offline::before,.avatar-lg.avatar-online::before{border-width:3px}.avatar-xl{width:5rem;height:5rem}.avatar-xl .border{border-width:4px!important}.avatar-xl .rounded{border-radius:8px!important}.avatar-xl .avatar-title{font-size:28px}.avatar-xl.avatar-away::before,.avatar-xl.avatar-offline::before,.avatar-xl.avatar-online::before{border-width:4px}.avatar-xxl{width:5.125rem;height:5.125rem}.avatar-xxl .border{border-width:6px!important}.avatar-xxl .rounded{border-radius:8px!important}.avatar-xxl .avatar-title{font-size:30px}.avatar-xxl.avatar-away::before,.avatar-xxl.avatar-offline::before,.avatar-xxl.avatar-online::before{border-width:4px}@media (min-width:768px){.avatar-xxl{width:8rem;height:8rem}.avatar-xxl .border{border-width:4px!important}.avatar-xxl .rounded{border-radius:12px!important}.avatar-xxl .avatar-title{font-size:42px}.avatar-xxl.avatar-away::before,.avatar-xxl.avatar-offline::before,.avatar-xxl.avatar-online::before{border-width:4px}}.avatar-group{display:inline-flex}.avatar-group .avatar+.avatar{margin-left:-.75rem}.avatar-group .avatar-xs+.avatar-xs{margin-left:-.40625rem}.avatar-group .avatar-sm+.avatar-sm{margin-left:-.625rem}.avatar-group .avatar-lg+.avatar-lg{margin-left:-1rem}.avatar-group .avatar-xl+.avatar-xl{margin-left:-1.28125rem}.avatar-group .avatar:hover{z-index:1}.border-dark{border-color:#202940!important}.breadcrumbs{list-style:none;display:inline;width:auto;border-left:1px solid #efefef;margin-left:25px;padding-left:25px;margin-bottom:0;padding-top:8px;padding-bottom:8px;height:100%}.breadcrumbs li{display:inline-block}.breadcrumbs li a{color:#575962;font-size:13px}.breadcrumbs li a i{font-size:16px}.breadcrumbs li a:hover{text-decoration:none}.breadcrumbs li.separator{padding-left:10px;padding-right:10px;font-size:12px}.card,.card-light{border-radius:5px;background-color:#fff;margin-bottom:30px;-webkit-box-shadow:2px 6px 15px 0 rgba(69,65,78,.1);-moz-box-shadow:2px 6px 15px 0 rgba(69,65,78,.1);box-shadow:2px 6px 15px 0 rgba(69,65,78,.1);border:0}.card .card-header,.card-light .card-header{padding:1rem 1.25rem;background-color:transparent;border-bottom:1px solid #ebecec!important}.card .card-header:first-child,.card-light .card-header:first-child{border-radius:0}.card .card-header .card-head-row,.card-light .card-header .card-head-row{display:flex;align-items:center}.card .card-header .card-head-row .card-tools,.card-light .card-header .card-head-row .card-tools{margin-left:auto;float:right;padding-left:15px}.card .separator-solid,.card-light .separator-solid{border-top:1px solid #ebecec;margin:15px 0}.card .separator-dashed,.card-light .separator-dashed{border-top:1px dashed #ebecec;margin:15px 0}.card .separator-dot,.card-light .separator-dot{border-top:1px dotted #ebecec;margin:15px 0}.card .full-width-separator,.card-light .full-width-separator{margin:15px -20px 15px}.card .b-b1,.card-light .b-b1{border-bottom:1px solid rgba(255,255,255,.3)}.card .card-body,.card-light .card-body{padding:1.25rem}.card .card-footer,.card-light .card-footer{background-color:transparent;line-height:30px;border-top:1px solid #ebecec!important;font-size:13px}.card .pull-in,.card-light .pull-in{margin-left:-1.25rem;margin-right:-1.25rem}.card .pull-in.sparkline-fix,.card-light .pull-in.sparkline-fix{margin-left:-1.35rem;margin-right:-1.35rem;margin-bottom:-3px}.card .chart-as-background,.card-light .chart-as-background{position:absolute;bottom:0;width:calc(100% + 2px)}.card .card-action,.card-light .card-action{padding:30px;background-color:transparent;line-height:30px;border-top:1px solid #ebecec!important;font-size:14px}.card .card-footer hr,.card-light .card-footer hr{margin-top:5px;margin-bottom:5px}.card .card-footer .legend,.card-light .card-footer .legend{display:inline-block}@media screen and (max-width:476px){.card .card-header .card-head-row:not(.card-tools-still-right){flex-direction:column;align-items:unset}.card .card-header .card-head-row:not(.card-tools-still-right) .card-tools{margin-left:0;float:left;padding-left:0;padding-top:10px}}.card.full-height{height:calc(100% - 30px)}.card-space{padding:0 30px}.card-space>.card-action,.card-space>.card-body,.card-space>.card-footer,.card-space>.card-header{padding-left:0!important;padding-right:0!important}.card-with-nav .card-header{border-bottom:0!important;padding-top:0!important;padding-bottom:0!important}.card-with-nav .card-body{padding:15px 25px!important}.card-list{padding:10px 0}.card-list .item-list{display:flex;flex-direction:row;padding:10px 0;align-items:center}.card-list .item-list .info-user{flex:1}.card-list .item-list .info-user .username,.card-list .item-list .info-user a.username{color:#1572e8;font-size:13px;margin-bottom:5px;font-weight:400}.card-list .item-list .info-user .status{font-size:11px;color:#7d7b7b}.card-title{margin:0;color:#575962;font-size:20px;font-weight:400;line-height:1.6}.card-title a,.card-title a:focus,.card-title a:hover{color:#575962;text-decoration:none}.card-sub{display:block;margin:5px 0 10px 0;font-size:.9rem;background:#f7f8fa;color:#575962;padding:.85rem 1.5rem;border-radius:4px;line-height:1.82}.card-category{margin-top:8px;font-size:14px;color:#8d9498;margin-bottom:0;word-break:normal}label{font-size:14px;font-weight:400;color:#8d9498;margin-bottom:0}.card-transparent{background:0 0!important;box-shadow:none;border-color:transparent!important}.card-stats .card-body{padding:15px!important}.card-stats .card-title{margin-bottom:0!important}.card-stats .card-category{margin-top:0}.card-stats .col-icon{width:65px;height:65px;margin-left:15px}.card-stats .icon-big{width:100%;height:100%;font-size:2.2em;min-height:64px;display:flex;align-items:center;justify-content:center}.card-stats .icon-big.icon-danger,.card-stats .icon-big.icon-default,.card-stats .icon-big.icon-info,.card-stats .icon-big.icon-primary,.card-stats .icon-big.icon-secondary,.card-stats .icon-big.icon-success,.card-stats .icon-big.icon-warning{border-radius:5px}.card-stats .icon-big.icon-danger i,.card-stats .icon-big.icon-default i,.card-stats .icon-big.icon-info i,.card-stats .icon-big.icon-primary i,.card-stats .icon-big.icon-secondary i,.card-stats .icon-big.icon-success i,.card-stats .icon-big.icon-warning i{color:#fff!important}.card-stats .icon-big.icon-default{background:#1a2035}.card-stats .icon-big.icon-primary{background:#1572e8}.card-stats .icon-big.icon-secondary{background:#6861ce}.card-stats .icon-big.icon-success{background:#31ce36}.card-stats .icon-big.icon-warning{background:#ffad46}.card-stats .icon-big.icon-info{background:#48abf7}.card-stats .icon-big.icon-danger{background:#f25961}.card-stats .icon-big.round{border-radius:50%!important}.card-stats .col-stats{align-items:center;display:flex;padding-left:15px}.card-tasks .table{margin-bottom:0}.card-tasks .table .form-check{padding:0 0 0 .75rem!important}.card-tasks .table .form-check label{margin-bottom:0!important}.card-tasks .table tbody td:first-child,.card-tasks .table thead th:first-child{padding-left:15px;padding-right:15px}.card-tasks .table tbody td:last-child,.card-tasks .table thead th:last-child{padding-right:15px}.card-tasks .table tbody tr:last-child td{border-bottom-width:0!important}.card-tasks .card-body{padding-top:0;padding-bottom:0}.card-tasks .card-body .table td{font-size:13px}.card-tasks .card-body .table td .btn{font-size:15px;opacity:.7;transition:all .3s}.card-tasks .card-body .table td:hover .btn{opacity:1}.card-tasks .form-button-action{display:block!important}.card-danger,.card-dark,.card-default,.card-info,.card-primary,.card-secondary,.card-success,.card-warning{color:#fff;border:0}.card-danger .card-header,.card-dark .card-header,.card-default .card-header,.card-info .card-header,.card-primary .card-header,.card-secondary .card-header,.card-success .card-header,.card-warning .card-header{border-bottom:transparent!important}.card-danger .card-category,.card-danger .card-title,.card-danger label,.card-dark .card-category,.card-dark .card-title,.card-dark label,.card-default .card-category,.card-default .card-title,.card-default label,.card-info .card-category,.card-info .card-title,.card-info label,.card-primary .card-category,.card-primary .card-title,.card-primary label,.card-secondary .card-category,.card-secondary .card-title,.card-success .card-category,.card-success .card-title,.card-success label,.card-warning .card-category,.card-warning .card-title,.card-warning label{color:#fff}.card-danger .icon-big>i,.card-dark .icon-big>i,.card-default .icon-big>i,.card-info .icon-big>i,.card-primary .icon-big>i,.card-secondary .icon-big>i,.card-success .icon-big>i,.card-warning .icon-big>i{color:#fff!important}.card-danger .card-footer,.card-dark .card-footer,.card-default .card-footer,.card-info .card-footer,.card-primary .card-footer,.card-secondary .card-footer,.card-success .card-footer,.card-warning .card-footer{border-top:transparent!important}.card-default{background:#1a2035!important}.card-primary{background:#1572e8!important}.card-secondary{background:#6861ce!important}.card-info{background:#48abf7!important}.card-success{background:#31ce36!important}.card-warning{background:#ffad46!important}.card-danger{background:#f25961!important}.card-round{border-radius:5px}.progress-card{margin-bottom:25px}.progress-card .progress-status{display:flex;margin-bottom:10px;-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.card-post .info-post .username{margin-bottom:0;font-weight:600}.card-post .info-post .date{margin-bottom:0}.card-pricing{padding:20px 5px;text-align:center;border-radius:5px}.card-pricing .card-header{border-bottom:0!important}.card-pricing .card-footer{border-top:0!important;padding:15px 15px 10px 15px}.card-pricing .card-title{font-weight:400;font-size:20px}.card-pricing .card-price .price{font-size:36px;font-weight:400}.card-pricing .card-price .text{font-size:18px;font-weight:400;color:#d1d7e3}.card-pricing .specification-list{list-style:none;padding-left:0}.card-pricing .specification-list li{padding:8px 0 12px;border-bottom:1px solid #eee;text-align:left;font-size:12px;margin-bottom:5px}.card-pricing .specification-list li .name-specification{color:#83848a}.card-pricing .specification-list li .status-specification{margin-left:auto;float:right;font-weight:400}.card-pricing.card-pricing-focus{padding:40px 5px}.card-pricing.card-danger .name-specification,.card-pricing.card-default .name-specification,.card-pricing.card-info .name-specification,.card-pricing.card-primary .name-specification,.card-pricing.card-secondary .name-specification,.card-pricing.card-success .name-specification,.card-pricing.card-warning .name-specification{color:#fff!important}.card-pricing.card-primary .specification-list li{border-color:#2f8bff!important}.card-pricing.card-primary .btn-light{color:#1572e8!important}.card-pricing.card-success .specification-list li{border-color:#64e069!important}.card-pricing.card-success .btn-light{color:#31ce36!important}.card-pricing.card-secondary .specification-list li{border-color:#7f77dc!important}.card-pricing.card-secondary .btn-light{color:#6861ce!important}.card-pricing.card-default .specification-list li{border-color:#6f8996!important}.card-pricing.card-default .btn-light{color:#1a2035!important}.card-pricing.card-info .specification-list li{border-color:#11c0e4!important}.card-pricing.card-info .btn-light{color:#48abf7!important}.card-pricing.card-danger .specification-list li{border-color:#ff6972!important}.card-pricing.card-danger .btn-light{color:#f25961!important}.card-pricing.card-warning .specification-list li{border-color:#ffbc67!important}.card-pricing.card-warning .btn-light{color:#ffad46!important}.card-pricing2{padding-bottom:10px;background:#fff!important;border-bottom:7px solid;text-align:center;overflow:hidden;position:relative;border-radius:5px;-webkit-box-shadow:0 1px 15px 1px rgba(69,65,78,.08);-moz-box-shadow:0 1px 15px 1px rgba(69,65,78,.08);box-shadow:0 1px 15px 1px rgba(69,65,78,.08)}.card-pricing2:before{content:"";width:100%;height:350px;position:absolute;top:-150px;left:0;transform:skewY(-20deg)}.card-pricing2 .price-value:after,.card-pricing2 .price-value:before{content:"";left:50%;transform:translateX(-50%) scaleY(.5) rotate(45deg)}.card-pricing2 .value:after,.card-pricing2 .value:before{content:"";left:50%;transform:translateX(-50%) scaleY(.5) rotate(45deg)}.card-pricing2 .pricing-header{padding:20px 20px 60px;text-align:left;position:relative}.card-pricing2 .sub-title{display:block;font-size:16px}.card-pricing2 .value{background:#fff}.card-pricing2 .price-value{display:inline-block;width:170px;height:110px;padding:15px;border:2px solid;border-top:none;border-bottom:none;position:relative}.card-pricing2 .price-value:after,.card-pricing2 .price-value:before{width:121px;height:121px;border:3px solid;border-right:none;border-bottom:none;position:absolute;top:-60px}.card-pricing2 .price-value:after{border-top:none;border-left:none;border-bottom:3px solid;border-right:3px solid;top:auto;bottom:-60px}.card-pricing2 .value{width:100%;height:100%;border:2px solid;border-top:none;border-bottom:none;z-index:1;position:relative}.card-pricing2 .value:after,.card-pricing2 .value:before{width:97px;height:97px;background:#fff;border:3px solid;border-bottom:none;border-right:none;position:absolute;top:-48px;z-index:-1}.card-pricing2 .value:after{border-right:3px solid;border-bottom:3px solid;border-top:none;border-left:none;top:auto;bottom:-48px}.card-pricing2 .currency{display:inline-block;font-size:30px;margin-top:7px;vertical-align:top}.card-pricing2 .amount{display:inline-block;font-size:40px;font-weight:600;line-height:65px}.card-pricing2 .amount span{display:inline-block;font-size:30px;font-weight:400;vertical-align:top;margin-top:-7px}.card-pricing2 .month{display:block;font-size:16px;line-height:0}.card-pricing2 .pricing-content{padding:50px 0 0 80px;margin-bottom:20px;list-style:none;text-align:left;transition:all .3s ease 0s}.card-pricing2 .pricing-content li{padding:7px 0;font-size:13px;color:grey;position:relative}.card-pricing2 .pricing-content li.disable:before,.card-pricing2 .pricing-content li:before{content:"\f00c";font-family:'Font Awesome 5 Solid';font-weight:900;width:20px;height:20px;line-height:20px;border-radius:50%;background:#98c458;text-align:center;color:#fff;position:absolute;left:-50px;font-size:9px}.card-pricing2 .pricing-content li.disable:before{content:"\f00d";background:#fe6c6c}.card-pricing2.card-default{border-bottom-color:#1a2035}.card-pricing2.card-default .price-value:before,.card-pricing2.card-default .value:before{border-left-color:#1a2035;border-top-color:#1a2035}.card-pricing2.card-default .price-value,.card-pricing2.card-default .value{border-right-color:#1a2035}.card-pricing2.card-default .price-value:after,.card-pricing2.card-default .value:after{border-right-color:#1a2035}.card-pricing2.card-default .price-value:after,.card-pricing2.card-default .value:after{border-bottom-color:#1a2035}.card-pricing2.card-default .value{color:#1a2035}.card-pricing2.card-default:before{background:#1a2035}.card-pricing2.card-default .price-value,.card-pricing2.card-default .value{border-left-color:#1a2035}.card-pricing2.card-primary{border-bottom-color:#1572e8}.card-pricing2.card-primary .price-value:before,.card-pricing2.card-primary .value:before{border-left-color:#1572e8;border-top-color:#1572e8}.card-pricing2.card-primary .price-value,.card-pricing2.card-primary .value{border-right-color:#1572e8}.card-pricing2.card-primary .price-value:after,.card-pricing2.card-primary .value:after{border-right-color:#1572e8}.card-pricing2.card-primary .price-value:after,.card-pricing2.card-primary .value:after{border-bottom-color:#1572e8}.card-pricing2.card-primary .value{color:#1572e8}.card-pricing2.card-primary:before{background:#1572e8}.card-pricing2.card-primary .price-value,.card-pricing2.card-primary .value{border-left-color:#1572e8}.card-pricing2.card-secondary{border-bottom-color:#6861ce}.card-pricing2.card-secondary .price-value:before,.card-pricing2.card-secondary .value:before{border-left-color:#6861ce;border-top-color:#6861ce}.card-pricing2.card-secondary .price-value,.card-pricing2.card-secondary .value{border-right-color:#6861ce}.card-pricing2.card-secondary .price-value:after,.card-pricing2.card-secondary .value:after{border-right-color:#6861ce}.card-pricing2.card-secondary .price-value:after,.card-pricing2.card-secondary .value:after{border-bottom-color:#6861ce}.card-pricing2.card-secondary .value{color:#6861ce}.card-pricing2.card-secondary:before{background:#6861ce}.card-pricing2.card-secondary .price-value,.card-pricing2.card-secondary .value{border-left-color:#6861ce}.card-pricing2.card-info{border-bottom-color:#48abf7}.card-pricing2.card-info .price-value:before,.card-pricing2.card-info .value:before{border-left-color:#48abf7;border-top-color:#48abf7}.card-pricing2.card-info .price-value,.card-pricing2.card-info .value{border-right-color:#48abf7}.card-pricing2.card-info .price-value:after,.card-pricing2.card-info .value:after{border-right-color:#48abf7}.card-pricing2.card-info .price-value:after,.card-pricing2.card-info .value:after{border-bottom-color:#48abf7}.card-pricing2.card-info .value{color:#48abf7}.card-pricing2.card-info:before{background:#48abf7}.card-pricing2.card-info .price-value,.card-pricing2.card-info .value{border-left-color:#48abf7}.card-pricing2.card-success{border-bottom-color:#31ce36}.card-pricing2.card-success .price-value:before,.card-pricing2.card-success .value:before{border-left-color:#31ce36;border-top-color:#31ce36}.card-pricing2.card-success .price-value,.card-pricing2.card-success .value{border-right-color:#31ce36}.card-pricing2.card-success .price-value:after,.card-pricing2.card-success .value:after{border-right-color:#31ce36}.card-pricing2.card-success .price-value:after,.card-pricing2.card-success .value:after{border-bottom-color:#31ce36}.card-pricing2.card-success .value{color:#31ce36}.card-pricing2.card-success:before{background:#31ce36}.card-pricing2.card-success .price-value,.card-pricing2.card-success .value{border-left-color:#31ce36}.card-pricing2.card-warning{border-bottom-color:#ffad46}.card-pricing2.card-warning .price-value:before,.card-pricing2.card-warning .value:before{border-left-color:#ffad46;border-top-color:#ffad46}.card-pricing2.card-warning .price-value,.card-pricing2.card-warning .value{border-right-color:#ffad46}.card-pricing2.card-warning .price-value:after,.card-pricing2.card-warning .value:after{border-right-color:#ffad46}.card-pricing2.card-warning .price-value:after,.card-pricing2.card-warning .value:after{border-bottom-color:#ffad46}.card-pricing2.card-warning .value{color:#ffad46}.card-pricing2.card-warning:before{background:#ffad46}.card-pricing2.card-warning .price-value,.card-pricing2.card-warning .value{border-left-color:#ffad46}.card-pricing2.card-danger{border-bottom-color:#f25961}.card-pricing2.card-danger .price-value:before,.card-pricing2.card-danger .value:before{border-left-color:#f25961;border-top-color:#f25961}.card-pricing2.card-danger .price-value,.card-pricing2.card-danger .value{border-right-color:#f25961}.card-pricing2.card-danger .price-value:after,.card-pricing2.card-danger .value:after{border-right-color:#f25961}.card-pricing2.card-danger .price-value:after,.card-pricing2.card-danger .value:after{border-bottom-color:#f25961}.card-pricing2.card-danger .value{color:#f25961}.card-pricing2.card-danger:before{background:#f25961}.card-pricing2.card-danger .price-value,.card-pricing2.card-danger .value{border-left-color:#f25961}.row-cardProduct{padding:0 5px;white-space:nowrap;overflow-x:auto;display:block!important;margin-right:-2rem;width:unset!important}.col-cardProduct{width:225px;padding:0 10px;display:inline-block}.card-product{background:#fff;border-radius:5px;overflow:hidden;box-shadow:0 7px 15px rgba(0,0,0,.12);margin-bottom:15px}.card-product .product-summary{padding:15px}@media screen and (max-width:768px){.col-cardProduct{width:175px}.card-product .title-product{font-size:14px}.card-product .price-product{font-size:18px}}.skew-shadow{position:relative;overflow:hidden}.skew-shadow:before{content:'';position:absolute;background:rgba(255,255,255,.1);width:50%;min-width:150px;height:100%;top:0;right:-25%;transform:skewX(-32.5deg)}.bubble-shadow{position:relative;overflow:hidden}.bubble-shadow:before{position:absolute;top:-10%;right:-140px;width:300px;height:300px;content:"";border-radius:50%;background:rgba(255,255,255,.05)}.bubble-shadow:after{position:absolute;top:-65px;right:80px;width:150px;height:150px;content:"";border-radius:50%;background:rgba(255,255,255,.05)}.curves-shadow{position:relative;overflow:hidden}.curves-shadow:before{content:'';position:absolute;background:url(../img/img-shadow.png);background-size:cover;width:100%;height:100%;top:0;left:0}@media only screen and (max-width:990px){.card-pricing2{margin-bottom:30px}}@media only screen and (max-width:767px){.card-pricing2:before{transform:skewY(-15deg)}}.card-annoucement .card-body{padding:50px 25px}.card-annoucement .card-opening{font-size:20px;font-weight:400;letter-spacing:.01em}.card-annoucement .card-desc{padding:15px 0;font-size:16px;line-height:1.65;font-weight:300}.card-annoucement.card-primary .btn-light{color:#1572e8!important}.card-annoucement.card-success .btn-light{color:#31ce36!important}.card-annoucement.card-secondary .btn-light{color:#6861ce!important}.card-annoucement.card-default .btn-light{color:#1a2035!important}.card-annoucement.card-info .btn-light{color:#48abf7!important}.card-annoucement.card-danger .btn-light{color:#f25961!important}.card-annoucement.card-warning .btn-light{color:#ffad46!important}.card-profile{color:#575962}.card-profile .profile-picture{text-align:center;position:absolute;margin:0 auto;left:0;right:0;bottom:-41px;width:100%;box-sizing:border-box}.card-profile .user-profile .name{font-size:20px;font-weight:400;margin-bottom:5px}.card-profile .user-profile .job{color:#83848a;margin-bottom:5px}.card-profile .user-profile .desc{color:#bbb;margin-bottom:15px}.card-profile .user-profile .social-media{margin-bottom:20px}.card-profile .user-profile .social-media .btn{padding:5px!important}.card-profile .user-profile .social-media .btn i{font-size:22px!important}.card-profile .user-stats{margin-bottom:10px}.card-profile .user-stats [class^=col]{border-right:1px solid #ebebeb}.card-profile .user-stats [class^=col]:last-child{border-right:0}.card-profile .user-stats .number{font-weight:400;font-size:15px}.card-profile .user-stats .title{color:#7d7b7b}.card-profile .card-header{border-bottom:0;height:100px;position:relative}.card-profile .card-body{padding-top:60px}.card-profile .card-footer{border-top:0}.card-profile.card-secondary .card-header{background:#6861ce}.row-card-no-pd{border-radius:5px;margin-left:0;margin-right:0;background:#fff;margin-bottom:30px;padding-top:15px;padding-bottom:15px;position:relative;-webkit-box-shadow:2px 6px 15px 0 rgba(69,65,78,.1);-moz-box-shadow:2px 6px 15px 0 rgba(69,65,78,.1);box-shadow:2px 6px 15px 0 rgba(69,65,78,.1);border:0}.row-card-no-pd .card{margin-bottom:0;border-width:0;box-shadow:none;position:unset}.row-card-no-pd .card .card-header{padding-left:0!important;padding-top:0!important;padding-right:0!important}.row-card-no-pd [class*=col] .card:before{position:absolute;height:calc(100%);width:1px;background:#eee;content:'';right:0}.row-card-no-pd [class*=col]:last-child .card:before{width:0}.accordion .card{border-radius:5px!important;background:#f7f7f7!important;color:#575962!important;border:0;box-shadow:none}.accordion .card .span-icon{font-size:22px;padding-left:15px;padding-right:15px}.accordion .card>.card-header{border:0!important;display:flex;flex-direction:row;align-items:center;cursor:pointer;border-radius:0!important}.accordion .card>.card-header>.span-mode{margin-left:auto}.accordion .card>.card-header>.span-mode:before{content:"\f068"!important;font-family:'Font Awesome 5 Solid';font-weight:900;font-size:16px}.accordion .card>.card-header.collapsed>.span-mode:before{content:"\f067"!important}.accordion .card .card-body{border-top:1px solid #ebebeb;padding:30px}.accordion.accordion-danger .card .card-header,.accordion.accordion-danger .card .card-header .btn-link,.accordion.accordion-default .card .card-header,.accordion.accordion-default .card .card-header .btn-link,.accordion.accordion-info .card .card-header,.accordion.accordion-info .card .card-header .btn-link,.accordion.accordion-primary .card .card-header,.accordion.accordion-primary .card .card-header .btn-link,.accordion.accordion-secondary .card .card-header,.accordion.accordion-secondary .card .card-header .btn-link,.accordion.accordion-success .card .card-header,.accordion.accordion-success .card .card-header .btn-link,.accordion.accordion-warning .card .card-header,.accordion.accordion-warning .card .card-header .btn-link{font-size:14px}.accordion.accordion-default .card .card-header{color:#1a2035}.accordion.accordion-default .card .card-header .btn-link{color:#1a2035!important}.accordion.accordion-primary .card .card-header{color:#1572e8}.accordion.accordion-primary .card .card-header .btn-link{color:#1572e8!important}.accordion.accordion-secondary .card .card-header{color:#6861ce}.accordion.accordion-secondary .card .card-header .btn-link{color:#6861ce!important}.accordion.accordion-info .card .card-header{color:#48abf7}.accordion.accordion-info .card .card-header .btn-link{color:#48abf7!important}.accordion.accordion-success .card .card-header{color:#31ce36}.accordion.accordion-success .card .card-header .btn-link{color:#31ce36!important}.accordion.accordion-warning .card .card-header{color:#ffad46}.accordion.accordion-warning .card .card-header .btn-link{color:#ffad46!important}.accordion.accordion-danger .card .card-header{color:#f25961}.accordion.accordion-danger .card .card-header .btn-link{color:#f25961!important}.border-transparent{border-color:transparent!important}.gutters-0{margin-right:0;margin-left:0}.gutters-0>.col,.gutters-0>[class*=col-]{padding-right:0;padding-left:0}.gutters-0 .card{margin-bottom:0}.gutters-xs{margin-right:-.25rem;margin-left:-.25rem}.gutters-xs>.col,.gutters-xs>[class*=col-]{padding-right:.25rem;padding-left:.25rem}.gutters-xs .card{margin-bottom:.5rem}.gutters-sm{margin-right:-.5rem;margin-left:-.5rem}.gutters-sm>.col,.gutters-sm>[class*=col-]{padding-right:.5rem;padding-left:.5rem}.gutters-sm .card{margin-bottom:1rem}.gutters-lg{margin-right:-1rem;margin-left:-1rem}.gutters-lg>.col,.gutters-lg>[class*=col-]{padding-right:1rem;padding-left:1rem}.gutters-lg .card{margin-bottom:2rem}.gutters-xl{margin-right:-1.5rem;margin-left:-1.5rem}.gutters-xl>.col,.gutters-xl>[class*=col-]{padding-right:1.5rem;padding-left:1.5rem}.gutters-xl .card{margin-bottom:3rem}.stamp{color:#fff;background:#6861ce;display:inline-block;min-width:2rem;height:2rem;padding:0 .25rem;line-height:2rem;text-align:center;border-radius:3px;font-weight:600}.stamp-md{min-width:2.5rem;height:2.5rem;line-height:2.5rem}.form-control{font-size:14px;border-color:#ebedf2;padding:.6rem 1rem;height:inherit!important}.form-control:focus{border-color:#3e93ff}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem!important;font-size:1.25rem!important}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem!important;font-size:.875rem!important;line-height:1.5}.form-control::-webkit-input-placeholder{color:inherit;opacity:.7}.form-control:-moz-placeholder{color:inherit;opacity:.7}.form-control::-moz-placeholder{color:inherit;opacity:.7}.form-control:-ms-input-placeholder{color:inherit;opacity:.7}.form-control::-ms-input-placeholder{color:inherit;opacity:.7}.input-group-text{border-color:#ebedf2!important}.form-button-action{display:inline-flex}.form-check-label,.form-radio-label{margin-right:15px}.select-all-checkbox+.form-check-sign:before{background:#ccc!important;border-color:#ccc!important}.form-check [type=checkbox]:checked,.form-check [type=checkbox]:not(:checked){position:absolute;left:-9999px}.form-check [type=checkbox]+.form-check-sign,.form-check [type=checkbox]:checked+.form-check-sign,.form-check [type=checkbox]:not(:checked)+.form-check-sign{position:relative;padding-left:2em;color:#575962;cursor:pointer}.form-check [type=checkbox]+.form-check-sign:before,.form-check [type=checkbox]:checked+.form-check-sign:before,.form-check [type=checkbox]:not(:checked)+.form-check-sign:before{content:'';position:absolute;left:0;top:1px;width:16px;height:16px;border:1px solid #ccc;background:0 0;border-radius:4px}.form-check [type=checkbox]+.form-check-sign:after,.form-check [type=checkbox]:checked+.form-check-sign:after,.form-check [type=checkbox]:not(:checked)+.form-check-sign:after{content:"\f00c";display:inline-block;position:absolute;top:-1px;left:2px;width:18px;height:18px;text-align:center;font-size:1.3em;line-height:.8;color:#1572e8;transition:all .2s;font-family:'Font Awesome 5 Solid'}.form-check [type=checkbox]:not(:checked)+.form-check-sign:after{opacity:0;transform:scale(0)}.form-check [type=checkbox]:checked+.form-check-sign{font-weight:400}.form-check [type=checkbox]:checked+.form-check-sign:after{opacity:1;transform:scale(1)}.form-check [type=checkbox]:disabled:not(:checked)+.form-check-sign:before{box-shadow:none;border-color:#bbb;background-color:#ddd}.form-check [type=checkbox]:disabled:checked+.form-check-sign:before{box-shadow:none;border-color:#bbb;background-color:#ddd}.form-check [type=checkbox]:disabled:checked+.form-check-sign:after{color:#999}.form-check [type=checkbox]:disabled+.form-check-sign{color:#aaa}.form-check [type=checkbox]:checked:focus+.form-check-sign:before,.form-check [type=checkbox]:not(:checked):focus+.form-check-sign:before{border:1px solid #ccc}.form-check-sign:hover:before{border:1px solid #ccc!important}.form-check{padding-left:.75rem}.form-check-input{position:relative;margin-top:.3rem}.form-radio [type=radio]:checked,.form-radio [type=radio]:not(:checked){position:absolute;left:-9999px}.form-radio [type=radio]:checked+.form-radio-sign,.form-radio [type=radio]:not(:checked)+.form-radio-sign{color:#575962;position:relative;padding-left:2em;cursor:pointer;line-height:22px;font-weight:400}.form-radio [type=radio]:not(:checked)+.form-radio-sign:before{content:"\f18a";font-size:22px;font-family:LineAwesome;position:absolute;left:0;top:auto;background:0 0;line-height:1;color:#bbb}.form-radio [type=radio]:checked+.form-radio-sign:before{content:"\f18a";font-size:22px;font-family:LineAwesome;position:absolute;left:0;top:auto;background:0 0;line-height:1;display:none}.form-radio [type=radio]:checked+.form-radio-sign:after,.form-radio [type=radio]:not(:checked)+.form-radio-sign:after{content:"\f1bc";position:absolute;left:0;top:auto;text-align:center;font-size:22px;color:#4d7cfe;transition:all .2s;line-height:1;font-family:LineAwesome}.form-radio [type=radio]:not(:checked)+.form-radio-sign:after{opacity:0;transform:scale(0)}.form-radio [type=radio]:checked+.form-radio-sign{font-weight:400}.form-radio [type=radio]:checked+.form-radio-sign:after{opacity:1;transform:scale(1)}.form-radio [type=radio]:disabled:not(:checked)+.form-radio-sign:before{box-shadow:none;opacity:.65}.form-radio [type=radio]:disabled:checked+.form-radio-sign:before{box-shadow:none;opacity:.65}.form-radio [type=radio]:disabled:checked+.form-radio-sign:after{opacity:.65}.form-radio [type=radio]:disabled+.form-radio-sign{color:#aaa;opacity:.65}.form-radio [type=radio]:checked:focus+.form-radio-sign:before,.form-radio [type=radio]:not(:checked):focus+.form-radio-sign:before{border:1px solid #ccc}.form-radio{padding-left:.75rem}.form-radio-input{position:relative;margin-top:.3rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#1572e8}.custom-checkbox.checkbox-default .custom-control-input:checked~.custom-control-label::before{background-color:#1a2035}.custom-checkbox.checkbox-primary .custom-control-input:checked~.custom-control-label::before{background-color:#1572e8}.custom-checkbox.checkbox-secondary .custom-control-input:checked~.custom-control-label::before{background-color:#6861ce}.custom-checkbox.checkbox-info .custom-control-input:checked~.custom-control-label::before{background-color:#48abf7}.custom-checkbox.checkbox-success .custom-control-input:checked~.custom-control-label::before{background-color:#31ce36}.custom-checkbox.checkbox-warning .custom-control-input:checked~.custom-control-label::before{background-color:#ffad46}.custom-checkbox.checkbox-danger .custom-control-input:checked~.custom-control-label::before{background-color:#f25961}.col-form-label{line-height:1.8}.required-label{color:red}.label-align-left{text-align:left}.label-align-right{text-align:right}.label-align-center{text-align:center}.form-check,.form-group{margin-bottom:0;padding:10px}.form-check label,.form-group label{margin-bottom:.5rem;color:#495057;font-weight:600;font-size:1rem;white-space:nowrap}.form-group-default{background-color:#fff;border:1px solid rgba(0,0,0,.07);border-radius:4px;padding-top:7px;padding-left:12px;padding-right:12px;padding-bottom:4px;overflow:hidden;width:100%;-webkit-transition:background-color .2s ease;transition:background-color .2s ease;margin-bottom:15px}.form-group-default label{opacity:1;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;margin:0;display:block;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.form-group-default label:not(.error){font-size:10.5px!important;letter-spacing:.06em;text-transform:uppercase;font-weight:400}.form-group-default .form-control{border:0;min-height:25px;padding:0;margin-top:6px;background:0 0;font-size:14px}.form-group-default select.form-control:not([size]):not([multiple]){height:unset!important}.form-group-default.active{border-color:rgba(0,0,0,.1)!important;background-color:#f0f0f0}.form-group-default.active label{opacity:.5}.form-floating-label{position:relative}.form-floating-label .placeholder{position:absolute;padding:.375rem .75rem;transition:all .2s;opacity:.8;margin-bottom:0!important;font-size:14px!important;font-weight:400;top:12px}.form-floating-label .form-control.filled+.placeholder,.form-floating-label .form-control:focus+.placeholder,.form-floating-label .form-control:valid+.placeholder{font-size:85%!important;transform:translate3d(0,-10px,0);top:0;opacity:1;padding:.375rem 0 .75rem;font-weight:600}.form-floating-label .form-control.filled+.placeholder{color:#1572e8!important}.form-floating-label .form-control ::-webkit-input-placeholder{color:transparent}.form-floating-label .form-control :-moz-placeholder{color:transparent}.form-floating-label .form-control ::-moz-placeholder{color:transparent}.form-floating-label .form-control :-ms-input-placeholder{color:transparent}.form-floating-label .input-border-bottom+.placeholder{padding:.375rem 0 .75rem}.form-inline label{margin-bottom:0!important}.input-fixed{width:200px}.form-control.input-full{width:100%!important}.has-success label{color:#31ce36!important}.has-success .form-control{border-color:#31ce36!important;color:#31ce36!important}.has-success .input-group-text{border-color:#31ce36!important;background:#31ce36!important;color:#fff!important}.has-error label{color:#f25961!important}.has-error .form-control{border-color:#f25961!important;color:#f25961!important}.has-error .input-group-text{border-color:#f25961!important;background:#f25961!important;color:#fff!important}.input-group label.error,.input-group label.success{width:100%;order:100}.custom-control{position:relative}.custom-control.custom-checkbox,.custom-control.custom-radio{margin-bottom:0;padding-left:2em;cursor:pointer;line-height:24px;margin-right:25px;display:inline-block}.custom-control.custom-checkbox label.error,.custom-control.custom-checkbox label.success,.custom-control.custom-radio label.error,.custom-control.custom-radio label.success{position:absolute;width:100vh;top:23px;left:0}.has-feedback{position:relative}.form-control-feedback{position:absolute;top:50%;transform:translateY(-50%);right:20px}.has-success .form-control-feedback{color:#31ce36}.has-error .form-control-feedback{color:#f25961}.input-group.has-icon{border-radius:.25rem;border:1px solid #ced4da}.input-group.has-icon.has-success,.input-group.has-success{border:1px solid #31ce36!important;color:#31ce36}.input-group.has-error{border:1px solid #f25961!important;color:#f25961}.input-group.has-icon.has-error{border:1px solid #f25961!important;color:#f25961}.input-group.has-icon .form-control{border-radius:.25rem;border:0;position:relative}.input-group.has-icon .input-group-icon{background:0 0;border:0}.input-square{border-radius:0!important}.input-pill{border-radius:1.3rem!important}.input-solid{background:#e8e8e8!important;border-color:#e8e8e8!important}.input-border-bottom{border-width:0 0 1px 0;border-radius:0;padding:.75rem 0;background:0 0!important}.input-file .form-control,.input-file .form-control-file,.input-file input[type=file]{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.input-file label.error,.input-file label.success{display:block}.input-file .form-control+label:not(.error),.input-file .form-control-file+label:not(.error),.input-file .label-input-file,.input-file input[type=file]+label:not(.error){font-weight:600;letter-spacing:.02em;color:#fff!important;display:inline-block}.input-file.input-file-image img.img-upload-preview{max-width:100%;display:block;margin-bottom:15px;box-shadow:0 1px 15px 1px rgba(39,39,39,.1)}.input-file.input-file-image img.img-upload-preview.img-circle{border-radius:2000px}.form-control:disabled,.form-control[readonly]{background:#e8e8e8!important;border-color:#e8e8e8!important}.form-control:disabled,.form-control[readonly]{opacity:.6!important}.input-group-text{font-size:14px}.input-group-text i.la{font-size:21px}.input-group-text i[class*=flaticon]{font-size:17px}.input-icon{position:relative}.input-icon .form-control:not(:first-child){padding-left:2.5rem}.input-icon .form-control:not(:last-child){padding-right:2.5rem}.input-icon .input-icon-addon{position:absolute;left:1rem;top:0;height:100%;display:flex;align-items:center}.input-icon .input-icon-addon:last-child{left:auto;right:1rem}label.error{color:#f25961!important;font-size:80%!important;margin-top:.5rem}.select2-input{position:relative}.select2-input label.error,.select2-input label.success{position:absolute;bottom:-30px}.select2-input .select2{margin-bottom:15px}.dropzone{padding:70px 60px 80px!important;border:2px dashed rgba(0,0,0,.13)!important;background:0 0!important}.dropzone:hover{background:#fafafa!important;transition:all .5s!important}.dropzone .dz-message .icon{margin-bottom:15px;font-size:39px}.dropzone .dz-message .message{font-size:34px;font-weight:200}.dropzone .dz-message .note{font-size:16px;margin-top:18px;font-weight:300}.note-editor.note-frame{border:0!important;box-shadow:none!important}.note-editor.note-frame .note-toolbar{padding:0!important;border-bottom:0!important}.note-editor.note-frame .note-btn{border:1px solid #eee!important;background:#fafafa!important}.note-editor.note-frame .note-placeholder{margin-top:15px!important}.note-editor.note-frame .note-codable{margin-top:15px!important}.note-editor.note-frame .note-editing-area .note-editable{margin-top:15px!important;border:1px solid #eee!important}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{vertical-align:middle}.table>tbody>tr>td,.table>tbody>tr>th{padding:8px}.table>tfoot>tr>td,.table>tfoot>tr>th{padding:8px}.table thead th{border-bottom-width:2px;font-weight:600}.table td,.table th{font-size:14px;border-top-width:0;border-bottom:1px solid;border-color:#ebedf2!important;padding:0 25px!important;height:60px;vertical-align:middle!important}.table-full-width{margin-left:-15px;margin-right:-15px}.table-bordered-bd-default td,.table-bordered-bd-default th{border:1px solid #1a2035!important}.table-bordered-bd-primary td,.table-bordered-bd-primary th{border:1px solid #1572e8!important}.table-bordered-bd-secondary td,.table-bordered-bd-secondary th{border:1px solid #6861ce!important}.table-bordered-bd-info td,.table-bordered-bd-info th{border:1px solid #48abf7!important}.table-bordered-bd-success td,.table-bordered-bd-success th{border:1px solid #31ce36!important}.table-bordered-bd-warning td,.table-bordered-bd-warning th{border:1px solid #ffad46!important}.table-bordered-bd-danger td,.table-bordered-bd-danger th{border:1px solid #f25961!important}.table-striped td,.table-striped th{border-top:0!important;border-bottom:0!important}.table-head-bg-default thead{border:1px solid #1a2035!important}.table-head-bg-primary thead{border:1px solid #1572e8!important}.table-head-bg-secondary thead{border:1px solid #6861ce!important}.table-head-bg-info thead{border:1px solid #48abf7!important}.table-head-bg-success thead{border:1px solid #31ce36!important}.table-head-bg-warning thead{border:1px solid #ffad46!important}.table-head-bg-danger thead{border:1px solid #f25961!important}.table-head-bg-default thead th,.table-striped-bg-default tbody tr:nth-of-type(odd){background:#1a2035!important;color:#fff!important;border:0!important}.table-head-bg-primary thead th,.table-striped-bg-primary tbody tr:nth-of-type(odd){background:#1572e8!important;color:#fff!important;border:0!important}.table-head-bg-secondary thead th,.table-striped-bg-secondary tbody tr:nth-of-type(odd){background:#6861ce!important;color:#fff!important;border:0!important}.table-head-bg-info thead th,.table-striped-bg-info tbody tr:nth-of-type(odd){background:#48abf7!important;color:#fff!important;border:0!important}.table-head-bg-success thead th,.table-striped-bg-success tbody tr:nth-of-type(odd){background:#31ce36!important;color:#fff!important;border:0!important}.table-head-bg-warning thead th,.table-striped-bg-warning tbody tr:nth-of-type(odd){background:#ffad46!important;color:#fff!important;border:0!important}.table-head-bg-danger thead th,.table-striped-bg-danger tbody tr:nth-of-type(odd){background:#f25961!important;color:#fff!important;border:0!important}.table-responsive{width:100%!important;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.navbar .navbar-nav .nav-item{margin-right:7px}.navbar .navbar-nav .nav-item:last-child{margin-right:0}.navbar .navbar-nav .nav-item .nav-link{display:inline-block;vertical-align:middle;color:#666;letter-spacing:.04em;padding:10px;border-radius:3px;position:relative;font-size:12px;font-weight:400;text-align:center}.navbar .navbar-nav .nav-item .nav-link:focus,.navbar .navbar-nav .nav-item .nav-link:hover{background:#eee!important}.navbar .navbar-nav .nav-item .nav-link i{font-size:18px;vertical-align:middle;line-height:1!important}.navbar .navbar-nav .nav-item.active .nav-link{background:#eee!important}.navbar-expand-lg .navbar-nav .dropdown-menu{left:auto;right:0}.dropdown-item{font-size:13px}.navbar .navbar-nav .notification{position:absolute;background-color:#31ce36;text-align:center;border-radius:10px;min-width:17px;height:17px;font-size:10px;color:#fff;font-weight:300;line-height:17px;top:3px;right:3px;letter-spacing:-1px}.navbar-header{padding:0 15px}.navbar-header .dropdown-toggle::after{margin-left:0}.profile-pic:focus,.profile-pic:hover{text-decoration:none}.navbar-header .dropdown-toggle::after{vertical-align:middle;color:#555}.hidden-caret .dropdown-toggle::after{display:none!important}.profile-pic span{font-size:13px;font-weight:300;padding:0 10px;color:#555}.navbar[class*=bg-]{border-bottom:1px solid rgba(255,255,255,.2)!important;border-left:1px solid rgba(255,255,255,.1)!important}.navbar[class*=bg-] .navbar-brand{color:#fff}.navbar[class*=bg-] .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar[class*=bg-] .navbar-nav>.nav-item>.nav-link{color:#fff}.navbar[class*=bg-] .navbar-nav>.nav-item>.nav-link.disabled{color:#d8d8d8!important}.navbar[class*=bg-] .navbar-nav>.nav-item>.nav-link:hover{background:rgba(255,255,255,.22)!important}.navbar[class*=bg-] .navbar-nav>.nav-item.active>.nav-link{background:rgba(255,255,255,.22)!important}.navbar[class*=bg-] .btn-toggle{background:rgba(19,19,19,.25)!important;color:#fff!important}.navbar[class*=bg-] .nav-search .input-group{border:0;background:rgba(19,19,19,.25)!important}.navbar[class*=bg-] .nav-search .input-group .form-control{color:#fff!important}.navbar[class*=bg-] .nav-search .search-icon{color:#fff!important}.row-nav-line{margin-left:-20px;margin-right:-20px}.nav.nav-line{width:100%;border-bottom:1px solid #f1f1f1}.nav.nav-line .nav-link{padding:15px 20px;color:#575962;border-width:0;font-size:14px;font-weight:600}.nav.nav-line .nav-link:focus,.nav.nav-line .nav-link:hover{color:#1572e8;border-width:0}.nav.nav-line .nav-link.active{border-width:0;background-color:transparent;color:#1572e8;border-bottom:2px solid #1572e8;border-radius:0}.nav.nav-line.nav-color-default .nav-link:focus,.nav.nav-line.nav-color-default .nav-link:hover{color:#1a2035}.nav.nav-line.nav-color-default .nav-link.active{color:#1a2035;border-color:#1a2035}.nav.nav-line.nav-color-primary .nav-link:focus,.nav.nav-line.nav-color-primary .nav-link:hover{color:#1572e8}.nav.nav-line.nav-color-primary .nav-link.active{color:#1572e8;border-color:#1572e8}.nav.nav-line.nav-color-secondary .nav-link:focus,.nav.nav-line.nav-color-secondary .nav-link:hover{color:#6861ce}.nav.nav-line.nav-color-secondary .nav-link.active{color:#6861ce;border-color:#6861ce}.nav.nav-line.nav-color-info .nav-link:focus,.nav.nav-line.nav-color-info .nav-link:hover{color:#48abf7}.nav.nav-line.nav-color-info .nav-link.active{color:#48abf7;border-color:#48abf7}.nav.nav-line.nav-color-success .nav-link:focus,.nav.nav-line.nav-color-success .nav-link:hover{color:#31ce36}.nav.nav-line.nav-color-success .nav-link.active{color:#31ce36;border-color:#31ce36}.nav.nav-line.nav-color-danger .nav-link:focus,.nav.nav-line.nav-color-danger .nav-link:hover{color:#f25961}.nav.nav-line.nav-color-danger .nav-link.active{color:#f25961;border-color:#f25961}.nav.nav-line.nav-color-warning .nav-link:focus,.nav.nav-line.nav-color-warning .nav-link:hover{color:#ffad46}.nav.nav-line.nav-color-warning .nav-link.active{color:#ffad46;border-color:#ffad46}.nav.nav-line.nav-color-light .nav-link:focus,.nav.nav-line.nav-color-light .nav-link:hover{color:#fff}.nav.nav-line.nav-color-light .nav-link.active{color:#fff;border-color:#fff}.nav.nav-line.nav-color-light .nav-link{color:#f1f1f1}.nav-search .input-group{border:1px solid #eee;background:#eee;border-radius:5px}.nav-search .input-group:focus,.nav-search .input-group:hover{border:1px solid #ddd}.nav-search .form-control{border:0;background:0 0!important;font-size:14px;padding:.75em 1em;min-width:200px;max-width:100%}.nav-search .input-group-text{border:0;background:0 0}.nav-search .search-icon{font-size:18px;color:#8d9498}.nav-search .btn-search{background:0 0;padding:.375rem 1rem}.badge{border-radius:50px;margin-left:auto;line-height:1;padding:6px 10px;vertical-align:middle;font-weight:400;font-size:11px;border:1px solid #ddd}[class*=badge-]:not(.badge-count){border:0!important}.badge-default{background:#1a2035;color:#fff!important}.badge-primary{background:#1572e8}.badge-secondary{background:#6861ce}.badge-info{background:#48abf7}.badge-success{background-color:#31ce36}.badge-warning{background:#ffad46;color:#fff!important}.badge-danger{background-color:#f25961}.dropdown-menu{border:0;border-radius:3px;box-shadow:0 1px 11px rgba(0,0,0,.15)!important;padding-bottom:8px;margin-top:3px}.dropdown-title{border-bottom:1px solid #f1f1f1;color:#444;font-size:14px;font-weight:600;padding:12px 15px;text-align:center}.messages-notif-box,.notif-box{width:280px;padding:0!important}.messages-notif-box .notif-center a,.notif-box .notif-center a{display:flex;color:#4d585f}.messages-notif-box .notif-center a:hover,.notif-box .notif-center a:hover{text-decoration:none;background:#fafafa;transition:all .2s}.messages-notif-box .notif-center a .notif-icon,.notif-box .notif-center a .notif-icon{display:inline-flex;width:40px;height:40px;margin:10px;align-items:center;justify-content:center;background:#eee;border-radius:50%}.messages-notif-box .notif-center a .notif-img,.notif-box .notif-center a .notif-img{display:inline-flex;width:40px;height:40px;margin:10px;align-items:center;justify-content:center;background:#eee;border-radius:50%}.messages-notif-box .notif-center a .notif-img img,.notif-box .notif-center a .notif-img img{width:100%;height:100%;border-radius:50%}.messages-notif-box .notif-center a .notif-icon.notif-danger,.messages-notif-box .notif-center a .notif-icon.notif-default,.messages-notif-box .notif-center a .notif-icon.notif-info,.messages-notif-box .notif-center a .notif-icon.notif-primary,.messages-notif-box .notif-center a .notif-icon.notif-secondary,.messages-notif-box .notif-center a .notif-icon.notif-success,.messages-notif-box .notif-center a .notif-icon.notif-warning,.notif-box .notif-center a .notif-icon.notif-danger,.notif-box .notif-center a .notif-icon.notif-default,.notif-box .notif-center a .notif-icon.notif-info,.notif-box .notif-center a .notif-icon.notif-primary,.notif-box .notif-center a .notif-icon.notif-secondary,.notif-box .notif-center a .notif-icon.notif-success,.notif-box .notif-center a .notif-icon.notif-warning{color:#fff!important}.messages-notif-box .notif-center a .notif-icon.notif-default,.notif-box .notif-center a .notif-icon.notif-default{background:#1a2035!important}.messages-notif-box .notif-center a .notif-icon.notif-primary,.notif-box .notif-center a .notif-icon.notif-primary{background:#1572e8!important}.messages-notif-box .notif-center a .notif-icon.notif-secondary,.notif-box .notif-center a .notif-icon.notif-secondary{background:#6861ce!important}.messages-notif-box .notif-center a .notif-icon.notif-info,.notif-box .notif-center a .notif-icon.notif-info{background:#48abf7!important}.messages-notif-box .notif-center a .notif-icon.notif-success,.notif-box .notif-center a .notif-icon.notif-success{background:#31ce36!important}.messages-notif-box .notif-center a .notif-icon.notif-warning,.notif-box .notif-center a .notif-icon.notif-warning{background:#ffad46!important}.messages-notif-box .notif-center a .notif-icon.notif-danger,.notif-box .notif-center a .notif-icon.notif-danger{background:#f25961!important}.messages-notif-box .notif-center a .notif-icon i,.notif-box .notif-center a .notif-icon i{font-size:15px}.messages-notif-box .notif-center a .notif-content,.notif-box .notif-center a .notif-content{padding:10px 15px 10px 0}.messages-notif-box .notif-center a .message-content,.notif-box .notif-center a .message-content{padding:7px 15px 10px 0}.messages-notif-box .notif-center a .notif-content .subject,.notif-box .notif-center a .notif-content .subject{font-size:13px;font-weight:600;display:block;margin-bottom:2px}.messages-notif-box .notif-center a .notif-content .block,.notif-box .notif-center a .notif-content .block{font-size:13px;line-height:20px;display:block}.messages-notif-box .notif-center a .notif-content .time,.notif-box .notif-center a .notif-content .time{color:#7d8c95;font-size:11px}.messages-notif-box .see-all,.notif-box .see-all{border-top:1px solid #f1f1f1;display:flex;align-items:center;justify-content:space-between;padding:10px 20px;color:#555;font-size:13px;font-weight:400;text-decoration:none}.messages-notif-box .see-all:hover,.notif-box .see-all:hover{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;color:#555;font-size:13px;font-weight:400;text-decoration:none}.messages-notif-box .see-all i,.notif-box .see-all i{float:right}.notif-box .notif-scroll{max-height:256px}.messages-notif-box .message-notif-scroll{max-height:250px}.messages-notif-box .notif-center a{border-bottom:1px solid #f1f1f1}.messages-notif-box .notif-center a:last-child{border-bottom:0}.messages-notif-box .notif-center a .notif-content{padding:7px 15px 7px 5px}.dropdown-user{width:260px}.user-box{display:flex;padding:.25rem 1rem}.user-box .u-text{padding:0 10px}.user-box .u-text h4{margin-bottom:5px;margin-top:4px;font-size:14px;font-weight:400;line-height:1}.user-box .u-text .text-muted{font-size:12px;margin-bottom:5px}.user-box .u-text .btn{font-size:11px}.caret{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.quick-actions{width:350px;padding:0}.quick-actions:after{border-bottom-color:#1572e8!important}.quick-actions .quick-actions-header{display:flex;align-items:center;flex-direction:column;background:#1572e8;color:#fff;padding:15px;border-radius:3px 3px 0 0}.quick-actions .quick-actions-header .title{font-size:18px}.quick-actions .quick-actions-header .subtitle{font-size:13px}.quick-actions .quick-actions-items{padding:15px 7.5px}.quick-actions a:hover{text-decoration:none}.quick-actions .quick-actions-item{display:flex;flex-direction:column;margin:7.5px 7.5px;padding:10px;align-items:center;color:#1572e8;border:1px solid #f1f1f1;border-bottom:1px solid #f1f1f1;border-radius:3px;transition:all .2s}.quick-actions .quick-actions-item:hover{background:#fdfdff;color:#1572e8;box-shadow:3px 3px 10px #f7f1f1}.quick-actions .quick-actions-item i{color:#7d8c95;font-size:27px}.quick-actions .quick-actions-item .text{text-align:center;font-size:13px;margin-top:8px}.quick-actions.quick-actions-default:after{border-bottom-color:#1a2035!important}.quick-actions.quick-actions-default .quick-actions-header{background:#1a2035}.quick-actions.quick-actions-default .quick-actions-item{color:#1a2035}.quick-actions.quick-actions-primary:after{border-bottom-color:#1572e8!important}.quick-actions.quick-actions-primary .quick-actions-header{background:#1572e8}.quick-actions.quick-actions-primary .quick-actions-item{color:#1572e8}.quick-actions.quick-actions-secondary:after{border-bottom-color:#6861ce!important}.quick-actions.quick-actions-secondary .quick-actions-header{background:#6861ce}.quick-actions.quick-actions-secondary .quick-actions-item{color:#6861ce}.quick-actions.quick-actions-info:after{border-bottom-color:#48abf7!important}.quick-actions.quick-actions-info .quick-actions-header{background:#48abf7}.quick-actions.quick-actions-info .quick-actions-item{color:#48abf7}.quick-actions.quick-actions-warning:after{border-bottom-color:#ffad46!important}.quick-actions.quick-actions-warning .quick-actions-header{background:#ffad46}.quick-actions.quick-actions-warning .quick-actions-item{color:#ffad46}.quick-actions.quick-actions-success:after{border-bottom-color:#31ce36!important}.quick-actions.quick-actions-success .quick-actions-header{background:#31ce36}.quick-actions.quick-actions-success .quick-actions-item{color:#31ce36}.quick-actions.quick-actions-danger:after{border-bottom-color:#f25961!important}.quick-actions.quick-actions-danger .quick-actions-header{background:#f25961}.quick-actions.quick-actions-danger .quick-actions-item{color:#f25961}@media screen and (max-width:991px){.messages-notif-box .message-notif-scroll,.notif-box .notif-scroll,.quick-actions .quick-actions-scroll{max-height:calc(100vh - 200px)}.dropdown-user .dropdown-user-scroll{max-height:calc(100vh - 132px)}}@media screen and (min-width:991px){.navbar-header .dropdown-menu{margin-top:13px}.navbar-header .dropdown-menu:after{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;content:"";right:10px;top:-8px;position:absolute;z-index:1001}}.chart-circle{display:flex;justify-content:center}.chart-circle .circles-text{font-size:25px!important}.chart-container{min-height:300px;position:relative}.html-legend{list-style:none;cursor:pointer;padding-left:0;text-align:center;margin-top:1rem}.html-legend li{display:inline-block;vertical-align:middle;padding:0 5px;margin-right:5px;margin-bottom:6px;color:#8d9498;font-size:12px}.html-legend li.hidden{text-decoration:line-through}.html-legend li span{border-radius:15px;display:inline-block;height:15px;margin-right:10px;width:15px;vertical-align:top}.jqstooltip{box-sizing:content-box}.alert{border:0;position:relative;padding:.95rem 1.25rem;border-radius:1px;color:inherit;background-color:#fff;-webkit-box-shadow:1px 1px 14px 0 rgba(18,38,63,.26);-moz-box-shadow:1px 1px 14px 0 rgba(18,38,63,.26);box-shadow:1px 1px 14px 0 rgba(18,38,63,.26)}.alert [data-notify=icon]{display:block}.alert [data-notify=icon]::before{line-height:35px;font-size:22px;display:block;left:15px;position:absolute;top:50%;transform:translateY(-50%);width:35px;height:35px;border-radius:30px;text-align:center;color:#fff}.alert [data-notify=title]{display:block;color:#2b2b2b;font-weight:700;font-size:14px;margin-bottom:5px}.alert [data-notify=message]{font-size:13px;color:#908e8e}.alert .close{background:rgba(255,255,255,.8);width:25px;height:25px;line-height:25px;top:12px!important;border-radius:50%}.alert-default{border-left:4px solid #1a2035}.alert-default [data-notify=icon]:before{background:#1a2035}.alert-primary{border-left:4px solid #1572e8}.alert-primary [data-notify=icon]:before{background:#1572e8}.alert-secondary{border-left:4px solid #6861ce}.alert-secondary [data-notify=icon]:before{background:#6861ce}.alert-info{border-left:4px solid #48abf7}.alert-info [data-notify=icon]:before{background:#48abf7}.alert-success{border-left:4px solid #31ce36}.alert-success [data-notify=icon]:before{background:#31ce36}.alert-warning{border-left:4px solid #ffad46}.alert-warning [data-notify=icon]:before{background:#ffad46}.alert-danger{border-left:4px solid #f25961}.alert-danger [data-notify=icon]:before{background:#f25961}.btn{padding:.65rem 1.4rem;font-size:14px;opacity:1;border-radius:3px}.btn:focus,.btn:hover{opacity:.9;transition:all .3s}.btn .btn-label{display:inline-block}.btn .btn-label i{font-size:16px;vertical-align:middle;margin-right:2px;margin-left:-2px;line-height:0;margin-top:-2.5px}.btn .btn-label.just-icon i{margin-left:0!important;margin-right:0!important}.btn-lg{font-size:15px;border-radius:3px;padding:12.5px 27.5px;font-weight:400}.btn-lg .btn-label i{font-size:27px;vertical-align:middle;margin-right:2px;margin-left:-7px;line-height:0;margin-top:-2.5px}.btn-lg .btn-label.just-icon i{margin-left:0!important;margin-right:0!important}.btn-sm{font-size:11px;padding:7px 13px}.btn-xs{font-size:10px;padding:5px 9px}.btn.disabled:hover,.btn:hover:disabled{opacity:.65}.btn-icon{font-size:.9375rem;height:2.5125rem;line-height:normal;min-width:2.5125rem;overflow:hidden;padding:0;position:relative;width:2.5125rem}.btn-icon.btn-lg{height:2.75rem;min-width:2.75rem;width:2.75rem}.btn-icon.btn-sm{height:2rem;min-width:2rem;width:2rem}.btn-icon.btn-xs{height:1.6875rem;min-width:1.6875rem;width:1.6875rem}.btn-white{background:#fff!important;color:#1a2035!important}.btn-white:disabled,.btn-white:focus,.btn-white:hover{background:#fff!important;color:#1a2035!important}.btn-default{background:#1a2035!important;color:#fff!important}.btn-default:disabled,.btn-default:focus,.btn-default:hover{background:#1a2035!important;color:#fff!important}.btn-primary{background:#1572e8!important;border-color:#1572e8!important}.btn-primary:disabled,.btn-primary:focus,.btn-primary:hover{background:#1572e8!important;border-color:#1572e8!important}.btn-secondary{background:#6861ce!important;border-color:#6861ce!important}.btn-secondary:disabled,.btn-secondary:focus,.btn-secondary:hover{background:#6861ce!important;border-color:#6861ce!important}.btn-info{background:#48abf7!important;border-color:#48abf7!important}.btn-info:disabled,.btn-info:focus,.btn-info:hover{background:#48abf7!important;border-color:#48abf7!important}.btn-success{background:#31ce36!important;border-color:#31ce36!important}.btn-success:disabled,.btn-success:focus,.btn-success:hover{background:#31ce36!important;border-color:#31ce36!important}.btn-warning{background:#ffad46!important;border-color:#ffad46!important;color:#fff!important}.btn-warning:disabled,.btn-warning:focus,.btn-warning:hover{background:#ffad46!important;border-color:#ffad46!important;color:#fff!important}.btn-danger{background:#f25961!important;border-color:#f25961!important}.btn-danger:disabled,.btn-danger:focus,.btn-danger:hover{background:#f25961!important;border-color:#f25961!important}.btn-light{background:#fff!important;border-color:transparent}.btn-light:disabled,.btn-light:focus,.btn-light:hover{background:#ebecec!important;border-color:transparent}.btn-dropdown-card-header{padding:0;background:0 0;color:inherit;font-size:15px}.btn-dropdown-card-header:after{display:none}.btn-border{background:0 0!important}.btn-border:focus,.btn-border:hover{background:0 0!important}.btn-border.btn-white{color:#fff!important;border:1px solid #fff!important}.btn-border.btn-default{color:#1a2035!important;border:1px solid #1a2035!important}.btn-border.btn-primary{color:#1572e8!important;border:1px solid #1572e8!important}.btn-border.btn-secondary{color:#6861ce!important;border:1px solid #6861ce!important}.btn-border.btn-info{color:#48abf7!important;border:1px solid #48abf7!important}.btn-border.btn-success{color:#31ce36!important;border:1px solid #31ce36!important}.btn-border.btn-warning{color:#ffad46!important;border:1px solid #ffad46!important}.btn-border.btn-danger{color:#f25961!important;border:1px solid #f25961!important}.btn-border.btn-light{border:1px solid #efefef;background:#fff!important}.btn-round{border-radius:100px!important}.btn-link{border:0!important;background:0 0!important}.btn-link:focus,.btn-link:hover{text-decoration:underline!important;background:0 0!important;border:0!important}.btn-link.btn-default{color:#1a2035!important}.btn-link.btn-default:hover{color:#1a2035!important}.btn-link.btn-primary{color:#1572e8!important}.btn-link.btn-primary:hover{color:#1572e8!important}.btn-link.btn-secondary{color:#6861ce!important}.btn-link.btn-secondary:hover{color:#6861ce!important}.btn-link.btn-info{color:#48abf7!important}.btn-link.btn-info:hover{color:#48abf7!important}.btn-link.btn-success{color:#31ce36!important}.btn-link.btn-success:hover{color:#31ce36!important}.btn-link.btn-warning{color:#ffad46!important}.btn-link.btn-warning:hover{color:#ffad46!important}.btn-link.btn-danger{color:#f25961!important}.btn-link.btn-danger:hover{color:#f25961!important}.toggle-on.btn{color:#fff!important}.toggle-handle{background:#fff!important}.toggle-handle:hover{background:#fff!important}.btn-round .toggle-handle{border-radius:50px}.btn-rounded{border-radius:60px!important}.btn-full{width:100%}.btn-no-radius{border-radius:0}.nav-pills>li:first-child>.nav-link{border-radius:4px 0 0 4px!important}.nav-pills>li:last-child>.nav-link{border-radius:0 4px 4px 0!important}.nav-link.disabled{color:#6c757d!important}.nav-pills .nav-link{padding:10px 20px}.nav-pills>li>.nav-link{margin-left:-1px;border-radius:0!important;margin-top:5px;margin-bottom:5px;border:1px solid #1572e8;color:#585c5d}.nav-pills>li>.nav-link.active{background:#1572e8}.nav-pills>li>.nav-link:hover{background:rgba(222,222,222,.4)}.nav-pills.nav-pills-no-bd li{margin-left:15px!important}.nav-pills.nav-pills-no-bd li .nav-link{border:0!important;border-radius:50px!important;background:rgba(222,222,222,.4)}.nav-pills.nav-pills-no-bd li .nav-link.active{border-radius:50px!important}.nav-pills.nav-pills-no-bd li:first-child{margin-left:0!important}.nav-pills.nav-pills-no-bd.nav-pills-icons .nav-link,.nav-pills.nav-pills-no-bd.nav-pills-icons .nav-link.active{border-radius:5px!important}.nav-pills.flex-column .nav-link{border-radius:0!important;border:1px solid #1572e8;color:#585c5d;margin-top:-1px;text-align:center;word-wrap:normal;padding:10px 0}.nav-pills.flex-column .nav-link:hover{background:rgba(222,222,222,.4)}.nav-pills.flex-column .nav-link.active{background:#1572e8}.nav-pills.flex-column .nav-link:first-child{border-radius:4px 4px 0 0!important}.nav-pills.flex-column .nav-link:last-child{border-radius:0 0 4px 4px!important}.nav-pills.flex-column.nav-pills-no-bd .nav-link{border:0!important;border-radius:50px!important;background:rgba(222,222,222,.4);margin-top:5px;margin-bottom:5px}.nav-pills.flex-column.nav-pills-no-bd .nav-link.active{border-radius:50px!important}.nav-pills.flex-column.nav-pills-icons .nav-link,.nav-pills.flex-column.nav-pills-icons .nav-link.active{border-radius:5px!important}.nav-pills.nav-pills-icons .nav-link,.nav-pills.nav-pills-icons .nav-link.active{border-radius:5px!important;padding-top:12px;padding-bottom:12px}.nav-pills.nav-pills-icons i{display:block;text-align:center;font-size:2em;line-height:50px}.nav-pills.nav-danger .nav-link,.nav-pills.nav-default .nav-link,.nav-pills.nav-info .nav-link,.nav-pills.nav-primary .nav-link,.nav-pills.nav-secondary .nav-link,.nav-pills.nav-success .nav-link,.nav-pills.nav-warning .nav-link{border:1px solid #eee}.nav-pills.nav-danger .nav-link.active,.nav-pills.nav-default .nav-link.active,.nav-pills.nav-info .nav-link.active,.nav-pills.nav-primary .nav-link.active,.nav-pills.nav-secondary .nav-link.active,.nav-pills.nav-success .nav-link.active,.nav-pills.nav-warning .nav-link.active{color:#fff!important}.nav-pills.nav-default .nav-link.active{background:#1a2035;border:1px solid #1a2035}.nav-pills.nav-primary .nav-link.active{background:#1572e8;border:1px solid #1572e8}.nav-pills.nav-secondary .nav-link.active{background:#6861ce;border:1px solid #6861ce}.nav-pills.nav-info .nav-link.active{background:#48abf7;border:1px solid #48abf7}.nav-pills.nav-success .nav-link.active{background:#31ce36;border:1px solid #31ce36}.nav-pills.nav-warning .nav-link.active{background:#ffad46;border:1px solid #ffad46}.nav-pills.nav-danger .nav-link.active{background:#f25961;border:1px solid #f25961}.nav-sm .nav-link{font-size:11px!important;padding:8px 16px!important}.popover{max-width:240px;line-height:1.7;border:0;box-shadow:0 0 20px 1px rgba(69,65,78,.2)}.popover .popover-header{background:0 0;font-size:14px;border-bottom:0;text-transform:capitalize;margin-top:5px;color:#aaa;font-weight:400}.popover .popover-body{margin-bottom:5px}.popover .popover-body p{font-size:13px;margin-bottom:1rem}.popover.bs-popover-bottom .arrow:before,.popover.bs-popover-left .arrow:before,.popover.bs-popover-right .arrow:before,.popover.bs-popover-top .arrow:before{border:transparent}.popover.bs-popover-auto[x-placement^=right],.popover.bs-popover-right{margin-left:10px}.popover.bs-popover-auto[x-placement^=left],.popover.bs-popover-left{margin-right:10px}.popover.bs-popover-auto[x-placement^=top],.popover.bs-popover-top{margin-bottom:10px}.popover.bs-popover-auto[x-placement^=bottom],.popover.bs-popover-bottom{margin-top:10px}.progress{border-radius:100px;height:14px}.progress .progress-bar{border-radius:100px}.progress.progress-sm{height:8px}.progress.progress-lg{height:20px}.pagination>li:first-child>a,.pagination>li:first-child>span,.pagination>li:last-child>a,.pagination>li:last-child>span,.pagination>li>a,.pagination>li>span{border-radius:100px!important;margin:0 2px;color:#777;border-color:#ddd}.pagination.pg-default>li.active:first-child>a,.pagination.pg-default>li.active:first-child>span,.pagination.pg-default>li.active:last-child>a,.pagination.pg-default>li.active:last-child>span,.pagination.pg-default>li.active>a,.pagination.pg-default>li.active>span{background:#1a2035;border-color:#1a2035;color:#fff}.pagination.pg-primary>li.active:first-child>a,.pagination.pg-primary>li.active:first-child>span,.pagination.pg-primary>li.active:last-child>a,.pagination.pg-primary>li.active:last-child>span,.pagination.pg-primary>li.active>a,.pagination.pg-primary>li.active>span{background:#1572e8;border-color:#1572e8;color:#fff}.pagination.pg-secondary>li.active:first-child>a,.pagination.pg-secondary>li.active:first-child>span,.pagination.pg-secondary>li.active:last-child>a,.pagination.pg-secondary>li.active:last-child>span,.pagination.pg-secondary>li.active>a,.pagination.pg-secondary>li.active>span{background:#6861ce;border-color:#6861ce;color:#fff}.pagination.pg-info>li.active:first-child>a,.pagination.pg-info>li.active:first-child>span,.pagination.pg-info>li.active:last-child>a,.pagination.pg-info>li.active:last-child>span,.pagination.pg-info>li.active>a,.pagination.pg-info>li.active>span{background:#48abf7;border-color:#48abf7;color:#fff}.pagination.pg-success>li.active:first-child>a,.pagination.pg-success>li.active:first-child>span,.pagination.pg-success>li.active:last-child>a,.pagination.pg-success>li.active:last-child>span,.pagination.pg-success>li.active>a,.pagination.pg-success>li.active>span{background:#31ce36;border-color:#31ce36;color:#fff}.pagination.pg-warning>li.active:first-child>a,.pagination.pg-warning>li.active:first-child>span,.pagination.pg-warning>li.active:last-child>a,.pagination.pg-warning>li.active:last-child>span,.pagination.pg-warning>li.active>a,.pagination.pg-warning>li.active>span{background:#ffad46;border-color:#ffad46;color:#fff}.pagination.pg-danger>li.active:first-child>a,.pagination.pg-danger>li.active:first-child>span,.pagination.pg-danger>li.active:last-child>a,.pagination.pg-danger>li.active:last-child>span,.pagination.pg-danger>li.active>a,.pagination.pg-danger>li.active>span{background:#f25961;border-color:#f25961;color:#fff}.slider-default .ui-slider-range{background:#1a2035}.slider-primary .ui-slider-range{background:#1572e8}.slider-secondary .ui-slider-range{background:#6861ce}.slider-info .ui-slider-range{background:#48abf7}.slider-success .ui-slider-range{background:#31ce36}.slider-warning .ui-slider-range{background:#ffad46}.slider-danger .ui-slider-range{background:#f25961}.modal .bg-danger .modal-title,.modal .bg-default .modal-title,.modal .bg-info .modal-title,.modal .bg-primary .modal-title,.modal .bg-secondary .modal-title,.modal .bg-success .modal-title,.modal .bg-warning .modal-title{color:#fff!important}.modal-content{border-radius:.4rem!important;border:0!important}.activity-feed{padding:15px;list-style:none}.activity-feed .feed-item{position:relative;padding-bottom:20px;padding-left:30px;border-left:2px solid #e4e8eb}.activity-feed .feed-item:last-child{border-color:transparent}.activity-feed .feed-item::after{content:"";display:block;position:absolute;top:0;left:-7px;width:12px;height:12px;border-radius:50%;background:#177dff}.feed-item-default::after{background:#1a2035!important}.feed-item-primary::after{background:#1572e8!important}.feed-item-secondary::after{background:#6861ce!important}.feed-item-success::after{background:#31ce36!important}.feed-item-danger::after{background:#f25961!important}.feed-item-info::after{background:#48abf7!important}.feed-item-warning::after{background:#ffad46!important}.activity-feed .feed-item .date{display:block;position:relative;top:-5px;color:#8c96a3;text-transform:uppercase;font-size:13px}.activity-feed .feed-item .text{position:relative;top:-3px}.timeline{list-style:none;padding:20px 0 20px;position:relative}.timeline:before{top:0;bottom:0;position:absolute;content:" ";width:3px;background-color:#eee;left:50%;margin-left:-1.5px}.timeline>li{margin-bottom:20px;position:relative}.timeline>li:before{content:" ";display:table}.timeline>li:after{content:" ";display:table;clear:both}.timeline>li:before{content:" ";display:table}.timeline>li:after{content:" ";display:table;clear:both}.timeline>li>.timeline-panel{width:50%;float:left;border:1px solid #eee;background:#fff;border-radius:3px;padding:20px;position:relative;-webkit-box-shadow:0 1px 20px 1px rgba(69,65,78,.06);-moz-box-shadow:0 1px 20px 1px rgba(69,65,78,.06);box-shadow:0 1px 20px 1px rgba(69,65,78,.06)}.timeline>li.timeline-inverted+li:not(.timeline-inverted){margin-top:-60px}.timeline>li:not(.timeline-inverted){padding-right:90px}.timeline>li:not(.timeline-inverted)+li.timeline-inverted{margin-top:-60px}.timeline>li.timeline-inverted{padding-left:90px}.timeline>li.timeline-inverted>.timeline-panel{float:right}.timeline>li.timeline-inverted>.timeline-panel:before{border-left-width:0;border-right-width:15px;left:-15px;right:auto}.timeline>li.timeline-inverted>.timeline-panel:after{border-left-width:0;border-right-width:14px;left:-14px;right:auto}.timeline>li>.timeline-panel:before{position:absolute;top:26px;right:-15px;display:inline-block;border-top:15px solid transparent;border-left:15px solid #eee;border-right:0 solid #eee;border-bottom:15px solid transparent;content:" "}.timeline>li>.timeline-panel:after{position:absolute;top:27px;right:-14px;display:inline-block;border-top:14px solid transparent;border-left:14px solid #fff;border-right:0 solid #fff;border-bottom:14px solid transparent;content:" "}.timeline>li>.timeline-badge{color:#fff;width:50px;height:50px;line-height:50px;font-size:1.8em;text-align:center;position:absolute;top:16px;left:50%;margin-left:-25px;background-color:#999;z-index:100;border-top-right-radius:50%;border-top-left-radius:50%;border-bottom-right-radius:50%;border-bottom-left-radius:50%}.timeline-badge.default{background-color:#1a2035!important}.timeline-badge.primary{background-color:#1572e8!important}.timeline-badge.secondary{background-color:#6861ce!important}.timeline-badge.success{background-color:#31ce36!important}.timeline-badge.warning{background-color:#ffad46!important}.timeline-badge.danger{background-color:#f25961!important}.timeline-badge.info{background-color:#48abf7!important}.timeline-title{font-size:17px;margin-top:0;color:inherit;font-weight:400}.timeline-heading i{font-size:22px;display:inline-block;vertical-align:middle;margin-right:5px}.timeline-body>p,.timeline-body>ul{margin-bottom:0}.timeline-body>p+p{margin-top:5px}.full-screen-maps{height:100vh!important}.vmap{width:100%;min-height:265px}.vmap>svg{margin:auto;display:flex}.vmap>svg>g{transition:all ease-in-out .2s}.jqvmap-label,.jqvmap-pin{pointer-events:none}.jqvmap-label{position:absolute;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-size:smaller;padding:3px}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;border-radius:13px;background:#35cd3a;padding:6px 7px;color:#fff;cursor:pointer;line-height:10px;text-align:center;font-size:14px}.jqvmap-zoomin{top:15px}.jqvmap-zoomout{top:45px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px}.list-group .list-group-header{font-size:12px;font-weight:600;padding:.75rem 1rem}.list-group .list-group-item{display:flex;align-items:stretch;border-width:1px 0;border-color:#ebecec}.list-group .list-group-item-figure{align-self:start;display:flex;-ms-flex-align:center;align-items:center;color:#a9acb0}.list-group .list-group-item-body{flex:1;min-width:0;align-self:center;font-size:.875rem}.list-group .list-group-item-text{margin-bottom:0;line-height:1.25rem;color:#686f76}.list-group-file-item .list-group-item{padding:0}.list-group-file-item .list-group-item-figure{padding:.75rem 1rem}.list-group-file-item .list-group-item-body{padding:.75rem 0}.list-group-bordered .list-group-item{border:1px solid #e3ebf6}.list-group-bordered .list-group-item.active{background:#1572e8;border-color:#1572e8}.list-group-lg .list-group-item{padding-top:1.5rem;padding-bottom:1.5rem}.selectgroup{display:-ms-inline-flexbox;display:inline-flex}.selectgroup-item{-ms-flex-positive:1;flex-grow:1;position:relative;font-weight:400!important}.selectgroup-item+.selectgroup-item{margin-left:-1px}.selectgroup-item:not(:first-child) .selectgroup-button{border-top-left-radius:0;border-bottom-left-radius:0}.selectgroup-item:not(:last-child) .selectgroup-button{border-top-right-radius:0;border-bottom-right-radius:0}.selectgroup-input{opacity:0;position:absolute;z-index:-1;top:0;left:0}.selectgroup-button{display:block;border:1px solid rgba(0,40,100,.12);text-align:center;padding:.375rem 1rem;position:relative;cursor:pointer;border-radius:3px;color:#9aa0ac;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:14px;line-height:1.5rem;min-width:2.375rem}.selectgroup-button-icon{padding-left:.5rem;padding-right:.5rem;font-size:1rem}.selectgroup-input:checked+.selectgroup-button{border-color:#1572e8;z-index:1;color:#1572e8;background:rgba(21,114,232,.15)}.selectgroup-input:focus+.selectgroup-button{border-color:#1572e8;z-index:2;color:#1572e8;box-shadow:0 0 0 2px rgba(21,114,232,.25)}.selectgroup-pills{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}.selectgroup-pills .selectgroup-item{margin-right:.5rem;-ms-flex-positive:0;flex-grow:0}.selectgroup-pills .selectgroup-button{border-radius:50px!important}.selectgroup.selectgroup-primary .selectgroup-input:checked+.selectgroup-button{border-color:#1572e8;color:#1572e8;background:rgba(21,114,232,.15)}.selectgroup.selectgroup-primary .selectgroup-input:focus+.selectgroup-button{border-color:#1572e8;color:#1572e8;box-shadow:0 0 0 2px rgba(21,114,232,.25)}.selectgroup.selectgroup-secondary .selectgroup-input:checked+.selectgroup-button{border-color:#6861ce;color:#6861ce;background:rgba(104,97,206,.15)}.selectgroup.selectgroup-secondary .selectgroup-input:focus+.selectgroup-button{border-color:#6861ce;color:#6861ce;box-shadow:0 0 0 2px rgba(104,97,206,.25)}.selectgroup.selectgroup-info .selectgroup-input:checked+.selectgroup-button{border-color:#48abf7;color:#48abf7;background:rgba(72,171,247,.15)}.selectgroup.selectgroup-info .selectgroup-input:focus+.selectgroup-button{border-color:#48abf7;color:#48abf7;box-shadow:0 0 0 2px rgba(72,171,247,.25)}.selectgroup.selectgroup-success .selectgroup-input:checked+.selectgroup-button{border-color:#31ce36;color:#31ce36;background:rgba(49,206,54,.15)}.selectgroup.selectgroup-success .selectgroup-input:focus+.selectgroup-button{border-color:#31ce36;color:#31ce36;box-shadow:0 0 0 2px rgba(49,206,54,.25)}.selectgroup.selectgroup-warning .selectgroup-input:checked+.selectgroup-button{border-color:#ffad46;color:#ffad46;background:rgba(255,173,70,.15)}.selectgroup.selectgroup-warning .selectgroup-input:focus+.selectgroup-button{border-color:#ffad46;color:#ffad46;box-shadow:0 0 0 2px rgba(255,173,70,.25)}.selectgroup.selectgroup-danger .selectgroup-input:checked+.selectgroup-button{border-color:#f25961;color:#f25961;background:rgba(242,89,97,.15)}.selectgroup.selectgroup-danger .selectgroup-input:focus+.selectgroup-button{border-color:#f25961;color:#f25961;box-shadow:0 0 0 2px rgba(242,89,97,.25)}.colorinput{margin:0;position:relative;cursor:pointer}.colorinput-input{position:absolute;z-index:-1;opacity:0}.colorinput-color{display:inline-block;width:1.75rem;height:1.75rem;border-radius:3px;border:1px solid rgba(0,40,100,.12);color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.colorinput-color:before{content:'';opacity:0;position:absolute;top:.25rem;left:.25rem;height:1.25rem;width:1.25rem;transition:.3s opacity;background:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") no-repeat center center/50% 50%}.colorinput-input:checked~.colorinput-color:before{opacity:1}.colorinput-input:focus~.colorinput-color{border-color:#467fcf;box-shadow:0 0 0 2px rgba(70,127,207,.25)}.imagecheck{margin:0;position:relative;cursor:pointer}.imagecheck-input{position:absolute;z-index:-1;opacity:0}.imagecheck-figure{border:1px solid rgba(0,40,100,.12);border-radius:3px;margin:0;position:relative}.imagecheck-input:focus~.imagecheck-figure{border-color:#1572e8;box-shadow:0 0 0 2px rgba(70,127,207,.25)}.imagecheck-input:checked~.imagecheck-figure{border-color:rgba(0,40,100,.24)}.imagecheck-figure:before{content:'';position:absolute;top:.25rem;left:.25rem;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#1572e8 url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") no-repeat center center/50% 50%;color:#fff;z-index:1;border-radius:3px;opacity:0;transition:.3s opacity}.imagecheck-input:checked~.imagecheck-figure:before{opacity:1}.imagecheck-image{max-width:100%;opacity:.64;transition:.3s opacity}.imagecheck-image:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.imagecheck-image:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.imagecheck:hover .imagecheck-image{opacity:1}.imagecheck-input:checked~.imagecheck-figure .imagecheck-image,.imagecheck-input:focus~.imagecheck-figure .imagecheck-image{opacity:1}.imagecheck-caption{text-align:center;padding:.25rem .25rem;color:#9aa0ac;font-size:.875rem;transition:.3s color}.imagecheck:hover .imagecheck-caption{color:#495057}.imagecheck-input:checked~.imagecheck-figure .imagecheck-caption,.imagecheck-input:focus~.imagecheck-figure .imagecheck-caption{color:#495057}.is-loading:after,.loader{display:block;width:1.5rem;height:1.5rem;background:0 0;border:3px solid #6861ce;border-bottom-color:transparent;border-radius:50%;animation:1s spin linear infinite}.is-loading-lg:after,.loader-lg{width:2rem;height:2rem;border-width:5px}.is-loading-sm:after,.loader-sm{width:1rem;height:1rem;border-width:2px}.is-loading{position:relative;color:transparent!important}.is-loading>*{opacity:.2!important}.is-loading:after{position:absolute;top:calc(50% - 1.5rem/2);left:calc(50% - 1.5rem/2);content:''}.is-loading-lg:after{top:calc(50% - 2rem/2);left:calc(50% - 2rem/2)}.is-loading-sm:after{top:calc(50% - 1rem/2);left:calc(50% - 1rem/2)}.btn-danger.is-loading:after,.btn-default.is-loading:after,.btn-info.is-loading:after,.btn-primary.is-loading:after,.btn-secondary.is-loading:after,.btn-success.is-loading:after,.btn-warning.is-loading:after,.card-danger.is-loading:after,.card-default.is-loading:after,.card-info.is-loading:after,.card-primary.is-loading:after,.card-secondary.is-loading:after,.card-success.is-loading:after,.card-warning.is-loading:after,.is-loading-danger:after,.is-loading-default:after,.is-loading-info:after,.is-loading-primary:after,.is-loading-secondary:after,.is-loading-success:after,.is-loading-warning:after,.loader-danger,.loader-default,.loader-info,.loader-primary,.loader-secondary,.loader-success,.loader-warning{border-bottom-color:transparent!important}.btn-danger.is-loading:after,.btn-default.is-loading:after,.btn-info.is-loading:after,.btn-primary.is-loading:after,.btn-secondary.is-loading:after,.btn-success.is-loading:after,.btn-warning.is-loading:after,.card-danger.is-loading:after,.card-default.is-loading:after,.card-info.is-loading:after,.card-primary.is-loading:after,.card-secondary.is-loading:after,.card-success.is-loading:after,.card-warning.is-loading:after{border-color:#fff}.is-loading-default:after,.loader-default{border-color:#1a2035}.is-loading-primary:after,.loader-primary{border-color:#1572e8}.is-loading-secondary:after,.loader-secondary{border-color:#6861ce}.is-loading-info:after,.loader-info{border-color:#48abf7}.is-loading-success:after,.loader-success{border-color:#31ce36}.is-loading-warning:after,.loader-warning{border-color:#ffad46}.is-loading-danger:after,.loader-danger{border-color:#f25961}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-slider{position:relative;text-align:left;background:#ddd}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.4em}.ui-slider-horizontal .ui-slider-handle{top:-.4em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-slider-handle{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f7f7f7));background:-webkit-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-o-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-ms-linear-gradient(top,#fff 0,#f7f7f7 100%);background:linear-gradient(to bottom,#fff 0,#f7f7f7 100%);border-radius:50px;box-shadow:0 1px 4px 0 #9191ab!important}.ui-slider-handle:focus{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f7f7f7));background:-webkit-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-o-linear-gradient(top,#fff 0,#f7f7f7 100%);background:-ms-linear-gradient(top,#fff 0,#f7f7f7 100%);background:linear-gradient(to bottom,#fff 0,#f7f7f7 100%);border-radius:50px;box-shadow:0 1px 4px 0 #9191ab!important}.scroll-wrapper{overflow:hidden!important;padding:0!important;position:relative}.scroll-wrapper>.scroll-content{border:none!important;box-sizing:content-box!important;height:auto;left:0;margin:0;max-height:none;max-width:none!important;overflow:scroll!important;padding:0;position:relative!important;top:0;width:auto!important}.scroll-wrapper>.scroll-content::-webkit-scrollbar{height:0;width:0}.scroll-element{display:none;box-sizing:content-box}.scroll-element div{box-sizing:content-box}.scroll-element.scroll-x.scroll-scrollx_visible,.scroll-element.scroll-y.scroll-scrolly_visible{display:block}.scroll-element .scroll-arrow,.scroll-element .scroll-bar{cursor:default}.scroll-textarea{border:1px solid #ccc;border-top-color:#999}.scroll-textarea>.scroll-content{overflow:hidden!important}.scroll-textarea>.scroll-content>textarea{border:none!important;box-sizing:border-box;height:100%!important;margin:0;max-height:none!important;max-width:none!important;overflow:scroll!important;outline:0;padding:2px;position:relative!important;top:0;width:100%!important}.scrollbar-inner>.scroll-element .scroll-element_outer,.scrollbar-outer>.scroll-element .scroll-element_outer{overflow:hidden}.scroll-textarea>.scroll-content>textarea::-webkit-scrollbar{height:0;width:0}.scrollbar-inner>.scroll-element{border:none;margin:0;padding:0;position:absolute;z-index:10}.scrollbar-inner>.scroll-element div{border:none;margin:0;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-inner>.scroll-element.scroll-x{bottom:2px;height:7px;left:0;width:100%}.scrollbar-inner>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-inner>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-12px}.scrollbar-inner>.scroll-element.scroll-y{height:100%;right:2px;top:0;width:7px}.scrollbar-inner>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-inner>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-12px}.scrollbar-inner>.scroll-element .scroll-bar,.scrollbar-inner>.scroll-element .scroll-element_outer,.scrollbar-inner>.scroll-element .scroll-element_track{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.scrollbar-inner>.scroll-element .scroll-bar{opacity:.4}.scrollbar-inner>.scroll-element .scroll-element_track{opacity:.4;background-color:#e0e0e0}.scrollbar-inner>.scroll-element .scroll-bar{background-color:#c2c2c2}.scrollbar-inner>.scroll-element.scroll-draggable .scroll-bar,.scrollbar-inner>.scroll-element:hover .scroll-bar{background-color:#919191}.scrollbar-outer>.scroll-element{border:none;margin:0;padding:0;position:absolute;z-index:10;background-color:#fff}.scrollbar-outer>.scroll-element div{border:none;margin:0;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-outer>.scroll-element.scroll-x{bottom:0;height:12px;left:0;width:100%}.scrollbar-outer>.scroll-element.scroll-y{height:100%;right:0;top:0;width:12px}.scrollbar-outer>.scroll-element.scroll-x .scroll-element_outer{height:7px;top:2px}.scrollbar-outer>.scroll-element.scroll-y .scroll-element_outer{left:2px;width:7px}.scrollbar-outer>.scroll-element .scroll-element_track{background-color:#eee}.scrollbar-outer>.scroll-element .scroll-bar,.scrollbar-outer>.scroll-element .scroll-element_outer,.scrollbar-outer>.scroll-element .scroll-element_track{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.scrollbar-outer>.scroll-element .scroll-bar{background-color:#d9d9d9}.scrollbar-outer>.scroll-element .scroll-bar:hover{background-color:#c2c2c2}.scrollbar-outer>.scroll-element.scroll-draggable .scroll-bar{background-color:#919191}.scrollbar-outer>.scroll-content.scroll-scrolly_visible{left:-12px;margin-left:12px}.scrollbar-outer>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-outer>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-14px}.scrollbar-outer>.scroll-content.scroll-scrollx_visible{top:-12px;margin-top:12px}.scrollbar-outer>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-outer>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-14px}.scrollbar-outer>.scroll-element.scroll-x .scroll-bar{min-width:10px}.scrollbar-outer>.scroll-element.scroll-y .scroll-bar{min-height:10px}.scrollbar-macosx>.scroll-element{background:0 0;border:none;margin:0;padding:0;position:absolute;z-index:10}.scrollbar-macosx>.scroll-element div{background:0 0;border:none;margin:0;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-macosx>.scroll-element .scroll-element_track{display:none}.scrollbar-macosx>.scroll-element .scroll-bar{background-color:#6c6e71;display:block;opacity:0;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;-ms-transition:opacity .2s linear;transition:opacity .2s linear}.scrollbar-macosx:hover>.scroll-element .scroll-bar{opacity:.7}.scrollbar-macosx>.scroll-element.scroll-draggable .scroll-bar{opacity:.7}.scrollbar-macosx>.scroll-element.scroll-x{bottom:0;height:0;left:0;min-width:100%;overflow:visible;width:100%}.scrollbar-macosx>.scroll-element.scroll-y{height:100%;min-height:100%;right:0;top:0;width:0}.scrollbar-macosx>.scroll-element.scroll-x .scroll-bar{height:7px;min-width:10px;top:-9px}.scrollbar-macosx>.scroll-element.scroll-y .scroll-bar{left:-9px;min-height:10px;width:7px}.scrollbar-macosx>.scroll-element.scroll-x .scroll-element_outer{left:2px}.scrollbar-macosx>.scroll-element.scroll-x .scroll-element_size{left:-4px}.scrollbar-macosx>.scroll-element.scroll-y .scroll-element_outer{top:2px}.scrollbar-macosx>.scroll-element.scroll-y .scroll-element_size{top:-4px}.scrollbar-macosx>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size{left:-11px}.scrollbar-macosx>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size{top:-11px}.scrollbar-light>.scroll-element{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10;background-color:#fff}.scrollbar-light>.scroll-element div{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-light>.scroll-element .scroll-element_outer{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.scrollbar-light>.scroll-element .scroll-element_size{background:-moz-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#dbdbdb),color-stop(100%,#e8e8e8));background:-webkit-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:-o-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:-ms-linear-gradient(left,#dbdbdb 0,#e8e8e8 100%);background:linear-gradient(to right,#dbdbdb 0,#e8e8e8 100%);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.scrollbar-light>.scroll-element.scroll-x{bottom:0;height:17px;left:0;min-width:100%;width:100%}.scrollbar-light>.scroll-element.scroll-y{height:100%;min-height:100%;right:0;top:0;width:17px}.scrollbar-light>.scroll-element .scroll-bar{background:-moz-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#fefefe),color-stop(100%,#f5f5f5));background:-webkit-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:-o-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:-ms-linear-gradient(left,#fefefe 0,#f5f5f5 100%);background:linear-gradient(to right,#fefefe 0,#f5f5f5 100%);border:1px solid #dbdbdb;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}.scrollbar-light>.scroll-content.scroll-scrolly_visible{left:-17px;margin-left:17px}.scrollbar-light>.scroll-content.scroll-scrollx_visible{top:-17px;margin-top:17px}.scrollbar-light>.scroll-element.scroll-x .scroll-bar{height:10px;min-width:10px;top:0}.scrollbar-light>.scroll-element.scroll-y .scroll-bar{left:0;min-height:10px;width:10px}.scrollbar-light>.scroll-element.scroll-x .scroll-element_outer{height:12px;left:2px;top:2px}.scrollbar-light>.scroll-element.scroll-x .scroll-element_size{left:-4px}.scrollbar-light>.scroll-element.scroll-y .scroll-element_outer{left:2px;top:2px;width:12px}.scrollbar-light>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-light>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-19px}.scrollbar-light>.scroll-element.scroll-y .scroll-element_size{top:-4px}.scrollbar-light>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-light>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-19px}.scrollbar-rail>.scroll-element{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10;background-color:#fff}.scrollbar-rail>.scroll-element div{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-rail>.scroll-element .scroll-element_size{background-color:#999;background-color:rgba(0,0,0,.3)}.scrollbar-rail>.scroll-element .scroll-element_outer:hover .scroll-element_size{background-color:#666;background-color:rgba(0,0,0,.5)}.scrollbar-rail>.scroll-element.scroll-x{bottom:0;height:12px;left:0;min-width:100%;padding:3px 0 2px;width:100%}.scrollbar-rail>.scroll-element.scroll-y{height:100%;min-height:100%;padding:0 2px 0 3px;right:0;top:0;width:12px}.scrollbar-rail>.scroll-element .scroll-bar{background-color:#d0b9a0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.5)}.scrollbar-rail>.scroll-element .scroll-element_outer:hover .scroll-bar{box-shadow:1px 1px 3px rgba(0,0,0,.6)}.scrollbar-rail>.scroll-content.scroll-scrolly_visible{left:-17px;margin-left:17px}.scrollbar-rail>.scroll-content.scroll-scrollx_visible{margin-top:17px;top:-17px}.scrollbar-rail>.scroll-element.scroll-x .scroll-bar{height:10px;min-width:10px;top:1px}.scrollbar-rail>.scroll-element.scroll-y .scroll-bar{left:1px;min-height:10px;width:10px}.scrollbar-rail>.scroll-element.scroll-x .scroll-element_outer{height:15px;left:5px}.scrollbar-rail>.scroll-element.scroll-x .scroll-element_size{height:2px;left:-10px;top:5px}.scrollbar-rail>.scroll-element.scroll-y .scroll-element_outer{top:5px;width:15px}.scrollbar-rail>.scroll-element.scroll-y .scroll-element_size{left:5px;top:-10px;width:2px}.scrollbar-rail>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-rail>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-25px}.scrollbar-rail>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-rail>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-25px}.scrollbar-dynamic>.scroll-element{background:0 0;border:none;margin:0;padding:0;position:absolute;z-index:10}.scrollbar-dynamic>.scroll-element div{background:0 0;border:none;margin:0;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-dynamic>.scroll-element.scroll-x{bottom:2px;height:7px;left:0;min-width:100%;width:100%}.scrollbar-dynamic>.scroll-element.scroll-y{height:100%;min-height:100%;right:2px;top:0;width:7px}.scrollbar-dynamic>.scroll-element .scroll-element_outer{opacity:.3;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px}.scrollbar-dynamic>.scroll-element .scroll-element_size{background-color:#ccc;opacity:0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;-ms-transition:opacity .2s;transition:opacity .2s}.scrollbar-dynamic>.scroll-element .scroll-bar{background-color:#6c6e71;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.scrollbar-dynamic>.scroll-element.scroll-x .scroll-bar{bottom:0;height:7px;min-width:24px;top:auto}.scrollbar-dynamic>.scroll-element.scroll-y .scroll-bar{left:auto;min-height:24px;right:0;width:7px}.scrollbar-dynamic>.scroll-element.scroll-x .scroll-element_outer{bottom:0;top:auto;left:2px;-webkit-transition:height .2s;-moz-transition:height .2s;-o-transition:height .2s;-ms-transition:height .2s;transition:height .2s}.scrollbar-dynamic>.scroll-element.scroll-y .scroll-element_outer{left:auto;right:0;top:2px;-webkit-transition:width .2s;-moz-transition:width .2s;-o-transition:width .2s;-ms-transition:width .2s;transition:width .2s}.scrollbar-dynamic>.scroll-element.scroll-x .scroll-element_size{left:-4px}.scrollbar-dynamic>.scroll-element.scroll-y .scroll-element_size{top:-4px}.scrollbar-dynamic>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size{left:-11px}.scrollbar-dynamic>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size{top:-11px}.scrollbar-dynamic>.scroll-element.scroll-draggable .scroll-element_outer,.scrollbar-dynamic>.scroll-element:hover .scroll-element_outer{overflow:hidden;opacity:.7}.scrollbar-dynamic>.scroll-element.scroll-draggable .scroll-element_outer .scroll-element_size,.scrollbar-dynamic>.scroll-element:hover .scroll-element_outer .scroll-element_size{opacity:1}.scrollbar-dynamic>.scroll-element.scroll-draggable .scroll-element_outer .scroll-bar,.scrollbar-dynamic>.scroll-element:hover .scroll-element_outer .scroll-bar{height:100%;width:100%;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px}.scrollbar-dynamic>.scroll-element.scroll-x.scroll-draggable .scroll-element_outer,.scrollbar-dynamic>.scroll-element.scroll-x:hover .scroll-element_outer{height:20px;min-height:7px}.scrollbar-dynamic>.scroll-element.scroll-y.scroll-draggable .scroll-element_outer,.scrollbar-dynamic>.scroll-element.scroll-y:hover .scroll-element_outer{min-width:7px;width:20px}.scrollbar-chrome>.scroll-element{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10;background-color:#fff}.scrollbar-chrome>.scroll-element div{border:none;margin:0;overflow:hidden;padding:0;position:absolute;z-index:10;display:block;height:100%;left:0;top:0;width:100%}.scrollbar-chrome>.scroll-element .scroll-element_track{background:#f1f1f1;border:1px solid #dbdbdb}.scrollbar-chrome>.scroll-element.scroll-x{bottom:0;height:16px;left:0;min-width:100%;width:100%}.scrollbar-chrome>.scroll-element.scroll-y{height:100%;min-height:100%;right:0;top:0;width:16px}.scrollbar-chrome>.scroll-element .scroll-bar{background-color:#d9d9d9;border:1px solid #bdbdbd;cursor:default;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.scrollbar-chrome>.scroll-element .scroll-bar:hover{background-color:#c2c2c2;border-color:#a9a9a9}.scrollbar-chrome>.scroll-element.scroll-draggable .scroll-bar{background-color:#919191;border-color:#7e7e7e}.scrollbar-chrome>.scroll-content.scroll-scrolly_visible{left:-16px;margin-left:16px}.scrollbar-chrome>.scroll-content.scroll-scrollx_visible{top:-16px;margin-top:16px}.scrollbar-chrome>.scroll-element.scroll-x .scroll-bar{height:5px;min-width:10px;top:3px}.scrollbar-chrome>.scroll-element.scroll-y .scroll-bar{left:3px;min-height:10px;width:5px}.scrollbar-chrome>.scroll-element.scroll-x .scroll-element_outer{border-left:1px solid #dbdbdb}.scrollbar-chrome>.scroll-element.scroll-x .scroll-element_track{height:14px;left:-3px}.scrollbar-chrome>.scroll-element.scroll-x .scroll-element_size{height:14px;left:-4px}.scrollbar-chrome>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size,.scrollbar-chrome>.scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track{left:-19px}.scrollbar-chrome>.scroll-element.scroll-y .scroll-element_outer{border-top:1px solid #dbdbdb}.scrollbar-chrome>.scroll-element.scroll-y .scroll-element_track{top:-3px;width:14px}.scrollbar-chrome>.scroll-element.scroll-y .scroll-element_size{top:-4px;width:14px}.scrollbar-chrome>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size,.scrollbar-chrome>.scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track{top:-19px}/*! +* animate.css -http://daneden.me/animate +* Version - 3.6.0 +* Licensed under the MIT license - http://opensource.org/licenses/MIT +* +* Copyright (c) 2018 Daniel Eden +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes wobble{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{11.1%,from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.39063deg) skewY(.39063deg);transform:skewX(.39063deg) skewY(.39063deg)}88.8%{-webkit-transform:skewX(-.19531deg) skewY(-.19531deg);transform:skewX(-.19531deg) skewY(-.19531deg)}}@keyframes jello{11.1%,from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.39063deg) skewY(.39063deg);transform:skewX(.39063deg) skewY(.39063deg)}88.8%{-webkit-transform:skewX(-.19531deg) skewY(-.19531deg);transform:skewX(-.19531deg) skewY(-.19531deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{from{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{from{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.swal-footer{text-align:center!important;margin-bottom:20px!important}table.dataTable{clear:both;margin-top:15px!important;margin-bottom:15px!important;max-width:none!important;border-collapse:separate!important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc{padding-right:30px}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:after,table.dataTable thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.5}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191";font-size:15px}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc_disabled:after{right:.5em;content:"\2193";font-size:15px}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child td,div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center;margin-top:11px;margin-bottom:10px}div.dataTables_wrapper div div.dataTables_paginate ul.pagination{flex-wrap:wrap!important;justify-content:center!important}div.dataTables_wrapper div div.dataTables_paginate ul.pagination li{margin-bottom:10px}div.dataTables_wrapper div div.dataTables_paginate ul.pagination li a{font-size:11px}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:0}table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child,div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-left:0;padding-right:0}@media screen and (max-width:576px){.row-card-no-pd [class*=col-] .card:before{width:calc(100% - 30px)!important;right:15px!important;height:1px!important}.row-card-no-pd [class*=col-]:first-child .card:before{display:none!important}}@media screen and (min-width:991px){.main-panel.full-height>.content,.main-panel.full-height>.content-full{margin-top:0}.main-panel.full-height .navbar-header{min-height:62px}.logo-header{line-height:57px}.toggle-nav-search{display:none}#search-nav{display:block!important}.sidebar .scroll-element{opacity:0;transition:all .2s}.sidebar:hover .scroll-element{opacity:1}.sidebar[data-background-color]:before{background:rgba(255,255,255,.2)!important;z-index:1000}}@media screen and (max-width:991px){.main-header[data-background-color] .navbar-header{border-top:1px solid rgba(0,0,0,.1)}.sidebar{position:fixed;left:0!important;right:0;-webkit-transform:translate3d(-270px,0,0);-moz-transform:translate3d(-270px,0,0);-o-transform:translate3d(-270px,0,0);-ms-transform:translate3d(-270px,0,0);transform:translate3d(-270px,0,0)!important;transition:all .5s;margin-top:0}.sidebar:before{background:0 0}.nav_open .sidebar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)!important;border-right:1px solid #f1f1f1}.sidebar .sidebar-wrapper{padding-top:0}.sidebar .sidebar-wrapper .sidebar-content{padding-top:0!important}.sidebar .sidebar-wrapper .scroll-element.scroll-y{top:0!important}.nav_open{overflow:hidden!important}.nav_open .wrapper{overflow-x:hidden}.nav_open .main-header,.nav_open .main-panel{-webkit-transform:translate3d(250px,0,0);-moz-transform:translate3d(250px,0,0);-o-transform:translate3d(250px,0,0);-ms-transform:translate3d(250px,0,0);transform:translate3d(250px,0,0)!important}.quick_sidebar_open .quick-sidebar{width:350px}.main-header{transition:all .5s}#search-nav{margin:0 auto!important}.main-panel{width:100%;transition:all .5s}.main-panel .page-header .dropdown-menu:after{right:16px!important}.page-inner{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.page-sidebar{background:#fff}.logo-header{display:flex;width:100%!important;text-align:left;position:relative;padding-left:15px;padding-right:15px}.logo-header .logo{position:absolute;left:50%;transform:translateX(-50%)}.logo-header .navbar-toggler{height:100%;margin-left:0!important;opacity:1;display:block;order:1}.logo-header .more{opacity:1;color:#545454;cursor:pointer;display:inline-block;line-height:56px;order:3;width:unset;margin-left:auto}.logo-header .navbar-brand{position:unset!important;margin-right:0}.nav-search{width:100%;margin-right:0!important}.navbar-header{position:absolute;width:100%;transform:translate3d(0,-200px,0)!important;transition:all .5s}.topbar_open .navbar-header{transform:translate3d(0,61px,0)!important;padding:6px}.topbar_open .navbar-header .navbar-nav>.nav-item .nav-link i{font-size:19px}.topbar_open .navbar-header .navbar-nav>.nav-item:last-child .nav-link{padding:0!important}.topbar_open .navbar-header .navbar-nav>.nav-item:last-child .quick-sidebar-toggler{padding-left:5px!important}.topbar_open .toggle-nav-search{display:list-item}.topbar_open #search-nav{text-align:center;width:100%;padding:10px 15px 0;order:1}.topbar_open .main-panel{transform:translate3d(0,62px,0)!important}.topbar_open>.content{margin-top:0!important}.nav_open.topbar_open .main-panel{transform:translate3d(250px,60px,0)!important}.navbar-header .navbar-nav{width:100%;flex-direction:row;justify-content:center;margin-left:0!important;position:relative}.navbar-header .navbar-nav .dropdown{position:unset}.navbar-header .navbar-nav .dropdown-menu{position:absolute;left:0;right:0;margin:0 auto;max-width:280px}.profile-pic span{display:none}.nav-toggle{display:none}.page-title{font-size:18px}.card .card-title{font-size:18px}.mail-wrapper .mail-option .email-filters-left{width:50%}.mail-wrapper .mail-option .email-filters-left .btn-group{margin-bottom:10px}.dropzone{padding:20px 15px!important}.dropzone .dz-message .message{font-size:23px}.dropzone .dz-message .note{font-size:15px}}@media screen and (min-width:856px){.mail-wrapper .aside-nav{display:block!important}}@media screen and (max-width:856px){.mail-wrapper{flex-direction:column}.mail-wrapper .page-aside{width:100%;height:unset;min-height:unset;border-bottom:1px solid #eee;border-left:0;border-right:0;background:0 0;padding-top:0;padding-bottom:0}.mail-wrapper .page-aside .aside-header{padding-top:25px;padding-bottom:25px;background:#f1f1f1}.mail-wrapper .page-aside .aside-nav{background:#fff;padding-top:15px;padding-bottom:15px}.mail-wrapper .mail-content{width:100%}.mail-wrapper .mail-content .inbox-head{flex-direction:column;align-items:left}.mail-wrapper .mail-content .inbox-head h3{font-size:18px}.mail-wrapper .mail-content .inbox-head form{margin-left:0!important;margin-top:15px}.mail-wrapper .mail-content .email-head h3{font-size:18px}.mail-wrapper .mail-content .email-compose-fields{padding:20px 15px}.mail-wrapper .mail-option{flex-direction:column}.mail-wrapper .mail-option .email-filters-left{width:100%;margin-bottom:10px}.mail-wrapper .toggle-email-nav{display:inline-block!important}.mail-wrapper .table-inbox tr td .badge{margin-top:5px;float:left}}@media screen and (max-width:767px){.wizard-container{margin-left:15px;margin-right:15px}.main-panel .page-header{flex-direction:column;align-items:normal;position:relative;min-height:43px;justify-content:center}.main-panel .page-header .breadcrumbs{margin-left:0;padding-top:15px;padding-left:5px;padding-bottom:0;border-left:0}.main-panel .page-header .btn-group-page-header{position:absolute;right:0}.footer .container-fluid{flex-direction:column}.footer .container-fluid .copyright{margin-left:0!important;margin-top:10px;margin-bottom:15px}}@media screen and (max-width:576px){#chart-container{min-height:250px}.form-check-inline{display:flex;flex-direction:column;align-items:left}#calendar .fc-toolbar{display:flex;flex-direction:column}#calendar .fc-toolbar .fc-center,#calendar .fc-toolbar .fc-left,#calendar .fc-toolbar .fc-right{margin:auto;margin-bottom:15px}#calendar .fc-toolbar .fc-left{order:1}#calendar .fc-toolbar .fc-right{order:3}#calendar .fc-toolbar .fc-center{order:2}.conversations .conversations-body{padding:1.5rem 1rem}}@media screen and (max-width:350px){.quick_sidebar_open .quick-sidebar{width:100%;padding:20px}}body{background:#f9fbfd}body[data-background-color=bg1]{background:#f9fbfd}body[data-background-color=bg2]{background:#fff}body[data-background-color=bg3]{background:#f1f1f1}body[data-background-color=dark]{background:#1a2035}body[data-background-color=dark] .main-header{box-shadow:0 0 5px #121727}body[data-background-color=dark] .main-panel{color:rgba(169,175,187,.82)!important}body[data-background-color=dark] .main-panel label{color:#fff!important}body[data-background-color=dark] .card,body[data-background-color=dark] .list-group-item,body[data-background-color=dark] .row-card-no-pd,body[data-background-color=dark] .timeline>li>.timeline-panel{background:#202940}body[data-background-color=dark] .card-pricing2{background:#202940!important}body[data-background-color=dark] .row-card-no-pd [class*=col] .card:before{background:rgba(181,181,181,.1)!important}body[data-background-color=dark] .breadcrumbs,body[data-background-color=dark] .card .card-action,body[data-background-color=dark] .card .card-footer,body[data-background-color=dark] .card .card-header,body[data-background-color=dark] .card-profile .user-stats [class^=col],body[data-background-color=dark] .conversations .messages-form,body[data-background-color=dark] .list-group .list-group-item,body[data-background-color=dark] .mail-wrapper .mail-content .email-head,body[data-background-color=dark] .mail-wrapper .mail-content .email-sender,body[data-background-color=dark] .mail-wrapper .mail-content .inbox-body .email-list .email-list-item,body[data-background-color=dark] .main-panel .page-divider,body[data-background-color=dark] .page-with-aside .page-aside,body[data-background-color=dark] .separator-dashed,body[data-background-color=dark] .separator-dot,body[data-background-color=dark] .separator-solid,body[data-background-color=dark] .table td,body[data-background-color=dark] .table th,body[data-background-color=dark] .timeline>li>.timeline-panel{border-color:rgba(181,181,181,.1)!important}body[data-background-color=dark] .timeline>li>.timeline-panel:before{border-left-color:rgba(181,181,181,.1);border-right-color:rgba(181,181,181,.1)}body[data-background-color=dark] .timeline>li>.timeline-panel:after{border-left-color:#202940;border-right-color:#202940}body[data-background-color=dark] .breadcrumbs li a,body[data-background-color=dark] .page-title{color:rgba(169,175,187,.82)}body[data-background-color=dark] .page-category{color:#828282}body[data-background-color=dark] .card-title,body[data-background-color=dark] .card-title a,body[data-background-color=dark] .card-title a:focus,body[data-background-color=dark] .card-title a:hover{color:#fff}body[data-background-color=dark] .card-category{color:#8b92a9}body[data-background-color=dark] .card-danger,body[data-background-color=dark] .card-default,body[data-background-color=dark] .card-info,body[data-background-color=dark] .card-primary,body[data-background-color=dark] .card-secondary,body[data-background-color=dark] .card-success,body[data-background-color=dark] .card-warning{color:#fff}body[data-background-color=dark] .card-danger .card-category,body[data-background-color=dark] .card-danger .card-title,body[data-background-color=dark] .card-default .card-category,body[data-background-color=dark] .card-default .card-title,body[data-background-color=dark] .card-info .card-category,body[data-background-color=dark] .card-info .card-title,body[data-background-color=dark] .card-primary .card-category,body[data-background-color=dark] .card-primary .card-title,body[data-background-color=dark] .card-secondary .card-category,body[data-background-color=dark] .card-secondary .card-title,body[data-background-color=dark] .card-success .card-category,body[data-background-color=dark] .card-success .card-title,body[data-background-color=dark] .card-warning .card-category,body[data-background-color=dark] .card-warning .card-title{color:#fff}body[data-background-color=dark] .nav-pills .nav-link:not(.active){background:#fff}body[data-background-color=dark] .card-pricing .specification-list li{border-color:#373d4c}body[data-background-color=dark] .input-group-text{border-color:#2f374b!important;background-color:#1f283e;color:#fff}body[data-background-color=dark] .input-solid{background:#363b4c!important;border-color:#363b4c!important}body[data-background-color=dark] .list-group .list-group-item-text,body[data-background-color=dark] .list-group-messages .list-group-item-title a{color:inherit}body[data-background-color=dark] .footer{border-top:1px solid #293247;background:#1f283e}body[data-background-color=dark] .form-control,body[data-background-color=dark] .form-group-default,body[data-background-color=dark] .select2-container--bootstrap .select2-selection{background-color:#1a2035;color:#fff;border-color:#2f374b}body[data-background-color=dark] .bootstrap-tagsinput{background:0 0}body[data-background-color=dark] .selectgroup-button{border:1px solid #2f374b}body[data-background-color=dark] .conversations .message-header{background:#1a2035;box-shadow:0 1px 1px 0 rgba(0,0,0,.07)}body[data-background-color=dark] .conversations .conversations-content{color:#575962;border-color:#2e364a}body[data-background-color=dark] .mail-wrapper .mail-content .inbox-body .email-list .email-list-item.unread{background:#1f283e!important}body[data-background-color=dark] .mail-wrapper .mail-content .inbox-body .email-list .email-list-item:hover{background:#171e2f!important}body[data-background-color=dark] .page-with-aside .page-aside .aside-nav .nav>li.active,body[data-background-color=dark] .page-with-aside .page-aside .aside-nav .nav>li:focus,body[data-background-color=dark] .page-with-aside .page-aside .aside-nav .nav>li:hover{background:rgba(0,0,0,.03)}body[data-background-color=dark] .page-with-aside .page-aside .aside-nav .nav>li.active>a{color:#b9babf!important}body[data-background-color=dark] .board{color:#575962}.bg-dark{background-color:#1a2035!important}.bg-dark2{background-color:#1f283e!important}.bg-primary{background-color:#1572e8!important}.bg-primary2{background-color:#1269db!important}.bg-secondary{background-color:#6861ce!important}.bg-secondary2{background-color:#5c55bf!important}.bg-info{background-color:#48abf7!important}.bg-info2{background-color:#3697e1!important}.bg-success{background-color:#31ce36!important}.bg-success2{background-color:#2bb930!important}.bg-warning{background-color:#ffad46!important}.bg-warning2{background-color:#ff9e27!important}.bg-danger{background-color:#f25961!important}.bg-danger2{background-color:#ea4d56!important}.bg-grey1{background:#f9fbfd!important}.bg-grey2{background:#f1f1f1}.bg-dark-gradient{background:#1f283e!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#0a0b11,#1f283e)!important;background:linear-gradient(-45deg,#0a0b11,#1f283e)!important}.bg-primary-gradient{background:#1572e8!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#06418e,#1572e8)!important;background:linear-gradient(-45deg,#06418e,#1572e8)!important}.bg-secondary-gradient{background:#6861ce!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#2a20ac,#6861ce)!important;background:linear-gradient(-45deg,#2a20ac,#6861ce)!important}.bg-info-gradient{background:#48abf7!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#0a5a97,#48abf7)!important;background:linear-gradient(-45deg,#0a5a97,#48abf7)!important}.bg-success-gradient{background:#31ce36!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#179d08,#31ce36)!important;background:linear-gradient(-45deg,#179d08,#31ce36)!important}.bg-warning-gradient{background:#ffad46!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#e1810b,#ffad46)!important;background:linear-gradient(-45deg,#e1810b,#ffad46)!important}.bg-danger-gradient{background:#f25961!important;background:-webkit-linear-gradient(legacy-direction(-45deg),#e80a15,#f25961)!important;background:linear-gradient(-45deg,#e80a15,#f25961)!important} \ No newline at end of file diff --git a/src/main/resources/static/assets/css/bootstrap.min.css b/src/main/resources/static/assets/css/bootstrap.min.css new file mode 100644 index 0000000..8826912 --- /dev/null +++ b/src/main/resources/static/assets/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.1.3 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(2.25rem + 2px);padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.8125rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(2.875rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::after,.was-validated .custom-file-input:valid~.custom-file-label::after{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::after,.was-validated .custom-file-input:invalid~.custom-file-label::after{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{height:calc(2.875rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{height:calc(1.8125rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-label::after{border-color:#80bdff}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.25rem;padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;padding-left:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:not(:disabled):not(.disabled){cursor:pointer}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-dialog-centered::before{display:block;height:calc(100vh - (.5rem * 2));content:""}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-dialog-centered::before{height:calc(100vh - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease}@media screen and (prefers-reduced-motion:reduce){.carousel-item-next,.carousel-item-prev,.carousel-item.active{transition:none}}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/src/main/resources/static/assets/css/custom.css b/src/main/resources/static/assets/css/custom.css new file mode 100644 index 0000000..b3de067 --- /dev/null +++ b/src/main/resources/static/assets/css/custom.css @@ -0,0 +1,26 @@ +.parent{; + height: 100%; + padding: 100px 0 0; + ox-sizing: border-box; + position: relative; +} + +.middle-container{ + height: 420px; + width: 320px; + margin-left: auto; + margin-right: auto; +} + +.line-display{ + display: inline-block; +} + +.link-block{ + height: 20px; + width: 80px; +} + +.left-block{ + margin-right:0; +} \ No newline at end of file diff --git a/src/main/resources/static/assets/css/demo.css b/src/main/resources/static/assets/css/demo.css new file mode 100644 index 0000000..55ad026 --- /dev/null +++ b/src/main/resources/static/assets/css/demo.css @@ -0,0 +1,305 @@ +.custom-template { + position: fixed; + top: 50%; + transform: translateY(-50%); + right: -325px; + width: 325px; + height: max-content; + display: block; + z-index: 1; + background: #ffffff; + transition: all .3s; + z-index: 1003; + box-shadow: -1px 1px 20px rgba(69, 65, 78, 0.15); + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + transition: all .5s; +} + +.custom-template.open { + right: 0px; +} + +.custom-template .custom-toggle { + position: absolute; + width: 45px; + height: 45px; + background: rgb(88, 103, 221); + top: 50%; + left: -45px; + transform: translateY(-50%); + display: flex; + align-items: center; + justify-content: center; + text-align: center; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + border-right: 1px solid #177dff; + cursor: pointer; + color: #ffffff; + box-shadow: -5px 5px 20px rgba(69, 65, 78, 0.21); +} + +.custom-template .custom-toggle i { + font-size: 20px; + animation: 1.3s spin linear infinite; +} + +.custom-template .title{ + padding: 15px; + text-align: left; + font-size: 16px; + font-weight: 600; + color: #ffffff; + border-top-left-radius: 5px; + border-bottom: 1px solid #ebedf2; + background: #5867dd; +} + +.custom-template .custom-content{ + padding: 20px 15px; + max-height: calc(100vh - 90px); + overflow: auto; +} + +.custom-template .switcher { + padding: 5px 0; +} + +.custom-template .switch-block h4 { + font-size: 13px; + font-weight: 600; + color: #444; + line-height: 1.3; + margin-bottom: 0; + text-transform: uppercase; +} + +.custom-template .btnSwitch { + margin-top: 20px; + margin-bottom: 25px; +} + +.custom-template .btnSwitch button { + border: 0px; + height: 20px; + width: 20px; + outline: 0; + margin-right: 10px; + margin-bottom: 10px; + cursor: pointer; + padding: 0; + border-radius: 50%; + border: 2px solid #eee; + position: relative; + transition: all .2s; +} + +.custom-template .btnSwitch button:hover{ + border-color: #0bf; +} + +.custom-template .btnSwitch button.selected{ + border-color: #0bf; +} + +.custom-template .img-pick { + padding: 4px; + min-height: 100px; + border-radius: 5px; + cursor: pointer; +} + +.custom-template .img-pick img { + height: 100%; + height: 100px; + width: 100%; + border-radius: 5px; + border: 2px solid transparent; +} + +.custom-template .img-pick:hover img, .custom-template .img-pick.active img{ + border-color: #177dff; +} + +.demo .btn, .demo .progress{ + margin-bottom: 15px !important; +} + +.demo .form-check-label, .demo .form-radio-label{ + margin-right: 15px; +} + +.demo .toggle, .demo .btn-group{ + margin-right: 15px; +} + +.demo #slider{ + margin-bottom: 15px; +} + +.table-typo tbody > tr > td{ + border-color: #fafafa; +} + +.table-typo tbody > tr > td:first-child{ + min-width: 200px; + vertical-align: bottom; +} + +.table-typo tbody > tr > td:first-child p{ + font-size: 14px; + color: #333; +} + +.demo-icon { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 20px; + padding: 10px; + transition: all .2s; +} + +.demo-icon:hover{ + background-color: #f4f5f8; + border-radius: 3px; +} + +.demo-icon .icon-preview{ + font-size: 1.8rem; + margin-right: 10px; + line-height: 1; + color: #333439; +} + +body[data-background-color="dark"] .demo-icon .icon-preview { + color: #969696; +} + +.demo-icon .icon-class{ + font-weight: 300; + font-size: 13px; + color: #777; +} + +body[data-background-color="dark"] .demo-icon .icon-class { + color: #a9a8a8; +} + +.form-show-notify .form-control{ + margin-bottom: 15px; +} + +.form-show-notify label{ + padding-top: 0.65rem; +} + +.map-demo { + height: 300px; +} + +#instructions li{ + padding: 5px 0; +} + +.row-demo-grid{ + margin-bottom: 15px; +} + +.row-demo-grid [class^="col"]{ + text-align: center; +} + +.row-demo-grid [class^="col"] .card-body{ + background: #ddd; +} + +.btnSwitch button[data-color="white"] { + background-color: #fff; +} +.btnSwitch button[data-color="grey"] { + background-color: #f1f1f1; +} +.btnSwitch button[data-color="black"] { + background-color: #191919; +} +.btnSwitch button[data-color="dark"] { + background-color: #1a2035; +} +.btnSwitch button[data-color="blue"] { + background-color: #1572E8; +} +.btnSwitch button[data-color="purple"] { + background-color: #6861CE; +} +.btnSwitch button[data-color="light-blue"] { + background-color: #48ABF7; +} +.btnSwitch button[data-color="green"] { + background-color: #31CE36; +} +.btnSwitch button[data-color="orange"] { + background-color: #FFAD46; +} +.btnSwitch button[data-color="red"] { + background-color: #F25961; +} +.btnSwitch button[data-color="dark2"] { + background-color: #1f283e; +} +.btnSwitch button[data-color="blue2"] { + background-color: #1269DB; +} +.btnSwitch button[data-color="purple2"] { + background-color: #5C55BF; +} +.btnSwitch button[data-color="light-blue2"] { + background-color: #3697E1; +} +.btnSwitch button[data-color="green2"] { + background-color: #2BB930; +} +.btnSwitch button[data-color="orange2"] { + background-color: #FF9E27; +} +.btnSwitch button[data-color="red2"] { + background-color: #EA4d56; +} +.btnSwitch button[data-color="bg1"] { + background-color: #fafafa; +} +.btnSwitch button[data-color="bg2"] { + background-color: #fff; +} +.btnSwitch button[data-color="bg3"] { + background-color: #f1f1f1; +} + +@media screen and (max-width: 550px){ + .table-typo tr td{ + display: flex; + align-items: center; + word-break: break-word; + } + + .table-typo tr td:first-child p{ + margin-bottom: 0px; + } +} + +@media screen and (max-width: 576px){ + .custom-template .custom-content { + overflow: auto; + } + .form-show-notify > .text-right, .form-show-validation > .text-right { + text-align: left !important; + } +} + +@media screen and (max-width: 400px) { + .custom-template { + width: 85% !important; + right: -85%; + } +} \ No newline at end of file diff --git a/src/main/resources/static/assets/css/fonts.css b/src/main/resources/static/assets/css/fonts.css new file mode 100644 index 0000000..2d6a729 --- /dev/null +++ b/src/main/resources/static/assets/css/fonts.css @@ -0,0 +1,6479 @@ +/* Flaticon */ +@font-face { + font-family: "Flaticon"; + src: url("../fonts/flaticon/Flaticon.eot"); + src: url("../fonts/flaticon/Flaticon.eot?#iefix") format("embedded-opentype"), + url("../fonts/flaticon/Flaticon.woff") format("woff"), + url("../fonts/flaticon/Flaticon.ttf") format("truetype"), + url("../fonts/flaticon/Flaticon.svg#Flaticon") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "Flaticon"; + src: url("../fonts/flaticon/Flaticon.svg#Flaticon") format("svg"); + } +} + +/* Flaticon */ + +/* +Flaticon icon font: Flaticon +Creation date: 13/03/2018 03:24 +*/ +[class^="flaticon-"]:before, +[class*=" flaticon-"]:before { + font-family: Flaticon; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.fi:before { + display: inline-block; + font-family: "Flaticon"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.flaticon-delivery-truck:before { + content: "\f100"; +} + +.flaticon-shopping-bag:before { + content: "\f101"; +} + +.flaticon-box-3:before { + content: "\f102"; +} + +.flaticon-box-2:before { + content: "\f103"; +} + +.flaticon-box-1:before { + content: "\f104"; +} + +.flaticon-laptop:before { + content: "\f105"; +} + +.flaticon-coffee-cup:before { + content: "\f106"; +} + +.flaticon-user-6:before { + content: "\f107"; +} + +.flaticon-user-5:before { + content: "\f108"; +} + +.flaticon-remove-user-1:before { + content: "\f109"; +} + +.flaticon-customer-support:before { + content: "\f10a"; +} + +.flaticon-user-4:before { + content: "\f10b"; +} + +.flaticon-user-3:before { + content: "\f10c"; +} + +.flaticon-user-2:before { + content: "\f10d"; +} + +.flaticon-remove-user:before { + content: "\f10e"; +} + +.flaticon-add-user:before { + content: "\f10f"; +} + +.flaticon-tea-cup:before { + content: "\f110"; +} + +.flaticon-pen:before { + content: "\f111"; +} + +.flaticon-desk:before { + content: "\f112"; +} + +.flaticon-ruler:before { + content: "\f113"; +} + +.flaticon-pencil:before { + content: "\f114"; +} + +.flaticon-analytics:before { + content: "\f115"; +} + +.flaticon-google-plus:before { + content: "\f116"; +} + +.flaticon-dribbble:before { + content: "\f117"; +} + +.flaticon-whatsapp:before { + content: "\f118"; +} + +.flaticon-twitter:before { + content: "\f119"; +} + +.flaticon-behance:before { + content: "\f11a"; +} + +.flaticon-instagram:before { + content: "\f11b"; +} + +.flaticon-android:before { + content: "\f11c"; +} + +.flaticon-apple:before { + content: "\f11d"; +} + +.flaticon-windows:before { + content: "\f11e"; +} + +.flaticon-pinterest:before { + content: "\f11f"; +} + +.flaticon-youtube:before { + content: "\f120"; +} + +.flaticon-paypal:before { + content: "\f121"; +} + +.flaticon-linkedin:before { + content: "\f122"; +} + +.flaticon-facebook:before { + content: "\f123"; +} + +.flaticon-lock-1:before { + content: "\f124"; +} + +.flaticon-lock:before { + content: "\f125"; +} + +.flaticon-profile-1:before { + content: "\f126"; +} + +.flaticon-profile:before { + content: "\f127"; +} + +.flaticon-user-1:before { + content: "\f128"; +} + +.flaticon-user:before { + content: "\f129"; +} + +.flaticon-users:before { + content: "\f12a"; +} + +.flaticon-message:before { + content: "\f12b"; +} + +.flaticon-placeholder-1:before { + content: "\f12c"; +} + +.flaticon-location:before { + content: "\f12d"; +} + +.flaticon-arrows-2:before { + content: "\f12e"; +} + +.flaticon-technology-2:before { + content: "\f12f"; +} + +.flaticon-multimedia-2:before { + content: "\f130"; +} + +.flaticon-multimedia-1:before { + content: "\f131"; +} + +.flaticon-close:before { + content: "\f132"; +} + +.flaticon-home:before { + content: "\f133"; +} + +.flaticon-circle:before { + content: "\f134"; +} + +.flaticon-arrow:before { + content: "\f135"; +} + +.flaticon-mark-1:before { + content: "\f136"; +} + +.flaticon-mark:before { + content: "\f137"; +} + +.flaticon-shapes-1:before { + content: "\f138"; +} + +.flaticon-search-2:before { + content: "\f139"; +} + +.flaticon-interface-7:before { + content: "\f13a"; +} + +.flaticon-suitcase:before { + content: "\f13b"; +} + +.flaticon-chain-1:before { + content: "\f13c"; +} + +.flaticon-chain:before { + content: "\f13d"; +} + +.flaticon-agenda-1:before { + content: "\f13e"; +} + +.flaticon-interface-6:before { + content: "\f13f"; +} + +.flaticon-calendar:before { + content: "\f140"; +} + +.flaticon-list:before { + content: "\f141"; +} + +.flaticon-file-1:before { + content: "\f142"; +} + +.flaticon-file:before { + content: "\f143"; +} + +.flaticon-interface-5:before { + content: "\f144"; +} + +.flaticon-folder:before { + content: "\f145"; +} + +.flaticon-stopwatch:before { + content: "\f146"; +} + +.flaticon-time:before { + content: "\f147"; +} + +.flaticon-clock-1:before { + content: "\f148"; +} + +.flaticon-search-1:before { + content: "\f149"; +} + +.flaticon-alarm-1:before { + content: "\f14a"; +} + +.flaticon-alarm:before { + content: "\f14b"; +} + +.flaticon-present:before { + content: "\f14c"; +} + +.flaticon-layers-1:before { + content: "\f14d"; +} + +.flaticon-settings:before { + content: "\f14e"; +} + +.flaticon-attachment:before { + content: "\f14f"; +} + +.flaticon-gestures:before { + content: "\f150"; +} + +.flaticon-tool:before { + content: "\f151"; +} + +.flaticon-interface-4:before { + content: "\f152"; +} + +.flaticon-interface-3:before { + content: "\f153"; +} + +.flaticon-agenda:before { + content: "\f154"; +} + +.flaticon-shapes:before { + content: "\f155"; +} + +.flaticon-symbol-1:before { + content: "\f156"; +} + +.flaticon-symbol:before { + content: "\f157"; +} + +.flaticon-interface-2:before { + content: "\f158"; +} + +.flaticon-layers:before { + content: "\f159"; +} + +.flaticon-clock:before { + content: "\f15a"; +} + +.flaticon-web-1:before { + content: "\f15b"; +} + +.flaticon-internet:before { + content: "\f15c"; +} + +.flaticon-placeholder:before { + content: "\f15d"; +} + +.flaticon-signs-3:before { + content: "\f15e"; +} + +.flaticon-star-1:before { + content: "\f15f"; +} + +.flaticon-web:before { + content: "\f160"; +} + +.flaticon-star:before { + content: "\f161"; +} + +.flaticon-like-1:before { + content: "\f162"; +} + +.flaticon-like:before { + content: "\f163"; +} + +.flaticon-cloud:before { + content: "\f164"; +} + +.flaticon-database:before { + content: "\f165"; +} + +.flaticon-technology-1:before { + content: "\f166"; +} + +.flaticon-idea:before { + content: "\f167"; +} + +.flaticon-search:before { + content: "\f168"; +} + +.flaticon-wifi:before { + content: "\f169"; +} + +.flaticon-hands-1:before { + content: "\f16a"; +} + +.flaticon-hands:before { + content: "\f16b"; +} + +.flaticon-bars-2:before { + content: "\f16c"; +} + +.flaticon-arrows-1:before { + content: "\f16d"; +} + +.flaticon-interface-1:before { + content: "\f16e"; +} + +.flaticon-network:before { + content: "\f16f"; +} + +.flaticon-share-1:before { + content: "\f170"; +} + +.flaticon-share:before { + content: "\f171"; +} + +.flaticon-bars-1:before { + content: "\f172"; +} + +.flaticon-cross-1:before { + content: "\f173"; +} + +.flaticon-line-1:before { + content: "\f174"; +} + +.flaticon-signs-2:before { + content: "\f175"; +} + +.flaticon-check:before { + content: "\f176"; +} + +.flaticon-technology:before { + content: "\f177"; +} + +.flaticon-bars:before { + content: "\f178"; +} + +.flaticon-cross:before { + content: "\f179"; +} + +.flaticon-add:before { + content: "\f17a"; +} + +.flaticon-power:before { + content: "\f17b"; +} + +.flaticon-signs-1:before { + content: "\f17c"; +} + +.flaticon-round:before { + content: "\f17d"; +} + +.flaticon-exclamation:before { + content: "\f17e"; +} + +.flaticon-success:before { + content: "\f17f"; +} + +.flaticon-error:before { + content: "\f180"; +} + +.flaticon-line:before { + content: "\f181"; +} + +.flaticon-plus:before { + content: "\f182"; +} + +.flaticon-interface:before { + content: "\f183"; +} + +.flaticon-signs:before { + content: "\f184"; +} + +.flaticon-play-button-1:before { + content: "\f185"; +} + +.flaticon-play-button:before { + content: "\f186"; +} + +.flaticon-music-player:before { + content: "\f187"; +} + +.flaticon-medical:before { + content: "\f188"; +} + +.flaticon-photo-camera:before { + content: "\f189"; +} + +.flaticon-picture:before { + content: "\f18a"; +} + +.flaticon-multimedia:before { + content: "\f18b"; +} + +.flaticon-game-controller:before { + content: "\f18c"; +} + +.flaticon-imac:before { + content: "\f18d"; +} + +.flaticon-paint-palette:before { + content: "\f18e"; +} + +.flaticon-envelope-3:before { + content: "\f18f"; +} + +.flaticon-envelope-2:before { + content: "\f190"; +} + +.flaticon-envelope-1:before { + content: "\f191"; +} + +.flaticon-envelope:before { + content: "\f192"; +} + +.flaticon-mailbox:before { + content: "\f193"; +} + +.flaticon-inbox:before { + content: "\f194"; +} + +.flaticon-chat-8:before { + content: "\f195"; +} + +.flaticon-chat-7:before { + content: "\f196"; +} + +.flaticon-chat-6:before { + content: "\f197"; +} + +.flaticon-chat-5:before { + content: "\f198"; +} + +.flaticon-chat-4:before { + content: "\f199"; +} + +.flaticon-chat-3:before { + content: "\f19a"; +} + +.flaticon-chat-2:before { + content: "\f19b"; +} + +.flaticon-chat-1:before { + content: "\f19c"; +} + +.flaticon-chat:before { + content: "\f19d"; +} + +.flaticon-archive:before { + content: "\f19e"; +} + +.flaticon-diagram:before { + content: "\f19f"; +} + +.flaticon-graph-2:before { + content: "\f1a0"; +} + +.flaticon-graph-1:before { + content: "\f1a1"; +} + +.flaticon-graph:before { + content: "\f1a2"; +} + +.flaticon-chart-pie:before { + content: "\f1a3"; +} + +.flaticon-presentation:before { + content: "\f1a4"; +} + +.flaticon-store:before { + content: "\f1a5"; +} + +.flaticon-coins:before { + content: "\f1a6"; +} + +.flaticon-credit-card-1:before { + content: "\f1a7"; +} + +.flaticon-credit-card:before { + content: "\f1a8"; +} + +.flaticon-cart-1:before { + content: "\f1a9"; +} + +.flaticon-cart:before { + content: "\f1aa"; +} + +.flaticon-price-tag:before { + content: "\f1ab"; +} + +.flaticon-box:before { + content: "\f1ac"; +} + +.flaticon-right-arrow-4:before { + content: "\f1ad"; +} + +.flaticon-left-arrow-4:before { + content: "\f1ae"; +} + +.flaticon-up-arrow-3:before { + content: "\f1af"; +} + +.flaticon-download-1:before { + content: "\f1b0"; +} + +.flaticon-down-arrow-3:before { + content: "\f1b1"; +} + +.flaticon-up-arrow-2:before { + content: "\f1b2"; +} + +.flaticon-left-arrow-3:before { + content: "\f1b3"; +} + +.flaticon-right-arrow-3:before { + content: "\f1b4"; +} + +.flaticon-down-arrow-2:before { + content: "\f1b5"; +} + +.flaticon-arrows:before { + content: "\f1b6"; +} + +.flaticon-left-arrow-2:before { + content: "\f1b7"; +} + +.flaticon-right-arrow-2:before { + content: "\f1b8"; +} + +.flaticon-upward:before { + content: "\f1b9"; +} + +.flaticon-download:before { + content: "\f1ba"; +} + +.flaticon-back:before { + content: "\f1bb"; +} + +.flaticon-next:before { + content: "\f1bc"; +} + +.flaticon-up-arrow-1:before { + content: "\f1bd"; +} + +.flaticon-down-arrow-1:before { + content: "\f1be"; +} + +.flaticon-left-arrow-1:before { + content: "\f1bf"; +} + +.flaticon-right-arrow-1:before { + content: "\f1c0"; +} + +.flaticon-up-arrow:before { + content: "\f1c1"; +} + +.flaticon-down-arrow:before { + content: "\f1c2"; +} + +.flaticon-left-arrow:before { + content: "\f1c3"; +} + +.flaticon-right-arrow:before { + content: "\f1c4"; +} + +.flaticon-expand:before { + content: "\f1c5"; +} + +.flaticon-repeat:before { + content: "\f1c6"; +} + +/*! + * Font Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa, .fas, .far, .fal, .fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; +} + +.fa-xs { + font-size: .75em; +} + +.fa-sm { + font-size: .875em; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; +} +.fa-ul > li { + position: relative; +} + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; +} + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; +} + +.fa-pull-left { + float: left; +} + +.fa-pull-right { + float: right; +} + +.fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { + margin-right: .3em; +} + +.fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { + margin-left: .3em; +} + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); +} + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); +} + +.fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); +} + +:root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical { + -webkit-filter: none; + filter: none; +} + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2em; +} + +.fa-stack-1x, .fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; +} + +.fa-stack-1x { + line-height: inherit; +} + +.fa-stack-2x { + font-size: 2em; +} + +.fa-inverse { + color: #fff; +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; +} + +.fa-accessible-icon:before { + content: "\f368"; +} + +.fa-accusoft:before { + content: "\f369"; +} + +.fa-address-book:before { + content: "\f2b9"; +} + +.fa-address-card:before { + content: "\f2bb"; +} + +.fa-adjust:before { + content: "\f042"; +} + +.fa-adn:before { + content: "\f170"; +} + +.fa-adversal:before { + content: "\f36a"; +} + +.fa-affiliatetheme:before { + content: "\f36b"; +} + +.fa-air-freshener:before { + content: "\f5d0"; +} + +.fa-algolia:before { + content: "\f36c"; +} + +.fa-align-center:before { + content: "\f037"; +} + +.fa-align-justify:before { + content: "\f039"; +} + +.fa-align-left:before { + content: "\f036"; +} + +.fa-align-right:before { + content: "\f038"; +} + +.fa-allergies:before { + content: "\f461"; +} + +.fa-amazon:before { + content: "\f270"; +} + +.fa-amazon-pay:before { + content: "\f42c"; +} + +.fa-ambulance:before { + content: "\f0f9"; +} + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} + +.fa-amilia:before { + content: "\f36d"; +} + +.fa-anchor:before { + content: "\f13d"; +} + +.fa-android:before { + content: "\f17b"; +} + +.fa-angellist:before { + content: "\f209"; +} + +.fa-angle-double-down:before { + content: "\f103"; +} + +.fa-angle-double-left:before { + content: "\f100"; +} + +.fa-angle-double-right:before { + content: "\f101"; +} + +.fa-angle-double-up:before { + content: "\f102"; +} + +.fa-angle-down:before { + content: "\f107"; +} + +.fa-angle-left:before { + content: "\f104"; +} + +.fa-angle-right:before { + content: "\f105"; +} + +.fa-angle-up:before { + content: "\f106"; +} + +.fa-angry:before { + content: "\f556"; +} + +.fa-angrycreative:before { + content: "\f36e"; +} + +.fa-angular:before { + content: "\f420"; +} + +.fa-app-store:before { + content: "\f36f"; +} + +.fa-app-store-ios:before { + content: "\f370"; +} + +.fa-apper:before { + content: "\f371"; +} + +.fa-apple:before { + content: "\f179"; +} + +.fa-apple-alt:before { + content: "\f5d1"; +} + +.fa-apple-pay:before { + content: "\f415"; +} + +.fa-archive:before { + content: "\f187"; +} + +.fa-archway:before { + content: "\f557"; +} + +.fa-arrow-alt-circle-down:before { + content: "\f358"; +} + +.fa-arrow-alt-circle-left:before { + content: "\f359"; +} + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; +} + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; +} + +.fa-arrow-circle-down:before { + content: "\f0ab"; +} + +.fa-arrow-circle-left:before { + content: "\f0a8"; +} + +.fa-arrow-circle-right:before { + content: "\f0a9"; +} + +.fa-arrow-circle-up:before { + content: "\f0aa"; +} + +.fa-arrow-down:before { + content: "\f063"; +} + +.fa-arrow-left:before { + content: "\f060"; +} + +.fa-arrow-right:before { + content: "\f061"; +} + +.fa-arrow-up:before { + content: "\f062"; +} + +.fa-arrows-alt:before { + content: "\f0b2"; +} + +.fa-arrows-alt-h:before { + content: "\f337"; +} + +.fa-arrows-alt-v:before { + content: "\f338"; +} + +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} + +.fa-asterisk:before { + content: "\f069"; +} + +.fa-asymmetrik:before { + content: "\f372"; +} + +.fa-at:before { + content: "\f1fa"; +} + +.fa-atlas:before { + content: "\f558"; +} + +.fa-atom:before { + content: "\f5d2"; +} + +.fa-audible:before { + content: "\f373"; +} + +.fa-audio-description:before { + content: "\f29e"; +} + +.fa-autoprefixer:before { + content: "\f41c"; +} + +.fa-avianex:before { + content: "\f374"; +} + +.fa-aviato:before { + content: "\f421"; +} + +.fa-award:before { + content: "\f559"; +} + +.fa-aws:before { + content: "\f375"; +} + +.fa-backspace:before { + content: "\f55a"; +} + +.fa-backward:before { + content: "\f04a"; +} + +.fa-balance-scale:before { + content: "\f24e"; +} + +.fa-ban:before { + content: "\f05e"; +} + +.fa-band-aid:before { + content: "\f462"; +} + +.fa-bandcamp:before { + content: "\f2d5"; +} + +.fa-barcode:before { + content: "\f02a"; +} + +.fa-bars:before { + content: "\f0c9"; +} + +.fa-baseball-ball:before { + content: "\f433"; +} + +.fa-basketball-ball:before { + content: "\f434"; +} + +.fa-bath:before { + content: "\f2cd"; +} + +.fa-battery-empty:before { + content: "\f244"; +} + +.fa-battery-full:before { + content: "\f240"; +} + +.fa-battery-half:before { + content: "\f242"; +} + +.fa-battery-quarter:before { + content: "\f243"; +} + +.fa-battery-three-quarters:before { + content: "\f241"; +} + +.fa-bed:before { + content: "\f236"; +} + +.fa-beer:before { + content: "\f0fc"; +} + +.fa-behance:before { + content: "\f1b4"; +} + +.fa-behance-square:before { + content: "\f1b5"; +} + +.fa-bell:before { + content: "\f0f3"; +} + +.fa-bell-slash:before { + content: "\f1f6"; +} + +.fa-bezier-curve:before { + content: "\f55b"; +} + +.fa-bicycle:before { + content: "\f206"; +} + +.fa-bimobject:before { + content: "\f378"; +} + +.fa-binoculars:before { + content: "\f1e5"; +} + +.fa-birthday-cake:before { + content: "\f1fd"; +} + +.fa-bitbucket:before { + content: "\f171"; +} + +.fa-bitcoin:before { + content: "\f379"; +} + +.fa-bity:before { + content: "\f37a"; +} + +.fa-black-tie:before { + content: "\f27e"; +} + +.fa-blackberry:before { + content: "\f37b"; +} + +.fa-blender:before { + content: "\f517"; +} + +.fa-blind:before { + content: "\f29d"; +} + +.fa-blogger:before { + content: "\f37c"; +} + +.fa-blogger-b:before { + content: "\f37d"; +} + +.fa-bluetooth:before { + content: "\f293"; +} + +.fa-bluetooth-b:before { + content: "\f294"; +} + +.fa-bold:before { + content: "\f032"; +} + +.fa-bolt:before { + content: "\f0e7"; +} + +.fa-bomb:before { + content: "\f1e2"; +} + +.fa-bone:before { + content: "\f5d7"; +} + +.fa-bong:before { + content: "\f55c"; +} + +.fa-book:before { + content: "\f02d"; +} + +.fa-book-open:before { + content: "\f518"; +} + +.fa-book-reader:before { + content: "\f5da"; +} + +.fa-bookmark:before { + content: "\f02e"; +} + +.fa-bowling-ball:before { + content: "\f436"; +} + +.fa-box:before { + content: "\f466"; +} + +.fa-box-open:before { + content: "\f49e"; +} + +.fa-boxes:before { + content: "\f468"; +} + +.fa-braille:before { + content: "\f2a1"; +} + +.fa-brain:before { + content: "\f5dc"; +} + +.fa-briefcase:before { + content: "\f0b1"; +} + +.fa-briefcase-medical:before { + content: "\f469"; +} + +.fa-broadcast-tower:before { + content: "\f519"; +} + +.fa-broom:before { + content: "\f51a"; +} + +.fa-brush:before { + content: "\f55d"; +} + +.fa-btc:before { + content: "\f15a"; +} + +.fa-bug:before { + content: "\f188"; +} + +.fa-building:before { + content: "\f1ad"; +} + +.fa-bullhorn:before { + content: "\f0a1"; +} + +.fa-bullseye:before { + content: "\f140"; +} + +.fa-burn:before { + content: "\f46a"; +} + +.fa-buromobelexperte:before { + content: "\f37f"; +} + +.fa-bus:before { + content: "\f207"; +} + +.fa-bus-alt:before { + content: "\f55e"; +} + +.fa-buysellads:before { + content: "\f20d"; +} + +.fa-calculator:before { + content: "\f1ec"; +} + +.fa-calendar:before { + content: "\f133"; +} + +.fa-calendar-alt:before { + content: "\f073"; +} + +.fa-calendar-check:before { + content: "\f274"; +} + +.fa-calendar-minus:before { + content: "\f272"; +} + +.fa-calendar-plus:before { + content: "\f271"; +} + +.fa-calendar-times:before { + content: "\f273"; +} + +.fa-camera:before { + content: "\f030"; +} + +.fa-camera-retro:before { + content: "\f083"; +} + +.fa-cannabis:before { + content: "\f55f"; +} + +.fa-capsules:before { + content: "\f46b"; +} + +.fa-car:before { + content: "\f1b9"; +} + +.fa-car-alt:before { + content: "\f5de"; +} + +.fa-car-battery:before { + content: "\f5df"; +} + +.fa-car-crash:before { + content: "\f5e1"; +} + +.fa-car-side:before { + content: "\f5e4"; +} + +.fa-caret-down:before { + content: "\f0d7"; +} + +.fa-caret-left:before { + content: "\f0d9"; +} + +.fa-caret-right:before { + content: "\f0da"; +} + +.fa-caret-square-down:before { + content: "\f150"; +} + +.fa-caret-square-left:before { + content: "\f191"; +} + +.fa-caret-square-right:before { + content: "\f152"; +} + +.fa-caret-square-up:before { + content: "\f151"; +} + +.fa-caret-up:before { + content: "\f0d8"; +} + +.fa-cart-arrow-down:before { + content: "\f218"; +} + +.fa-cart-plus:before { + content: "\f217"; +} + +.fa-cc-amazon-pay:before { + content: "\f42d"; +} + +.fa-cc-amex:before { + content: "\f1f3"; +} + +.fa-cc-apple-pay:before { + content: "\f416"; +} + +.fa-cc-diners-club:before { + content: "\f24c"; +} + +.fa-cc-discover:before { + content: "\f1f2"; +} + +.fa-cc-jcb:before { + content: "\f24b"; +} + +.fa-cc-mastercard:before { + content: "\f1f1"; +} + +.fa-cc-paypal:before { + content: "\f1f4"; +} + +.fa-cc-stripe:before { + content: "\f1f5"; +} + +.fa-cc-visa:before { + content: "\f1f0"; +} + +.fa-centercode:before { + content: "\f380"; +} + +.fa-certificate:before { + content: "\f0a3"; +} + +.fa-chalkboard:before { + content: "\f51b"; +} + +.fa-chalkboard-teacher:before { + content: "\f51c"; +} + +.fa-charging-station:before { + content: "\f5e7"; +} + +.fa-chart-area:before { + content: "\f1fe"; +} + +.fa-chart-bar:before { + content: "\f080"; +} + +.fa-chart-line:before { + content: "\f201"; +} + +.fa-chart-pie:before { + content: "\f200"; +} + +.fa-check:before { + content: "\f00c"; +} + +.fa-check-circle:before { + content: "\f058"; +} + +.fa-check-double:before { + content: "\f560"; +} + +.fa-check-square:before { + content: "\f14a"; +} + +.fa-chess:before { + content: "\f439"; +} + +.fa-chess-bishop:before { + content: "\f43a"; +} + +.fa-chess-board:before { + content: "\f43c"; +} + +.fa-chess-king:before { + content: "\f43f"; +} + +.fa-chess-knight:before { + content: "\f441"; +} + +.fa-chess-pawn:before { + content: "\f443"; +} + +.fa-chess-queen:before { + content: "\f445"; +} + +.fa-chess-rook:before { + content: "\f447"; +} + +.fa-chevron-circle-down:before { + content: "\f13a"; +} + +.fa-chevron-circle-left:before { + content: "\f137"; +} + +.fa-chevron-circle-right:before { + content: "\f138"; +} + +.fa-chevron-circle-up:before { + content: "\f139"; +} + +.fa-chevron-down:before { + content: "\f078"; +} + +.fa-chevron-left:before { + content: "\f053"; +} + +.fa-chevron-right:before { + content: "\f054"; +} + +.fa-chevron-up:before { + content: "\f077"; +} + +.fa-child:before { + content: "\f1ae"; +} + +.fa-chrome:before { + content: "\f268"; +} + +.fa-church:before { + content: "\f51d"; +} + +.fa-circle:before { + content: "\f111"; +} + +.fa-circle-notch:before { + content: "\f1ce"; +} + +.fa-clipboard:before { + content: "\f328"; +} + +.fa-clipboard-check:before { + content: "\f46c"; +} + +.fa-clipboard-list:before { + content: "\f46d"; +} + +.fa-clock:before { + content: "\f017"; +} + +.fa-clone:before { + content: "\f24d"; +} + +.fa-closed-captioning:before { + content: "\f20a"; +} + +.fa-cloud:before { + content: "\f0c2"; +} + +.fa-cloud-download-alt:before { + content: "\f381"; +} + +.fa-cloud-upload-alt:before { + content: "\f382"; +} + +.fa-cloudscale:before { + content: "\f383"; +} + +.fa-cloudsmith:before { + content: "\f384"; +} + +.fa-cloudversify:before { + content: "\f385"; +} + +.fa-cocktail:before { + content: "\f561"; +} + +.fa-code:before { + content: "\f121"; +} + +.fa-code-branch:before { + content: "\f126"; +} + +.fa-codepen:before { + content: "\f1cb"; +} + +.fa-codiepie:before { + content: "\f284"; +} + +.fa-coffee:before { + content: "\f0f4"; +} + +.fa-cog:before { + content: "\f013"; +} + +.fa-cogs:before { + content: "\f085"; +} + +.fa-coins:before { + content: "\f51e"; +} + +.fa-columns:before { + content: "\f0db"; +} + +.fa-comment:before { + content: "\f075"; +} + +.fa-comment-alt:before { + content: "\f27a"; +} + +.fa-comment-dots:before { + content: "\f4ad"; +} + +.fa-comment-slash:before { + content: "\f4b3"; +} + +.fa-comments:before { + content: "\f086"; +} + +.fa-compact-disc:before { + content: "\f51f"; +} + +.fa-compass:before { + content: "\f14e"; +} + +.fa-compress:before { + content: "\f066"; +} + +.fa-concierge-bell:before { + content: "\f562"; +} + +.fa-connectdevelop:before { + content: "\f20e"; +} + +.fa-contao:before { + content: "\f26d"; +} + +.fa-cookie:before { + content: "\f563"; +} + +.fa-cookie-bite:before { + content: "\f564"; +} + +.fa-copy:before { + content: "\f0c5"; +} + +.fa-copyright:before { + content: "\f1f9"; +} + +.fa-couch:before { + content: "\f4b8"; +} + +.fa-cpanel:before { + content: "\f388"; +} + +.fa-creative-commons:before { + content: "\f25e"; +} + +.fa-creative-commons-by:before { + content: "\f4e7"; +} + +.fa-creative-commons-nc:before { + content: "\f4e8"; +} + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; +} + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; +} + +.fa-creative-commons-nd:before { + content: "\f4eb"; +} + +.fa-creative-commons-pd:before { + content: "\f4ec"; +} + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; +} + +.fa-creative-commons-remix:before { + content: "\f4ee"; +} + +.fa-creative-commons-sa:before { + content: "\f4ef"; +} + +.fa-creative-commons-sampling:before { + content: "\f4f0"; +} + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; +} + +.fa-creative-commons-share:before { + content: "\f4f2"; +} + +.fa-credit-card:before { + content: "\f09d"; +} + +.fa-crop:before { + content: "\f125"; +} + +.fa-crop-alt:before { + content: "\f565"; +} + +.fa-crosshairs:before { + content: "\f05b"; +} + +.fa-crow:before { + content: "\f520"; +} + +.fa-crown:before { + content: "\f521"; +} + +.fa-css3:before { + content: "\f13c"; +} + +.fa-css3-alt:before { + content: "\f38b"; +} + +.fa-cube:before { + content: "\f1b2"; +} + +.fa-cubes:before { + content: "\f1b3"; +} + +.fa-cut:before { + content: "\f0c4"; +} + +.fa-cuttlefish:before { + content: "\f38c"; +} + +.fa-d-and-d:before { + content: "\f38d"; +} + +.fa-dashcube:before { + content: "\f210"; +} + +.fa-database:before { + content: "\f1c0"; +} + +.fa-deaf:before { + content: "\f2a4"; +} + +.fa-delicious:before { + content: "\f1a5"; +} + +.fa-deploydog:before { + content: "\f38e"; +} + +.fa-deskpro:before { + content: "\f38f"; +} + +.fa-desktop:before { + content: "\f108"; +} + +.fa-deviantart:before { + content: "\f1bd"; +} + +.fa-diagnoses:before { + content: "\f470"; +} + +.fa-dice:before { + content: "\f522"; +} + +.fa-dice-five:before { + content: "\f523"; +} + +.fa-dice-four:before { + content: "\f524"; +} + +.fa-dice-one:before { + content: "\f525"; +} + +.fa-dice-six:before { + content: "\f526"; +} + +.fa-dice-three:before { + content: "\f527"; +} + +.fa-dice-two:before { + content: "\f528"; +} + +.fa-digg:before { + content: "\f1a6"; +} + +.fa-digital-ocean:before { + content: "\f391"; +} + +.fa-digital-tachograph:before { + content: "\f566"; +} + +.fa-directions:before { + content: "\f5eb"; +} + +.fa-discord:before { + content: "\f392"; +} + +.fa-discourse:before { + content: "\f393"; +} + +.fa-divide:before { + content: "\f529"; +} + +.fa-dizzy:before { + content: "\f567"; +} + +.fa-dna:before { + content: "\f471"; +} + +.fa-dochub:before { + content: "\f394"; +} + +.fa-docker:before { + content: "\f395"; +} + +.fa-dollar-sign:before { + content: "\f155"; +} + +.fa-dolly:before { + content: "\f472"; +} + +.fa-dolly-flatbed:before { + content: "\f474"; +} + +.fa-donate:before { + content: "\f4b9"; +} + +.fa-door-closed:before { + content: "\f52a"; +} + +.fa-door-open:before { + content: "\f52b"; +} + +.fa-dot-circle:before { + content: "\f192"; +} + +.fa-dove:before { + content: "\f4ba"; +} + +.fa-download:before { + content: "\f019"; +} + +.fa-draft2digital:before { + content: "\f396"; +} + +.fa-drafting-compass:before { + content: "\f568"; +} + +.fa-draw-polygon:before { + content: "\f5ee"; +} + +.fa-dribbble:before { + content: "\f17d"; +} + +.fa-dribbble-square:before { + content: "\f397"; +} + +.fa-dropbox:before { + content: "\f16b"; +} + +.fa-drum:before { + content: "\f569"; +} + +.fa-drum-steelpan:before { + content: "\f56a"; +} + +.fa-drupal:before { + content: "\f1a9"; +} + +.fa-dumbbell:before { + content: "\f44b"; +} + +.fa-dyalog:before { + content: "\f399"; +} + +.fa-earlybirds:before { + content: "\f39a"; +} + +.fa-ebay:before { + content: "\f4f4"; +} + +.fa-edge:before { + content: "\f282"; +} + +.fa-edit:before { + content: "\f044"; +} + +.fa-eject:before { + content: "\f052"; +} + +.fa-elementor:before { + content: "\f430"; +} + +.fa-ellipsis-h:before { + content: "\f141"; +} + +.fa-ellipsis-v:before { + content: "\f142"; +} + +.fa-ello:before { + content: "\f5f1"; +} + +.fa-ember:before { + content: "\f423"; +} + +.fa-empire:before { + content: "\f1d1"; +} + +.fa-envelope:before { + content: "\f0e0"; +} + +.fa-envelope-open:before { + content: "\f2b6"; +} + +.fa-envelope-square:before { + content: "\f199"; +} + +.fa-envira:before { + content: "\f299"; +} + +.fa-equals:before { + content: "\f52c"; +} + +.fa-eraser:before { + content: "\f12d"; +} + +.fa-erlang:before { + content: "\f39d"; +} + +.fa-ethereum:before { + content: "\f42e"; +} + +.fa-etsy:before { + content: "\f2d7"; +} + +.fa-euro-sign:before { + content: "\f153"; +} + +.fa-exchange-alt:before { + content: "\f362"; +} + +.fa-exclamation:before { + content: "\f12a"; +} + +.fa-exclamation-circle:before { + content: "\f06a"; +} + +.fa-exclamation-triangle:before { + content: "\f071"; +} + +.fa-expand:before { + content: "\f065"; +} + +.fa-expand-arrows-alt:before { + content: "\f31e"; +} + +.fa-expeditedssl:before { + content: "\f23e"; +} + +.fa-external-link-alt:before { + content: "\f35d"; +} + +.fa-external-link-square-alt:before { + content: "\f360"; +} + +.fa-eye:before { + content: "\f06e"; +} + +.fa-eye-dropper:before { + content: "\f1fb"; +} + +.fa-eye-slash:before { + content: "\f070"; +} + +.fa-facebook:before { + content: "\f09a"; +} + +.fa-facebook-f:before { + content: "\f39e"; +} + +.fa-facebook-messenger:before { + content: "\f39f"; +} + +.fa-facebook-square:before { + content: "\f082"; +} + +.fa-fast-backward:before { + content: "\f049"; +} + +.fa-fast-forward:before { + content: "\f050"; +} + +.fa-fax:before { + content: "\f1ac"; +} + +.fa-feather:before { + content: "\f52d"; +} + +.fa-feather-alt:before { + content: "\f56b"; +} + +.fa-female:before { + content: "\f182"; +} + +.fa-fighter-jet:before { + content: "\f0fb"; +} + +.fa-file:before { + content: "\f15b"; +} + +.fa-file-alt:before { + content: "\f15c"; +} + +.fa-file-archive:before { + content: "\f1c6"; +} + +.fa-file-audio:before { + content: "\f1c7"; +} + +.fa-file-code:before { + content: "\f1c9"; +} + +.fa-file-contract:before { + content: "\f56c"; +} + +.fa-file-download:before { + content: "\f56d"; +} + +.fa-file-excel:before { + content: "\f1c3"; +} + +.fa-file-export:before { + content: "\f56e"; +} + +.fa-file-image:before { + content: "\f1c5"; +} + +.fa-file-import:before { + content: "\f56f"; +} + +.fa-file-invoice:before { + content: "\f570"; +} + +.fa-file-invoice-dollar:before { + content: "\f571"; +} + +.fa-file-medical:before { + content: "\f477"; +} + +.fa-file-medical-alt:before { + content: "\f478"; +} + +.fa-file-pdf:before { + content: "\f1c1"; +} + +.fa-file-powerpoint:before { + content: "\f1c4"; +} + +.fa-file-prescription:before { + content: "\f572"; +} + +.fa-file-signature:before { + content: "\f573"; +} + +.fa-file-upload:before { + content: "\f574"; +} + +.fa-file-video:before { + content: "\f1c8"; +} + +.fa-file-word:before { + content: "\f1c2"; +} + +.fa-fill:before { + content: "\f575"; +} + +.fa-fill-drip:before { + content: "\f576"; +} + +.fa-film:before { + content: "\f008"; +} + +.fa-filter:before { + content: "\f0b0"; +} + +.fa-fingerprint:before { + content: "\f577"; +} + +.fa-fire:before { + content: "\f06d"; +} + +.fa-fire-extinguisher:before { + content: "\f134"; +} + +.fa-firefox:before { + content: "\f269"; +} + +.fa-first-aid:before { + content: "\f479"; +} + +.fa-first-order:before { + content: "\f2b0"; +} + +.fa-first-order-alt:before { + content: "\f50a"; +} + +.fa-firstdraft:before { + content: "\f3a1"; +} + +.fa-fish:before { + content: "\f578"; +} + +.fa-flag:before { + content: "\f024"; +} + +.fa-flag-checkered:before { + content: "\f11e"; +} + +.fa-flask:before { + content: "\f0c3"; +} + +.fa-flickr:before { + content: "\f16e"; +} + +.fa-flipboard:before { + content: "\f44d"; +} + +.fa-flushed:before { + content: "\f579"; +} + +.fa-fly:before { + content: "\f417"; +} + +.fa-folder:before { + content: "\f07b"; +} + +.fa-folder-open:before { + content: "\f07c"; +} + +.fa-font:before { + content: "\f031"; +} + +.fa-font-awesome:before { + content: "\f2b4"; +} + +.fa-font-awesome-alt:before { + content: "\f35c"; +} + +.fa-font-awesome-flag:before { + content: "\f425"; +} + +.fa-font-awesome-logo-full:before { + content: "\f4e6"; +} + +.fa-fonticons:before { + content: "\f280"; +} + +.fa-fonticons-fi:before { + content: "\f3a2"; +} + +.fa-football-ball:before { + content: "\f44e"; +} + +.fa-fort-awesome:before { + content: "\f286"; +} + +.fa-fort-awesome-alt:before { + content: "\f3a3"; +} + +.fa-forumbee:before { + content: "\f211"; +} + +.fa-forward:before { + content: "\f04e"; +} + +.fa-foursquare:before { + content: "\f180"; +} + +.fa-free-code-camp:before { + content: "\f2c5"; +} + +.fa-freebsd:before { + content: "\f3a4"; +} + +.fa-frog:before { + content: "\f52e"; +} + +.fa-frown:before { + content: "\f119"; +} + +.fa-frown-open:before { + content: "\f57a"; +} + +.fa-fulcrum:before { + content: "\f50b"; +} + +.fa-futbol:before { + content: "\f1e3"; +} + +.fa-galactic-republic:before { + content: "\f50c"; +} + +.fa-galactic-senate:before { + content: "\f50d"; +} + +.fa-gamepad:before { + content: "\f11b"; +} + +.fa-gas-pump:before { + content: "\f52f"; +} + +.fa-gavel:before { + content: "\f0e3"; +} + +.fa-gem:before { + content: "\f3a5"; +} + +.fa-genderless:before { + content: "\f22d"; +} + +.fa-get-pocket:before { + content: "\f265"; +} + +.fa-gg:before { + content: "\f260"; +} + +.fa-gg-circle:before { + content: "\f261"; +} + +.fa-gift:before { + content: "\f06b"; +} + +.fa-git:before { + content: "\f1d3"; +} + +.fa-git-square:before { + content: "\f1d2"; +} + +.fa-github:before { + content: "\f09b"; +} + +.fa-github-alt:before { + content: "\f113"; +} + +.fa-github-square:before { + content: "\f092"; +} + +.fa-gitkraken:before { + content: "\f3a6"; +} + +.fa-gitlab:before { + content: "\f296"; +} + +.fa-gitter:before { + content: "\f426"; +} + +.fa-glass-martini:before { + content: "\f000"; +} + +.fa-glass-martini-alt:before { + content: "\f57b"; +} + +.fa-glasses:before { + content: "\f530"; +} + +.fa-glide:before { + content: "\f2a5"; +} + +.fa-glide-g:before { + content: "\f2a6"; +} + +.fa-globe:before { + content: "\f0ac"; +} + +.fa-globe-africa:before { + content: "\f57c"; +} + +.fa-globe-americas:before { + content: "\f57d"; +} + +.fa-globe-asia:before { + content: "\f57e"; +} + +.fa-gofore:before { + content: "\f3a7"; +} + +.fa-golf-ball:before { + content: "\f450"; +} + +.fa-goodreads:before { + content: "\f3a8"; +} + +.fa-goodreads-g:before { + content: "\f3a9"; +} + +.fa-google:before { + content: "\f1a0"; +} + +.fa-google-drive:before { + content: "\f3aa"; +} + +.fa-google-play:before { + content: "\f3ab"; +} + +.fa-google-plus:before { + content: "\f2b3"; +} + +.fa-google-plus-g:before { + content: "\f0d5"; +} + +.fa-google-plus-square:before { + content: "\f0d4"; +} + +.fa-google-wallet:before { + content: "\f1ee"; +} + +.fa-graduation-cap:before { + content: "\f19d"; +} + +.fa-gratipay:before { + content: "\f184"; +} + +.fa-grav:before { + content: "\f2d6"; +} + +.fa-greater-than:before { + content: "\f531"; +} + +.fa-greater-than-equal:before { + content: "\f532"; +} + +.fa-grimace:before { + content: "\f57f"; +} + +.fa-grin:before { + content: "\f580"; +} + +.fa-grin-alt:before { + content: "\f581"; +} + +.fa-grin-beam:before { + content: "\f582"; +} + +.fa-grin-beam-sweat:before { + content: "\f583"; +} + +.fa-grin-hearts:before { + content: "\f584"; +} + +.fa-grin-squint:before { + content: "\f585"; +} + +.fa-grin-squint-tears:before { + content: "\f586"; +} + +.fa-grin-stars:before { + content: "\f587"; +} + +.fa-grin-tears:before { + content: "\f588"; +} + +.fa-grin-tongue:before { + content: "\f589"; +} + +.fa-grin-tongue-squint:before { + content: "\f58a"; +} + +.fa-grin-tongue-wink:before { + content: "\f58b"; +} + +.fa-grin-wink:before { + content: "\f58c"; +} + +.fa-grip-horizontal:before { + content: "\f58d"; +} + +.fa-grip-vertical:before { + content: "\f58e"; +} + +.fa-gripfire:before { + content: "\f3ac"; +} + +.fa-grunt:before { + content: "\f3ad"; +} + +.fa-gulp:before { + content: "\f3ae"; +} + +.fa-h-square:before { + content: "\f0fd"; +} + +.fa-hacker-news:before { + content: "\f1d4"; +} + +.fa-hacker-news-square:before { + content: "\f3af"; +} + +.fa-hackerrank:before { + content: "\f5f7"; +} + +.fa-hand-holding:before { + content: "\f4bd"; +} + +.fa-hand-holding-heart:before { + content: "\f4be"; +} + +.fa-hand-holding-usd:before { + content: "\f4c0"; +} + +.fa-hand-lizard:before { + content: "\f258"; +} + +.fa-hand-paper:before { + content: "\f256"; +} + +.fa-hand-peace:before { + content: "\f25b"; +} + +.fa-hand-point-down:before { + content: "\f0a7"; +} + +.fa-hand-point-left:before { + content: "\f0a5"; +} + +.fa-hand-point-right:before { + content: "\f0a4"; +} + +.fa-hand-point-up:before { + content: "\f0a6"; +} + +.fa-hand-pointer:before { + content: "\f25a"; +} + +.fa-hand-rock:before { + content: "\f255"; +} + +.fa-hand-scissors:before { + content: "\f257"; +} + +.fa-hand-spock:before { + content: "\f259"; +} + +.fa-hands:before { + content: "\f4c2"; +} + +.fa-hands-helping:before { + content: "\f4c4"; +} + +.fa-handshake:before { + content: "\f2b5"; +} + +.fa-hashtag:before { + content: "\f292"; +} + +.fa-hdd:before { + content: "\f0a0"; +} + +.fa-heading:before { + content: "\f1dc"; +} + +.fa-headphones:before { + content: "\f025"; +} + +.fa-headphones-alt:before { + content: "\f58f"; +} + +.fa-headset:before { + content: "\f590"; +} + +.fa-heart:before { + content: "\f004"; +} + +.fa-heartbeat:before { + content: "\f21e"; +} + +.fa-helicopter:before { + content: "\f533"; +} + +.fa-highlighter:before { + content: "\f591"; +} + +.fa-hips:before { + content: "\f452"; +} + +.fa-hire-a-helper:before { + content: "\f3b0"; +} + +.fa-history:before { + content: "\f1da"; +} + +.fa-hockey-puck:before { + content: "\f453"; +} + +.fa-home:before { + content: "\f015"; +} + +.fa-hooli:before { + content: "\f427"; +} + +.fa-hornbill:before { + content: "\f592"; +} + +.fa-hospital:before { + content: "\f0f8"; +} + +.fa-hospital-alt:before { + content: "\f47d"; +} + +.fa-hospital-symbol:before { + content: "\f47e"; +} + +.fa-hot-tub:before { + content: "\f593"; +} + +.fa-hotel:before { + content: "\f594"; +} + +.fa-hotjar:before { + content: "\f3b1"; +} + +.fa-hourglass:before { + content: "\f254"; +} + +.fa-hourglass-end:before { + content: "\f253"; +} + +.fa-hourglass-half:before { + content: "\f252"; +} + +.fa-hourglass-start:before { + content: "\f251"; +} + +.fa-houzz:before { + content: "\f27c"; +} + +.fa-html5:before { + content: "\f13b"; +} + +.fa-hubspot:before { + content: "\f3b2"; +} + +.fa-i-cursor:before { + content: "\f246"; +} + +.fa-id-badge:before { + content: "\f2c1"; +} + +.fa-id-card:before { + content: "\f2c2"; +} + +.fa-id-card-alt:before { + content: "\f47f"; +} + +.fa-image:before { + content: "\f03e"; +} + +.fa-images:before { + content: "\f302"; +} + +.fa-imdb:before { + content: "\f2d8"; +} + +.fa-inbox:before { + content: "\f01c"; +} + +.fa-indent:before { + content: "\f03c"; +} + +.fa-industry:before { + content: "\f275"; +} + +.fa-infinity:before { + content: "\f534"; +} + +.fa-info:before { + content: "\f129"; +} + +.fa-info-circle:before { + content: "\f05a"; +} + +.fa-instagram:before { + content: "\f16d"; +} + +.fa-internet-explorer:before { + content: "\f26b"; +} + +.fa-ioxhost:before { + content: "\f208"; +} + +.fa-italic:before { + content: "\f033"; +} + +.fa-itunes:before { + content: "\f3b4"; +} + +.fa-itunes-note:before { + content: "\f3b5"; +} + +.fa-java:before { + content: "\f4e4"; +} + +.fa-jedi-order:before { + content: "\f50e"; +} + +.fa-jenkins:before { + content: "\f3b6"; +} + +.fa-joget:before { + content: "\f3b7"; +} + +.fa-joint:before { + content: "\f595"; +} + +.fa-joomla:before { + content: "\f1aa"; +} + +.fa-js:before { + content: "\f3b8"; +} + +.fa-js-square:before { + content: "\f3b9"; +} + +.fa-jsfiddle:before { + content: "\f1cc"; +} + +.fa-kaggle:before { + content: "\f5fa"; +} + +.fa-key:before { + content: "\f084"; +} + +.fa-keybase:before { + content: "\f4f5"; +} + +.fa-keyboard:before { + content: "\f11c"; +} + +.fa-keycdn:before { + content: "\f3ba"; +} + +.fa-kickstarter:before { + content: "\f3bb"; +} + +.fa-kickstarter-k:before { + content: "\f3bc"; +} + +.fa-kiss:before { + content: "\f596"; +} + +.fa-kiss-beam:before { + content: "\f597"; +} + +.fa-kiss-wink-heart:before { + content: "\f598"; +} + +.fa-kiwi-bird:before { + content: "\f535"; +} + +.fa-korvue:before { + content: "\f42f"; +} + +.fa-language:before { + content: "\f1ab"; +} + +.fa-laptop:before { + content: "\f109"; +} + +.fa-laptop-code:before { + content: "\f5fc"; +} + +.fa-laravel:before { + content: "\f3bd"; +} + +.fa-lastfm:before { + content: "\f202"; +} + +.fa-lastfm-square:before { + content: "\f203"; +} + +.fa-laugh:before { + content: "\f599"; +} + +.fa-laugh-beam:before { + content: "\f59a"; +} + +.fa-laugh-squint:before { + content: "\f59b"; +} + +.fa-laugh-wink:before { + content: "\f59c"; +} + +.fa-layer-group:before { + content: "\f5fd"; +} + +.fa-leaf:before { + content: "\f06c"; +} + +.fa-leanpub:before { + content: "\f212"; +} + +.fa-lemon:before { + content: "\f094"; +} + +.fa-less:before { + content: "\f41d"; +} + +.fa-less-than:before { + content: "\f536"; +} + +.fa-less-than-equal:before { + content: "\f537"; +} + +.fa-level-down-alt:before { + content: "\f3be"; +} + +.fa-level-up-alt:before { + content: "\f3bf"; +} + +.fa-life-ring:before { + content: "\f1cd"; +} + +.fa-lightbulb:before { + content: "\f0eb"; +} + +.fa-line:before { + content: "\f3c0"; +} + +.fa-link:before { + content: "\f0c1"; +} + +.fa-linkedin:before { + content: "\f08c"; +} + +.fa-linkedin-in:before { + content: "\f0e1"; +} + +.fa-linode:before { + content: "\f2b8"; +} + +.fa-linux:before { + content: "\f17c"; +} + +.fa-lira-sign:before { + content: "\f195"; +} + +.fa-list:before { + content: "\f03a"; +} + +.fa-list-alt:before { + content: "\f022"; +} + +.fa-list-ol:before { + content: "\f0cb"; +} + +.fa-list-ul:before { + content: "\f0ca"; +} + +.fa-location-arrow:before { + content: "\f124"; +} + +.fa-lock:before { + content: "\f023"; +} + +.fa-lock-open:before { + content: "\f3c1"; +} + +.fa-long-arrow-alt-down:before { + content: "\f309"; +} + +.fa-long-arrow-alt-left:before { + content: "\f30a"; +} + +.fa-long-arrow-alt-right:before { + content: "\f30b"; +} + +.fa-long-arrow-alt-up:before { + content: "\f30c"; +} + +.fa-low-vision:before { + content: "\f2a8"; +} + +.fa-luggage-cart:before { + content: "\f59d"; +} + +.fa-lyft:before { + content: "\f3c3"; +} + +.fa-magento:before { + content: "\f3c4"; +} + +.fa-magic:before { + content: "\f0d0"; +} + +.fa-magnet:before { + content: "\f076"; +} + +.fa-mailchimp:before { + content: "\f59e"; +} + +.fa-male:before { + content: "\f183"; +} + +.fa-mandalorian:before { + content: "\f50f"; +} + +.fa-map:before { + content: "\f279"; +} + +.fa-map-marked:before { + content: "\f59f"; +} + +.fa-map-marked-alt:before { + content: "\f5a0"; +} + +.fa-map-marker:before { + content: "\f041"; +} + +.fa-map-marker-alt:before { + content: "\f3c5"; +} + +.fa-map-pin:before { + content: "\f276"; +} + +.fa-map-signs:before { + content: "\f277"; +} + +.fa-markdown:before { + content: "\f60f"; +} + +.fa-marker:before { + content: "\f5a1"; +} + +.fa-mars:before { + content: "\f222"; +} + +.fa-mars-double:before { + content: "\f227"; +} + +.fa-mars-stroke:before { + content: "\f229"; +} + +.fa-mars-stroke-h:before { + content: "\f22b"; +} + +.fa-mars-stroke-v:before { + content: "\f22a"; +} + +.fa-mastodon:before { + content: "\f4f6"; +} + +.fa-maxcdn:before { + content: "\f136"; +} + +.fa-medal:before { + content: "\f5a2"; +} + +.fa-medapps:before { + content: "\f3c6"; +} + +.fa-medium:before { + content: "\f23a"; +} + +.fa-medium-m:before { + content: "\f3c7"; +} + +.fa-medkit:before { + content: "\f0fa"; +} + +.fa-medrt:before { + content: "\f3c8"; +} + +.fa-meetup:before { + content: "\f2e0"; +} + +.fa-megaport:before { + content: "\f5a3"; +} + +.fa-meh:before { + content: "\f11a"; +} + +.fa-meh-blank:before { + content: "\f5a4"; +} + +.fa-meh-rolling-eyes:before { + content: "\f5a5"; +} + +.fa-memory:before { + content: "\f538"; +} + +.fa-mercury:before { + content: "\f223"; +} + +.fa-microchip:before { + content: "\f2db"; +} + +.fa-microphone:before { + content: "\f130"; +} + +.fa-microphone-alt:before { + content: "\f3c9"; +} + +.fa-microphone-alt-slash:before { + content: "\f539"; +} + +.fa-microphone-slash:before { + content: "\f131"; +} + +.fa-microscope:before { + content: "\f610"; +} + +.fa-microsoft:before { + content: "\f3ca"; +} + +.fa-minus:before { + content: "\f068"; +} + +.fa-minus-circle:before { + content: "\f056"; +} + +.fa-minus-square:before { + content: "\f146"; +} + +.fa-mix:before { + content: "\f3cb"; +} + +.fa-mixcloud:before { + content: "\f289"; +} + +.fa-mizuni:before { + content: "\f3cc"; +} + +.fa-mobile:before { + content: "\f10b"; +} + +.fa-mobile-alt:before { + content: "\f3cd"; +} + +.fa-modx:before { + content: "\f285"; +} + +.fa-monero:before { + content: "\f3d0"; +} + +.fa-money-bill:before { + content: "\f0d6"; +} + +.fa-money-bill-alt:before { + content: "\f3d1"; +} + +.fa-money-bill-wave:before { + content: "\f53a"; +} + +.fa-money-bill-wave-alt:before { + content: "\f53b"; +} + +.fa-money-check:before { + content: "\f53c"; +} + +.fa-money-check-alt:before { + content: "\f53d"; +} + +.fa-monument:before { + content: "\f5a6"; +} + +.fa-moon:before { + content: "\f186"; +} + +.fa-mortar-pestle:before { + content: "\f5a7"; +} + +.fa-motorcycle:before { + content: "\f21c"; +} + +.fa-mouse-pointer:before { + content: "\f245"; +} + +.fa-music:before { + content: "\f001"; +} + +.fa-napster:before { + content: "\f3d2"; +} + +.fa-neos:before { + content: "\f612"; +} + +.fa-neuter:before { + content: "\f22c"; +} + +.fa-newspaper:before { + content: "\f1ea"; +} + +.fa-nimblr:before { + content: "\f5a8"; +} + +.fa-nintendo-switch:before { + content: "\f418"; +} + +.fa-node:before { + content: "\f419"; +} + +.fa-node-js:before { + content: "\f3d3"; +} + +.fa-not-equal:before { + content: "\f53e"; +} + +.fa-notes-medical:before { + content: "\f481"; +} + +.fa-npm:before { + content: "\f3d4"; +} + +.fa-ns8:before { + content: "\f3d5"; +} + +.fa-nutritionix:before { + content: "\f3d6"; +} + +.fa-object-group:before { + content: "\f247"; +} + +.fa-object-ungroup:before { + content: "\f248"; +} + +.fa-odnoklassniki:before { + content: "\f263"; +} + +.fa-odnoklassniki-square:before { + content: "\f264"; +} + +.fa-oil-can:before { + content: "\f613"; +} + +.fa-old-republic:before { + content: "\f510"; +} + +.fa-opencart:before { + content: "\f23d"; +} + +.fa-openid:before { + content: "\f19b"; +} + +.fa-opera:before { + content: "\f26a"; +} + +.fa-optin-monster:before { + content: "\f23c"; +} + +.fa-osi:before { + content: "\f41a"; +} + +.fa-outdent:before { + content: "\f03b"; +} + +.fa-page4:before { + content: "\f3d7"; +} + +.fa-pagelines:before { + content: "\f18c"; +} + +.fa-paint-brush:before { + content: "\f1fc"; +} + +.fa-paint-roller:before { + content: "\f5aa"; +} + +.fa-palette:before { + content: "\f53f"; +} + +.fa-palfed:before { + content: "\f3d8"; +} + +.fa-pallet:before { + content: "\f482"; +} + +.fa-paper-plane:before { + content: "\f1d8"; +} + +.fa-paperclip:before { + content: "\f0c6"; +} + +.fa-parachute-box:before { + content: "\f4cd"; +} + +.fa-paragraph:before { + content: "\f1dd"; +} + +.fa-parking:before { + content: "\f540"; +} + +.fa-passport:before { + content: "\f5ab"; +} + +.fa-paste:before { + content: "\f0ea"; +} + +.fa-patreon:before { + content: "\f3d9"; +} + +.fa-pause:before { + content: "\f04c"; +} + +.fa-pause-circle:before { + content: "\f28b"; +} + +.fa-paw:before { + content: "\f1b0"; +} + +.fa-paypal:before { + content: "\f1ed"; +} + +.fa-pen:before { + content: "\f304"; +} + +.fa-pen-alt:before { + content: "\f305"; +} + +.fa-pen-fancy:before { + content: "\f5ac"; +} + +.fa-pen-nib:before { + content: "\f5ad"; +} + +.fa-pen-square:before { + content: "\f14b"; +} + +.fa-pencil-alt:before { + content: "\f303"; +} + +.fa-pencil-ruler:before { + content: "\f5ae"; +} + +.fa-people-carry:before { + content: "\f4ce"; +} + +.fa-percent:before { + content: "\f295"; +} + +.fa-percentage:before { + content: "\f541"; +} + +.fa-periscope:before { + content: "\f3da"; +} + +.fa-phabricator:before { + content: "\f3db"; +} + +.fa-phoenix-framework:before { + content: "\f3dc"; +} + +.fa-phoenix-squadron:before { + content: "\f511"; +} + +.fa-phone:before { + content: "\f095"; +} + +.fa-phone-slash:before { + content: "\f3dd"; +} + +.fa-phone-square:before { + content: "\f098"; +} + +.fa-phone-volume:before { + content: "\f2a0"; +} + +.fa-php:before { + content: "\f457"; +} + +.fa-pied-piper:before { + content: "\f2ae"; +} + +.fa-pied-piper-alt:before { + content: "\f1a8"; +} + +.fa-pied-piper-hat:before { + content: "\f4e5"; +} + +.fa-pied-piper-pp:before { + content: "\f1a7"; +} + +.fa-piggy-bank:before { + content: "\f4d3"; +} + +.fa-pills:before { + content: "\f484"; +} + +.fa-pinterest:before { + content: "\f0d2"; +} + +.fa-pinterest-p:before { + content: "\f231"; +} + +.fa-pinterest-square:before { + content: "\f0d3"; +} + +.fa-plane:before { + content: "\f072"; +} + +.fa-plane-arrival:before { + content: "\f5af"; +} + +.fa-plane-departure:before { + content: "\f5b0"; +} + +.fa-play:before { + content: "\f04b"; +} + +.fa-play-circle:before { + content: "\f144"; +} + +.fa-playstation:before { + content: "\f3df"; +} + +.fa-plug:before { + content: "\f1e6"; +} + +.fa-plus:before { + content: "\f067"; +} + +.fa-plus-circle:before { + content: "\f055"; +} + +.fa-plus-square:before { + content: "\f0fe"; +} + +.fa-podcast:before { + content: "\f2ce"; +} + +.fa-poo:before { + content: "\f2fe"; +} + +.fa-poop:before { + content: "\f619"; +} + +.fa-portrait:before { + content: "\f3e0"; +} + +.fa-pound-sign:before { + content: "\f154"; +} + +.fa-power-off:before { + content: "\f011"; +} + +.fa-prescription:before { + content: "\f5b1"; +} + +.fa-prescription-bottle:before { + content: "\f485"; +} + +.fa-prescription-bottle-alt:before { + content: "\f486"; +} + +.fa-print:before { + content: "\f02f"; +} + +.fa-procedures:before { + content: "\f487"; +} + +.fa-product-hunt:before { + content: "\f288"; +} + +.fa-project-diagram:before { + content: "\f542"; +} + +.fa-pushed:before { + content: "\f3e1"; +} + +.fa-puzzle-piece:before { + content: "\f12e"; +} + +.fa-python:before { + content: "\f3e2"; +} + +.fa-qq:before { + content: "\f1d6"; +} + +.fa-qrcode:before { + content: "\f029"; +} + +.fa-question:before { + content: "\f128"; +} + +.fa-question-circle:before { + content: "\f059"; +} + +.fa-quidditch:before { + content: "\f458"; +} + +.fa-quinscape:before { + content: "\f459"; +} + +.fa-quora:before { + content: "\f2c4"; +} + +.fa-quote-left:before { + content: "\f10d"; +} + +.fa-quote-right:before { + content: "\f10e"; +} + +.fa-r-project:before { + content: "\f4f7"; +} + +.fa-random:before { + content: "\f074"; +} + +.fa-ravelry:before { + content: "\f2d9"; +} + +.fa-react:before { + content: "\f41b"; +} + +.fa-readme:before { + content: "\f4d5"; +} + +.fa-rebel:before { + content: "\f1d0"; +} + +.fa-receipt:before { + content: "\f543"; +} + +.fa-recycle:before { + content: "\f1b8"; +} + +.fa-red-river:before { + content: "\f3e3"; +} + +.fa-reddit:before { + content: "\f1a1"; +} + +.fa-reddit-alien:before { + content: "\f281"; +} + +.fa-reddit-square:before { + content: "\f1a2"; +} + +.fa-redo:before { + content: "\f01e"; +} + +.fa-redo-alt:before { + content: "\f2f9"; +} + +.fa-registered:before { + content: "\f25d"; +} + +.fa-rendact:before { + content: "\f3e4"; +} + +.fa-renren:before { + content: "\f18b"; +} + +.fa-reply:before { + content: "\f3e5"; +} + +.fa-reply-all:before { + content: "\f122"; +} + +.fa-replyd:before { + content: "\f3e6"; +} + +.fa-researchgate:before { + content: "\f4f8"; +} + +.fa-resolving:before { + content: "\f3e7"; +} + +.fa-retweet:before { + content: "\f079"; +} + +.fa-rev:before { + content: "\f5b2"; +} + +.fa-ribbon:before { + content: "\f4d6"; +} + +.fa-road:before { + content: "\f018"; +} + +.fa-robot:before { + content: "\f544"; +} + +.fa-rocket:before { + content: "\f135"; +} + +.fa-rocketchat:before { + content: "\f3e8"; +} + +.fa-rockrms:before { + content: "\f3e9"; +} + +.fa-route:before { + content: "\f4d7"; +} + +.fa-rss:before { + content: "\f09e"; +} + +.fa-rss-square:before { + content: "\f143"; +} + +.fa-ruble-sign:before { + content: "\f158"; +} + +.fa-ruler:before { + content: "\f545"; +} + +.fa-ruler-combined:before { + content: "\f546"; +} + +.fa-ruler-horizontal:before { + content: "\f547"; +} + +.fa-ruler-vertical:before { + content: "\f548"; +} + +.fa-rupee-sign:before { + content: "\f156"; +} + +.fa-sad-cry:before { + content: "\f5b3"; +} + +.fa-sad-tear:before { + content: "\f5b4"; +} + +.fa-safari:before { + content: "\f267"; +} + +.fa-sass:before { + content: "\f41e"; +} + +.fa-save:before { + content: "\f0c7"; +} + +.fa-schlix:before { + content: "\f3ea"; +} + +.fa-school:before { + content: "\f549"; +} + +.fa-screwdriver:before { + content: "\f54a"; +} + +.fa-scribd:before { + content: "\f28a"; +} + +.fa-search:before { + content: "\f002"; +} + +.fa-search-minus:before { + content: "\f010"; +} + +.fa-search-plus:before { + content: "\f00e"; +} + +.fa-searchengin:before { + content: "\f3eb"; +} + +.fa-seedling:before { + content: "\f4d8"; +} + +.fa-sellcast:before { + content: "\f2da"; +} + +.fa-sellsy:before { + content: "\f213"; +} + +.fa-server:before { + content: "\f233"; +} + +.fa-servicestack:before { + content: "\f3ec"; +} + +.fa-shapes:before { + content: "\f61f"; +} + +.fa-share:before { + content: "\f064"; +} + +.fa-share-alt:before { + content: "\f1e0"; +} + +.fa-share-alt-square:before { + content: "\f1e1"; +} + +.fa-share-square:before { + content: "\f14d"; +} + +.fa-shekel-sign:before { + content: "\f20b"; +} + +.fa-shield-alt:before { + content: "\f3ed"; +} + +.fa-ship:before { + content: "\f21a"; +} + +.fa-shipping-fast:before { + content: "\f48b"; +} + +.fa-shirtsinbulk:before { + content: "\f214"; +} + +.fa-shoe-prints:before { + content: "\f54b"; +} + +.fa-shopping-bag:before { + content: "\f290"; +} + +.fa-shopping-basket:before { + content: "\f291"; +} + +.fa-shopping-cart:before { + content: "\f07a"; +} + +.fa-shopware:before { + content: "\f5b5"; +} + +.fa-shower:before { + content: "\f2cc"; +} + +.fa-shuttle-van:before { + content: "\f5b6"; +} + +.fa-sign:before { + content: "\f4d9"; +} + +.fa-sign-in-alt:before { + content: "\f2f6"; +} + +.fa-sign-language:before { + content: "\f2a7"; +} + +.fa-sign-out-alt:before { + content: "\f2f5"; +} + +.fa-signal:before { + content: "\f012"; +} + +.fa-signature:before { + content: "\f5b7"; +} + +.fa-simplybuilt:before { + content: "\f215"; +} + +.fa-sistrix:before { + content: "\f3ee"; +} + +.fa-sitemap:before { + content: "\f0e8"; +} + +.fa-sith:before { + content: "\f512"; +} + +.fa-skull:before { + content: "\f54c"; +} + +.fa-skyatlas:before { + content: "\f216"; +} + +.fa-skype:before { + content: "\f17e"; +} + +.fa-slack:before { + content: "\f198"; +} + +.fa-slack-hash:before { + content: "\f3ef"; +} + +.fa-sliders-h:before { + content: "\f1de"; +} + +.fa-slideshare:before { + content: "\f1e7"; +} + +.fa-smile:before { + content: "\f118"; +} + +.fa-smile-beam:before { + content: "\f5b8"; +} + +.fa-smile-wink:before { + content: "\f4da"; +} + +.fa-smoking:before { + content: "\f48d"; +} + +.fa-smoking-ban:before { + content: "\f54d"; +} + +.fa-snapchat:before { + content: "\f2ab"; +} + +.fa-snapchat-ghost:before { + content: "\f2ac"; +} + +.fa-snapchat-square:before { + content: "\f2ad"; +} + +.fa-snowflake:before { + content: "\f2dc"; +} + +.fa-solar-panel:before { + content: "\f5ba"; +} + +.fa-sort:before { + content: "\f0dc"; +} + +.fa-sort-alpha-down:before { + content: "\f15d"; +} + +.fa-sort-alpha-up:before { + content: "\f15e"; +} + +.fa-sort-amount-down:before { + content: "\f160"; +} + +.fa-sort-amount-up:before { + content: "\f161"; +} + +.fa-sort-down:before { + content: "\f0dd"; +} + +.fa-sort-numeric-down:before { + content: "\f162"; +} + +.fa-sort-numeric-up:before { + content: "\f163"; +} + +.fa-sort-up:before { + content: "\f0de"; +} + +.fa-soundcloud:before { + content: "\f1be"; +} + +.fa-spa:before { + content: "\f5bb"; +} + +.fa-space-shuttle:before { + content: "\f197"; +} + +.fa-speakap:before { + content: "\f3f3"; +} + +.fa-spinner:before { + content: "\f110"; +} + +.fa-splotch:before { + content: "\f5bc"; +} + +.fa-spotify:before { + content: "\f1bc"; +} + +.fa-spray-can:before { + content: "\f5bd"; +} + +.fa-square:before { + content: "\f0c8"; +} + +.fa-square-full:before { + content: "\f45c"; +} + +.fa-squarespace:before { + content: "\f5be"; +} + +.fa-stack-exchange:before { + content: "\f18d"; +} + +.fa-stack-overflow:before { + content: "\f16c"; +} + +.fa-stamp:before { + content: "\f5bf"; +} + +.fa-star:before { + content: "\f005"; +} + +.fa-star-half:before { + content: "\f089"; +} + +.fa-star-half-alt:before { + content: "\f5c0"; +} + +.fa-star-of-life:before { + content: "\f621"; +} + +.fa-staylinked:before { + content: "\f3f5"; +} + +.fa-steam:before { + content: "\f1b6"; +} + +.fa-steam-square:before { + content: "\f1b7"; +} + +.fa-steam-symbol:before { + content: "\f3f6"; +} + +.fa-step-backward:before { + content: "\f048"; +} + +.fa-step-forward:before { + content: "\f051"; +} + +.fa-stethoscope:before { + content: "\f0f1"; +} + +.fa-sticker-mule:before { + content: "\f3f7"; +} + +.fa-sticky-note:before { + content: "\f249"; +} + +.fa-stop:before { + content: "\f04d"; +} + +.fa-stop-circle:before { + content: "\f28d"; +} + +.fa-stopwatch:before { + content: "\f2f2"; +} + +.fa-store:before { + content: "\f54e"; +} + +.fa-store-alt:before { + content: "\f54f"; +} + +.fa-strava:before { + content: "\f428"; +} + +.fa-stream:before { + content: "\f550"; +} + +.fa-street-view:before { + content: "\f21d"; +} + +.fa-strikethrough:before { + content: "\f0cc"; +} + +.fa-stripe:before { + content: "\f429"; +} + +.fa-stripe-s:before { + content: "\f42a"; +} + +.fa-stroopwafel:before { + content: "\f551"; +} + +.fa-studiovinari:before { + content: "\f3f8"; +} + +.fa-stumbleupon:before { + content: "\f1a4"; +} + +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} + +.fa-subscript:before { + content: "\f12c"; +} + +.fa-subway:before { + content: "\f239"; +} + +.fa-suitcase:before { + content: "\f0f2"; +} + +.fa-suitcase-rolling:before { + content: "\f5c1"; +} + +.fa-sun:before { + content: "\f185"; +} + +.fa-superpowers:before { + content: "\f2dd"; +} + +.fa-superscript:before { + content: "\f12b"; +} + +.fa-supple:before { + content: "\f3f9"; +} + +.fa-surprise:before { + content: "\f5c2"; +} + +.fa-swatchbook:before { + content: "\f5c3"; +} + +.fa-swimmer:before { + content: "\f5c4"; +} + +.fa-swimming-pool:before { + content: "\f5c5"; +} + +.fa-sync:before { + content: "\f021"; +} + +.fa-sync-alt:before { + content: "\f2f1"; +} + +.fa-syringe:before { + content: "\f48e"; +} + +.fa-table:before { + content: "\f0ce"; +} + +.fa-table-tennis:before { + content: "\f45d"; +} + +.fa-tablet:before { + content: "\f10a"; +} + +.fa-tablet-alt:before { + content: "\f3fa"; +} + +.fa-tablets:before { + content: "\f490"; +} + +.fa-tachometer-alt:before { + content: "\f3fd"; +} + +.fa-tag:before { + content: "\f02b"; +} + +.fa-tags:before { + content: "\f02c"; +} + +.fa-tape:before { + content: "\f4db"; +} + +.fa-tasks:before { + content: "\f0ae"; +} + +.fa-taxi:before { + content: "\f1ba"; +} + +.fa-teamspeak:before { + content: "\f4f9"; +} + +.fa-teeth:before { + content: "\f62e"; +} + +.fa-teeth-open:before { + content: "\f62f"; +} + +.fa-telegram:before { + content: "\f2c6"; +} + +.fa-telegram-plane:before { + content: "\f3fe"; +} + +.fa-tencent-weibo:before { + content: "\f1d5"; +} + +.fa-terminal:before { + content: "\f120"; +} + +.fa-text-height:before { + content: "\f034"; +} + +.fa-text-width:before { + content: "\f035"; +} + +.fa-th:before { + content: "\f00a"; +} + +.fa-th-large:before { + content: "\f009"; +} + +.fa-th-list:before { + content: "\f00b"; +} + +.fa-theater-masks:before { + content: "\f630"; +} + +.fa-themeco:before { + content: "\f5c6"; +} + +.fa-themeisle:before { + content: "\f2b2"; +} + +.fa-thermometer:before { + content: "\f491"; +} + +.fa-thermometer-empty:before { + content: "\f2cb"; +} + +.fa-thermometer-full:before { + content: "\f2c7"; +} + +.fa-thermometer-half:before { + content: "\f2c9"; +} + +.fa-thermometer-quarter:before { + content: "\f2ca"; +} + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} + +.fa-thumbs-down:before { + content: "\f165"; +} + +.fa-thumbs-up:before { + content: "\f164"; +} + +.fa-thumbtack:before { + content: "\f08d"; +} + +.fa-ticket-alt:before { + content: "\f3ff"; +} + +.fa-times:before { + content: "\f00d"; +} + +.fa-times-circle:before { + content: "\f057"; +} + +.fa-tint:before { + content: "\f043"; +} + +.fa-tint-slash:before { + content: "\f5c7"; +} + +.fa-tired:before { + content: "\f5c8"; +} + +.fa-toggle-off:before { + content: "\f204"; +} + +.fa-toggle-on:before { + content: "\f205"; +} + +.fa-toolbox:before { + content: "\f552"; +} + +.fa-tooth:before { + content: "\f5c9"; +} + +.fa-trade-federation:before { + content: "\f513"; +} + +.fa-trademark:before { + content: "\f25c"; +} + +.fa-traffic-light:before { + content: "\f637"; +} + +.fa-train:before { + content: "\f238"; +} + +.fa-transgender:before { + content: "\f224"; +} + +.fa-transgender-alt:before { + content: "\f225"; +} + +.fa-trash:before { + content: "\f1f8"; +} + +.fa-trash-alt:before { + content: "\f2ed"; +} + +.fa-tree:before { + content: "\f1bb"; +} + +.fa-trello:before { + content: "\f181"; +} + +.fa-tripadvisor:before { + content: "\f262"; +} + +.fa-trophy:before { + content: "\f091"; +} + +.fa-truck:before { + content: "\f0d1"; +} + +.fa-truck-loading:before { + content: "\f4de"; +} + +.fa-truck-monster:before { + content: "\f63b"; +} + +.fa-truck-moving:before { + content: "\f4df"; +} + +.fa-truck-pickup:before { + content: "\f63c"; +} + +.fa-tshirt:before { + content: "\f553"; +} + +.fa-tty:before { + content: "\f1e4"; +} + +.fa-tumblr:before { + content: "\f173"; +} + +.fa-tumblr-square:before { + content: "\f174"; +} + +.fa-tv:before { + content: "\f26c"; +} + +.fa-twitch:before { + content: "\f1e8"; +} + +.fa-twitter:before { + content: "\f099"; +} + +.fa-twitter-square:before { + content: "\f081"; +} + +.fa-typo3:before { + content: "\f42b"; +} + +.fa-uber:before { + content: "\f402"; +} + +.fa-uikit:before { + content: "\f403"; +} + +.fa-umbrella:before { + content: "\f0e9"; +} + +.fa-umbrella-beach:before { + content: "\f5ca"; +} + +.fa-underline:before { + content: "\f0cd"; +} + +.fa-undo:before { + content: "\f0e2"; +} + +.fa-undo-alt:before { + content: "\f2ea"; +} + +.fa-uniregistry:before { + content: "\f404"; +} + +.fa-universal-access:before { + content: "\f29a"; +} + +.fa-university:before { + content: "\f19c"; +} + +.fa-unlink:before { + content: "\f127"; +} + +.fa-unlock:before { + content: "\f09c"; +} + +.fa-unlock-alt:before { + content: "\f13e"; +} + +.fa-untappd:before { + content: "\f405"; +} + +.fa-upload:before { + content: "\f093"; +} + +.fa-usb:before { + content: "\f287"; +} + +.fa-user:before { + content: "\f007"; +} + +.fa-user-alt:before { + content: "\f406"; +} + +.fa-user-alt-slash:before { + content: "\f4fa"; +} + +.fa-user-astronaut:before { + content: "\f4fb"; +} + +.fa-user-check:before { + content: "\f4fc"; +} + +.fa-user-circle:before { + content: "\f2bd"; +} + +.fa-user-clock:before { + content: "\f4fd"; +} + +.fa-user-cog:before { + content: "\f4fe"; +} + +.fa-user-edit:before { + content: "\f4ff"; +} + +.fa-user-friends:before { + content: "\f500"; +} + +.fa-user-graduate:before { + content: "\f501"; +} + +.fa-user-lock:before { + content: "\f502"; +} + +.fa-user-md:before { + content: "\f0f0"; +} + +.fa-user-minus:before { + content: "\f503"; +} + +.fa-user-ninja:before { + content: "\f504"; +} + +.fa-user-plus:before { + content: "\f234"; +} + +.fa-user-secret:before { + content: "\f21b"; +} + +.fa-user-shield:before { + content: "\f505"; +} + +.fa-user-slash:before { + content: "\f506"; +} + +.fa-user-tag:before { + content: "\f507"; +} + +.fa-user-tie:before { + content: "\f508"; +} + +.fa-user-times:before { + content: "\f235"; +} + +.fa-users:before { + content: "\f0c0"; +} + +.fa-users-cog:before { + content: "\f509"; +} + +.fa-ussunnah:before { + content: "\f407"; +} + +.fa-utensil-spoon:before { + content: "\f2e5"; +} + +.fa-utensils:before { + content: "\f2e7"; +} + +.fa-vaadin:before { + content: "\f408"; +} + +.fa-vector-square:before { + content: "\f5cb"; +} + +.fa-venus:before { + content: "\f221"; +} + +.fa-venus-double:before { + content: "\f226"; +} + +.fa-venus-mars:before { + content: "\f228"; +} + +.fa-viacoin:before { + content: "\f237"; +} + +.fa-viadeo:before { + content: "\f2a9"; +} + +.fa-viadeo-square:before { + content: "\f2aa"; +} + +.fa-vial:before { + content: "\f492"; +} + +.fa-vials:before { + content: "\f493"; +} + +.fa-viber:before { + content: "\f409"; +} + +.fa-video:before { + content: "\f03d"; +} + +.fa-video-slash:before { + content: "\f4e2"; +} + +.fa-vimeo:before { + content: "\f40a"; +} + +.fa-vimeo-square:before { + content: "\f194"; +} + +.fa-vimeo-v:before { + content: "\f27d"; +} + +.fa-vine:before { + content: "\f1ca"; +} + +.fa-vk:before { + content: "\f189"; +} + +.fa-vnv:before { + content: "\f40b"; +} + +.fa-volleyball-ball:before { + content: "\f45f"; +} + +.fa-volume-down:before { + content: "\f027"; +} + +.fa-volume-off:before { + content: "\f026"; +} + +.fa-volume-up:before { + content: "\f028"; +} + +.fa-vuejs:before { + content: "\f41f"; +} + +.fa-walking:before { + content: "\f554"; +} + +.fa-wallet:before { + content: "\f555"; +} + +.fa-warehouse:before { + content: "\f494"; +} + +.fa-weebly:before { + content: "\f5cc"; +} + +.fa-weibo:before { + content: "\f18a"; +} + +.fa-weight:before { + content: "\f496"; +} + +.fa-weight-hanging:before { + content: "\f5cd"; +} + +.fa-weixin:before { + content: "\f1d7"; +} + +.fa-whatsapp:before { + content: "\f232"; +} + +.fa-whatsapp-square:before { + content: "\f40c"; +} + +.fa-wheelchair:before { + content: "\f193"; +} + +.fa-whmcs:before { + content: "\f40d"; +} + +.fa-wifi:before { + content: "\f1eb"; +} + +.fa-wikipedia-w:before { + content: "\f266"; +} + +.fa-window-close:before { + content: "\f410"; +} + +.fa-window-maximize:before { + content: "\f2d0"; +} + +.fa-window-minimize:before { + content: "\f2d1"; +} + +.fa-window-restore:before { + content: "\f2d2"; +} + +.fa-windows:before { + content: "\f17a"; +} + +.fa-wine-glass:before { + content: "\f4e3"; +} + +.fa-wine-glass-alt:before { + content: "\f5ce"; +} + +.fa-wix:before { + content: "\f5cf"; +} + +.fa-wolf-pack-battalion:before { + content: "\f514"; +} + +.fa-won-sign:before { + content: "\f159"; +} + +.fa-wordpress:before { + content: "\f19a"; +} + +.fa-wordpress-simple:before { + content: "\f411"; +} + +.fa-wpbeginner:before { + content: "\f297"; +} + +.fa-wpexplorer:before { + content: "\f2de"; +} + +.fa-wpforms:before { + content: "\f298"; +} + +.fa-wrench:before { + content: "\f0ad"; +} + +.fa-x-ray:before { + content: "\f497"; +} + +.fa-xbox:before { + content: "\f412"; +} + +.fa-xing:before { + content: "\f168"; +} + +.fa-xing-square:before { + content: "\f169"; +} + +.fa-y-combinator:before { + content: "\f23b"; +} + +.fa-yahoo:before { + content: "\f19e"; +} + +.fa-yandex:before { + content: "\f413"; +} + +.fa-yandex-international:before { + content: "\f414"; +} + +.fa-yelp:before { + content: "\f1e9"; +} + +.fa-yen-sign:before { + content: "\f157"; +} + +.fa-yoast:before { + content: "\f2b1"; +} + +.fa-youtube:before { + content: "\f167"; +} + +.fa-youtube-square:before { + content: "\f431"; +} + +.fa-zhihu:before { + content: "\f63f"; +} + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} + +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: normal; + src: url("../fonts/fontawesome/fa-brands-400.eot"); + src: url("../fonts/fontawesome/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fontawesome/fa-brands-400.woff2") format("woff2"), url("../fonts/fontawesome/fa-brands-400.woff") format("woff"), url("../fonts/fontawesome/fa-brands-400.ttf") format("truetype"), url("../fonts/fontawesome/fa-brands-400.svg#fontawesome") format("svg"); +} +.fab { + font-family: 'Font Awesome 5 Brands'; +} + +@font-face { + font-family: 'Font Awesome 5 Regular'; + font-style: normal; + font-weight: 400; + src: url("../fonts/fontawesome/fa-regular-400.eot"); + src: url("../fonts/fontawesome/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fontawesome/fa-regular-400.woff2") format("woff2"), url("../fonts/fontawesome/fa-regular-400.woff") format("woff"), url("../fonts/fontawesome/fa-regular-400.ttf") format("truetype"), url("../fonts/fontawesome/fa-regular-400.svg#fontawesome") format("svg"); +} +.far { + font-family: 'Font Awesome 5 Regular'; + font-weight: 400; +} + +@font-face { + font-family: 'Font Awesome 5 Solid'; + font-style: normal; + font-weight: 900; + src: url("../fonts/fontawesome/fa-solid-900.eot"); + src: url("../fonts/fontawesome/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fontawesome/fa-solid-900.woff2") format("woff2"), url("../fonts/fontawesome/fa-solid-900.woff") format("woff"), url("../fonts/fontawesome/fa-solid-900.ttf") format("truetype"), url("../fonts/fontawesome/fa-solid-900.svg#fontawesome") format("svg"); +} +.fa, .fas { + font-family: 'Font Awesome 5 Solid'; + font-weight: 900; +} + +/* Simple Line Icons */ + +@font-face { + font-family: 'simple-line-icons'; + src: url('../fonts/simple-line-icons/Simple-Line-Icons.eot?v=2.4.0'); + src: url('../fonts/simple-line-icons/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'), url('../fonts/simple-line-icons/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'), url('../fonts/simple-line-icons/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'), url('../fonts/simple-line-icons/Simple-Line-Icons.woff?v=2.4.0') format('woff'), url('../fonts/simple-line-icons/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg'); + font-weight: normal; + font-style: normal; +} +/* + Use the following CSS code if you want to have a class per icon. + Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: +*/ +.icon-user, +.icon-people, +.icon-user-female, +.icon-user-follow, +.icon-user-following, +.icon-user-unfollow, +.icon-login, +.icon-logout, +.icon-emotsmile, +.icon-phone, +.icon-call-end, +.icon-call-in, +.icon-call-out, +.icon-map, +.icon-location-pin, +.icon-direction, +.icon-directions, +.icon-compass, +.icon-layers, +.icon-menu, +.icon-list, +.icon-options-vertical, +.icon-options, +.icon-arrow-down, +.icon-arrow-left, +.icon-arrow-right, +.icon-arrow-up, +.icon-arrow-up-circle, +.icon-arrow-left-circle, +.icon-arrow-right-circle, +.icon-arrow-down-circle, +.icon-check, +.icon-clock, +.icon-plus, +.icon-minus, +.icon-close, +.icon-event, +.icon-exclamation, +.icon-organization, +.icon-trophy, +.icon-screen-smartphone, +.icon-screen-desktop, +.icon-plane, +.icon-notebook, +.icon-mustache, +.icon-mouse, +.icon-magnet, +.icon-energy, +.icon-disc, +.icon-cursor, +.icon-cursor-move, +.icon-crop, +.icon-chemistry, +.icon-speedometer, +.icon-shield, +.icon-screen-tablet, +.icon-magic-wand, +.icon-hourglass, +.icon-graduation, +.icon-ghost, +.icon-game-controller, +.icon-fire, +.icon-eyeglass, +.icon-envelope-open, +.icon-envelope-letter, +.icon-bell, +.icon-badge, +.icon-anchor, +.icon-wallet, +.icon-vector, +.icon-speech, +.icon-puzzle, +.icon-printer, +.icon-present, +.icon-playlist, +.icon-pin, +.icon-picture, +.icon-handbag, +.icon-globe-alt, +.icon-globe, +.icon-folder-alt, +.icon-folder, +.icon-film, +.icon-feed, +.icon-drop, +.icon-drawer, +.icon-docs, +.icon-doc, +.icon-diamond, +.icon-cup, +.icon-calculator, +.icon-bubbles, +.icon-briefcase, +.icon-book-open, +.icon-basket-loaded, +.icon-basket, +.icon-bag, +.icon-action-undo, +.icon-action-redo, +.icon-wrench, +.icon-umbrella, +.icon-trash, +.icon-tag, +.icon-support, +.icon-frame, +.icon-size-fullscreen, +.icon-size-actual, +.icon-shuffle, +.icon-share-alt, +.icon-share, +.icon-rocket, +.icon-question, +.icon-pie-chart, +.icon-pencil, +.icon-note, +.icon-loop, +.icon-home, +.icon-grid, +.icon-graph, +.icon-microphone, +.icon-music-tone-alt, +.icon-music-tone, +.icon-earphones-alt, +.icon-earphones, +.icon-equalizer, +.icon-like, +.icon-dislike, +.icon-control-start, +.icon-control-rewind, +.icon-control-play, +.icon-control-pause, +.icon-control-forward, +.icon-control-end, +.icon-volume-1, +.icon-volume-2, +.icon-volume-off, +.icon-calendar, +.icon-bulb, +.icon-chart, +.icon-ban, +.icon-bubble, +.icon-camrecorder, +.icon-camera, +.icon-cloud-download, +.icon-cloud-upload, +.icon-envelope, +.icon-eye, +.icon-flag, +.icon-heart, +.icon-information, +.icon-key, +.icon-link, +.icon-lock, +.icon-lock-open, +.icon-magnifier, +.icon-magnifier-add, +.icon-magnifier-remove, +.icon-paper-clip, +.icon-paper-plane, +.icon-power, +.icon-refresh, +.icon-reload, +.icon-settings, +.icon-star, +.icon-symbol-female, +.icon-symbol-male, +.icon-target, +.icon-credit-card, +.icon-paypal, +.icon-social-tumblr, +.icon-social-twitter, +.icon-social-facebook, +.icon-social-instagram, +.icon-social-linkedin, +.icon-social-pinterest, +.icon-social-github, +.icon-social-google, +.icon-social-reddit, +.icon-social-skype, +.icon-social-dribbble, +.icon-social-behance, +.icon-social-foursqare, +.icon-social-soundcloud, +.icon-social-spotify, +.icon-social-stumbleupon, +.icon-social-youtube, +.icon-social-dropbox, +.icon-social-vkontakte, +.icon-social-steam { + font-family: 'simple-line-icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-user:before { + content: "\e005"; +} +.icon-people:before { + content: "\e001"; +} +.icon-user-female:before { + content: "\e000"; +} +.icon-user-follow:before { + content: "\e002"; +} +.icon-user-following:before { + content: "\e003"; +} +.icon-user-unfollow:before { + content: "\e004"; +} +.icon-login:before { + content: "\e066"; +} +.icon-logout:before { + content: "\e065"; +} +.icon-emotsmile:before { + content: "\e021"; +} +.icon-phone:before { + content: "\e600"; +} +.icon-call-end:before { + content: "\e048"; +} +.icon-call-in:before { + content: "\e047"; +} +.icon-call-out:before { + content: "\e046"; +} +.icon-map:before { + content: "\e033"; +} +.icon-location-pin:before { + content: "\e096"; +} +.icon-direction:before { + content: "\e042"; +} +.icon-directions:before { + content: "\e041"; +} +.icon-compass:before { + content: "\e045"; +} +.icon-layers:before { + content: "\e034"; +} +.icon-menu:before { + content: "\e601"; +} +.icon-list:before { + content: "\e067"; +} +.icon-options-vertical:before { + content: "\e602"; +} +.icon-options:before { + content: "\e603"; +} +.icon-arrow-down:before { + content: "\e604"; +} +.icon-arrow-left:before { + content: "\e605"; +} +.icon-arrow-right:before { + content: "\e606"; +} +.icon-arrow-up:before { + content: "\e607"; +} +.icon-arrow-up-circle:before { + content: "\e078"; +} +.icon-arrow-left-circle:before { + content: "\e07a"; +} +.icon-arrow-right-circle:before { + content: "\e079"; +} +.icon-arrow-down-circle:before { + content: "\e07b"; +} +.icon-check:before { + content: "\e080"; +} +.icon-clock:before { + content: "\e081"; +} +.icon-plus:before { + content: "\e095"; +} +.icon-minus:before { + content: "\e615"; +} +.icon-close:before { + content: "\e082"; +} +.icon-event:before { + content: "\e619"; +} +.icon-exclamation:before { + content: "\e617"; +} +.icon-organization:before { + content: "\e616"; +} +.icon-trophy:before { + content: "\e006"; +} +.icon-screen-smartphone:before { + content: "\e010"; +} +.icon-screen-desktop:before { + content: "\e011"; +} +.icon-plane:before { + content: "\e012"; +} +.icon-notebook:before { + content: "\e013"; +} +.icon-mustache:before { + content: "\e014"; +} +.icon-mouse:before { + content: "\e015"; +} +.icon-magnet:before { + content: "\e016"; +} +.icon-energy:before { + content: "\e020"; +} +.icon-disc:before { + content: "\e022"; +} +.icon-cursor:before { + content: "\e06e"; +} +.icon-cursor-move:before { + content: "\e023"; +} +.icon-crop:before { + content: "\e024"; +} +.icon-chemistry:before { + content: "\e026"; +} +.icon-speedometer:before { + content: "\e007"; +} +.icon-shield:before { + content: "\e00e"; +} +.icon-screen-tablet:before { + content: "\e00f"; +} +.icon-magic-wand:before { + content: "\e017"; +} +.icon-hourglass:before { + content: "\e018"; +} +.icon-graduation:before { + content: "\e019"; +} +.icon-ghost:before { + content: "\e01a"; +} +.icon-game-controller:before { + content: "\e01b"; +} +.icon-fire:before { + content: "\e01c"; +} +.icon-eyeglass:before { + content: "\e01d"; +} +.icon-envelope-open:before { + content: "\e01e"; +} +.icon-envelope-letter:before { + content: "\e01f"; +} +.icon-bell:before { + content: "\e027"; +} +.icon-badge:before { + content: "\e028"; +} +.icon-anchor:before { + content: "\e029"; +} +.icon-wallet:before { + content: "\e02a"; +} +.icon-vector:before { + content: "\e02b"; +} +.icon-speech:before { + content: "\e02c"; +} +.icon-puzzle:before { + content: "\e02d"; +} +.icon-printer:before { + content: "\e02e"; +} +.icon-present:before { + content: "\e02f"; +} +.icon-playlist:before { + content: "\e030"; +} +.icon-pin:before { + content: "\e031"; +} +.icon-picture:before { + content: "\e032"; +} +.icon-handbag:before { + content: "\e035"; +} +.icon-globe-alt:before { + content: "\e036"; +} +.icon-globe:before { + content: "\e037"; +} +.icon-folder-alt:before { + content: "\e039"; +} +.icon-folder:before { + content: "\e089"; +} +.icon-film:before { + content: "\e03a"; +} +.icon-feed:before { + content: "\e03b"; +} +.icon-drop:before { + content: "\e03e"; +} +.icon-drawer:before { + content: "\e03f"; +} +.icon-docs:before { + content: "\e040"; +} +.icon-doc:before { + content: "\e085"; +} +.icon-diamond:before { + content: "\e043"; +} +.icon-cup:before { + content: "\e044"; +} +.icon-calculator:before { + content: "\e049"; +} +.icon-bubbles:before { + content: "\e04a"; +} +.icon-briefcase:before { + content: "\e04b"; +} +.icon-book-open:before { + content: "\e04c"; +} +.icon-basket-loaded:before { + content: "\e04d"; +} +.icon-basket:before { + content: "\e04e"; +} +.icon-bag:before { + content: "\e04f"; +} +.icon-action-undo:before { + content: "\e050"; +} +.icon-action-redo:before { + content: "\e051"; +} +.icon-wrench:before { + content: "\e052"; +} +.icon-umbrella:before { + content: "\e053"; +} +.icon-trash:before { + content: "\e054"; +} +.icon-tag:before { + content: "\e055"; +} +.icon-support:before { + content: "\e056"; +} +.icon-frame:before { + content: "\e038"; +} +.icon-size-fullscreen:before { + content: "\e057"; +} +.icon-size-actual:before { + content: "\e058"; +} +.icon-shuffle:before { + content: "\e059"; +} +.icon-share-alt:before { + content: "\e05a"; +} +.icon-share:before { + content: "\e05b"; +} +.icon-rocket:before { + content: "\e05c"; +} +.icon-question:before { + content: "\e05d"; +} +.icon-pie-chart:before { + content: "\e05e"; +} +.icon-pencil:before { + content: "\e05f"; +} +.icon-note:before { + content: "\e060"; +} +.icon-loop:before { + content: "\e064"; +} +.icon-home:before { + content: "\e069"; +} +.icon-grid:before { + content: "\e06a"; +} +.icon-graph:before { + content: "\e06b"; +} +.icon-microphone:before { + content: "\e063"; +} +.icon-music-tone-alt:before { + content: "\e061"; +} +.icon-music-tone:before { + content: "\e062"; +} +.icon-earphones-alt:before { + content: "\e03c"; +} +.icon-earphones:before { + content: "\e03d"; +} +.icon-equalizer:before { + content: "\e06c"; +} +.icon-like:before { + content: "\e068"; +} +.icon-dislike:before { + content: "\e06d"; +} +.icon-control-start:before { + content: "\e06f"; +} +.icon-control-rewind:before { + content: "\e070"; +} +.icon-control-play:before { + content: "\e071"; +} +.icon-control-pause:before { + content: "\e072"; +} +.icon-control-forward:before { + content: "\e073"; +} +.icon-control-end:before { + content: "\e074"; +} +.icon-volume-1:before { + content: "\e09f"; +} +.icon-volume-2:before { + content: "\e0a0"; +} +.icon-volume-off:before { + content: "\e0a1"; +} +.icon-calendar:before { + content: "\e075"; +} +.icon-bulb:before { + content: "\e076"; +} +.icon-chart:before { + content: "\e077"; +} +.icon-ban:before { + content: "\e07c"; +} +.icon-bubble:before { + content: "\e07d"; +} +.icon-camrecorder:before { + content: "\e07e"; +} +.icon-camera:before { + content: "\e07f"; +} +.icon-cloud-download:before { + content: "\e083"; +} +.icon-cloud-upload:before { + content: "\e084"; +} +.icon-envelope:before { + content: "\e086"; +} +.icon-eye:before { + content: "\e087"; +} +.icon-flag:before { + content: "\e088"; +} +.icon-heart:before { + content: "\e08a"; +} +.icon-information:before { + content: "\e08b"; +} +.icon-key:before { + content: "\e08c"; +} +.icon-link:before { + content: "\e08d"; +} +.icon-lock:before { + content: "\e08e"; +} +.icon-lock-open:before { + content: "\e08f"; +} +.icon-magnifier:before { + content: "\e090"; +} +.icon-magnifier-add:before { + content: "\e091"; +} +.icon-magnifier-remove:before { + content: "\e092"; +} +.icon-paper-clip:before { + content: "\e093"; +} +.icon-paper-plane:before { + content: "\e094"; +} +.icon-power:before { + content: "\e097"; +} +.icon-refresh:before { + content: "\e098"; +} +.icon-reload:before { + content: "\e099"; +} +.icon-settings:before { + content: "\e09a"; +} +.icon-star:before { + content: "\e09b"; +} +.icon-symbol-female:before { + content: "\e09c"; +} +.icon-symbol-male:before { + content: "\e09d"; +} +.icon-target:before { + content: "\e09e"; +} +.icon-credit-card:before { + content: "\e025"; +} +.icon-paypal:before { + content: "\e608"; +} +.icon-social-tumblr:before { + content: "\e00a"; +} +.icon-social-twitter:before { + content: "\e009"; +} +.icon-social-facebook:before { + content: "\e00b"; +} +.icon-social-instagram:before { + content: "\e609"; +} +.icon-social-linkedin:before { + content: "\e60a"; +} +.icon-social-pinterest:before { + content: "\e60b"; +} +.icon-social-github:before { + content: "\e60c"; +} +.icon-social-google:before { + content: "\e60d"; +} +.icon-social-reddit:before { + content: "\e60e"; +} +.icon-social-skype:before { + content: "\e60f"; +} +.icon-social-dribbble:before { + content: "\e00d"; +} +.icon-social-behance:before { + content: "\e610"; +} +.icon-social-foursqare:before { + content: "\e611"; +} +.icon-social-soundcloud:before { + content: "\e612"; +} +.icon-social-spotify:before { + content: "\e613"; +} +.icon-social-stumbleupon:before { + content: "\e614"; +} +.icon-social-youtube:before { + content: "\e008"; +} +.icon-social-dropbox:before { + content: "\e00c"; +} +.icon-social-vkontakte:before { + content: "\e618"; +} +.icon-social-steam:before { + content: "\e620"; +} diff --git a/src/main/resources/static/assets/css/fonts.min.css b/src/main/resources/static/assets/css/fonts.min.css new file mode 100644 index 0000000..160b08f --- /dev/null +++ b/src/main/resources/static/assets/css/fonts.min.css @@ -0,0 +1,4 @@ +@font-face{font-family:Flaticon;src:url(../fonts/flaticon/Flaticon.eot);src:url(../fonts/flaticon/Flaticon.eot?#iefix) format("embedded-opentype"),url(../fonts/flaticon/Flaticon.woff) format("woff"),url(../fonts/flaticon/Flaticon.ttf) format("truetype"),url(../fonts/flaticon/Flaticon.svg#Flaticon) format("svg");font-weight:400;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:Flaticon;src:url(../fonts/flaticon/Flaticon.svg#Flaticon) format("svg")}}[class*=" flaticon-"]:before,[class^=flaticon-]:before{font-family:Flaticon;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-smoothing:antialiased}.fi:before{display:inline-block;font-family:Flaticon;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-smoothing:antialiased}.flaticon-delivery-truck:before{content:"\f100"}.flaticon-shopping-bag:before{content:"\f101"}.flaticon-box-3:before{content:"\f102"}.flaticon-box-2:before{content:"\f103"}.flaticon-box-1:before{content:"\f104"}.flaticon-laptop:before{content:"\f105"}.flaticon-coffee-cup:before{content:"\f106"}.flaticon-user-6:before{content:"\f107"}.flaticon-user-5:before{content:"\f108"}.flaticon-remove-user-1:before{content:"\f109"}.flaticon-customer-support:before{content:"\f10a"}.flaticon-user-4:before{content:"\f10b"}.flaticon-user-3:before{content:"\f10c"}.flaticon-user-2:before{content:"\f10d"}.flaticon-remove-user:before{content:"\f10e"}.flaticon-add-user:before{content:"\f10f"}.flaticon-tea-cup:before{content:"\f110"}.flaticon-pen:before{content:"\f111"}.flaticon-desk:before{content:"\f112"}.flaticon-ruler:before{content:"\f113"}.flaticon-pencil:before{content:"\f114"}.flaticon-analytics:before{content:"\f115"}.flaticon-google-plus:before{content:"\f116"}.flaticon-dribbble:before{content:"\f117"}.flaticon-whatsapp:before{content:"\f118"}.flaticon-twitter:before{content:"\f119"}.flaticon-behance:before{content:"\f11a"}.flaticon-instagram:before{content:"\f11b"}.flaticon-android:before{content:"\f11c"}.flaticon-apple:before{content:"\f11d"}.flaticon-windows:before{content:"\f11e"}.flaticon-pinterest:before{content:"\f11f"}.flaticon-youtube:before{content:"\f120"}.flaticon-paypal:before{content:"\f121"}.flaticon-linkedin:before{content:"\f122"}.flaticon-facebook:before{content:"\f123"}.flaticon-lock-1:before{content:"\f124"}.flaticon-lock:before{content:"\f125"}.flaticon-profile-1:before{content:"\f126"}.flaticon-profile:before{content:"\f127"}.flaticon-user-1:before{content:"\f128"}.flaticon-user:before{content:"\f129"}.flaticon-users:before{content:"\f12a"}.flaticon-message:before{content:"\f12b"}.flaticon-placeholder-1:before{content:"\f12c"}.flaticon-location:before{content:"\f12d"}.flaticon-arrows-2:before{content:"\f12e"}.flaticon-technology-2:before{content:"\f12f"}.flaticon-multimedia-2:before{content:"\f130"}.flaticon-multimedia-1:before{content:"\f131"}.flaticon-close:before{content:"\f132"}.flaticon-home:before{content:"\f133"}.flaticon-circle:before{content:"\f134"}.flaticon-arrow:before{content:"\f135"}.flaticon-mark-1:before{content:"\f136"}.flaticon-mark:before{content:"\f137"}.flaticon-shapes-1:before{content:"\f138"}.flaticon-search-2:before{content:"\f139"}.flaticon-interface-7:before{content:"\f13a"}.flaticon-suitcase:before{content:"\f13b"}.flaticon-chain-1:before{content:"\f13c"}.flaticon-chain:before{content:"\f13d"}.flaticon-agenda-1:before{content:"\f13e"}.flaticon-interface-6:before{content:"\f13f"}.flaticon-calendar:before{content:"\f140"}.flaticon-list:before{content:"\f141"}.flaticon-file-1:before{content:"\f142"}.flaticon-file:before{content:"\f143"}.flaticon-interface-5:before{content:"\f144"}.flaticon-folder:before{content:"\f145"}.flaticon-stopwatch:before{content:"\f146"}.flaticon-time:before{content:"\f147"}.flaticon-clock-1:before{content:"\f148"}.flaticon-search-1:before{content:"\f149"}.flaticon-alarm-1:before{content:"\f14a"}.flaticon-alarm:before{content:"\f14b"}.flaticon-present:before{content:"\f14c"}.flaticon-layers-1:before{content:"\f14d"}.flaticon-settings:before{content:"\f14e"}.flaticon-attachment:before{content:"\f14f"}.flaticon-gestures:before{content:"\f150"}.flaticon-tool:before{content:"\f151"}.flaticon-interface-4:before{content:"\f152"}.flaticon-interface-3:before{content:"\f153"}.flaticon-agenda:before{content:"\f154"}.flaticon-shapes:before{content:"\f155"}.flaticon-symbol-1:before{content:"\f156"}.flaticon-symbol:before{content:"\f157"}.flaticon-interface-2:before{content:"\f158"}.flaticon-layers:before{content:"\f159"}.flaticon-clock:before{content:"\f15a"}.flaticon-web-1:before{content:"\f15b"}.flaticon-internet:before{content:"\f15c"}.flaticon-placeholder:before{content:"\f15d"}.flaticon-signs-3:before{content:"\f15e"}.flaticon-star-1:before{content:"\f15f"}.flaticon-web:before{content:"\f160"}.flaticon-star:before{content:"\f161"}.flaticon-like-1:before{content:"\f162"}.flaticon-like:before{content:"\f163"}.flaticon-cloud:before{content:"\f164"}.flaticon-database:before{content:"\f165"}.flaticon-technology-1:before{content:"\f166"}.flaticon-idea:before{content:"\f167"}.flaticon-search:before{content:"\f168"}.flaticon-wifi:before{content:"\f169"}.flaticon-hands-1:before{content:"\f16a"}.flaticon-hands:before{content:"\f16b"}.flaticon-bars-2:before{content:"\f16c"}.flaticon-arrows-1:before{content:"\f16d"}.flaticon-interface-1:before{content:"\f16e"}.flaticon-network:before{content:"\f16f"}.flaticon-share-1:before{content:"\f170"}.flaticon-share:before{content:"\f171"}.flaticon-bars-1:before{content:"\f172"}.flaticon-cross-1:before{content:"\f173"}.flaticon-line-1:before{content:"\f174"}.flaticon-signs-2:before{content:"\f175"}.flaticon-check:before{content:"\f176"}.flaticon-technology:before{content:"\f177"}.flaticon-bars:before{content:"\f178"}.flaticon-cross:before{content:"\f179"}.flaticon-add:before{content:"\f17a"}.flaticon-power:before{content:"\f17b"}.flaticon-signs-1:before{content:"\f17c"}.flaticon-round:before{content:"\f17d"}.flaticon-exclamation:before{content:"\f17e"}.flaticon-success:before{content:"\f17f"}.flaticon-error:before{content:"\f180"}.flaticon-line:before{content:"\f181"}.flaticon-plus:before{content:"\f182"}.flaticon-interface:before{content:"\f183"}.flaticon-signs:before{content:"\f184"}.flaticon-play-button-1:before{content:"\f185"}.flaticon-play-button:before{content:"\f186"}.flaticon-music-player:before{content:"\f187"}.flaticon-medical:before{content:"\f188"}.flaticon-photo-camera:before{content:"\f189"}.flaticon-picture:before{content:"\f18a"}.flaticon-multimedia:before{content:"\f18b"}.flaticon-game-controller:before{content:"\f18c"}.flaticon-imac:before{content:"\f18d"}.flaticon-paint-palette:before{content:"\f18e"}.flaticon-envelope-3:before{content:"\f18f"}.flaticon-envelope-2:before{content:"\f190"}.flaticon-envelope-1:before{content:"\f191"}.flaticon-envelope:before{content:"\f192"}.flaticon-mailbox:before{content:"\f193"}.flaticon-inbox:before{content:"\f194"}.flaticon-chat-8:before{content:"\f195"}.flaticon-chat-7:before{content:"\f196"}.flaticon-chat-6:before{content:"\f197"}.flaticon-chat-5:before{content:"\f198"}.flaticon-chat-4:before{content:"\f199"}.flaticon-chat-3:before{content:"\f19a"}.flaticon-chat-2:before{content:"\f19b"}.flaticon-chat-1:before{content:"\f19c"}.flaticon-chat:before{content:"\f19d"}.flaticon-archive:before{content:"\f19e"}.flaticon-diagram:before{content:"\f19f"}.flaticon-graph-2:before{content:"\f1a0"}.flaticon-graph-1:before{content:"\f1a1"}.flaticon-graph:before{content:"\f1a2"}.flaticon-chart-pie:before{content:"\f1a3"}.flaticon-presentation:before{content:"\f1a4"}.flaticon-store:before{content:"\f1a5"}.flaticon-coins:before{content:"\f1a6"}.flaticon-credit-card-1:before{content:"\f1a7"}.flaticon-credit-card:before{content:"\f1a8"}.flaticon-cart-1:before{content:"\f1a9"}.flaticon-cart:before{content:"\f1aa"}.flaticon-price-tag:before{content:"\f1ab"}.flaticon-box:before{content:"\f1ac"}.flaticon-right-arrow-4:before{content:"\f1ad"}.flaticon-left-arrow-4:before{content:"\f1ae"}.flaticon-up-arrow-3:before{content:"\f1af"}.flaticon-download-1:before{content:"\f1b0"}.flaticon-down-arrow-3:before{content:"\f1b1"}.flaticon-up-arrow-2:before{content:"\f1b2"}.flaticon-left-arrow-3:before{content:"\f1b3"}.flaticon-right-arrow-3:before{content:"\f1b4"}.flaticon-down-arrow-2:before{content:"\f1b5"}.flaticon-arrows:before{content:"\f1b6"}.flaticon-left-arrow-2:before{content:"\f1b7"}.flaticon-right-arrow-2:before{content:"\f1b8"}.flaticon-upward:before{content:"\f1b9"}.flaticon-download:before{content:"\f1ba"}.flaticon-back:before{content:"\f1bb"}.flaticon-next:before{content:"\f1bc"}.flaticon-up-arrow-1:before{content:"\f1bd"}.flaticon-down-arrow-1:before{content:"\f1be"}.flaticon-left-arrow-1:before{content:"\f1bf"}.flaticon-right-arrow-1:before{content:"\f1c0"}.flaticon-up-arrow:before{content:"\f1c1"}.flaticon-down-arrow:before{content:"\f1c2"}.flaticon-left-arrow:before{content:"\f1c3"}.flaticon-right-arrow:before{content:"\f1c4"}.flaticon-expand:before{content:"\f1c5"}.flaticon-repeat:before{content:"\f1c6"}/*! + * Font Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-r-project:before{content:"\f4f7"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:'Font Awesome 5 Brands';font-style:normal;font-weight:400;src:url(../fonts/fontawesome/fa-brands-400.eot);src:url(../fonts/fontawesome/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fontawesome/fa-brands-400.woff2) format("woff2"),url(../fonts/fontawesome/fa-brands-400.woff) format("woff"),url(../fonts/fontawesome/fa-brands-400.ttf) format("truetype"),url(../fonts/fontawesome/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:'Font Awesome 5 Brands'}@font-face{font-family:'Font Awesome 5 Regular';font-style:normal;font-weight:400;src:url(../fonts/fontawesome/fa-regular-400.eot);src:url(../fonts/fontawesome/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fontawesome/fa-regular-400.woff2) format("woff2"),url(../fonts/fontawesome/fa-regular-400.woff) format("woff"),url(../fonts/fontawesome/fa-regular-400.ttf) format("truetype"),url(../fonts/fontawesome/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:'Font Awesome 5 Regular';font-weight:400}@font-face{font-family:'Font Awesome 5 Solid';font-style:normal;font-weight:900;src:url(../fonts/fontawesome/fa-solid-900.eot);src:url(../fonts/fontawesome/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fontawesome/fa-solid-900.woff2) format("woff2"),url(../fonts/fontawesome/fa-solid-900.woff) format("woff"),url(../fonts/fontawesome/fa-solid-900.ttf) format("truetype"),url(../fonts/fontawesome/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:'Font Awesome 5 Solid';font-weight:900}@font-face{font-family:simple-line-icons;src:url(../fonts/simple-line-icons/Simple-Line-Icons.eot?v=2.4.0);src:url(../fonts/simple-line-icons/Simple-Line-Icons.eot?v=2.4.0#iefix) format('embedded-opentype'),url(../fonts/simple-line-icons/Simple-Line-Icons.woff2?v=2.4.0) format('woff2'),url(../fonts/simple-line-icons/Simple-Line-Icons.ttf?v=2.4.0) format('truetype'),url(../fonts/simple-line-icons/Simple-Line-Icons.woff?v=2.4.0) format('woff'),url(../fonts/simple-line-icons/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons) format('svg');font-weight:400;font-style:normal}.icon-action-redo,.icon-action-undo,.icon-anchor,.icon-arrow-down,.icon-arrow-down-circle,.icon-arrow-left,.icon-arrow-left-circle,.icon-arrow-right,.icon-arrow-right-circle,.icon-arrow-up,.icon-arrow-up-circle,.icon-badge,.icon-bag,.icon-ban,.icon-basket,.icon-basket-loaded,.icon-bell,.icon-book-open,.icon-briefcase,.icon-bubble,.icon-bubbles,.icon-bulb,.icon-calculator,.icon-calendar,.icon-call-end,.icon-call-in,.icon-call-out,.icon-camera,.icon-camrecorder,.icon-chart,.icon-check,.icon-chemistry,.icon-clock,.icon-close,.icon-cloud-download,.icon-cloud-upload,.icon-compass,.icon-control-end,.icon-control-forward,.icon-control-pause,.icon-control-play,.icon-control-rewind,.icon-control-start,.icon-credit-card,.icon-crop,.icon-cup,.icon-cursor,.icon-cursor-move,.icon-diamond,.icon-direction,.icon-directions,.icon-disc,.icon-dislike,.icon-doc,.icon-docs,.icon-drawer,.icon-drop,.icon-earphones,.icon-earphones-alt,.icon-emotsmile,.icon-energy,.icon-envelope,.icon-envelope-letter,.icon-envelope-open,.icon-equalizer,.icon-event,.icon-exclamation,.icon-eye,.icon-eyeglass,.icon-feed,.icon-film,.icon-fire,.icon-flag,.icon-folder,.icon-folder-alt,.icon-frame,.icon-game-controller,.icon-ghost,.icon-globe,.icon-globe-alt,.icon-graduation,.icon-graph,.icon-grid,.icon-handbag,.icon-heart,.icon-home,.icon-hourglass,.icon-information,.icon-key,.icon-layers,.icon-like,.icon-link,.icon-list,.icon-location-pin,.icon-lock,.icon-lock-open,.icon-login,.icon-logout,.icon-loop,.icon-magic-wand,.icon-magnet,.icon-magnifier,.icon-magnifier-add,.icon-magnifier-remove,.icon-map,.icon-menu,.icon-microphone,.icon-minus,.icon-mouse,.icon-music-tone,.icon-music-tone-alt,.icon-mustache,.icon-note,.icon-notebook,.icon-options,.icon-options-vertical,.icon-organization,.icon-paper-clip,.icon-paper-plane,.icon-paypal,.icon-pencil,.icon-people,.icon-phone,.icon-picture,.icon-pie-chart,.icon-pin,.icon-plane,.icon-playlist,.icon-plus,.icon-power,.icon-present,.icon-printer,.icon-puzzle,.icon-question,.icon-refresh,.icon-reload,.icon-rocket,.icon-screen-desktop,.icon-screen-smartphone,.icon-screen-tablet,.icon-settings,.icon-share,.icon-share-alt,.icon-shield,.icon-shuffle,.icon-size-actual,.icon-size-fullscreen,.icon-social-behance,.icon-social-dribbble,.icon-social-dropbox,.icon-social-facebook,.icon-social-foursqare,.icon-social-github,.icon-social-google,.icon-social-instagram,.icon-social-linkedin,.icon-social-pinterest,.icon-social-reddit,.icon-social-skype,.icon-social-soundcloud,.icon-social-spotify,.icon-social-steam,.icon-social-stumbleupon,.icon-social-tumblr,.icon-social-twitter,.icon-social-vkontakte,.icon-social-youtube,.icon-speech,.icon-speedometer,.icon-star,.icon-support,.icon-symbol-female,.icon-symbol-male,.icon-tag,.icon-target,.icon-trash,.icon-trophy,.icon-umbrella,.icon-user,.icon-user-female,.icon-user-follow,.icon-user-following,.icon-user-unfollow,.icon-vector,.icon-volume-1,.icon-volume-2,.icon-volume-off,.icon-wallet,.icon-wrench{font-family:simple-line-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-user:before{content:"\e005"}.icon-people:before{content:"\e001"}.icon-user-female:before{content:"\e000"}.icon-user-follow:before{content:"\e002"}.icon-user-following:before{content:"\e003"}.icon-user-unfollow:before{content:"\e004"}.icon-login:before{content:"\e066"}.icon-logout:before{content:"\e065"}.icon-emotsmile:before{content:"\e021"}.icon-phone:before{content:"\e600"}.icon-call-end:before{content:"\e048"}.icon-call-in:before{content:"\e047"}.icon-call-out:before{content:"\e046"}.icon-map:before{content:"\e033"}.icon-location-pin:before{content:"\e096"}.icon-direction:before{content:"\e042"}.icon-directions:before{content:"\e041"}.icon-compass:before{content:"\e045"}.icon-layers:before{content:"\e034"}.icon-menu:before{content:"\e601"}.icon-list:before{content:"\e067"}.icon-options-vertical:before{content:"\e602"}.icon-options:before{content:"\e603"}.icon-arrow-down:before{content:"\e604"}.icon-arrow-left:before{content:"\e605"}.icon-arrow-right:before{content:"\e606"}.icon-arrow-up:before{content:"\e607"}.icon-arrow-up-circle:before{content:"\e078"}.icon-arrow-left-circle:before{content:"\e07a"}.icon-arrow-right-circle:before{content:"\e079"}.icon-arrow-down-circle:before{content:"\e07b"}.icon-check:before{content:"\e080"}.icon-clock:before{content:"\e081"}.icon-plus:before{content:"\e095"}.icon-minus:before{content:"\e615"}.icon-close:before{content:"\e082"}.icon-event:before{content:"\e619"}.icon-exclamation:before{content:"\e617"}.icon-organization:before{content:"\e616"}.icon-trophy:before{content:"\e006"}.icon-screen-smartphone:before{content:"\e010"}.icon-screen-desktop:before{content:"\e011"}.icon-plane:before{content:"\e012"}.icon-notebook:before{content:"\e013"}.icon-mustache:before{content:"\e014"}.icon-mouse:before{content:"\e015"}.icon-magnet:before{content:"\e016"}.icon-energy:before{content:"\e020"}.icon-disc:before{content:"\e022"}.icon-cursor:before{content:"\e06e"}.icon-cursor-move:before{content:"\e023"}.icon-crop:before{content:"\e024"}.icon-chemistry:before{content:"\e026"}.icon-speedometer:before{content:"\e007"}.icon-shield:before{content:"\e00e"}.icon-screen-tablet:before{content:"\e00f"}.icon-magic-wand:before{content:"\e017"}.icon-hourglass:before{content:"\e018"}.icon-graduation:before{content:"\e019"}.icon-ghost:before{content:"\e01a"}.icon-game-controller:before{content:"\e01b"}.icon-fire:before{content:"\e01c"}.icon-eyeglass:before{content:"\e01d"}.icon-envelope-open:before{content:"\e01e"}.icon-envelope-letter:before{content:"\e01f"}.icon-bell:before{content:"\e027"}.icon-badge:before{content:"\e028"}.icon-anchor:before{content:"\e029"}.icon-wallet:before{content:"\e02a"}.icon-vector:before{content:"\e02b"}.icon-speech:before{content:"\e02c"}.icon-puzzle:before{content:"\e02d"}.icon-printer:before{content:"\e02e"}.icon-present:before{content:"\e02f"}.icon-playlist:before{content:"\e030"}.icon-pin:before{content:"\e031"}.icon-picture:before{content:"\e032"}.icon-handbag:before{content:"\e035"}.icon-globe-alt:before{content:"\e036"}.icon-globe:before{content:"\e037"}.icon-folder-alt:before{content:"\e039"}.icon-folder:before{content:"\e089"}.icon-film:before{content:"\e03a"}.icon-feed:before{content:"\e03b"}.icon-drop:before{content:"\e03e"}.icon-drawer:before{content:"\e03f"}.icon-docs:before{content:"\e040"}.icon-doc:before{content:"\e085"}.icon-diamond:before{content:"\e043"}.icon-cup:before{content:"\e044"}.icon-calculator:before{content:"\e049"}.icon-bubbles:before{content:"\e04a"}.icon-briefcase:before{content:"\e04b"}.icon-book-open:before{content:"\e04c"}.icon-basket-loaded:before{content:"\e04d"}.icon-basket:before{content:"\e04e"}.icon-bag:before{content:"\e04f"}.icon-action-undo:before{content:"\e050"}.icon-action-redo:before{content:"\e051"}.icon-wrench:before{content:"\e052"}.icon-umbrella:before{content:"\e053"}.icon-trash:before{content:"\e054"}.icon-tag:before{content:"\e055"}.icon-support:before{content:"\e056"}.icon-frame:before{content:"\e038"}.icon-size-fullscreen:before{content:"\e057"}.icon-size-actual:before{content:"\e058"}.icon-shuffle:before{content:"\e059"}.icon-share-alt:before{content:"\e05a"}.icon-share:before{content:"\e05b"}.icon-rocket:before{content:"\e05c"}.icon-question:before{content:"\e05d"}.icon-pie-chart:before{content:"\e05e"}.icon-pencil:before{content:"\e05f"}.icon-note:before{content:"\e060"}.icon-loop:before{content:"\e064"}.icon-home:before{content:"\e069"}.icon-grid:before{content:"\e06a"}.icon-graph:before{content:"\e06b"}.icon-microphone:before{content:"\e063"}.icon-music-tone-alt:before{content:"\e061"}.icon-music-tone:before{content:"\e062"}.icon-earphones-alt:before{content:"\e03c"}.icon-earphones:before{content:"\e03d"}.icon-equalizer:before{content:"\e06c"}.icon-like:before{content:"\e068"}.icon-dislike:before{content:"\e06d"}.icon-control-start:before{content:"\e06f"}.icon-control-rewind:before{content:"\e070"}.icon-control-play:before{content:"\e071"}.icon-control-pause:before{content:"\e072"}.icon-control-forward:before{content:"\e073"}.icon-control-end:before{content:"\e074"}.icon-volume-1:before{content:"\e09f"}.icon-volume-2:before{content:"\e0a0"}.icon-volume-off:before{content:"\e0a1"}.icon-calendar:before{content:"\e075"}.icon-bulb:before{content:"\e076"}.icon-chart:before{content:"\e077"}.icon-ban:before{content:"\e07c"}.icon-bubble:before{content:"\e07d"}.icon-camrecorder:before{content:"\e07e"}.icon-camera:before{content:"\e07f"}.icon-cloud-download:before{content:"\e083"}.icon-cloud-upload:before{content:"\e084"}.icon-envelope:before{content:"\e086"}.icon-eye:before{content:"\e087"}.icon-flag:before{content:"\e088"}.icon-heart:before{content:"\e08a"}.icon-information:before{content:"\e08b"}.icon-key:before{content:"\e08c"}.icon-link:before{content:"\e08d"}.icon-lock:before{content:"\e08e"}.icon-lock-open:before{content:"\e08f"}.icon-magnifier:before{content:"\e090"}.icon-magnifier-add:before{content:"\e091"}.icon-magnifier-remove:before{content:"\e092"}.icon-paper-clip:before{content:"\e093"}.icon-paper-plane:before{content:"\e094"}.icon-power:before{content:"\e097"}.icon-refresh:before{content:"\e098"}.icon-reload:before{content:"\e099"}.icon-settings:before{content:"\e09a"}.icon-star:before{content:"\e09b"}.icon-symbol-female:before{content:"\e09c"}.icon-symbol-male:before{content:"\e09d"}.icon-target:before{content:"\e09e"}.icon-credit-card:before{content:"\e025"}.icon-paypal:before{content:"\e608"}.icon-social-tumblr:before{content:"\e00a"}.icon-social-twitter:before{content:"\e009"}.icon-social-facebook:before{content:"\e00b"}.icon-social-instagram:before{content:"\e609"}.icon-social-linkedin:before{content:"\e60a"}.icon-social-pinterest:before{content:"\e60b"}.icon-social-github:before{content:"\e60c"}.icon-social-google:before{content:"\e60d"}.icon-social-reddit:before{content:"\e60e"}.icon-social-skype:before{content:"\e60f"}.icon-social-dribbble:before{content:"\e00d"}.icon-social-behance:before{content:"\e610"}.icon-social-foursqare:before{content:"\e611"}.icon-social-soundcloud:before{content:"\e612"}.icon-social-spotify:before{content:"\e613"}.icon-social-stumbleupon:before{content:"\e614"}.icon-social-youtube:before{content:"\e008"}.icon-social-dropbox:before{content:"\e00c"}.icon-social-vkontakte:before{content:"\e618"}.icon-social-steam:before{content:"\e620"} \ No newline at end of file diff --git a/src/main/resources/static/assets/fonts/flaticon/Flaticon.eot b/src/main/resources/static/assets/fonts/flaticon/Flaticon.eot new file mode 100644 index 0000000..997fe95 Binary files /dev/null and b/src/main/resources/static/assets/fonts/flaticon/Flaticon.eot differ diff --git a/src/main/resources/static/assets/fonts/flaticon/Flaticon.svg b/src/main/resources/static/assets/fonts/flaticon/Flaticon.svg new file mode 100644 index 0000000..72645f7 --- /dev/null +++ b/src/main/resources/static/assets/fonts/flaticon/Flaticon.svg @@ -0,0 +1,2100 @@ + + + + + +Created by FontForge 20160405 at Tue Mar 13 03:24:24 2018 + By Apache +Copyright (c) 2018, Apache + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/assets/fonts/flaticon/Flaticon.ttf b/src/main/resources/static/assets/fonts/flaticon/Flaticon.ttf new file mode 100644 index 0000000..841817c Binary files /dev/null and b/src/main/resources/static/assets/fonts/flaticon/Flaticon.ttf differ diff --git a/src/main/resources/static/assets/fonts/flaticon/Flaticon.woff b/src/main/resources/static/assets/fonts/flaticon/Flaticon.woff new file mode 100644 index 0000000..0eb59ee Binary files /dev/null and b/src/main/resources/static/assets/fonts/flaticon/Flaticon.woff differ diff --git a/src/main/resources/static/assets/fonts/flaticon/_flaticon.scss b/src/main/resources/static/assets/fonts/flaticon/_flaticon.scss new file mode 100644 index 0000000..a8a32c8 --- /dev/null +++ b/src/main/resources/static/assets/fonts/flaticon/_flaticon.scss @@ -0,0 +1,437 @@ + /* + Flaticon icon font: Flaticon + Creation date: 13/03/2018 03:24 + */ + + @font-face { + font-family: "Flaticon"; + src: url("./Flaticon.eot"); + src: url("./Flaticon.eot?#iefix") format("embedded-opentype"), + url("./Flaticon.woff") format("woff"), + url("./Flaticon.ttf") format("truetype"), + url("./Flaticon.svg#Flaticon") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "Flaticon"; + src: url("./Flaticon.svg#Flaticon") format("svg"); + } +} + + .fi:before{ + display: inline-block; + font-family: "Flaticon"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + } + + .flaticon-delivery-truck:before { content: "\f100"; } +.flaticon-shopping-bag:before { content: "\f101"; } +.flaticon-box-3:before { content: "\f102"; } +.flaticon-box-2:before { content: "\f103"; } +.flaticon-box-1:before { content: "\f104"; } +.flaticon-laptop:before { content: "\f105"; } +.flaticon-coffee-cup:before { content: "\f106"; } +.flaticon-user-6:before { content: "\f107"; } +.flaticon-user-5:before { content: "\f108"; } +.flaticon-remove-user-1:before { content: "\f109"; } +.flaticon-customer-support:before { content: "\f10a"; } +.flaticon-user-4:before { content: "\f10b"; } +.flaticon-user-3:before { content: "\f10c"; } +.flaticon-user-2:before { content: "\f10d"; } +.flaticon-remove-user:before { content: "\f10e"; } +.flaticon-add-user:before { content: "\f10f"; } +.flaticon-tea-cup:before { content: "\f110"; } +.flaticon-pen:before { content: "\f111"; } +.flaticon-desk:before { content: "\f112"; } +.flaticon-ruler:before { content: "\f113"; } +.flaticon-pencil:before { content: "\f114"; } +.flaticon-analytics:before { content: "\f115"; } +.flaticon-google-plus:before { content: "\f116"; } +.flaticon-dribbble:before { content: "\f117"; } +.flaticon-whatsapp:before { content: "\f118"; } +.flaticon-twitter:before { content: "\f119"; } +.flaticon-behance:before { content: "\f11a"; } +.flaticon-instagram:before { content: "\f11b"; } +.flaticon-android:before { content: "\f11c"; } +.flaticon-apple:before { content: "\f11d"; } +.flaticon-windows:before { content: "\f11e"; } +.flaticon-pinterest:before { content: "\f11f"; } +.flaticon-youtube:before { content: "\f120"; } +.flaticon-paypal:before { content: "\f121"; } +.flaticon-linkedin:before { content: "\f122"; } +.flaticon-facebook:before { content: "\f123"; } +.flaticon-lock-1:before { content: "\f124"; } +.flaticon-lock:before { content: "\f125"; } +.flaticon-profile-1:before { content: "\f126"; } +.flaticon-profile:before { content: "\f127"; } +.flaticon-user-1:before { content: "\f128"; } +.flaticon-user:before { content: "\f129"; } +.flaticon-users:before { content: "\f12a"; } +.flaticon-message:before { content: "\f12b"; } +.flaticon-placeholder-1:before { content: "\f12c"; } +.flaticon-location:before { content: "\f12d"; } +.flaticon-arrows-2:before { content: "\f12e"; } +.flaticon-technology-2:before { content: "\f12f"; } +.flaticon-multimedia-2:before { content: "\f130"; } +.flaticon-multimedia-1:before { content: "\f131"; } +.flaticon-close:before { content: "\f132"; } +.flaticon-home:before { content: "\f133"; } +.flaticon-circle:before { content: "\f134"; } +.flaticon-arrow:before { content: "\f135"; } +.flaticon-mark-1:before { content: "\f136"; } +.flaticon-mark:before { content: "\f137"; } +.flaticon-shapes-1:before { content: "\f138"; } +.flaticon-search-2:before { content: "\f139"; } +.flaticon-interface-7:before { content: "\f13a"; } +.flaticon-suitcase:before { content: "\f13b"; } +.flaticon-chain-1:before { content: "\f13c"; } +.flaticon-chain:before { content: "\f13d"; } +.flaticon-agenda-1:before { content: "\f13e"; } +.flaticon-interface-6:before { content: "\f13f"; } +.flaticon-calendar:before { content: "\f140"; } +.flaticon-list:before { content: "\f141"; } +.flaticon-file-1:before { content: "\f142"; } +.flaticon-file:before { content: "\f143"; } +.flaticon-interface-5:before { content: "\f144"; } +.flaticon-folder:before { content: "\f145"; } +.flaticon-stopwatch:before { content: "\f146"; } +.flaticon-time:before { content: "\f147"; } +.flaticon-clock-1:before { content: "\f148"; } +.flaticon-search-1:before { content: "\f149"; } +.flaticon-music-1:before { content: "\f14a"; } +.flaticon-music:before { content: "\f14b"; } +.flaticon-present:before { content: "\f14c"; } +.flaticon-layers-1:before { content: "\f14d"; } +.flaticon-settings:before { content: "\f14e"; } +.flaticon-attachment:before { content: "\f14f"; } +.flaticon-gestures:before { content: "\f150"; } +.flaticon-tool:before { content: "\f151"; } +.flaticon-interface-4:before { content: "\f152"; } +.flaticon-interface-3:before { content: "\f153"; } +.flaticon-agenda:before { content: "\f154"; } +.flaticon-shapes:before { content: "\f155"; } +.flaticon-symbol-1:before { content: "\f156"; } +.flaticon-symbol:before { content: "\f157"; } +.flaticon-interface-2:before { content: "\f158"; } +.flaticon-layers:before { content: "\f159"; } +.flaticon-clock:before { content: "\f15a"; } +.flaticon-web-1:before { content: "\f15b"; } +.flaticon-internet:before { content: "\f15c"; } +.flaticon-placeholder:before { content: "\f15d"; } +.flaticon-signs-3:before { content: "\f15e"; } +.flaticon-star-1:before { content: "\f15f"; } +.flaticon-web:before { content: "\f160"; } +.flaticon-star:before { content: "\f161"; } +.flaticon-like-1:before { content: "\f162"; } +.flaticon-like:before { content: "\f163"; } +.flaticon-cloud:before { content: "\f164"; } +.flaticon-database:before { content: "\f165"; } +.flaticon-technology-1:before { content: "\f166"; } +.flaticon-idea:before { content: "\f167"; } +.flaticon-search:before { content: "\f168"; } +.flaticon-wifi:before { content: "\f169"; } +.flaticon-hands-1:before { content: "\f16a"; } +.flaticon-hands:before { content: "\f16b"; } +.flaticon-bars-2:before { content: "\f16c"; } +.flaticon-arrows-1:before { content: "\f16d"; } +.flaticon-interface-1:before { content: "\f16e"; } +.flaticon-network:before { content: "\f16f"; } +.flaticon-share-1:before { content: "\f170"; } +.flaticon-share:before { content: "\f171"; } +.flaticon-bars-1:before { content: "\f172"; } +.flaticon-cross-1:before { content: "\f173"; } +.flaticon-line-1:before { content: "\f174"; } +.flaticon-signs-2:before { content: "\f175"; } +.flaticon-check:before { content: "\f176"; } +.flaticon-technology:before { content: "\f177"; } +.flaticon-bars:before { content: "\f178"; } +.flaticon-cross:before { content: "\f179"; } +.flaticon-add:before { content: "\f17a"; } +.flaticon-power:before { content: "\f17b"; } +.flaticon-signs-1:before { content: "\f17c"; } +.flaticon-round:before { content: "\f17d"; } +.flaticon-exclamation:before { content: "\f17e"; } +.flaticon-success:before { content: "\f17f"; } +.flaticon-error:before { content: "\f180"; } +.flaticon-line:before { content: "\f181"; } +.flaticon-plus:before { content: "\f182"; } +.flaticon-interface:before { content: "\f183"; } +.flaticon-signs:before { content: "\f184"; } +.flaticon-play-button-1:before { content: "\f185"; } +.flaticon-play-button:before { content: "\f186"; } +.flaticon-music-player:before { content: "\f187"; } +.flaticon-medical:before { content: "\f188"; } +.flaticon-photo-camera:before { content: "\f189"; } +.flaticon-picture:before { content: "\f18a"; } +.flaticon-multimedia:before { content: "\f18b"; } +.flaticon-game-controller:before { content: "\f18c"; } +.flaticon-imac:before { content: "\f18d"; } +.flaticon-paint-palette:before { content: "\f18e"; } +.flaticon-envelope-3:before { content: "\f18f"; } +.flaticon-envelope-2:before { content: "\f190"; } +.flaticon-envelope-1:before { content: "\f191"; } +.flaticon-envelope:before { content: "\f192"; } +.flaticon-mailbox:before { content: "\f193"; } +.flaticon-inbox:before { content: "\f194"; } +.flaticon-chat-8:before { content: "\f195"; } +.flaticon-chat-7:before { content: "\f196"; } +.flaticon-chat-6:before { content: "\f197"; } +.flaticon-chat-5:before { content: "\f198"; } +.flaticon-chat-4:before { content: "\f199"; } +.flaticon-chat-3:before { content: "\f19a"; } +.flaticon-chat-2:before { content: "\f19b"; } +.flaticon-chat-1:before { content: "\f19c"; } +.flaticon-chat:before { content: "\f19d"; } +.flaticon-archive:before { content: "\f19e"; } +.flaticon-diagram:before { content: "\f19f"; } +.flaticon-graph-2:before { content: "\f1a0"; } +.flaticon-graph-1:before { content: "\f1a1"; } +.flaticon-graph:before { content: "\f1a2"; } +.flaticon-chart-pie:before { content: "\f1a3"; } +.flaticon-presentation:before { content: "\f1a4"; } +.flaticon-store:before { content: "\f1a5"; } +.flaticon-coins:before { content: "\f1a6"; } +.flaticon-credit-card-1:before { content: "\f1a7"; } +.flaticon-credit-card:before { content: "\f1a8"; } +.flaticon-cart-1:before { content: "\f1a9"; } +.flaticon-cart:before { content: "\f1aa"; } +.flaticon-price-tag:before { content: "\f1ab"; } +.flaticon-box:before { content: "\f1ac"; } +.flaticon-right-arrow-4:before { content: "\f1ad"; } +.flaticon-left-arrow-4:before { content: "\f1ae"; } +.flaticon-up-arrow-3:before { content: "\f1af"; } +.flaticon-download-1:before { content: "\f1b0"; } +.flaticon-down-arrow-3:before { content: "\f1b1"; } +.flaticon-up-arrow-2:before { content: "\f1b2"; } +.flaticon-left-arrow-3:before { content: "\f1b3"; } +.flaticon-right-arrow-3:before { content: "\f1b4"; } +.flaticon-down-arrow-2:before { content: "\f1b5"; } +.flaticon-arrows:before { content: "\f1b6"; } +.flaticon-left-arrow-2:before { content: "\f1b7"; } +.flaticon-right-arrow-2:before { content: "\f1b8"; } +.flaticon-upward:before { content: "\f1b9"; } +.flaticon-download:before { content: "\f1ba"; } +.flaticon-back:before { content: "\f1bb"; } +.flaticon-next:before { content: "\f1bc"; } +.flaticon-up-arrow-1:before { content: "\f1bd"; } +.flaticon-down-arrow-1:before { content: "\f1be"; } +.flaticon-left-arrow-1:before { content: "\f1bf"; } +.flaticon-right-arrow-1:before { content: "\f1c0"; } +.flaticon-up-arrow:before { content: "\f1c1"; } +.flaticon-down-arrow:before { content: "\f1c2"; } +.flaticon-left-arrow:before { content: "\f1c3"; } +.flaticon-right-arrow:before { content: "\f1c4"; } +.flaticon-expand:before { content: "\f1c5"; } +.flaticon-repeat:before { content: "\f1c6"; } + + $font-Flaticon-delivery-truck: "\f100"; + $font-Flaticon-shopping-bag: "\f101"; + $font-Flaticon-box-3: "\f102"; + $font-Flaticon-box-2: "\f103"; + $font-Flaticon-box-1: "\f104"; + $font-Flaticon-laptop: "\f105"; + $font-Flaticon-coffee-cup: "\f106"; + $font-Flaticon-user-6: "\f107"; + $font-Flaticon-user-5: "\f108"; + $font-Flaticon-remove-user-1: "\f109"; + $font-Flaticon-customer-support: "\f10a"; + $font-Flaticon-user-4: "\f10b"; + $font-Flaticon-user-3: "\f10c"; + $font-Flaticon-user-2: "\f10d"; + $font-Flaticon-remove-user: "\f10e"; + $font-Flaticon-add-user: "\f10f"; + $font-Flaticon-tea-cup: "\f110"; + $font-Flaticon-pen: "\f111"; + $font-Flaticon-desk: "\f112"; + $font-Flaticon-ruler: "\f113"; + $font-Flaticon-pencil: "\f114"; + $font-Flaticon-analytics: "\f115"; + $font-Flaticon-google-plus: "\f116"; + $font-Flaticon-dribbble: "\f117"; + $font-Flaticon-whatsapp: "\f118"; + $font-Flaticon-twitter: "\f119"; + $font-Flaticon-behance: "\f11a"; + $font-Flaticon-instagram: "\f11b"; + $font-Flaticon-android: "\f11c"; + $font-Flaticon-apple: "\f11d"; + $font-Flaticon-windows: "\f11e"; + $font-Flaticon-pinterest: "\f11f"; + $font-Flaticon-youtube: "\f120"; + $font-Flaticon-paypal: "\f121"; + $font-Flaticon-linkedin: "\f122"; + $font-Flaticon-facebook: "\f123"; + $font-Flaticon-lock-1: "\f124"; + $font-Flaticon-lock: "\f125"; + $font-Flaticon-profile-1: "\f126"; + $font-Flaticon-profile: "\f127"; + $font-Flaticon-user-1: "\f128"; + $font-Flaticon-user: "\f129"; + $font-Flaticon-users: "\f12a"; + $font-Flaticon-message: "\f12b"; + $font-Flaticon-placeholder-1: "\f12c"; + $font-Flaticon-location: "\f12d"; + $font-Flaticon-arrows-2: "\f12e"; + $font-Flaticon-technology-2: "\f12f"; + $font-Flaticon-multimedia-2: "\f130"; + $font-Flaticon-multimedia-1: "\f131"; + $font-Flaticon-close: "\f132"; + $font-Flaticon-home: "\f133"; + $font-Flaticon-circle: "\f134"; + $font-Flaticon-arrow: "\f135"; + $font-Flaticon-mark-1: "\f136"; + $font-Flaticon-mark: "\f137"; + $font-Flaticon-shapes-1: "\f138"; + $font-Flaticon-search-2: "\f139"; + $font-Flaticon-interface-7: "\f13a"; + $font-Flaticon-suitcase: "\f13b"; + $font-Flaticon-chain-1: "\f13c"; + $font-Flaticon-chain: "\f13d"; + $font-Flaticon-agenda-1: "\f13e"; + $font-Flaticon-interface-6: "\f13f"; + $font-Flaticon-calendar: "\f140"; + $font-Flaticon-list: "\f141"; + $font-Flaticon-file-1: "\f142"; + $font-Flaticon-file: "\f143"; + $font-Flaticon-interface-5: "\f144"; + $font-Flaticon-folder: "\f145"; + $font-Flaticon-stopwatch: "\f146"; + $font-Flaticon-time: "\f147"; + $font-Flaticon-clock-1: "\f148"; + $font-Flaticon-search-1: "\f149"; + $font-Flaticon-music-1: "\f14a"; + $font-Flaticon-music: "\f14b"; + $font-Flaticon-present: "\f14c"; + $font-Flaticon-layers-1: "\f14d"; + $font-Flaticon-settings: "\f14e"; + $font-Flaticon-attachment: "\f14f"; + $font-Flaticon-gestures: "\f150"; + $font-Flaticon-tool: "\f151"; + $font-Flaticon-interface-4: "\f152"; + $font-Flaticon-interface-3: "\f153"; + $font-Flaticon-agenda: "\f154"; + $font-Flaticon-shapes: "\f155"; + $font-Flaticon-symbol-1: "\f156"; + $font-Flaticon-symbol: "\f157"; + $font-Flaticon-interface-2: "\f158"; + $font-Flaticon-layers: "\f159"; + $font-Flaticon-clock: "\f15a"; + $font-Flaticon-web-1: "\f15b"; + $font-Flaticon-internet: "\f15c"; + $font-Flaticon-placeholder: "\f15d"; + $font-Flaticon-signs-3: "\f15e"; + $font-Flaticon-star-1: "\f15f"; + $font-Flaticon-web: "\f160"; + $font-Flaticon-star: "\f161"; + $font-Flaticon-like-1: "\f162"; + $font-Flaticon-like: "\f163"; + $font-Flaticon-cloud: "\f164"; + $font-Flaticon-database: "\f165"; + $font-Flaticon-technology-1: "\f166"; + $font-Flaticon-idea: "\f167"; + $font-Flaticon-search: "\f168"; + $font-Flaticon-wifi: "\f169"; + $font-Flaticon-hands-1: "\f16a"; + $font-Flaticon-hands: "\f16b"; + $font-Flaticon-bars-2: "\f16c"; + $font-Flaticon-arrows-1: "\f16d"; + $font-Flaticon-interface-1: "\f16e"; + $font-Flaticon-network: "\f16f"; + $font-Flaticon-share-1: "\f170"; + $font-Flaticon-share: "\f171"; + $font-Flaticon-bars-1: "\f172"; + $font-Flaticon-cross-1: "\f173"; + $font-Flaticon-line-1: "\f174"; + $font-Flaticon-signs-2: "\f175"; + $font-Flaticon-check: "\f176"; + $font-Flaticon-technology: "\f177"; + $font-Flaticon-bars: "\f178"; + $font-Flaticon-cross: "\f179"; + $font-Flaticon-add: "\f17a"; + $font-Flaticon-power: "\f17b"; + $font-Flaticon-signs-1: "\f17c"; + $font-Flaticon-round: "\f17d"; + $font-Flaticon-exclamation: "\f17e"; + $font-Flaticon-success: "\f17f"; + $font-Flaticon-error: "\f180"; + $font-Flaticon-line: "\f181"; + $font-Flaticon-plus: "\f182"; + $font-Flaticon-interface: "\f183"; + $font-Flaticon-signs: "\f184"; + $font-Flaticon-play-button-1: "\f185"; + $font-Flaticon-play-button: "\f186"; + $font-Flaticon-music-player: "\f187"; + $font-Flaticon-medical: "\f188"; + $font-Flaticon-photo-camera: "\f189"; + $font-Flaticon-picture: "\f18a"; + $font-Flaticon-multimedia: "\f18b"; + $font-Flaticon-game-controller: "\f18c"; + $font-Flaticon-imac: "\f18d"; + $font-Flaticon-paint-palette: "\f18e"; + $font-Flaticon-envelope-3: "\f18f"; + $font-Flaticon-envelope-2: "\f190"; + $font-Flaticon-envelope-1: "\f191"; + $font-Flaticon-envelope: "\f192"; + $font-Flaticon-mailbox: "\f193"; + $font-Flaticon-inbox: "\f194"; + $font-Flaticon-chat-8: "\f195"; + $font-Flaticon-chat-7: "\f196"; + $font-Flaticon-chat-6: "\f197"; + $font-Flaticon-chat-5: "\f198"; + $font-Flaticon-chat-4: "\f199"; + $font-Flaticon-chat-3: "\f19a"; + $font-Flaticon-chat-2: "\f19b"; + $font-Flaticon-chat-1: "\f19c"; + $font-Flaticon-chat: "\f19d"; + $font-Flaticon-archive: "\f19e"; + $font-Flaticon-diagram: "\f19f"; + $font-Flaticon-graph-2: "\f1a0"; + $font-Flaticon-graph-1: "\f1a1"; + $font-Flaticon-graph: "\f1a2"; + $font-Flaticon-chart-pie: "\f1a3"; + $font-Flaticon-presentation: "\f1a4"; + $font-Flaticon-store: "\f1a5"; + $font-Flaticon-coins: "\f1a6"; + $font-Flaticon-credit-card-1: "\f1a7"; + $font-Flaticon-credit-card: "\f1a8"; + $font-Flaticon-cart-1: "\f1a9"; + $font-Flaticon-cart: "\f1aa"; + $font-Flaticon-price-tag: "\f1ab"; + $font-Flaticon-box: "\f1ac"; + $font-Flaticon-right-arrow-4: "\f1ad"; + $font-Flaticon-left-arrow-4: "\f1ae"; + $font-Flaticon-up-arrow-3: "\f1af"; + $font-Flaticon-download-1: "\f1b0"; + $font-Flaticon-down-arrow-3: "\f1b1"; + $font-Flaticon-up-arrow-2: "\f1b2"; + $font-Flaticon-left-arrow-3: "\f1b3"; + $font-Flaticon-right-arrow-3: "\f1b4"; + $font-Flaticon-down-arrow-2: "\f1b5"; + $font-Flaticon-arrows: "\f1b6"; + $font-Flaticon-left-arrow-2: "\f1b7"; + $font-Flaticon-right-arrow-2: "\f1b8"; + $font-Flaticon-upward: "\f1b9"; + $font-Flaticon-download: "\f1ba"; + $font-Flaticon-back: "\f1bb"; + $font-Flaticon-next: "\f1bc"; + $font-Flaticon-up-arrow-1: "\f1bd"; + $font-Flaticon-down-arrow-1: "\f1be"; + $font-Flaticon-left-arrow-1: "\f1bf"; + $font-Flaticon-right-arrow-1: "\f1c0"; + $font-Flaticon-up-arrow: "\f1c1"; + $font-Flaticon-down-arrow: "\f1c2"; + $font-Flaticon-left-arrow: "\f1c3"; + $font-Flaticon-right-arrow: "\f1c4"; + $font-Flaticon-expand: "\f1c5"; + $font-Flaticon-repeat: "\f1c6"; \ No newline at end of file diff --git a/src/main/resources/static/assets/fonts/flaticon/flaticon.css b/src/main/resources/static/assets/fonts/flaticon/flaticon.css new file mode 100644 index 0000000..b6b7232 --- /dev/null +++ b/src/main/resources/static/assets/fonts/flaticon/flaticon.css @@ -0,0 +1,230 @@ + /* + Flaticon icon font: Flaticon + Creation date: 13/03/2018 03:24 + */ + +@font-face { + font-family: "Flaticon"; + src: url("./Flaticon.eot"); + src: url("./Flaticon.eot?#iefix") format("embedded-opentype"), + url("./Flaticon.woff") format("woff"), + url("./Flaticon.ttf") format("truetype"), + url("./Flaticon.svg#Flaticon") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "Flaticon"; + src: url("./Flaticon.svg#Flaticon") format("svg"); + } +} + +[class^="flaticon-"]:before, [class*=" flaticon-"]:before, +[class^="flaticon-"]:after, [class*=" flaticon-"]:after { + font-family: Flaticon; + font-size: 20px; +font-style: normal; +margin-left: 20px; +} + +.flaticon-delivery-truck:before { content: "\f100"; } +.flaticon-shopping-bag:before { content: "\f101"; } +.flaticon-box-3:before { content: "\f102"; } +.flaticon-box-2:before { content: "\f103"; } +.flaticon-box-1:before { content: "\f104"; } +.flaticon-laptop:before { content: "\f105"; } +.flaticon-coffee-cup:before { content: "\f106"; } +.flaticon-user-6:before { content: "\f107"; } +.flaticon-user-5:before { content: "\f108"; } +.flaticon-remove-user-1:before { content: "\f109"; } +.flaticon-customer-support:before { content: "\f10a"; } +.flaticon-user-4:before { content: "\f10b"; } +.flaticon-user-3:before { content: "\f10c"; } +.flaticon-user-2:before { content: "\f10d"; } +.flaticon-remove-user:before { content: "\f10e"; } +.flaticon-add-user:before { content: "\f10f"; } +.flaticon-tea-cup:before { content: "\f110"; } +.flaticon-pen:before { content: "\f111"; } +.flaticon-desk:before { content: "\f112"; } +.flaticon-ruler:before { content: "\f113"; } +.flaticon-pencil:before { content: "\f114"; } +.flaticon-analytics:before { content: "\f115"; } +.flaticon-google-plus:before { content: "\f116"; } +.flaticon-dribbble:before { content: "\f117"; } +.flaticon-whatsapp:before { content: "\f118"; } +.flaticon-twitter:before { content: "\f119"; } +.flaticon-behance:before { content: "\f11a"; } +.flaticon-instagram:before { content: "\f11b"; } +.flaticon-android:before { content: "\f11c"; } +.flaticon-apple:before { content: "\f11d"; } +.flaticon-windows:before { content: "\f11e"; } +.flaticon-pinterest:before { content: "\f11f"; } +.flaticon-youtube:before { content: "\f120"; } +.flaticon-paypal:before { content: "\f121"; } +.flaticon-linkedin:before { content: "\f122"; } +.flaticon-facebook:before { content: "\f123"; } +.flaticon-lock-1:before { content: "\f124"; } +.flaticon-lock:before { content: "\f125"; } +.flaticon-profile-1:before { content: "\f126"; } +.flaticon-profile:before { content: "\f127"; } +.flaticon-user-1:before { content: "\f128"; } +.flaticon-user:before { content: "\f129"; } +.flaticon-users:before { content: "\f12a"; } +.flaticon-message:before { content: "\f12b"; } +.flaticon-placeholder-1:before { content: "\f12c"; } +.flaticon-location:before { content: "\f12d"; } +.flaticon-arrows-2:before { content: "\f12e"; } +.flaticon-technology-2:before { content: "\f12f"; } +.flaticon-multimedia-2:before { content: "\f130"; } +.flaticon-multimedia-1:before { content: "\f131"; } +.flaticon-close:before { content: "\f132"; } +.flaticon-home:before { content: "\f133"; } +.flaticon-circle:before { content: "\f134"; } +.flaticon-arrow:before { content: "\f135"; } +.flaticon-mark-1:before { content: "\f136"; } +.flaticon-mark:before { content: "\f137"; } +.flaticon-shapes-1:before { content: "\f138"; } +.flaticon-search-2:before { content: "\f139"; } +.flaticon-interface-7:before { content: "\f13a"; } +.flaticon-suitcase:before { content: "\f13b"; } +.flaticon-chain-1:before { content: "\f13c"; } +.flaticon-chain:before { content: "\f13d"; } +.flaticon-agenda-1:before { content: "\f13e"; } +.flaticon-interface-6:before { content: "\f13f"; } +.flaticon-calendar:before { content: "\f140"; } +.flaticon-list:before { content: "\f141"; } +.flaticon-file-1:before { content: "\f142"; } +.flaticon-file:before { content: "\f143"; } +.flaticon-interface-5:before { content: "\f144"; } +.flaticon-folder:before { content: "\f145"; } +.flaticon-stopwatch:before { content: "\f146"; } +.flaticon-time:before { content: "\f147"; } +.flaticon-clock-1:before { content: "\f148"; } +.flaticon-search-1:before { content: "\f149"; } +.flaticon-music-1:before { content: "\f14a"; } +.flaticon-music:before { content: "\f14b"; } +.flaticon-present:before { content: "\f14c"; } +.flaticon-layers-1:before { content: "\f14d"; } +.flaticon-settings:before { content: "\f14e"; } +.flaticon-attachment:before { content: "\f14f"; } +.flaticon-gestures:before { content: "\f150"; } +.flaticon-tool:before { content: "\f151"; } +.flaticon-interface-4:before { content: "\f152"; } +.flaticon-interface-3:before { content: "\f153"; } +.flaticon-agenda:before { content: "\f154"; } +.flaticon-shapes:before { content: "\f155"; } +.flaticon-symbol-1:before { content: "\f156"; } +.flaticon-symbol:before { content: "\f157"; } +.flaticon-interface-2:before { content: "\f158"; } +.flaticon-layers:before { content: "\f159"; } +.flaticon-clock:before { content: "\f15a"; } +.flaticon-web-1:before { content: "\f15b"; } +.flaticon-internet:before { content: "\f15c"; } +.flaticon-placeholder:before { content: "\f15d"; } +.flaticon-signs-3:before { content: "\f15e"; } +.flaticon-star-1:before { content: "\f15f"; } +.flaticon-web:before { content: "\f160"; } +.flaticon-star:before { content: "\f161"; } +.flaticon-like-1:before { content: "\f162"; } +.flaticon-like:before { content: "\f163"; } +.flaticon-cloud:before { content: "\f164"; } +.flaticon-database:before { content: "\f165"; } +.flaticon-technology-1:before { content: "\f166"; } +.flaticon-idea:before { content: "\f167"; } +.flaticon-search:before { content: "\f168"; } +.flaticon-wifi:before { content: "\f169"; } +.flaticon-hands-1:before { content: "\f16a"; } +.flaticon-hands:before { content: "\f16b"; } +.flaticon-bars-2:before { content: "\f16c"; } +.flaticon-arrows-1:before { content: "\f16d"; } +.flaticon-interface-1:before { content: "\f16e"; } +.flaticon-network:before { content: "\f16f"; } +.flaticon-share-1:before { content: "\f170"; } +.flaticon-share:before { content: "\f171"; } +.flaticon-bars-1:before { content: "\f172"; } +.flaticon-cross-1:before { content: "\f173"; } +.flaticon-line-1:before { content: "\f174"; } +.flaticon-signs-2:before { content: "\f175"; } +.flaticon-check:before { content: "\f176"; } +.flaticon-technology:before { content: "\f177"; } +.flaticon-bars:before { content: "\f178"; } +.flaticon-cross:before { content: "\f179"; } +.flaticon-add:before { content: "\f17a"; } +.flaticon-power:before { content: "\f17b"; } +.flaticon-signs-1:before { content: "\f17c"; } +.flaticon-round:before { content: "\f17d"; } +.flaticon-exclamation:before { content: "\f17e"; } +.flaticon-success:before { content: "\f17f"; } +.flaticon-error:before { content: "\f180"; } +.flaticon-line:before { content: "\f181"; } +.flaticon-plus:before { content: "\f182"; } +.flaticon-interface:before { content: "\f183"; } +.flaticon-signs:before { content: "\f184"; } +.flaticon-play-button-1:before { content: "\f185"; } +.flaticon-play-button:before { content: "\f186"; } +.flaticon-music-player:before { content: "\f187"; } +.flaticon-medical:before { content: "\f188"; } +.flaticon-photo-camera:before { content: "\f189"; } +.flaticon-picture:before { content: "\f18a"; } +.flaticon-multimedia:before { content: "\f18b"; } +.flaticon-game-controller:before { content: "\f18c"; } +.flaticon-imac:before { content: "\f18d"; } +.flaticon-paint-palette:before { content: "\f18e"; } +.flaticon-envelope-3:before { content: "\f18f"; } +.flaticon-envelope-2:before { content: "\f190"; } +.flaticon-envelope-1:before { content: "\f191"; } +.flaticon-envelope:before { content: "\f192"; } +.flaticon-mailbox:before { content: "\f193"; } +.flaticon-inbox:before { content: "\f194"; } +.flaticon-chat-8:before { content: "\f195"; } +.flaticon-chat-7:before { content: "\f196"; } +.flaticon-chat-6:before { content: "\f197"; } +.flaticon-chat-5:before { content: "\f198"; } +.flaticon-chat-4:before { content: "\f199"; } +.flaticon-chat-3:before { content: "\f19a"; } +.flaticon-chat-2:before { content: "\f19b"; } +.flaticon-chat-1:before { content: "\f19c"; } +.flaticon-chat:before { content: "\f19d"; } +.flaticon-archive:before { content: "\f19e"; } +.flaticon-diagram:before { content: "\f19f"; } +.flaticon-graph-2:before { content: "\f1a0"; } +.flaticon-graph-1:before { content: "\f1a1"; } +.flaticon-graph:before { content: "\f1a2"; } +.flaticon-chart-pie:before { content: "\f1a3"; } +.flaticon-presentation:before { content: "\f1a4"; } +.flaticon-store:before { content: "\f1a5"; } +.flaticon-coins:before { content: "\f1a6"; } +.flaticon-credit-card-1:before { content: "\f1a7"; } +.flaticon-credit-card:before { content: "\f1a8"; } +.flaticon-cart-1:before { content: "\f1a9"; } +.flaticon-cart:before { content: "\f1aa"; } +.flaticon-price-tag:before { content: "\f1ab"; } +.flaticon-box:before { content: "\f1ac"; } +.flaticon-right-arrow-4:before { content: "\f1ad"; } +.flaticon-left-arrow-4:before { content: "\f1ae"; } +.flaticon-up-arrow-3:before { content: "\f1af"; } +.flaticon-download-1:before { content: "\f1b0"; } +.flaticon-down-arrow-3:before { content: "\f1b1"; } +.flaticon-up-arrow-2:before { content: "\f1b2"; } +.flaticon-left-arrow-3:before { content: "\f1b3"; } +.flaticon-right-arrow-3:before { content: "\f1b4"; } +.flaticon-down-arrow-2:before { content: "\f1b5"; } +.flaticon-arrows:before { content: "\f1b6"; } +.flaticon-left-arrow-2:before { content: "\f1b7"; } +.flaticon-right-arrow-2:before { content: "\f1b8"; } +.flaticon-upward:before { content: "\f1b9"; } +.flaticon-download:before { content: "\f1ba"; } +.flaticon-back:before { content: "\f1bb"; } +.flaticon-next:before { content: "\f1bc"; } +.flaticon-up-arrow-1:before { content: "\f1bd"; } +.flaticon-down-arrow-1:before { content: "\f1be"; } +.flaticon-left-arrow-1:before { content: "\f1bf"; } +.flaticon-right-arrow-1:before { content: "\f1c0"; } +.flaticon-up-arrow:before { content: "\f1c1"; } +.flaticon-down-arrow:before { content: "\f1c2"; } +.flaticon-left-arrow:before { content: "\f1c3"; } +.flaticon-right-arrow:before { content: "\f1c4"; } +.flaticon-expand:before { content: "\f1c5"; } +.flaticon-repeat:before { content: "\f1c6"; } \ No newline at end of file diff --git a/src/main/resources/static/assets/fonts/flaticon/flaticon.html b/src/main/resources/static/assets/fonts/flaticon/flaticon.html new file mode 100644 index 0000000..a02e49b --- /dev/null +++ b/src/main/resources/static/assets/fonts/flaticon/flaticon.html @@ -0,0 +1,1450 @@ + + + + + + + + Flaticon WebFont + + + + + + + + +
+ + Font Demo +
+ + +
+ +

Instructions

+ +
    +
  • + 1Copy the "Fonts" files and CSS files to your website CSS folder. +
  • +
  • + 2Add the CSS link to your website source code on header. + + <head> +
    ... +
    <link rel="stylesheet" type="text/css" href="your_website_domain/css_root/flaticon.css"> +
    ... +
    </head> +
    +
  • + +
  • +

    + 3Use the icon class on "display: inline" elements: +
    + Use example: <i class="flaticon-airplane49"></i> or <span class="flaticon-airplane49"></span> +

  • +
+ +
+ + + + +
+ + +
+
.flaticon-delivery-truck
+
Author: Smashicons
+
+ +
+
.flaticon-shopping-bag
+
Author: Smashicons
+
+ +
+
.flaticon-box-3
+
Author: Smashicons
+
+ +
+
.flaticon-box-2
+
Author: Smashicons
+
+ +
+
.flaticon-box-1
+
Author: Smashicons
+
+ +
+
.flaticon-laptop
+
Author: Smashicons
+
+ +
+
.flaticon-coffee-cup
+
Author: Smashicons
+
+ +
+
.flaticon-user-6
+
Author: Smashicons
+
+ +
+
.flaticon-user-5
+
Author: Smashicons
+
+ +
+
.flaticon-remove-user-1
+
Author: Smashicons
+
+ +
+
.flaticon-customer-support
+
Author: Smashicons
+
+ +
+
.flaticon-user-4
+
Author: Smashicons
+
+ +
+
.flaticon-user-3
+
Author: Smashicons
+
+ +
+
.flaticon-user-2
+
Author: Smashicons
+
+ +
+
.flaticon-remove-user
+
Author: Smashicons
+
+ +
+
.flaticon-add-user
+
Author: Smashicons
+
+ +
+
.flaticon-tea-cup
+
Author: Smashicons
+
+ +
+
.flaticon-pen
+
Author: Smashicons
+
+ +
+
.flaticon-desk
+
Author: Smashicons
+
+ +
+
.flaticon-ruler
+
Author: Smashicons
+
+ +
+
.flaticon-pencil
+
Author: Smashicons
+
+ +
+
.flaticon-analytics
+
Author: Smashicons
+
+ +
+
.flaticon-google-plus
+
Author: Smashicons
+
+ +
+
.flaticon-dribbble
+
Author: Smashicons
+
+ +
+
.flaticon-whatsapp
+
Author: Smashicons
+
+ +
+
.flaticon-twitter
+
Author: Smashicons
+
+ +
+
.flaticon-behance
+
Author: Smashicons
+
+ +
+
.flaticon-instagram
+
Author: Smashicons
+
+ +
+
.flaticon-android
+
Author: Smashicons
+
+ +
+
.flaticon-apple
+
Author: Smashicons
+
+ +
+
.flaticon-windows
+
Author: Smashicons
+
+ +
+
.flaticon-pinterest
+
Author: Smashicons
+
+ +
+
.flaticon-youtube
+
Author: Smashicons
+
+ +
+
.flaticon-paypal
+
Author: Smashicons
+
+ +
+
.flaticon-linkedin
+
Author: Smashicons
+
+ +
+
.flaticon-facebook
+
Author: Smashicons
+
+ +
+
.flaticon-lock-1
+
Author: Smashicons
+
+ +
+
.flaticon-lock
+
Author: Smashicons
+
+ +
+
.flaticon-profile-1
+
Author: Smashicons
+
+ +
+
.flaticon-profile
+
Author: Smashicons
+
+ +
+
.flaticon-user-1
+
Author: Smashicons
+
+ +
+
.flaticon-user
+
Author: Smashicons
+
+ +
+
.flaticon-users
+
Author: Smashicons
+
+ +
+
.flaticon-message
+
Author: Smashicons
+
+ +
+
.flaticon-placeholder-1
+
Author: Smashicons
+
+ +
+
.flaticon-location
+
Author: Smashicons
+
+ +
+
.flaticon-arrows-2
+
Author: Smashicons
+
+ +
+
.flaticon-technology-2
+
Author: Smashicons
+
+ +
+
.flaticon-multimedia-2
+
Author: Smashicons
+
+ +
+
.flaticon-multimedia-1
+
Author: Smashicons
+
+ +
+
.flaticon-close
+
Author: Smashicons
+
+ +
+
.flaticon-home
+
Author: Smashicons
+
+ +
+
.flaticon-circle
+
Author: Smashicons
+
+ +
+
.flaticon-arrow
+
Author: Smashicons
+
+ +
+
.flaticon-mark-1
+
Author: Smashicons
+
+ +
+
.flaticon-mark
+
Author: Smashicons
+
+ +
+
.flaticon-shapes-1
+
Author: Smashicons
+
+ +
+
.flaticon-search-2
+
Author: Smashicons
+
+ +
+
.flaticon-interface-7
+
Author: Smashicons
+
+ +
+
.flaticon-suitcase
+
Author: Smashicons
+
+ +
+
.flaticon-chain-1
+
Author: Smashicons
+
+ +
+
.flaticon-chain
+
Author: Smashicons
+
+ +
+
.flaticon-agenda-1
+
Author: Smashicons
+
+ +
+
.flaticon-interface-6
+
Author: Smashicons
+
+ +
+
.flaticon-calendar
+
Author: Smashicons
+
+ +
+
.flaticon-list
+
Author: Smashicons
+
+ +
+
.flaticon-file-1
+
Author: Smashicons
+
+ +
+
.flaticon-file
+
Author: Smashicons
+
+ +
+
.flaticon-interface-5
+
Author: Smashicons
+
+ +
+
.flaticon-folder
+
Author: Smashicons
+
+ +
+
.flaticon-stopwatch
+
Author: Smashicons
+
+ +
+
.flaticon-time
+
Author: Smashicons
+
+ +
+
.flaticon-clock-1
+
Author: Smashicons
+
+ +
+
.flaticon-search-1
+
Author: Smashicons
+
+ +
+
.flaticon-music-1
+
Author: Smashicons
+
+ +
+
.flaticon-music
+
Author: Smashicons
+
+ +
+
.flaticon-present
+
Author: Smashicons
+
+ +
+
.flaticon-layers-1
+
Author: Smashicons
+
+ +
+
.flaticon-settings
+
Author: Smashicons
+
+ +
+
.flaticon-attachment
+
Author: Smashicons
+
+ +
+
.flaticon-gestures
+
Author: Smashicons
+
+ +
+
.flaticon-tool
+
Author: Smashicons
+
+ +
+
.flaticon-interface-4
+
Author: Smashicons
+
+ +
+
.flaticon-interface-3
+
Author: Smashicons
+
+ +
+
.flaticon-agenda
+
Author: Smashicons
+
+ +
+
.flaticon-shapes
+
Author: Smashicons
+
+ +
+
.flaticon-symbol-1
+
Author: Smashicons
+
+ +
+
.flaticon-symbol
+
Author: Smashicons
+
+ +
+
.flaticon-interface-2
+
Author: Smashicons
+
+ +
+
.flaticon-layers
+
Author: Smashicons
+
+ +
+
.flaticon-clock
+
Author: Smashicons
+
+ +
+
.flaticon-web-1
+
Author: Smashicons
+
+ +
+
.flaticon-internet
+
Author: Smashicons
+
+ +
+
.flaticon-placeholder
+
Author: Smashicons
+
+ +
+
.flaticon-signs-3
+
Author: Smashicons
+
+ +
+
.flaticon-star-1
+
Author: Smashicons
+
+ +
+
.flaticon-web
+
Author: Smashicons
+
+ +
+
.flaticon-star
+
Author: Smashicons
+
+ +
+
.flaticon-like-1
+
Author: Smashicons
+
+ +
+
.flaticon-like
+
Author: Smashicons
+
+ +
+
.flaticon-cloud
+
Author: Smashicons
+
+ +
+
.flaticon-database
+
Author: Smashicons
+
+ +
+
.flaticon-technology-1
+
Author: Smashicons
+
+ +
+
.flaticon-idea
+
Author: Smashicons
+
+ +
+
.flaticon-search
+
Author: Smashicons
+
+ +
+
.flaticon-wifi
+
Author: Smashicons
+
+ +
+
.flaticon-hands-1
+
Author: Smashicons
+
+ +
+
.flaticon-hands
+
Author: Smashicons
+
+ +
+
.flaticon-bars-2
+
Author: Smashicons
+
+ +
+
.flaticon-arrows-1
+
Author: Smashicons
+
+ +
+
.flaticon-interface-1
+
Author: Smashicons
+
+ +
+
.flaticon-network
+
Author: Smashicons
+
+ +
+
.flaticon-share-1
+
Author: Smashicons
+
+ +
+
.flaticon-share
+
Author: Smashicons
+
+ +
+
.flaticon-bars-1
+
Author: Smashicons
+
+ +
+
.flaticon-cross-1
+
Author: Smashicons
+
+ +
+
.flaticon-line-1
+
Author: Smashicons
+
+ +
+
.flaticon-signs-2
+
Author: Smashicons
+
+ +
+
.flaticon-check
+
Author: Smashicons
+
+ +
+
.flaticon-technology
+
Author: Smashicons
+
+ +
+
.flaticon-bars
+
Author: Smashicons
+
+ +
+
.flaticon-cross
+
Author: Smashicons
+
+ +
+
.flaticon-add
+
Author: Smashicons
+
+ +
+
.flaticon-power
+
Author: Smashicons
+
+ +
+
.flaticon-signs-1
+
Author: Smashicons
+
+ +
+
.flaticon-round
+
Author: Smashicons
+
+ +
+
.flaticon-exclamation
+
Author: Smashicons
+
+ +
+
.flaticon-success
+
Author: Smashicons
+
+ +
+
.flaticon-error
+
Author: Smashicons
+
+ +
+
.flaticon-line
+
Author: Smashicons
+
+ +
+
.flaticon-plus
+
Author: Smashicons
+
+ +
+
.flaticon-interface
+
Author: Smashicons
+
+ +
+
.flaticon-signs
+
Author: Smashicons
+
+ +
+
.flaticon-play-button-1
+
Author: Smashicons
+
+ +
+
.flaticon-play-button
+
Author: Smashicons
+
+ +
+
.flaticon-music-player
+
Author: Smashicons
+
+ +
+
.flaticon-medical
+
Author: Smashicons
+
+ +
+
.flaticon-photo-camera
+
Author: Smashicons
+
+ +
+
.flaticon-picture
+
Author: Smashicons
+
+ +
+
.flaticon-multimedia
+
Author: Smashicons
+
+ +
+
.flaticon-game-controller
+
Author: Smashicons
+
+ +
+
.flaticon-imac
+
Author: Smashicons
+
+ +
+
.flaticon-paint-palette
+
Author: Smashicons
+
+ +
+
.flaticon-envelope-3
+
Author: Smashicons
+
+ +
+
.flaticon-envelope-2
+
Author: Smashicons
+
+ +
+
.flaticon-envelope-1
+
Author: Smashicons
+
+ +
+
.flaticon-envelope
+
Author: Smashicons
+
+ +
+
.flaticon-mailbox
+
Author: Smashicons
+
+ +
+
.flaticon-inbox
+
Author: Smashicons
+
+ +
+
.flaticon-chat-8
+
Author: Smashicons
+
+ +
+
.flaticon-chat-7
+
Author: Smashicons
+
+ +
+
.flaticon-chat-6
+
Author: Smashicons
+
+ +
+
.flaticon-chat-5
+
Author: Smashicons
+
+ +
+
.flaticon-chat-4
+
Author: Smashicons
+
+ +
+
.flaticon-chat-3
+
Author: Smashicons
+
+ +
+
.flaticon-chat-2
+
Author: Smashicons
+
+ +
+
.flaticon-chat-1
+
Author: Smashicons
+
+ +
+
.flaticon-chat
+
Author: Smashicons
+
+ +
+
.flaticon-archive
+
Author: Smashicons
+
+ +
+
.flaticon-diagram
+
Author: Smashicons
+
+ +
+
.flaticon-graph-2
+
Author: Smashicons
+
+ +
+
.flaticon-graph-1
+
Author: Smashicons
+
+ +
+
.flaticon-graph
+
Author: Smashicons
+
+ +
+
.flaticon-chart-pie
+
Author: Smashicons
+
+ +
+
.flaticon-presentation
+
Author: Smashicons
+
+ +
+
.flaticon-store
+
Author: Smashicons
+
+ +
+
.flaticon-coins
+
Author: Smashicons
+
+ +
+
.flaticon-credit-card-1
+
Author: Smashicons
+
+ +
+
.flaticon-credit-card
+
Author: Smashicons
+
+ +
+
.flaticon-cart-1
+
Author: Smashicons
+
+ +
+
.flaticon-cart
+
Author: Smashicons
+
+ +
+
.flaticon-price-tag
+
Author: Smashicons
+
+ +
+
.flaticon-box
+
Author: Smashicons
+
+ +
+
.flaticon-right-arrow-4
+
Author: Smashicons
+
+ +
+
.flaticon-left-arrow-4
+
Author: Smashicons
+
+ +
+
.flaticon-up-arrow-3
+
Author: Smashicons
+
+ +
+
.flaticon-download-1
+
Author: Smashicons
+
+ +
+
.flaticon-down-arrow-3
+
Author: Smashicons
+
+ +
+
.flaticon-up-arrow-2
+
Author: Smashicons
+
+ +
+
.flaticon-left-arrow-3
+
Author: Smashicons
+
+ +
+
.flaticon-right-arrow-3
+
Author: Smashicons
+
+ +
+
.flaticon-down-arrow-2
+
Author: Smashicons
+
+ +
+
.flaticon-arrows
+
Author: Smashicons
+
+ +
+
.flaticon-left-arrow-2
+
Author: Smashicons
+
+ +
+
.flaticon-right-arrow-2
+
Author: Smashicons
+
+ +
+
.flaticon-upward
+
Author: Smashicons
+
+ +
+
.flaticon-download
+
Author: Smashicons
+
+ +
+
.flaticon-back
+
Author: Smashicons
+
+ +
+
.flaticon-next
+
Author: Smashicons
+
+ +
+
.flaticon-up-arrow-1
+
Author: Smashicons
+
+ +
+
.flaticon-down-arrow-1
+
Author: Smashicons
+
+ +
+
.flaticon-left-arrow-1
+
Author: Smashicons
+
+ +
+
.flaticon-right-arrow-1
+
Author: Smashicons
+
+ +
+
.flaticon-up-arrow
+
Author: Smashicons
+
+ +
+
.flaticon-down-arrow
+
Author: Smashicons
+
+ +
+
.flaticon-left-arrow
+
Author: Smashicons
+
+ +
+
.flaticon-right-arrow
+
Author: Smashicons
+
+ +
+
.flaticon-expand
+
Author: Smashicons
+
+ +
+
.flaticon-repeat
+
Author: Smashicons
+
+ + +
+ + + +
+ +
License and attribution:
Font generated by flaticon.com.

Under CC: Smashicons

+
+
Copy the Attribution License:
+ + + +
+ +
+ +
Examples:
+ +
+

+ + <i class="flaticon-delivery-truck"></i> +

+
+ +
+

+ + <i class="flaticon-shopping-bag"></i> +

+
+ +
+

+ + <i class="flaticon-box-3"></i> +

+
+ +
+

+ + <i class="flaticon-box-2"></i> +

+
+ + + +
+ + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.eot b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.eot new file mode 100644 index 0000000..f7accfa Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.eot differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.svg b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.svg new file mode 100644 index 0000000..c1219ec --- /dev/null +++ b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.svg @@ -0,0 +1,1148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.ttf b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.ttf new file mode 100644 index 0000000..2ffa92d Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.ttf differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.woff b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.woff new file mode 100644 index 0000000..34110b2 Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.woff differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.woff2 b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.woff2 new file mode 100644 index 0000000..540dffd Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-brands-400.woff2 differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.eot b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.eot new file mode 100644 index 0000000..c6b1218 Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.eot differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.svg b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.svg new file mode 100644 index 0000000..43fa6b7 --- /dev/null +++ b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.svg @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.ttf b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.ttf new file mode 100644 index 0000000..43406e8 Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.ttf differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.woff b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.woff new file mode 100644 index 0000000..d49d464 Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.woff differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.woff2 b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.woff2 new file mode 100644 index 0000000..ecd00ed Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-regular-400.woff2 differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.eot b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.eot new file mode 100644 index 0000000..3968757 Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.eot differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.svg b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.svg new file mode 100644 index 0000000..10cd5b0 --- /dev/null +++ b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.svg @@ -0,0 +1,2312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.ttf b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.ttf new file mode 100644 index 0000000..a1da1bb Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.ttf differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.woff b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.woff new file mode 100644 index 0000000..41cbd7d Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.woff differ diff --git a/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.woff2 b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.woff2 new file mode 100644 index 0000000..b307c26 Binary files /dev/null and b/src/main/resources/static/assets/fonts/fontawesome/fa-solid-900.woff2 differ diff --git a/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.eot b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.eot new file mode 100644 index 0000000..f0ca6e8 Binary files /dev/null and b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.eot differ diff --git a/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.svg b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.svg new file mode 100644 index 0000000..4988524 --- /dev/null +++ b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.ttf b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.ttf new file mode 100644 index 0000000..6ecb686 Binary files /dev/null and b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.ttf differ diff --git a/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.woff b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.woff new file mode 100644 index 0000000..b17d694 Binary files /dev/null and b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.woff differ diff --git a/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.woff2 b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.woff2 new file mode 100644 index 0000000..c49fccf Binary files /dev/null and b/src/main/resources/static/assets/fonts/simple-line-icons/Simple-Line-Icons.woff2 differ diff --git a/src/main/resources/static/assets/fonts/summernote/summernote.eot b/src/main/resources/static/assets/fonts/summernote/summernote.eot new file mode 100644 index 0000000..4b6f0f6 Binary files /dev/null and b/src/main/resources/static/assets/fonts/summernote/summernote.eot differ diff --git a/src/main/resources/static/assets/fonts/summernote/summernote.ttf b/src/main/resources/static/assets/fonts/summernote/summernote.ttf new file mode 100644 index 0000000..514099b Binary files /dev/null and b/src/main/resources/static/assets/fonts/summernote/summernote.ttf differ diff --git a/src/main/resources/static/assets/fonts/summernote/summernote.woff b/src/main/resources/static/assets/fonts/summernote/summernote.woff new file mode 100644 index 0000000..63e4951 Binary files /dev/null and b/src/main/resources/static/assets/fonts/summernote/summernote.woff differ diff --git a/src/main/resources/static/assets/img/404.jpg b/src/main/resources/static/assets/img/404.jpg new file mode 100644 index 0000000..5230634 Binary files /dev/null and b/src/main/resources/static/assets/img/404.jpg differ diff --git a/src/main/resources/static/assets/img/arashmil.jpg b/src/main/resources/static/assets/img/arashmil.jpg new file mode 100644 index 0000000..7564700 Binary files /dev/null and b/src/main/resources/static/assets/img/arashmil.jpg differ diff --git a/src/main/resources/static/assets/img/bg-404.jpeg b/src/main/resources/static/assets/img/bg-404.jpeg new file mode 100644 index 0000000..e3d7752 Binary files /dev/null and b/src/main/resources/static/assets/img/bg-404.jpeg differ diff --git a/src/main/resources/static/assets/img/bg-abstract.png b/src/main/resources/static/assets/img/bg-abstract.png new file mode 100644 index 0000000..18b3c3c Binary files /dev/null and b/src/main/resources/static/assets/img/bg-abstract.png differ diff --git a/src/main/resources/static/assets/img/bg-abstract2.png b/src/main/resources/static/assets/img/bg-abstract2.png new file mode 100644 index 0000000..18efdcf Binary files /dev/null and b/src/main/resources/static/assets/img/bg-abstract2.png differ diff --git a/src/main/resources/static/assets/img/blogpost.jpg b/src/main/resources/static/assets/img/blogpost.jpg new file mode 100644 index 0000000..ced8921 Binary files /dev/null and b/src/main/resources/static/assets/img/blogpost.jpg differ diff --git a/src/main/resources/static/assets/img/chadengle.jpg b/src/main/resources/static/assets/img/chadengle.jpg new file mode 100644 index 0000000..b96d8b1 Binary files /dev/null and b/src/main/resources/static/assets/img/chadengle.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example1-300x300.jpg b/src/main/resources/static/assets/img/examples/example1-300x300.jpg new file mode 100644 index 0000000..620ab45 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example1-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example1.jpeg b/src/main/resources/static/assets/img/examples/example1.jpeg new file mode 100644 index 0000000..dafb6dc Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example1.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example10-300x300.jpg b/src/main/resources/static/assets/img/examples/example10-300x300.jpg new file mode 100644 index 0000000..1a4691b Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example10-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example10.jpeg b/src/main/resources/static/assets/img/examples/example10.jpeg new file mode 100644 index 0000000..7bd30ec Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example10.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example11-300x300.jpg b/src/main/resources/static/assets/img/examples/example11-300x300.jpg new file mode 100644 index 0000000..fb89f38 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example11-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example11.jpeg b/src/main/resources/static/assets/img/examples/example11.jpeg new file mode 100644 index 0000000..6194282 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example11.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example12-300x300.jpg b/src/main/resources/static/assets/img/examples/example12-300x300.jpg new file mode 100644 index 0000000..6641cdc Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example12-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example12.jpeg b/src/main/resources/static/assets/img/examples/example12.jpeg new file mode 100644 index 0000000..c93503f Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example12.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example2-300x300.jpg b/src/main/resources/static/assets/img/examples/example2-300x300.jpg new file mode 100644 index 0000000..ff22b41 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example2-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example2.jpeg b/src/main/resources/static/assets/img/examples/example2.jpeg new file mode 100644 index 0000000..8b0da5c Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example2.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example3-300x300.jpg b/src/main/resources/static/assets/img/examples/example3-300x300.jpg new file mode 100644 index 0000000..fdb0e8e Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example3-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example3.jpeg b/src/main/resources/static/assets/img/examples/example3.jpeg new file mode 100644 index 0000000..60e6ff2 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example3.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example4-300x300.jpg b/src/main/resources/static/assets/img/examples/example4-300x300.jpg new file mode 100644 index 0000000..6b2eedd Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example4-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example4.jpeg b/src/main/resources/static/assets/img/examples/example4.jpeg new file mode 100644 index 0000000..c66305d Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example4.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example5-300x300.jpg b/src/main/resources/static/assets/img/examples/example5-300x300.jpg new file mode 100644 index 0000000..9c39f8a Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example5-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example5.jpeg b/src/main/resources/static/assets/img/examples/example5.jpeg new file mode 100644 index 0000000..e4ad5f6 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example5.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example6-300x300.jpg b/src/main/resources/static/assets/img/examples/example6-300x300.jpg new file mode 100644 index 0000000..fd006ae Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example6-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example6.jpeg b/src/main/resources/static/assets/img/examples/example6.jpeg new file mode 100644 index 0000000..1bf4520 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example6.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example7-300x300.jpg b/src/main/resources/static/assets/img/examples/example7-300x300.jpg new file mode 100644 index 0000000..38e8db2 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example7-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example7.jpeg b/src/main/resources/static/assets/img/examples/example7.jpeg new file mode 100644 index 0000000..e043748 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example7.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example8-300x300.jpg b/src/main/resources/static/assets/img/examples/example8-300x300.jpg new file mode 100644 index 0000000..6bd981a Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example8-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example8.jpeg b/src/main/resources/static/assets/img/examples/example8.jpeg new file mode 100644 index 0000000..86d9f7c Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example8.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/example9-300x300.jpg b/src/main/resources/static/assets/img/examples/example9-300x300.jpg new file mode 100644 index 0000000..14b378b Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example9-300x300.jpg differ diff --git a/src/main/resources/static/assets/img/examples/example9.jpeg b/src/main/resources/static/assets/img/examples/example9.jpeg new file mode 100644 index 0000000..e6569d1 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/example9.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/logoinvoice.svg b/src/main/resources/static/assets/img/examples/logoinvoice.svg new file mode 100644 index 0000000..16bafe3 --- /dev/null +++ b/src/main/resources/static/assets/img/examples/logoinvoice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/examples/product1.jpg b/src/main/resources/static/assets/img/examples/product1.jpg new file mode 100644 index 0000000..09b9a37 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product1.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product10.jpeg b/src/main/resources/static/assets/img/examples/product10.jpeg new file mode 100644 index 0000000..724c030 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product10.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/product11.jpeg b/src/main/resources/static/assets/img/examples/product11.jpeg new file mode 100644 index 0000000..0bdd5a5 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product11.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/product12.jpeg b/src/main/resources/static/assets/img/examples/product12.jpeg new file mode 100644 index 0000000..9547194 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product12.jpeg differ diff --git a/src/main/resources/static/assets/img/examples/product2.jpg b/src/main/resources/static/assets/img/examples/product2.jpg new file mode 100644 index 0000000..9c6430b Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product2.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product3.jpg b/src/main/resources/static/assets/img/examples/product3.jpg new file mode 100644 index 0000000..0719ab7 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product3.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product4.jpg b/src/main/resources/static/assets/img/examples/product4.jpg new file mode 100644 index 0000000..88f5234 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product4.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product5.jpg b/src/main/resources/static/assets/img/examples/product5.jpg new file mode 100644 index 0000000..d8d8eaf Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product5.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product6.jpg b/src/main/resources/static/assets/img/examples/product6.jpg new file mode 100644 index 0000000..b3238fe Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product6.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product7.jpg b/src/main/resources/static/assets/img/examples/product7.jpg new file mode 100644 index 0000000..9a1aa3b Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product7.jpg differ diff --git a/src/main/resources/static/assets/img/examples/product8.jpg b/src/main/resources/static/assets/img/examples/product8.jpg new file mode 100644 index 0000000..3165288 Binary files /dev/null and b/src/main/resources/static/assets/img/examples/product8.jpg differ diff --git a/src/main/resources/static/assets/img/flags/ad.png b/src/main/resources/static/assets/img/flags/ad.png new file mode 100644 index 0000000..625ca84 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ad.png differ diff --git a/src/main/resources/static/assets/img/flags/ae.png b/src/main/resources/static/assets/img/flags/ae.png new file mode 100644 index 0000000..ef3a1ec Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ae.png differ diff --git a/src/main/resources/static/assets/img/flags/af.png b/src/main/resources/static/assets/img/flags/af.png new file mode 100644 index 0000000..a4742e2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/af.png differ diff --git a/src/main/resources/static/assets/img/flags/ag.png b/src/main/resources/static/assets/img/flags/ag.png new file mode 100644 index 0000000..556d550 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ag.png differ diff --git a/src/main/resources/static/assets/img/flags/ai.png b/src/main/resources/static/assets/img/flags/ai.png new file mode 100644 index 0000000..74ed29d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ai.png differ diff --git a/src/main/resources/static/assets/img/flags/al.png b/src/main/resources/static/assets/img/flags/al.png new file mode 100644 index 0000000..92354cb Binary files /dev/null and b/src/main/resources/static/assets/img/flags/al.png differ diff --git a/src/main/resources/static/assets/img/flags/am.png b/src/main/resources/static/assets/img/flags/am.png new file mode 100644 index 0000000..344a2a8 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/am.png differ diff --git a/src/main/resources/static/assets/img/flags/an.png b/src/main/resources/static/assets/img/flags/an.png new file mode 100644 index 0000000..633e4b8 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/an.png differ diff --git a/src/main/resources/static/assets/img/flags/ao.png b/src/main/resources/static/assets/img/flags/ao.png new file mode 100644 index 0000000..bcbd1d6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ao.png differ diff --git a/src/main/resources/static/assets/img/flags/ar.png b/src/main/resources/static/assets/img/flags/ar.png new file mode 100644 index 0000000..e5ef8f1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ar.png differ diff --git a/src/main/resources/static/assets/img/flags/as.png b/src/main/resources/static/assets/img/flags/as.png new file mode 100644 index 0000000..32f30e4 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/as.png differ diff --git a/src/main/resources/static/assets/img/flags/at.png b/src/main/resources/static/assets/img/flags/at.png new file mode 100644 index 0000000..0f15f34 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/at.png differ diff --git a/src/main/resources/static/assets/img/flags/au.png b/src/main/resources/static/assets/img/flags/au.png new file mode 100644 index 0000000..a01389a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/au.png differ diff --git a/src/main/resources/static/assets/img/flags/aw.png b/src/main/resources/static/assets/img/flags/aw.png new file mode 100644 index 0000000..a3579c2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/aw.png differ diff --git a/src/main/resources/static/assets/img/flags/ax.png b/src/main/resources/static/assets/img/flags/ax.png new file mode 100644 index 0000000..1eea80a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ax.png differ diff --git a/src/main/resources/static/assets/img/flags/az.png b/src/main/resources/static/assets/img/flags/az.png new file mode 100644 index 0000000..4ee9fe5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/az.png differ diff --git a/src/main/resources/static/assets/img/flags/ba.png b/src/main/resources/static/assets/img/flags/ba.png new file mode 100644 index 0000000..c774992 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ba.png differ diff --git a/src/main/resources/static/assets/img/flags/bb.png b/src/main/resources/static/assets/img/flags/bb.png new file mode 100644 index 0000000..0df19c7 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bb.png differ diff --git a/src/main/resources/static/assets/img/flags/bd.png b/src/main/resources/static/assets/img/flags/bd.png new file mode 100644 index 0000000..076a8bf Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bd.png differ diff --git a/src/main/resources/static/assets/img/flags/be.png b/src/main/resources/static/assets/img/flags/be.png new file mode 100644 index 0000000..d86ebc8 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/be.png differ diff --git a/src/main/resources/static/assets/img/flags/bf.png b/src/main/resources/static/assets/img/flags/bf.png new file mode 100644 index 0000000..ab5ce8f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bf.png differ diff --git a/src/main/resources/static/assets/img/flags/bg.png b/src/main/resources/static/assets/img/flags/bg.png new file mode 100644 index 0000000..0469f06 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bg.png differ diff --git a/src/main/resources/static/assets/img/flags/bh.png b/src/main/resources/static/assets/img/flags/bh.png new file mode 100644 index 0000000..ea8ce68 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bh.png differ diff --git a/src/main/resources/static/assets/img/flags/bi.png b/src/main/resources/static/assets/img/flags/bi.png new file mode 100644 index 0000000..5cc2e30 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bi.png differ diff --git a/src/main/resources/static/assets/img/flags/bj.png b/src/main/resources/static/assets/img/flags/bj.png new file mode 100644 index 0000000..1cc8b45 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bj.png differ diff --git a/src/main/resources/static/assets/img/flags/bm.png b/src/main/resources/static/assets/img/flags/bm.png new file mode 100644 index 0000000..c0c7aea Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bm.png differ diff --git a/src/main/resources/static/assets/img/flags/bn.png b/src/main/resources/static/assets/img/flags/bn.png new file mode 100644 index 0000000..8fb0984 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bn.png differ diff --git a/src/main/resources/static/assets/img/flags/bo.png b/src/main/resources/static/assets/img/flags/bo.png new file mode 100644 index 0000000..ce7ba52 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bo.png differ diff --git a/src/main/resources/static/assets/img/flags/br.png b/src/main/resources/static/assets/img/flags/br.png new file mode 100644 index 0000000..9b1a553 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/br.png differ diff --git a/src/main/resources/static/assets/img/flags/bs.png b/src/main/resources/static/assets/img/flags/bs.png new file mode 100644 index 0000000..639fa6c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bs.png differ diff --git a/src/main/resources/static/assets/img/flags/bt.png b/src/main/resources/static/assets/img/flags/bt.png new file mode 100644 index 0000000..1d512df Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bt.png differ diff --git a/src/main/resources/static/assets/img/flags/bv.png b/src/main/resources/static/assets/img/flags/bv.png new file mode 100644 index 0000000..160b6b5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bv.png differ diff --git a/src/main/resources/static/assets/img/flags/bw.png b/src/main/resources/static/assets/img/flags/bw.png new file mode 100644 index 0000000..fcb1039 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bw.png differ diff --git a/src/main/resources/static/assets/img/flags/by.png b/src/main/resources/static/assets/img/flags/by.png new file mode 100644 index 0000000..504774e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/by.png differ diff --git a/src/main/resources/static/assets/img/flags/bz.png b/src/main/resources/static/assets/img/flags/bz.png new file mode 100644 index 0000000..be63ee1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/bz.png differ diff --git a/src/main/resources/static/assets/img/flags/ca.png b/src/main/resources/static/assets/img/flags/ca.png new file mode 100644 index 0000000..1f20419 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ca.png differ diff --git a/src/main/resources/static/assets/img/flags/catalonia.png b/src/main/resources/static/assets/img/flags/catalonia.png new file mode 100644 index 0000000..5041e30 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/catalonia.png differ diff --git a/src/main/resources/static/assets/img/flags/cc.png b/src/main/resources/static/assets/img/flags/cc.png new file mode 100644 index 0000000..aed3d3b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cc.png differ diff --git a/src/main/resources/static/assets/img/flags/cd.png b/src/main/resources/static/assets/img/flags/cd.png new file mode 100644 index 0000000..5e48942 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cd.png differ diff --git a/src/main/resources/static/assets/img/flags/cf.png b/src/main/resources/static/assets/img/flags/cf.png new file mode 100644 index 0000000..da687bd Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cf.png differ diff --git a/src/main/resources/static/assets/img/flags/cg.png b/src/main/resources/static/assets/img/flags/cg.png new file mode 100644 index 0000000..a859792 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cg.png differ diff --git a/src/main/resources/static/assets/img/flags/ch.png b/src/main/resources/static/assets/img/flags/ch.png new file mode 100644 index 0000000..242ec01 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ch.png differ diff --git a/src/main/resources/static/assets/img/flags/ci.png b/src/main/resources/static/assets/img/flags/ci.png new file mode 100644 index 0000000..3f2c62e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ci.png differ diff --git a/src/main/resources/static/assets/img/flags/ck.png b/src/main/resources/static/assets/img/flags/ck.png new file mode 100644 index 0000000..746d3d6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ck.png differ diff --git a/src/main/resources/static/assets/img/flags/cl.png b/src/main/resources/static/assets/img/flags/cl.png new file mode 100644 index 0000000..29c6d61 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cl.png differ diff --git a/src/main/resources/static/assets/img/flags/cm.png b/src/main/resources/static/assets/img/flags/cm.png new file mode 100644 index 0000000..f65c5bd Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cm.png differ diff --git a/src/main/resources/static/assets/img/flags/cn.png b/src/main/resources/static/assets/img/flags/cn.png new file mode 100644 index 0000000..8914414 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cn.png differ diff --git a/src/main/resources/static/assets/img/flags/co.png b/src/main/resources/static/assets/img/flags/co.png new file mode 100644 index 0000000..a118ff4 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/co.png differ diff --git a/src/main/resources/static/assets/img/flags/cr.png b/src/main/resources/static/assets/img/flags/cr.png new file mode 100644 index 0000000..c7a3731 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cr.png differ diff --git a/src/main/resources/static/assets/img/flags/cs.png b/src/main/resources/static/assets/img/flags/cs.png new file mode 100644 index 0000000..8254790 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cs.png differ diff --git a/src/main/resources/static/assets/img/flags/cu.png b/src/main/resources/static/assets/img/flags/cu.png new file mode 100644 index 0000000..083f1d6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cu.png differ diff --git a/src/main/resources/static/assets/img/flags/cv.png b/src/main/resources/static/assets/img/flags/cv.png new file mode 100644 index 0000000..a63f7ea Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cv.png differ diff --git a/src/main/resources/static/assets/img/flags/cx.png b/src/main/resources/static/assets/img/flags/cx.png new file mode 100644 index 0000000..48e31ad Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cx.png differ diff --git a/src/main/resources/static/assets/img/flags/cy.png b/src/main/resources/static/assets/img/flags/cy.png new file mode 100644 index 0000000..5b1ad6c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cy.png differ diff --git a/src/main/resources/static/assets/img/flags/cz.png b/src/main/resources/static/assets/img/flags/cz.png new file mode 100644 index 0000000..c8403dd Binary files /dev/null and b/src/main/resources/static/assets/img/flags/cz.png differ diff --git a/src/main/resources/static/assets/img/flags/de.png b/src/main/resources/static/assets/img/flags/de.png new file mode 100644 index 0000000..ac4a977 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/de.png differ diff --git a/src/main/resources/static/assets/img/flags/dj.png b/src/main/resources/static/assets/img/flags/dj.png new file mode 100644 index 0000000..582af36 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/dj.png differ diff --git a/src/main/resources/static/assets/img/flags/dk.png b/src/main/resources/static/assets/img/flags/dk.png new file mode 100644 index 0000000..e2993d3 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/dk.png differ diff --git a/src/main/resources/static/assets/img/flags/dm.png b/src/main/resources/static/assets/img/flags/dm.png new file mode 100644 index 0000000..5fbffcb Binary files /dev/null and b/src/main/resources/static/assets/img/flags/dm.png differ diff --git a/src/main/resources/static/assets/img/flags/do.png b/src/main/resources/static/assets/img/flags/do.png new file mode 100644 index 0000000..5a04932 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/do.png differ diff --git a/src/main/resources/static/assets/img/flags/dz.png b/src/main/resources/static/assets/img/flags/dz.png new file mode 100644 index 0000000..335c239 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/dz.png differ diff --git a/src/main/resources/static/assets/img/flags/ec.png b/src/main/resources/static/assets/img/flags/ec.png new file mode 100644 index 0000000..0caa0b1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ec.png differ diff --git a/src/main/resources/static/assets/img/flags/ee.png b/src/main/resources/static/assets/img/flags/ee.png new file mode 100644 index 0000000..0c82efb Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ee.png differ diff --git a/src/main/resources/static/assets/img/flags/eg.png b/src/main/resources/static/assets/img/flags/eg.png new file mode 100644 index 0000000..8a3f7a1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/eg.png differ diff --git a/src/main/resources/static/assets/img/flags/eh.png b/src/main/resources/static/assets/img/flags/eh.png new file mode 100644 index 0000000..90a1195 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/eh.png differ diff --git a/src/main/resources/static/assets/img/flags/england.png b/src/main/resources/static/assets/img/flags/england.png new file mode 100644 index 0000000..3a7311d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/england.png differ diff --git a/src/main/resources/static/assets/img/flags/er.png b/src/main/resources/static/assets/img/flags/er.png new file mode 100644 index 0000000..13065ae Binary files /dev/null and b/src/main/resources/static/assets/img/flags/er.png differ diff --git a/src/main/resources/static/assets/img/flags/es.png b/src/main/resources/static/assets/img/flags/es.png new file mode 100644 index 0000000..c2de2d7 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/es.png differ diff --git a/src/main/resources/static/assets/img/flags/et.png b/src/main/resources/static/assets/img/flags/et.png new file mode 100644 index 0000000..2e893fa Binary files /dev/null and b/src/main/resources/static/assets/img/flags/et.png differ diff --git a/src/main/resources/static/assets/img/flags/europeanunion.png b/src/main/resources/static/assets/img/flags/europeanunion.png new file mode 100644 index 0000000..d6d8711 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/europeanunion.png differ diff --git a/src/main/resources/static/assets/img/flags/fam.png b/src/main/resources/static/assets/img/flags/fam.png new file mode 100644 index 0000000..cf50c75 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fam.png differ diff --git a/src/main/resources/static/assets/img/flags/fi.png b/src/main/resources/static/assets/img/flags/fi.png new file mode 100644 index 0000000..14ec091 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fi.png differ diff --git a/src/main/resources/static/assets/img/flags/fj.png b/src/main/resources/static/assets/img/flags/fj.png new file mode 100644 index 0000000..cee9988 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fj.png differ diff --git a/src/main/resources/static/assets/img/flags/fk.png b/src/main/resources/static/assets/img/flags/fk.png new file mode 100644 index 0000000..ceaeb27 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fk.png differ diff --git a/src/main/resources/static/assets/img/flags/fm.png b/src/main/resources/static/assets/img/flags/fm.png new file mode 100644 index 0000000..066bb24 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fm.png differ diff --git a/src/main/resources/static/assets/img/flags/fo.png b/src/main/resources/static/assets/img/flags/fo.png new file mode 100644 index 0000000..cbceb80 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fo.png differ diff --git a/src/main/resources/static/assets/img/flags/fr.png b/src/main/resources/static/assets/img/flags/fr.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/fr.png differ diff --git a/src/main/resources/static/assets/img/flags/ga.png b/src/main/resources/static/assets/img/flags/ga.png new file mode 100644 index 0000000..0e0d434 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ga.png differ diff --git a/src/main/resources/static/assets/img/flags/gb.png b/src/main/resources/static/assets/img/flags/gb.png new file mode 100644 index 0000000..ff701e1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gb.png differ diff --git a/src/main/resources/static/assets/img/flags/gd.png b/src/main/resources/static/assets/img/flags/gd.png new file mode 100644 index 0000000..9ab57f5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gd.png differ diff --git a/src/main/resources/static/assets/img/flags/ge.png b/src/main/resources/static/assets/img/flags/ge.png new file mode 100644 index 0000000..728d970 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ge.png differ diff --git a/src/main/resources/static/assets/img/flags/gf.png b/src/main/resources/static/assets/img/flags/gf.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gf.png differ diff --git a/src/main/resources/static/assets/img/flags/gh.png b/src/main/resources/static/assets/img/flags/gh.png new file mode 100644 index 0000000..4e2f896 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gh.png differ diff --git a/src/main/resources/static/assets/img/flags/gi.png b/src/main/resources/static/assets/img/flags/gi.png new file mode 100644 index 0000000..e76797f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gi.png differ diff --git a/src/main/resources/static/assets/img/flags/gl.png b/src/main/resources/static/assets/img/flags/gl.png new file mode 100644 index 0000000..ef12a73 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gl.png differ diff --git a/src/main/resources/static/assets/img/flags/gm.png b/src/main/resources/static/assets/img/flags/gm.png new file mode 100644 index 0000000..0720b66 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gm.png differ diff --git a/src/main/resources/static/assets/img/flags/gn.png b/src/main/resources/static/assets/img/flags/gn.png new file mode 100644 index 0000000..ea660b0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gn.png differ diff --git a/src/main/resources/static/assets/img/flags/gp.png b/src/main/resources/static/assets/img/flags/gp.png new file mode 100644 index 0000000..dbb086d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gp.png differ diff --git a/src/main/resources/static/assets/img/flags/gq.png b/src/main/resources/static/assets/img/flags/gq.png new file mode 100644 index 0000000..ebe20a2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gq.png differ diff --git a/src/main/resources/static/assets/img/flags/gr.png b/src/main/resources/static/assets/img/flags/gr.png new file mode 100644 index 0000000..8651ade Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gr.png differ diff --git a/src/main/resources/static/assets/img/flags/gs.png b/src/main/resources/static/assets/img/flags/gs.png new file mode 100644 index 0000000..7ef0bf5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gs.png differ diff --git a/src/main/resources/static/assets/img/flags/gt.png b/src/main/resources/static/assets/img/flags/gt.png new file mode 100644 index 0000000..c43a70d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gt.png differ diff --git a/src/main/resources/static/assets/img/flags/gu.png b/src/main/resources/static/assets/img/flags/gu.png new file mode 100644 index 0000000..92f37c0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gu.png differ diff --git a/src/main/resources/static/assets/img/flags/gw.png b/src/main/resources/static/assets/img/flags/gw.png new file mode 100644 index 0000000..b37bcf0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gw.png differ diff --git a/src/main/resources/static/assets/img/flags/gy.png b/src/main/resources/static/assets/img/flags/gy.png new file mode 100644 index 0000000..22cbe2f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/gy.png differ diff --git a/src/main/resources/static/assets/img/flags/hk.png b/src/main/resources/static/assets/img/flags/hk.png new file mode 100644 index 0000000..d5c380c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/hk.png differ diff --git a/src/main/resources/static/assets/img/flags/hm.png b/src/main/resources/static/assets/img/flags/hm.png new file mode 100644 index 0000000..a01389a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/hm.png differ diff --git a/src/main/resources/static/assets/img/flags/hn.png b/src/main/resources/static/assets/img/flags/hn.png new file mode 100644 index 0000000..96f8388 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/hn.png differ diff --git a/src/main/resources/static/assets/img/flags/hr.png b/src/main/resources/static/assets/img/flags/hr.png new file mode 100644 index 0000000..696b515 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/hr.png differ diff --git a/src/main/resources/static/assets/img/flags/ht.png b/src/main/resources/static/assets/img/flags/ht.png new file mode 100644 index 0000000..416052a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ht.png differ diff --git a/src/main/resources/static/assets/img/flags/hu.png b/src/main/resources/static/assets/img/flags/hu.png new file mode 100644 index 0000000..7baafe4 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/hu.png differ diff --git a/src/main/resources/static/assets/img/flags/id.png b/src/main/resources/static/assets/img/flags/id.png new file mode 100644 index 0000000..c6bc0fa Binary files /dev/null and b/src/main/resources/static/assets/img/flags/id.png differ diff --git a/src/main/resources/static/assets/img/flags/ie.png b/src/main/resources/static/assets/img/flags/ie.png new file mode 100644 index 0000000..26baa31 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ie.png differ diff --git a/src/main/resources/static/assets/img/flags/il.png b/src/main/resources/static/assets/img/flags/il.png new file mode 100644 index 0000000..2ca772d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/il.png differ diff --git a/src/main/resources/static/assets/img/flags/in.png b/src/main/resources/static/assets/img/flags/in.png new file mode 100644 index 0000000..e4d7e81 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/in.png differ diff --git a/src/main/resources/static/assets/img/flags/io.png b/src/main/resources/static/assets/img/flags/io.png new file mode 100644 index 0000000..3e74b6a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/io.png differ diff --git a/src/main/resources/static/assets/img/flags/iq.png b/src/main/resources/static/assets/img/flags/iq.png new file mode 100644 index 0000000..878a351 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/iq.png differ diff --git a/src/main/resources/static/assets/img/flags/ir.png b/src/main/resources/static/assets/img/flags/ir.png new file mode 100644 index 0000000..c5fd136 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ir.png differ diff --git a/src/main/resources/static/assets/img/flags/is.png b/src/main/resources/static/assets/img/flags/is.png new file mode 100644 index 0000000..b8f6d0f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/is.png differ diff --git a/src/main/resources/static/assets/img/flags/it.png b/src/main/resources/static/assets/img/flags/it.png new file mode 100644 index 0000000..89692f7 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/it.png differ diff --git a/src/main/resources/static/assets/img/flags/jm.png b/src/main/resources/static/assets/img/flags/jm.png new file mode 100644 index 0000000..7be119e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/jm.png differ diff --git a/src/main/resources/static/assets/img/flags/jo.png b/src/main/resources/static/assets/img/flags/jo.png new file mode 100644 index 0000000..11bd497 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/jo.png differ diff --git a/src/main/resources/static/assets/img/flags/jp.png b/src/main/resources/static/assets/img/flags/jp.png new file mode 100644 index 0000000..325fbad Binary files /dev/null and b/src/main/resources/static/assets/img/flags/jp.png differ diff --git a/src/main/resources/static/assets/img/flags/ke.png b/src/main/resources/static/assets/img/flags/ke.png new file mode 100644 index 0000000..51879ad Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ke.png differ diff --git a/src/main/resources/static/assets/img/flags/kg.png b/src/main/resources/static/assets/img/flags/kg.png new file mode 100644 index 0000000..0a818f6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kg.png differ diff --git a/src/main/resources/static/assets/img/flags/kh.png b/src/main/resources/static/assets/img/flags/kh.png new file mode 100644 index 0000000..30f6bb1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kh.png differ diff --git a/src/main/resources/static/assets/img/flags/ki.png b/src/main/resources/static/assets/img/flags/ki.png new file mode 100644 index 0000000..2dcce4b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ki.png differ diff --git a/src/main/resources/static/assets/img/flags/km.png b/src/main/resources/static/assets/img/flags/km.png new file mode 100644 index 0000000..812b2f5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/km.png differ diff --git a/src/main/resources/static/assets/img/flags/kn.png b/src/main/resources/static/assets/img/flags/kn.png new file mode 100644 index 0000000..febd5b4 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kn.png differ diff --git a/src/main/resources/static/assets/img/flags/kp.png b/src/main/resources/static/assets/img/flags/kp.png new file mode 100644 index 0000000..d3d509a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kp.png differ diff --git a/src/main/resources/static/assets/img/flags/kr.png b/src/main/resources/static/assets/img/flags/kr.png new file mode 100644 index 0000000..9c0a78e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kr.png differ diff --git a/src/main/resources/static/assets/img/flags/kw.png b/src/main/resources/static/assets/img/flags/kw.png new file mode 100644 index 0000000..96546da Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kw.png differ diff --git a/src/main/resources/static/assets/img/flags/ky.png b/src/main/resources/static/assets/img/flags/ky.png new file mode 100644 index 0000000..15c5f8e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ky.png differ diff --git a/src/main/resources/static/assets/img/flags/kz.png b/src/main/resources/static/assets/img/flags/kz.png new file mode 100644 index 0000000..45a8c88 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/kz.png differ diff --git a/src/main/resources/static/assets/img/flags/la.png b/src/main/resources/static/assets/img/flags/la.png new file mode 100644 index 0000000..e28acd0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/la.png differ diff --git a/src/main/resources/static/assets/img/flags/lb.png b/src/main/resources/static/assets/img/flags/lb.png new file mode 100644 index 0000000..d0d452b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lb.png differ diff --git a/src/main/resources/static/assets/img/flags/lc.png b/src/main/resources/static/assets/img/flags/lc.png new file mode 100644 index 0000000..a47d065 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lc.png differ diff --git a/src/main/resources/static/assets/img/flags/li.png b/src/main/resources/static/assets/img/flags/li.png new file mode 100644 index 0000000..6469909 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/li.png differ diff --git a/src/main/resources/static/assets/img/flags/lk.png b/src/main/resources/static/assets/img/flags/lk.png new file mode 100644 index 0000000..088aad6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lk.png differ diff --git a/src/main/resources/static/assets/img/flags/lr.png b/src/main/resources/static/assets/img/flags/lr.png new file mode 100644 index 0000000..89a5bc7 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lr.png differ diff --git a/src/main/resources/static/assets/img/flags/ls.png b/src/main/resources/static/assets/img/flags/ls.png new file mode 100644 index 0000000..33fdef1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ls.png differ diff --git a/src/main/resources/static/assets/img/flags/lt.png b/src/main/resources/static/assets/img/flags/lt.png new file mode 100644 index 0000000..c8ef0da Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lt.png differ diff --git a/src/main/resources/static/assets/img/flags/lu.png b/src/main/resources/static/assets/img/flags/lu.png new file mode 100644 index 0000000..4cabba9 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lu.png differ diff --git a/src/main/resources/static/assets/img/flags/lv.png b/src/main/resources/static/assets/img/flags/lv.png new file mode 100644 index 0000000..49b6998 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/lv.png differ diff --git a/src/main/resources/static/assets/img/flags/ly.png b/src/main/resources/static/assets/img/flags/ly.png new file mode 100644 index 0000000..b163a9f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ly.png differ diff --git a/src/main/resources/static/assets/img/flags/ma.png b/src/main/resources/static/assets/img/flags/ma.png new file mode 100644 index 0000000..f386770 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ma.png differ diff --git a/src/main/resources/static/assets/img/flags/mc.png b/src/main/resources/static/assets/img/flags/mc.png new file mode 100644 index 0000000..1aa830f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mc.png differ diff --git a/src/main/resources/static/assets/img/flags/md.png b/src/main/resources/static/assets/img/flags/md.png new file mode 100644 index 0000000..4e92c18 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/md.png differ diff --git a/src/main/resources/static/assets/img/flags/me.png b/src/main/resources/static/assets/img/flags/me.png new file mode 100644 index 0000000..ac72535 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/me.png differ diff --git a/src/main/resources/static/assets/img/flags/mg.png b/src/main/resources/static/assets/img/flags/mg.png new file mode 100644 index 0000000..d2715b3 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mg.png differ diff --git a/src/main/resources/static/assets/img/flags/mh.png b/src/main/resources/static/assets/img/flags/mh.png new file mode 100644 index 0000000..fb523a8 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mh.png differ diff --git a/src/main/resources/static/assets/img/flags/mk.png b/src/main/resources/static/assets/img/flags/mk.png new file mode 100644 index 0000000..db173aa Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mk.png differ diff --git a/src/main/resources/static/assets/img/flags/ml.png b/src/main/resources/static/assets/img/flags/ml.png new file mode 100644 index 0000000..2cec8ba Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ml.png differ diff --git a/src/main/resources/static/assets/img/flags/mm.png b/src/main/resources/static/assets/img/flags/mm.png new file mode 100644 index 0000000..f464f67 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mm.png differ diff --git a/src/main/resources/static/assets/img/flags/mn.png b/src/main/resources/static/assets/img/flags/mn.png new file mode 100644 index 0000000..9396355 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mn.png differ diff --git a/src/main/resources/static/assets/img/flags/mo.png b/src/main/resources/static/assets/img/flags/mo.png new file mode 100644 index 0000000..deb801d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mo.png differ diff --git a/src/main/resources/static/assets/img/flags/mp.png b/src/main/resources/static/assets/img/flags/mp.png new file mode 100644 index 0000000..298d588 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mp.png differ diff --git a/src/main/resources/static/assets/img/flags/mq.png b/src/main/resources/static/assets/img/flags/mq.png new file mode 100644 index 0000000..010143b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mq.png differ diff --git a/src/main/resources/static/assets/img/flags/mr.png b/src/main/resources/static/assets/img/flags/mr.png new file mode 100644 index 0000000..319546b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mr.png differ diff --git a/src/main/resources/static/assets/img/flags/ms.png b/src/main/resources/static/assets/img/flags/ms.png new file mode 100644 index 0000000..d4cbb43 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ms.png differ diff --git a/src/main/resources/static/assets/img/flags/mt.png b/src/main/resources/static/assets/img/flags/mt.png new file mode 100644 index 0000000..00af948 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mt.png differ diff --git a/src/main/resources/static/assets/img/flags/mu.png b/src/main/resources/static/assets/img/flags/mu.png new file mode 100644 index 0000000..b7fdce1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mu.png differ diff --git a/src/main/resources/static/assets/img/flags/mv.png b/src/main/resources/static/assets/img/flags/mv.png new file mode 100644 index 0000000..5073d9e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mv.png differ diff --git a/src/main/resources/static/assets/img/flags/mw.png b/src/main/resources/static/assets/img/flags/mw.png new file mode 100644 index 0000000..13886e9 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mw.png differ diff --git a/src/main/resources/static/assets/img/flags/mx.png b/src/main/resources/static/assets/img/flags/mx.png new file mode 100644 index 0000000..5bc58ab Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mx.png differ diff --git a/src/main/resources/static/assets/img/flags/my.png b/src/main/resources/static/assets/img/flags/my.png new file mode 100644 index 0000000..9034cba Binary files /dev/null and b/src/main/resources/static/assets/img/flags/my.png differ diff --git a/src/main/resources/static/assets/img/flags/mz.png b/src/main/resources/static/assets/img/flags/mz.png new file mode 100644 index 0000000..76405e0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/mz.png differ diff --git a/src/main/resources/static/assets/img/flags/na.png b/src/main/resources/static/assets/img/flags/na.png new file mode 100644 index 0000000..63358c6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/na.png differ diff --git a/src/main/resources/static/assets/img/flags/nc.png b/src/main/resources/static/assets/img/flags/nc.png new file mode 100644 index 0000000..2cad283 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/nc.png differ diff --git a/src/main/resources/static/assets/img/flags/ne.png b/src/main/resources/static/assets/img/flags/ne.png new file mode 100644 index 0000000..d85f424 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ne.png differ diff --git a/src/main/resources/static/assets/img/flags/nf.png b/src/main/resources/static/assets/img/flags/nf.png new file mode 100644 index 0000000..f9bcdda Binary files /dev/null and b/src/main/resources/static/assets/img/flags/nf.png differ diff --git a/src/main/resources/static/assets/img/flags/ng.png b/src/main/resources/static/assets/img/flags/ng.png new file mode 100644 index 0000000..3eea2e0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ng.png differ diff --git a/src/main/resources/static/assets/img/flags/ni.png b/src/main/resources/static/assets/img/flags/ni.png new file mode 100644 index 0000000..3969aaa Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ni.png differ diff --git a/src/main/resources/static/assets/img/flags/nl.png b/src/main/resources/static/assets/img/flags/nl.png new file mode 100644 index 0000000..fe44791 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/nl.png differ diff --git a/src/main/resources/static/assets/img/flags/no.png b/src/main/resources/static/assets/img/flags/no.png new file mode 100644 index 0000000..160b6b5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/no.png differ diff --git a/src/main/resources/static/assets/img/flags/np.png b/src/main/resources/static/assets/img/flags/np.png new file mode 100644 index 0000000..aeb058b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/np.png differ diff --git a/src/main/resources/static/assets/img/flags/nr.png b/src/main/resources/static/assets/img/flags/nr.png new file mode 100644 index 0000000..705fc33 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/nr.png differ diff --git a/src/main/resources/static/assets/img/flags/nu.png b/src/main/resources/static/assets/img/flags/nu.png new file mode 100644 index 0000000..c3ce4ae Binary files /dev/null and b/src/main/resources/static/assets/img/flags/nu.png differ diff --git a/src/main/resources/static/assets/img/flags/nz.png b/src/main/resources/static/assets/img/flags/nz.png new file mode 100644 index 0000000..10d6306 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/nz.png differ diff --git a/src/main/resources/static/assets/img/flags/om.png b/src/main/resources/static/assets/img/flags/om.png new file mode 100644 index 0000000..2ffba7e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/om.png differ diff --git a/src/main/resources/static/assets/img/flags/pa.png b/src/main/resources/static/assets/img/flags/pa.png new file mode 100644 index 0000000..9b2ee9a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pa.png differ diff --git a/src/main/resources/static/assets/img/flags/pe.png b/src/main/resources/static/assets/img/flags/pe.png new file mode 100644 index 0000000..62a0497 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pe.png differ diff --git a/src/main/resources/static/assets/img/flags/pf.png b/src/main/resources/static/assets/img/flags/pf.png new file mode 100644 index 0000000..771a0f6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pf.png differ diff --git a/src/main/resources/static/assets/img/flags/pg.png b/src/main/resources/static/assets/img/flags/pg.png new file mode 100644 index 0000000..10d6233 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pg.png differ diff --git a/src/main/resources/static/assets/img/flags/ph.png b/src/main/resources/static/assets/img/flags/ph.png new file mode 100644 index 0000000..b89e159 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ph.png differ diff --git a/src/main/resources/static/assets/img/flags/pk.png b/src/main/resources/static/assets/img/flags/pk.png new file mode 100644 index 0000000..e9df70c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pk.png differ diff --git a/src/main/resources/static/assets/img/flags/pl.png b/src/main/resources/static/assets/img/flags/pl.png new file mode 100644 index 0000000..d413d01 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pl.png differ diff --git a/src/main/resources/static/assets/img/flags/pm.png b/src/main/resources/static/assets/img/flags/pm.png new file mode 100644 index 0000000..ba91d2c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pm.png differ diff --git a/src/main/resources/static/assets/img/flags/pn.png b/src/main/resources/static/assets/img/flags/pn.png new file mode 100644 index 0000000..aa9344f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pn.png differ diff --git a/src/main/resources/static/assets/img/flags/pr.png b/src/main/resources/static/assets/img/flags/pr.png new file mode 100644 index 0000000..82d9130 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pr.png differ diff --git a/src/main/resources/static/assets/img/flags/ps.png b/src/main/resources/static/assets/img/flags/ps.png new file mode 100644 index 0000000..f5f5477 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ps.png differ diff --git a/src/main/resources/static/assets/img/flags/pt.png b/src/main/resources/static/assets/img/flags/pt.png new file mode 100644 index 0000000..ece7980 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pt.png differ diff --git a/src/main/resources/static/assets/img/flags/pw.png b/src/main/resources/static/assets/img/flags/pw.png new file mode 100644 index 0000000..6178b25 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/pw.png differ diff --git a/src/main/resources/static/assets/img/flags/py.png b/src/main/resources/static/assets/img/flags/py.png new file mode 100644 index 0000000..cb8723c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/py.png differ diff --git a/src/main/resources/static/assets/img/flags/qa.png b/src/main/resources/static/assets/img/flags/qa.png new file mode 100644 index 0000000..ed4c621 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/qa.png differ diff --git a/src/main/resources/static/assets/img/flags/re.png b/src/main/resources/static/assets/img/flags/re.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/re.png differ diff --git a/src/main/resources/static/assets/img/flags/readme.txt b/src/main/resources/static/assets/img/flags/readme.txt new file mode 100644 index 0000000..2e5ad52 --- /dev/null +++ b/src/main/resources/static/assets/img/flags/readme.txt @@ -0,0 +1,9 @@ +Flag icons - http://www.famfamfam.com + +These icons are public domain, and as such are free for any use (attribution appreciated but not required). + +Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + +If you find these icons useful, please donate via paypal to mjames@gmail.com (or click the donate button available at http://www.famfamfam.com/lab/icons/silk) + +Contact: mjames@gmail.com \ No newline at end of file diff --git a/src/main/resources/static/assets/img/flags/ro.png b/src/main/resources/static/assets/img/flags/ro.png new file mode 100644 index 0000000..57e74a6 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ro.png differ diff --git a/src/main/resources/static/assets/img/flags/rs.png b/src/main/resources/static/assets/img/flags/rs.png new file mode 100644 index 0000000..9439a5b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/rs.png differ diff --git a/src/main/resources/static/assets/img/flags/ru.png b/src/main/resources/static/assets/img/flags/ru.png new file mode 100644 index 0000000..47da421 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ru.png differ diff --git a/src/main/resources/static/assets/img/flags/rw.png b/src/main/resources/static/assets/img/flags/rw.png new file mode 100644 index 0000000..5356491 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/rw.png differ diff --git a/src/main/resources/static/assets/img/flags/sa.png b/src/main/resources/static/assets/img/flags/sa.png new file mode 100644 index 0000000..b4641c7 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sa.png differ diff --git a/src/main/resources/static/assets/img/flags/sb.png b/src/main/resources/static/assets/img/flags/sb.png new file mode 100644 index 0000000..a9937cc Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sb.png differ diff --git a/src/main/resources/static/assets/img/flags/sc.png b/src/main/resources/static/assets/img/flags/sc.png new file mode 100644 index 0000000..39ee371 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sc.png differ diff --git a/src/main/resources/static/assets/img/flags/scotland.png b/src/main/resources/static/assets/img/flags/scotland.png new file mode 100644 index 0000000..a0e57b4 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/scotland.png differ diff --git a/src/main/resources/static/assets/img/flags/sd.png b/src/main/resources/static/assets/img/flags/sd.png new file mode 100644 index 0000000..eaab69e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sd.png differ diff --git a/src/main/resources/static/assets/img/flags/se.png b/src/main/resources/static/assets/img/flags/se.png new file mode 100644 index 0000000..1994653 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/se.png differ diff --git a/src/main/resources/static/assets/img/flags/sg.png b/src/main/resources/static/assets/img/flags/sg.png new file mode 100644 index 0000000..dd34d61 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sg.png differ diff --git a/src/main/resources/static/assets/img/flags/sh.png b/src/main/resources/static/assets/img/flags/sh.png new file mode 100644 index 0000000..4b1d2a2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sh.png differ diff --git a/src/main/resources/static/assets/img/flags/si.png b/src/main/resources/static/assets/img/flags/si.png new file mode 100644 index 0000000..bb1476f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/si.png differ diff --git a/src/main/resources/static/assets/img/flags/sj.png b/src/main/resources/static/assets/img/flags/sj.png new file mode 100644 index 0000000..160b6b5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sj.png differ diff --git a/src/main/resources/static/assets/img/flags/sk.png b/src/main/resources/static/assets/img/flags/sk.png new file mode 100644 index 0000000..7ccbc82 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sk.png differ diff --git a/src/main/resources/static/assets/img/flags/sl.png b/src/main/resources/static/assets/img/flags/sl.png new file mode 100644 index 0000000..12d812d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sl.png differ diff --git a/src/main/resources/static/assets/img/flags/sm.png b/src/main/resources/static/assets/img/flags/sm.png new file mode 100644 index 0000000..3df2fdc Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sm.png differ diff --git a/src/main/resources/static/assets/img/flags/sn.png b/src/main/resources/static/assets/img/flags/sn.png new file mode 100644 index 0000000..eabb71d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sn.png differ diff --git a/src/main/resources/static/assets/img/flags/so.png b/src/main/resources/static/assets/img/flags/so.png new file mode 100644 index 0000000..4a1ea4b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/so.png differ diff --git a/src/main/resources/static/assets/img/flags/sr.png b/src/main/resources/static/assets/img/flags/sr.png new file mode 100644 index 0000000..5eff927 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sr.png differ diff --git a/src/main/resources/static/assets/img/flags/st.png b/src/main/resources/static/assets/img/flags/st.png new file mode 100644 index 0000000..2978557 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/st.png differ diff --git a/src/main/resources/static/assets/img/flags/sv.png b/src/main/resources/static/assets/img/flags/sv.png new file mode 100644 index 0000000..2498799 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sv.png differ diff --git a/src/main/resources/static/assets/img/flags/sy.png b/src/main/resources/static/assets/img/flags/sy.png new file mode 100644 index 0000000..f5ce30d Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sy.png differ diff --git a/src/main/resources/static/assets/img/flags/sz.png b/src/main/resources/static/assets/img/flags/sz.png new file mode 100644 index 0000000..914ee86 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/sz.png differ diff --git a/src/main/resources/static/assets/img/flags/tc.png b/src/main/resources/static/assets/img/flags/tc.png new file mode 100644 index 0000000..8fc1156 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tc.png differ diff --git a/src/main/resources/static/assets/img/flags/td.png b/src/main/resources/static/assets/img/flags/td.png new file mode 100644 index 0000000..667f21f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/td.png differ diff --git a/src/main/resources/static/assets/img/flags/tf.png b/src/main/resources/static/assets/img/flags/tf.png new file mode 100644 index 0000000..80529a4 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tf.png differ diff --git a/src/main/resources/static/assets/img/flags/tg.png b/src/main/resources/static/assets/img/flags/tg.png new file mode 100644 index 0000000..3aa00ad Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tg.png differ diff --git a/src/main/resources/static/assets/img/flags/th.png b/src/main/resources/static/assets/img/flags/th.png new file mode 100644 index 0000000..dd8ba91 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/th.png differ diff --git a/src/main/resources/static/assets/img/flags/tj.png b/src/main/resources/static/assets/img/flags/tj.png new file mode 100644 index 0000000..617bf64 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tj.png differ diff --git a/src/main/resources/static/assets/img/flags/tk.png b/src/main/resources/static/assets/img/flags/tk.png new file mode 100644 index 0000000..67b8c8c Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tk.png differ diff --git a/src/main/resources/static/assets/img/flags/tl.png b/src/main/resources/static/assets/img/flags/tl.png new file mode 100644 index 0000000..77da181 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tl.png differ diff --git a/src/main/resources/static/assets/img/flags/tm.png b/src/main/resources/static/assets/img/flags/tm.png new file mode 100644 index 0000000..828020e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tm.png differ diff --git a/src/main/resources/static/assets/img/flags/tn.png b/src/main/resources/static/assets/img/flags/tn.png new file mode 100644 index 0000000..183cdd3 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tn.png differ diff --git a/src/main/resources/static/assets/img/flags/to.png b/src/main/resources/static/assets/img/flags/to.png new file mode 100644 index 0000000..f89b8ba Binary files /dev/null and b/src/main/resources/static/assets/img/flags/to.png differ diff --git a/src/main/resources/static/assets/img/flags/tr.png b/src/main/resources/static/assets/img/flags/tr.png new file mode 100644 index 0000000..be32f77 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tr.png differ diff --git a/src/main/resources/static/assets/img/flags/tt.png b/src/main/resources/static/assets/img/flags/tt.png new file mode 100644 index 0000000..2a11c1e Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tt.png differ diff --git a/src/main/resources/static/assets/img/flags/tv.png b/src/main/resources/static/assets/img/flags/tv.png new file mode 100644 index 0000000..28274c5 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tv.png differ diff --git a/src/main/resources/static/assets/img/flags/tw.png b/src/main/resources/static/assets/img/flags/tw.png new file mode 100644 index 0000000..f31c654 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tw.png differ diff --git a/src/main/resources/static/assets/img/flags/tz.png b/src/main/resources/static/assets/img/flags/tz.png new file mode 100644 index 0000000..c00ff79 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/tz.png differ diff --git a/src/main/resources/static/assets/img/flags/ua.png b/src/main/resources/static/assets/img/flags/ua.png new file mode 100644 index 0000000..09563a2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ua.png differ diff --git a/src/main/resources/static/assets/img/flags/ug.png b/src/main/resources/static/assets/img/flags/ug.png new file mode 100644 index 0000000..33f4aff Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ug.png differ diff --git a/src/main/resources/static/assets/img/flags/um.png b/src/main/resources/static/assets/img/flags/um.png new file mode 100644 index 0000000..c1dd965 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/um.png differ diff --git a/src/main/resources/static/assets/img/flags/us.png b/src/main/resources/static/assets/img/flags/us.png new file mode 100644 index 0000000..10f451f Binary files /dev/null and b/src/main/resources/static/assets/img/flags/us.png differ diff --git a/src/main/resources/static/assets/img/flags/uy.png b/src/main/resources/static/assets/img/flags/uy.png new file mode 100644 index 0000000..31d948a Binary files /dev/null and b/src/main/resources/static/assets/img/flags/uy.png differ diff --git a/src/main/resources/static/assets/img/flags/uz.png b/src/main/resources/static/assets/img/flags/uz.png new file mode 100644 index 0000000..fef5dc1 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/uz.png differ diff --git a/src/main/resources/static/assets/img/flags/va.png b/src/main/resources/static/assets/img/flags/va.png new file mode 100644 index 0000000..b31eaf2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/va.png differ diff --git a/src/main/resources/static/assets/img/flags/vc.png b/src/main/resources/static/assets/img/flags/vc.png new file mode 100644 index 0000000..8fa17b0 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/vc.png differ diff --git a/src/main/resources/static/assets/img/flags/ve.png b/src/main/resources/static/assets/img/flags/ve.png new file mode 100644 index 0000000..00c90f9 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ve.png differ diff --git a/src/main/resources/static/assets/img/flags/vg.png b/src/main/resources/static/assets/img/flags/vg.png new file mode 100644 index 0000000..4156907 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/vg.png differ diff --git a/src/main/resources/static/assets/img/flags/vi.png b/src/main/resources/static/assets/img/flags/vi.png new file mode 100644 index 0000000..ed26915 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/vi.png differ diff --git a/src/main/resources/static/assets/img/flags/vn.png b/src/main/resources/static/assets/img/flags/vn.png new file mode 100644 index 0000000..ec7cd48 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/vn.png differ diff --git a/src/main/resources/static/assets/img/flags/vu.png b/src/main/resources/static/assets/img/flags/vu.png new file mode 100644 index 0000000..b3397bc Binary files /dev/null and b/src/main/resources/static/assets/img/flags/vu.png differ diff --git a/src/main/resources/static/assets/img/flags/wales.png b/src/main/resources/static/assets/img/flags/wales.png new file mode 100644 index 0000000..e0d7cee Binary files /dev/null and b/src/main/resources/static/assets/img/flags/wales.png differ diff --git a/src/main/resources/static/assets/img/flags/wf.png b/src/main/resources/static/assets/img/flags/wf.png new file mode 100644 index 0000000..9f95587 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/wf.png differ diff --git a/src/main/resources/static/assets/img/flags/ws.png b/src/main/resources/static/assets/img/flags/ws.png new file mode 100644 index 0000000..c169508 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ws.png differ diff --git a/src/main/resources/static/assets/img/flags/ye.png b/src/main/resources/static/assets/img/flags/ye.png new file mode 100644 index 0000000..468dfad Binary files /dev/null and b/src/main/resources/static/assets/img/flags/ye.png differ diff --git a/src/main/resources/static/assets/img/flags/yt.png b/src/main/resources/static/assets/img/flags/yt.png new file mode 100644 index 0000000..c298f37 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/yt.png differ diff --git a/src/main/resources/static/assets/img/flags/za.png b/src/main/resources/static/assets/img/flags/za.png new file mode 100644 index 0000000..57c58e2 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/za.png differ diff --git a/src/main/resources/static/assets/img/flags/zm.png b/src/main/resources/static/assets/img/flags/zm.png new file mode 100644 index 0000000..c25b07b Binary files /dev/null and b/src/main/resources/static/assets/img/flags/zm.png differ diff --git a/src/main/resources/static/assets/img/flags/zw.png b/src/main/resources/static/assets/img/flags/zw.png new file mode 100644 index 0000000..53c9725 Binary files /dev/null and b/src/main/resources/static/assets/img/flags/zw.png differ diff --git a/src/main/resources/static/assets/img/icon.ico b/src/main/resources/static/assets/img/icon.ico new file mode 100644 index 0000000..5527e96 Binary files /dev/null and b/src/main/resources/static/assets/img/icon.ico differ diff --git a/src/main/resources/static/assets/img/icon.png b/src/main/resources/static/assets/img/icon.png new file mode 100644 index 0000000..c13b4ff Binary files /dev/null and b/src/main/resources/static/assets/img/icon.png differ diff --git a/src/main/resources/static/assets/img/icon.svg b/src/main/resources/static/assets/img/icon.svg new file mode 100644 index 0000000..289cfec --- /dev/null +++ b/src/main/resources/static/assets/img/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/img-shadow.gvdesign b/src/main/resources/static/assets/img/img-shadow.gvdesign new file mode 100644 index 0000000..fb6535f Binary files /dev/null and b/src/main/resources/static/assets/img/img-shadow.gvdesign differ diff --git a/src/main/resources/static/assets/img/img-shadow.png b/src/main/resources/static/assets/img/img-shadow.png new file mode 100644 index 0000000..2f832e3 Binary files /dev/null and b/src/main/resources/static/assets/img/img-shadow.png differ diff --git a/src/main/resources/static/assets/img/jm_denis.jpg b/src/main/resources/static/assets/img/jm_denis.jpg new file mode 100644 index 0000000..7d698d4 Binary files /dev/null and b/src/main/resources/static/assets/img/jm_denis.jpg differ diff --git a/src/main/resources/static/assets/img/logo.svg b/src/main/resources/static/assets/img/logo.svg new file mode 100644 index 0000000..bb7708b --- /dev/null +++ b/src/main/resources/static/assets/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/logo2.svg b/src/main/resources/static/assets/img/logo2.svg new file mode 100644 index 0000000..1022227 --- /dev/null +++ b/src/main/resources/static/assets/img/logo2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/logoalternatif.svg b/src/main/resources/static/assets/img/logoalternatif.svg new file mode 100644 index 0000000..3ded40a --- /dev/null +++ b/src/main/resources/static/assets/img/logoalternatif.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/logoproduct.svg b/src/main/resources/static/assets/img/logoproduct.svg new file mode 100644 index 0000000..86ffc9e --- /dev/null +++ b/src/main/resources/static/assets/img/logoproduct.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/logoproduct2.svg b/src/main/resources/static/assets/img/logoproduct2.svg new file mode 100644 index 0000000..330f7b7 --- /dev/null +++ b/src/main/resources/static/assets/img/logoproduct2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/logoproduct3.svg b/src/main/resources/static/assets/img/logoproduct3.svg new file mode 100644 index 0000000..02b45ae --- /dev/null +++ b/src/main/resources/static/assets/img/logoproduct3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/img/mlane.jpg b/src/main/resources/static/assets/img/mlane.jpg new file mode 100644 index 0000000..cd901a8 Binary files /dev/null and b/src/main/resources/static/assets/img/mlane.jpg differ diff --git a/src/main/resources/static/assets/img/productimg/product1.jpeg b/src/main/resources/static/assets/img/productimg/product1.jpeg new file mode 100644 index 0000000..01a51ff Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product1.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product2.jpeg b/src/main/resources/static/assets/img/productimg/product2.jpeg new file mode 100644 index 0000000..868524c Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product2.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product3.jpeg b/src/main/resources/static/assets/img/productimg/product3.jpeg new file mode 100644 index 0000000..8b8f526 Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product3.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product4.jpeg b/src/main/resources/static/assets/img/productimg/product4.jpeg new file mode 100644 index 0000000..dabf8ba Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product4.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product5.jpeg b/src/main/resources/static/assets/img/productimg/product5.jpeg new file mode 100644 index 0000000..5b2ea08 Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product5.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product6.jpeg b/src/main/resources/static/assets/img/productimg/product6.jpeg new file mode 100644 index 0000000..076b823 Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product6.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product7.jpeg b/src/main/resources/static/assets/img/productimg/product7.jpeg new file mode 100644 index 0000000..01dd109 Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product7.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product8.jpeg b/src/main/resources/static/assets/img/productimg/product8.jpeg new file mode 100644 index 0000000..a890208 Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product8.jpeg differ diff --git a/src/main/resources/static/assets/img/productimg/product9.jpeg b/src/main/resources/static/assets/img/productimg/product9.jpeg new file mode 100644 index 0000000..be58e6d Binary files /dev/null and b/src/main/resources/static/assets/img/productimg/product9.jpeg differ diff --git a/src/main/resources/static/assets/img/profile.jpg b/src/main/resources/static/assets/img/profile.jpg new file mode 100644 index 0000000..13d4560 Binary files /dev/null and b/src/main/resources/static/assets/img/profile.jpg differ diff --git a/src/main/resources/static/assets/img/profile2.jpg b/src/main/resources/static/assets/img/profile2.jpg new file mode 100644 index 0000000..d13cf9d Binary files /dev/null and b/src/main/resources/static/assets/img/profile2.jpg differ diff --git a/src/main/resources/static/assets/img/sauro.jpg b/src/main/resources/static/assets/img/sauro.jpg new file mode 100644 index 0000000..e29aaaf Binary files /dev/null and b/src/main/resources/static/assets/img/sauro.jpg differ diff --git a/src/main/resources/static/assets/img/talha.jpg b/src/main/resources/static/assets/img/talha.jpg new file mode 100644 index 0000000..c0c7204 Binary files /dev/null and b/src/main/resources/static/assets/img/talha.jpg differ diff --git a/src/main/resources/static/assets/img/visa.svg b/src/main/resources/static/assets/img/visa.svg new file mode 100644 index 0000000..673c195 --- /dev/null +++ b/src/main/resources/static/assets/img/visa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/assets/js/ase/ase-jquery-framework.js b/src/main/resources/static/assets/js/ase/ase-jquery-framework.js new file mode 100644 index 0000000..f800c54 --- /dev/null +++ b/src/main/resources/static/assets/js/ase/ase-jquery-framework.js @@ -0,0 +1,210 @@ + +// 快速打印信息 +function ase_debug_log_info(message){ + const head = "[ASE JQuery Framework] INFO: "; + console.log(head + message) +} + +// 快速打印错误信息 +function ase_debug_log_error(message){ + const head = "[ASE JQuery Framework] Error "; + console.error(head + message) +} + +function ase_create_random_id() { + return (Math.random()*10000000).toString(16).substr(0,4) + +'-'+(new Date()).getTime() + +'-'+Math.random().toString().substr(2,5); +} + +// 获得一个HTML标签 +function ase_tag_getter(tag, id){ + return $(tag+"#"+id); +} + +// 获得一个input标签的内容 +function ase_input_content_getter(id){ + return ase_tag_getter("input", id).val(); +} + +// 在某个标签的内部追加一个标签 +function ase_tag_append(tag, id, tag_append) { + ase_tag_getter(tag, id).append(tag_append); +} + +// 在某个标签的后面追加一个标签 +function ase_tag_after(tag, id, tag_append) { + ase_tag_getter(tag, id).after(tag_append); +} + +// 获得一个div标签 +function ase_div_getter(id){ + return ase_tag_getter("div", id); +} + +// 在某个div内部追加一个标签 +function ase_div_append(id, tag_append) { + ase_tag_append("div", id, tag_append); +} + +// 修改标签的某个属性 +function ase_modify_attr(tag, attr_name, attr_value) { + tag.attr(attr_name, attr_value); +} + +// 修改标签的data-notify属性 +function ase_set_attr_data_notify(tag, value) { + ase_modify_attr(tag, 'data-notify', value); +} + +// 修改标签的data-notify-position属性 +function ase_set_attr_data_notify_position(tag, position) { + ase_modify_attr(tag, 'data-notify-position', position); +} + +// 给标签添加显示值 +function ase_set_show_text(tag, text) { + tag.html(text); + +} + +// 创建一个标签 +function ase_create_tag(tag, id) { + const new_tag = $("<" + tag + ">" + ""); + if(id !== undefined) { + ase_modify_attr(new_tag, 'id', id); + } + return new_tag; +} + +// 给标签指定css属性 +function ase_set_attr_style(tag, value) { + ase_modify_attr(tag, 'style', value); +} + +// 给标签指定class属性 +function ase_set_attr_class(tag, value) { + ase_modify_attr(tag, 'class', value); +} + +// 给标签添加class属性 +function ase_add_attr_class(tag, value){ + tag.addClass(value); +} + +// 给标签指定class属性 +function ase_set_attr_role(tag, value) { + ase_modify_attr(tag, 'role', value); +} + +// 获得一个提示气泡 +function ase_notification(type, title, message) { + $.notify({ + title :title, + message: message + },{ + type: type + }); +} + +// 将输入框设置为成功 +function ase_set_input_success(input_tag) { + if(input_tag.hasClass("has-error")){ + input_tag.removeClass("has-error"); + } + if(!input_tag.hasClass("has-success")){ + input_tag.addClass("has-success"); + } +} + +function ase_set_input_error(input_tag){ + if(input_tag.hasClass("has-success")){ + input_tag.removeClass("has-success"); + } + if(!input_tag.hasClass("has-error")){ + input_tag.addClass("has-error"); + } +} + +// 装饰ajax回调函数 +function callback_decorator(callback){ + if(!callback.hasOwnProperty("success")){ + ase_debug_log_info("Function Callback NULL") + callback.success = function (result) { + + } + } + + if(!callback.hasOwnProperty("error")){ + ase_debug_log_info("the error callback is null") + callback.error = function (result) { + ase_debug_log_info("Post Request Error Occurred"); + }; + } + // 对成功调用返回进行装饰 + callback.success = request_success_callback_decorator(callback.success); + return callback; +} + +function ase_serialize_object(form) +{ + const o = {}; + const a = form.serializeArray(); + $.each(a, function() { + if (o[this.name] !== undefined) { + if (!o[this.name].push) { + o[this.name] = [o[this.name]]; + } + o[this.name].push(this.value || ''); + } else { + o[this.name] = this.value || ''; + } + }); + return o; +} + + +// 快速以post方式提交表单 +function ase_form_post(url ,id, callback){ + callback = callback_decorator(callback); + const form_object = ase_serialize_object(ase_tag_getter("form", id)); + form_object.checkType = "From"; + $.ajax({ + type: "POST", + dataType: "json", + url: url , + data: { json: JSON.stringify(form_object) }, + success: callback.success, + error : callback.error, + }); +} + +// 快速给服务器以POST方法传递对象 +function ase_post_object(url, object, callback){ + callback = callback_decorator(callback); + + $.ajax({ + type: "POST", + dataType: "json", + url: url , + data: { json: JSON.stringify(object) }, + success: callback.success, + error : callback.error, + }); +} + +// 对成功返回的回调函数进行装饰 +function request_success_callback_decorator(callback){ + return function (result) { + if(result.status === "failed"){ + ase_system_status_checker(result) + } + else callback(result); + } +} + +// 对服务器返回的状态进行检查 +function ase_system_status_checker(result) { + ase_debug_log_error("Request Failed."); + ase_debug_log_error(result); +} \ No newline at end of file diff --git a/src/main/resources/static/assets/js/ase/ase-login.js b/src/main/resources/static/assets/js/ase/ase-login.js new file mode 100644 index 0000000..a053974 --- /dev/null +++ b/src/main/resources/static/assets/js/ase/ase-login.js @@ -0,0 +1,48 @@ +$(document).ready(function () { + // 当自动查询用户名是否有效 + $("input#username").on("input",function () { + let studentId = $("input#username").val(); + if(studentId.length === 10) { + check_username(); + } + else if(studentId.length > 10){ + + } + }); +}); + +function notify_check() { + ase_notification("danger", "提示", "账号或密码错误"); +} + +function login() { + ase_form_post("/login/process","login-form", { + success : function (result) { + console.log(result); + }, + error : function (result) { + console.log("FAIL!!!"); + } + }) +} + +function check_username(){ + const checker = { + "checkType": "UsernameExistChecker", + "username": $("input#username").val(), + "password":"", + }; + + ase_post_object("/login/check", checker, { + success: function (result) { + console.log(result); + const usernameGroup = $("div#username-group"); + if(result.userExist === true) { + ase_set_input_success(usernameGroup); + } + else{ + ase_set_input_error(usernameGroup); + } + } + }); +} \ No newline at end of file diff --git a/src/main/resources/static/assets/js/atlantis.js b/src/main/resources/static/assets/js/atlantis.js new file mode 100644 index 0000000..099d5e4 --- /dev/null +++ b/src/main/resources/static/assets/js/atlantis.js @@ -0,0 +1,389 @@ +"use strict"; + +$(".nav-search .input-group > input").focus(function(e){ + $(this).parent().addClass("focus"); +}).blur(function(e){ + $(this).parent().removeClass("focus"); +}); + +$(function () { + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover(); + layoutsColors(); +}); + +function layoutsColors(){ + if($('.sidebar').is('[data-background-color]')) { + $('html').addClass('sidebar-color'); + } else { + $('html').removeClass('sidebar-color'); + } + + if($('body').is('[data-image]')) { + $('body').css('background-image', 'url("' + $('body').attr('data-image') + '")'); + } else { + $('body').css('background-image', ''); + } +} + +function legendClickCallback(event) { + event = event || window.event; + + var target = event.target || event.srcElement; + while (target.nodeName !== 'LI') { + target = target.parentElement; + } + var parent = target.parentElement; + var chartId = parseInt(parent.classList[0].split("-")[0], 10); + var chart = Chart.instances[chartId]; + var index = Array.prototype.slice.call(parent.children).indexOf(target); + + chart.legend.options.onClick.call(chart, event, chart.legend.legendItems[index]); + if (chart.isDatasetVisible(index)) { + target.classList.remove('hidden'); + } else { + target.classList.add('hidden'); + } +} + +$(document).ready(function(){ + + $('.btn-refresh-card').on('click', function(){var e=$(this).parents(".card");e.length&&(e.addClass("is-loading"),setTimeout(function(){e.removeClass("is-loading")},3e3))}) + + var scrollbarDashboard = $('.sidebar .scrollbar'); + if (scrollbarDashboard.length > 0) { + scrollbarDashboard.scrollbar(); + } + + var contentScrollbar = $('.main-panel .content-scroll'); + if (contentScrollbar.length > 0) { + contentScrollbar.scrollbar(); + } + + var messagesScrollbar = $('.messages-scroll'); + if (messagesScrollbar.length > 0) { + messagesScrollbar.scrollbar(); + } + + var tasksScrollbar = $('.tasks-scroll'); + if (tasksScrollbar.length > 0) { + tasksScrollbar.scrollbar(); + } + + var quickScrollbar = $('.quick-scroll'); + if (quickScrollbar.length > 0) { + quickScrollbar.scrollbar(); + } + + var messageNotifScrollbar = $('.message-notif-scroll'); + if (messageNotifScrollbar.length > 0) { + messageNotifScrollbar.scrollbar(); + } + + var notifScrollbar = $('.notif-scroll'); + if (notifScrollbar.length > 0) { + notifScrollbar.scrollbar(); + } + + var quickActionsScrollbar = $('.quick-actions-scroll'); + if (quickActionsScrollbar.length > 0) { + quickActionsScrollbar.scrollbar(); + } + + var userScrollbar = $('.dropdown-user-scroll'); + if (userScrollbar.length > 0) { + userScrollbar.scrollbar(); + } + + $('.scroll-bar').draggable(); + + $('#search-nav').on('shown.bs.collapse', function () { + $('.nav-search .form-control').focus(); + }); + + var toggle_sidebar = false, + toggle_quick_sidebar = false, + toggle_topbar = false, + minimize_sidebar = false, + toggle_page_sidebar = false, + toggle_overlay_sidebar = false, + nav_open = 0, + quick_sidebar_open = 0, + topbar_open = 0, + mini_sidebar = 0, + page_sidebar_open = 0, + overlay_sidebar_open = 0; + + + if(!toggle_sidebar) { + var toggle = $('.sidenav-toggler'); + + toggle.on('click', function(){ + if (nav_open == 1){ + $('html').removeClass('nav_open'); + toggle.removeClass('toggled'); + nav_open = 0; + } else { + $('html').addClass('nav_open'); + toggle.addClass('toggled'); + nav_open = 1; + } + }); + toggle_sidebar = true; + } + + if(!quick_sidebar_open) { + var toggle = $('.quick-sidebar-toggler'); + + toggle.on('click', function(){ + if (nav_open == 1){ + $('html').removeClass('quick_sidebar_open'); + $('.quick-sidebar-overlay').remove(); + toggle.removeClass('toggled'); + quick_sidebar_open = 0; + } else { + $('html').addClass('quick_sidebar_open'); + toggle.addClass('toggled'); + $('
').insertAfter('.quick-sidebar'); + quick_sidebar_open = 1; + } + }); + + $('.wrapper').mouseup(function(e) + { + var subject = $('.quick-sidebar'); + + if(e.target.className != subject.attr('class') && !subject.has(e.target).length) + { + $('html').removeClass('quick_sidebar_open'); + $('.quick-sidebar-toggler').removeClass('toggled'); + $('.quick-sidebar-overlay').remove(); + quick_sidebar_open = 0; + } + }); + + $(".close-quick-sidebar").on('click', function(){ + $('html').removeClass('quick_sidebar_open'); + $('.quick-sidebar-toggler').removeClass('toggled'); + $('.quick-sidebar-overlay').remove(); + quick_sidebar_open = 0; + }); + + quick_sidebar_open = true; + } + + if(!toggle_topbar) { + var topbar = $('.topbar-toggler'); + + topbar.on('click', function() { + if (topbar_open == 1) { + $('html').removeClass('topbar_open'); + topbar.removeClass('toggled'); + topbar_open = 0; + } else { + $('html').addClass('topbar_open'); + topbar.addClass('toggled'); + topbar_open = 1; + } + }); + toggle_topbar = true; + } + + if(!minimize_sidebar){ + var minibutton = $('.toggle-sidebar'); + if($('.wrapper').hasClass('sidebar_minimize')){ + mini_sidebar = 1; + minibutton.addClass('toggled'); + minibutton.html(''); + } + + minibutton.on('click', function() { + if (mini_sidebar == 1) { + $('.wrapper').removeClass('sidebar_minimize'); + minibutton.removeClass('toggled'); + minibutton.html(''); + mini_sidebar = 0; + } else { + $('.wrapper').addClass('sidebar_minimize'); + minibutton.addClass('toggled'); + minibutton.html(''); + mini_sidebar = 1; + } + $(window).resize(); + }); + minimize_sidebar = true; + } + + if(!toggle_page_sidebar) { + var pageSidebarToggler = $('.page-sidebar-toggler'); + + pageSidebarToggler.on('click', function() { + if (page_sidebar_open == 1) { + $('html').removeClass('pagesidebar_open'); + pageSidebarToggler.removeClass('toggled'); + page_sidebar_open = 0; + } else { + $('html').addClass('pagesidebar_open'); + pageSidebarToggler.addClass('toggled'); + page_sidebar_open = 1; + } + }); + + var pageSidebarClose = $('.page-sidebar .back'); + + pageSidebarClose.on('click', function() { + $('html').removeClass('pagesidebar_open'); + pageSidebarToggler.removeClass('toggled'); + page_sidebar_open = 0; + }); + + toggle_page_sidebar = true; + } + + if(!toggle_overlay_sidebar){ + var overlaybutton = $('.sidenav-overlay-toggler'); + if($('.wrapper').hasClass('is-show')){ + overlay_sidebar_open = 1; + overlaybutton.addClass('toggled'); + overlaybutton.html(''); + } + + overlaybutton.on('click', function() { + if (overlay_sidebar_open == 1) { + $('.wrapper').removeClass('is-show'); + overlaybutton.removeClass('toggled'); + overlaybutton.html(''); + overlay_sidebar_open = 0; + } else { + $('.wrapper').addClass('is-show'); + overlaybutton.addClass('toggled'); + overlaybutton.html(''); + overlay_sidebar_open = 1; + } + $(window).resize(); + }); + minimize_sidebar = true; + } + + $('.sidebar').hover(function() { + if ($('.wrapper').hasClass('sidebar_minimize')){ + $('.wrapper').addClass('sidebar_minimize_hover'); + } + }, function(){ + if ($('.wrapper').hasClass('sidebar_minimize')){ + $('.wrapper').removeClass('sidebar_minimize_hover'); + } + }); + + // addClass if nav-item click and has subnav + + $(".nav-item a").on('click', (function(){ + if ( $(this).parent().find('.collapse').hasClass("show") ) { + $(this).parent().removeClass('submenu'); + } else { + $(this).parent().addClass('submenu'); + } + })); + + + //Chat Open + $('.messages-contact .user a').on('click', function(){ + $('.tab-chat').addClass('show-chat') + }); + + $('.messages-wrapper .return').on('click', function(){ + $('.tab-chat').removeClass('show-chat') + }); + + //select all + $('[data-select="checkbox"]').change(function(){ + var target = $(this).attr('data-target'); + $(target).prop('checked', $(this).prop("checked")); + }) + + //form-group-default active if input focus + $(".form-group-default .form-control").focus(function(){ + $(this).parent().addClass("active"); + }).blur(function(){ + $(this).parent().removeClass("active"); + }) + +}); + +// Input File Image + +function readURL(input) { + if (input.files && input.files[0]) { + var reader = new FileReader(); + + reader.onload = function (e) { + $(input).parent('.input-file-image').find('.img-upload-preview').attr('src', e.target.result); + } + + reader.readAsDataURL(input.files[0]); + } +} + +$('.input-file-image input[type="file"').change(function () { + readURL(this); +}); + +// Show Password + +function showPassword(button) { + var inputPassword = $(button).parent().find('input'); + if (inputPassword.attr('type') === "password") { + inputPassword.attr('type', 'text'); + } else { + inputPassword.attr('type','password'); + } +} + +$('.show-password').on('click', function(){ + showPassword(this); +}) + +// Sign In & Sign Up +var containerSignIn = $('.container-login'), +containerSignUp = $('.container-signup'), +showSignIn = true, +showSignUp = false; + +function changeContainer(){ + if(showSignIn == true){ + containerSignIn.css('display', 'block') + } else { + containerSignIn.css('display', 'none') + } + + if(showSignUp == true){ + containerSignUp.css('display', 'block') + } else { + containerSignUp.css('display', 'none') + } +} + +$('#show-signup').on('click', function(){ + showSignUp = true; + showSignIn = false; + changeContainer(); +}) + +$('#show-signin').on('click', function(){ + showSignUp = false; + showSignIn = true; + changeContainer(); +}) + +changeContainer(); + +//Input with Floating Label + +$('.form-floating-label .form-control').keyup(function(){ + if($(this).val() !== '') { + $(this).addClass('filled'); + } else { + $(this).removeClass('filled'); + } +}) + diff --git a/src/main/resources/static/assets/js/atlantis.min.js b/src/main/resources/static/assets/js/atlantis.min.js new file mode 100644 index 0000000..7d3840d --- /dev/null +++ b/src/main/resources/static/assets/js/atlantis.min.js @@ -0,0 +1 @@ +"use strict";function layoutsColors(){$(".sidebar").is("[data-background-color]")?$("html").addClass("sidebar-color"):$("html").removeClass("sidebar-color"),$("body").is("[data-image]")?$("body").css("background-image",'url("'+$("body").attr("data-image")+'")'):$("body").css("background-image","")}function legendClickCallback(a){for(var e=(a=a||window.event).target||a.srcElement;"LI"!==e.nodeName;)e=e.parentElement;var s=e.parentElement,o=parseInt(s.classList[0].split("-")[0],10),i=Chart.instances[o],n=Array.prototype.slice.call(s.children).indexOf(e);i.legend.options.onClick.call(i,a,i.legend.legendItems[n]),i.isDatasetVisible(n)?e.classList.remove("hidden"):e.classList.add("hidden")}function readURL(a){if(a.files&&a.files[0]){var e=new FileReader;e.onload=function(e){$(a).parent(".input-file-image").find(".img-upload-preview").attr("src",e.target.result)},e.readAsDataURL(a.files[0])}}function showPassword(a){var e=$(a).parent().find("input");"password"===e.attr("type")?e.attr("type","text"):e.attr("type","password")}function changeContainer(){1==showSignIn?containerSignIn.css("display","block"):containerSignIn.css("display","none"),1==showSignUp?containerSignUp.css("display","block"):containerSignUp.css("display","none")}$(".nav-search .input-group > input").focus(function(a){$(this).parent().addClass("focus")}).blur(function(a){$(this).parent().removeClass("focus")}),$(function(){$('[data-toggle="tooltip"]').tooltip(),$('[data-toggle="popover"]').popover(),layoutsColors()}),$(document).ready(function(){$(".btn-refresh-card").on("click",function(){var a=$(this).parents(".card");a.length&&(a.addClass("is-loading"),setTimeout(function(){a.removeClass("is-loading")},3e3))});var a=$(".sidebar .scrollbar");a.length>0&&a.scrollbar();var e=$(".main-panel .content-scroll");e.length>0&&e.scrollbar();var s=$(".messages-scroll");s.length>0&&s.scrollbar();var o=$(".tasks-scroll");o.length>0&&o.scrollbar();var i=$(".quick-scroll");i.length>0&&i.scrollbar();var n=$(".message-notif-scroll");n.length>0&&n.scrollbar();var r=$(".notif-scroll");r.length>0&&r.scrollbar();var l=$(".quick-actions-scroll");l.length>0&&l.scrollbar();var t=$(".dropdown-user-scroll");t.length>0&&t.scrollbar(),$(".scroll-bar").draggable(),$("#search-nav").on("shown.bs.collapse",function(){$(".nav-search .form-control").focus()});var c=!1,d=!1,g=!1,p=!1,h=0,m=0,u=0,v=0,f=0,b=0;if(!c){(C=$(".sidenav-toggler")).on("click",function(){1==h?($("html").removeClass("nav_open"),C.removeClass("toggled"),h=0):($("html").addClass("nav_open"),C.addClass("toggled"),h=1)}),c=!0}if(!m){var C=$(".quick-sidebar-toggler");C.on("click",function(){1==h?($("html").removeClass("quick_sidebar_open"),$(".quick-sidebar-overlay").remove(),C.removeClass("toggled"),m=0):($("html").addClass("quick_sidebar_open"),C.addClass("toggled"),$('
').insertAfter(".quick-sidebar"),m=1)}),$(".wrapper").mouseup(function(a){var e=$(".quick-sidebar");a.target.className==e.attr("class")||e.has(a.target).length||($("html").removeClass("quick_sidebar_open"),$(".quick-sidebar-toggler").removeClass("toggled"),$(".quick-sidebar-overlay").remove(),m=0)}),$(".close-quick-sidebar").on("click",function(){$("html").removeClass("quick_sidebar_open"),$(".quick-sidebar-toggler").removeClass("toggled"),$(".quick-sidebar-overlay").remove(),m=0}),m=!0}if(!d){var w=$(".topbar-toggler");w.on("click",function(){1==u?($("html").removeClass("topbar_open"),w.removeClass("toggled"),u=0):($("html").addClass("topbar_open"),w.addClass("toggled"),u=1)}),d=!0}if(!g){var k=$(".toggle-sidebar");$(".wrapper").hasClass("sidebar_minimize")&&(v=1,k.addClass("toggled"),k.html('')),k.on("click",function(){1==v?($(".wrapper").removeClass("sidebar_minimize"),k.removeClass("toggled"),k.html(''),v=0):($(".wrapper").addClass("sidebar_minimize"),k.addClass("toggled"),k.html(''),v=1),$(window).resize()}),g=!0}if(!p){var _=$(".page-sidebar-toggler");_.on("click",function(){1==f?($("html").removeClass("pagesidebar_open"),_.removeClass("toggled"),f=0):($("html").addClass("pagesidebar_open"),_.addClass("toggled"),f=1)});$(".page-sidebar .back").on("click",function(){$("html").removeClass("pagesidebar_open"),_.removeClass("toggled"),f=0}),p=!0}var y=$(".sidenav-overlay-toggler");$(".wrapper").hasClass("is-show")&&(b=1,y.addClass("toggled"),y.html('')),y.on("click",function(){1==b?($(".wrapper").removeClass("is-show"),y.removeClass("toggled"),y.html(''),b=0):($(".wrapper").addClass("is-show"),y.addClass("toggled"),y.html(''),b=1),$(window).resize()}),g=!0,$(".sidebar").hover(function(){$(".wrapper").hasClass("sidebar_minimize")&&$(".wrapper").addClass("sidebar_minimize_hover")},function(){$(".wrapper").hasClass("sidebar_minimize")&&$(".wrapper").removeClass("sidebar_minimize_hover")}),$(".nav-item a").on("click",function(){$(this).parent().find(".collapse").hasClass("show")?$(this).parent().removeClass("submenu"):$(this).parent().addClass("submenu")}),$(".messages-contact .user a").on("click",function(){$(".tab-chat").addClass("show-chat")}),$(".messages-wrapper .return").on("click",function(){$(".tab-chat").removeClass("show-chat")}),$('[data-select="checkbox"]').change(function(){var a=$(this).attr("data-target");$(a).prop("checked",$(this).prop("checked"))}),$(".form-group-default .form-control").focus(function(){$(this).parent().addClass("active")}).blur(function(){$(this).parent().removeClass("active")})}),$('.input-file-image input[type="file"').change(function(){readURL(this)}),$(".show-password").on("click",function(){showPassword(this)});var containerSignIn=$(".container-login"),containerSignUp=$(".container-signup"),showSignIn=!0,showSignUp=!1;$("#show-signup").on("click",function(){showSignUp=!0,showSignIn=!1,changeContainer()}),$("#show-signin").on("click",function(){showSignUp=!1,showSignIn=!0,changeContainer()}),changeContainer(),$(".form-floating-label .form-control").keyup(function(){""!==$(this).val()?$(this).addClass("filled"):$(this).removeClass("filled")}); \ No newline at end of file diff --git a/src/main/resources/static/assets/js/atlantis2.js b/src/main/resources/static/assets/js/atlantis2.js new file mode 100644 index 0000000..23ac291 --- /dev/null +++ b/src/main/resources/static/assets/js/atlantis2.js @@ -0,0 +1,449 @@ +"use strict"; + +$(".nav-search .input-group > input").focus(function(e){ + $(this).parent().addClass("focus"); +}).blur(function(e){ + $(this).parent().removeClass("focus"); +}); + +$(function () { + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover(); + layoutsColors(); +}); + +function layoutsColors(){ + if($('.sidebar').is('[data-background-color]')) { + $('html').addClass('sidebar-color'); + } else { + $('html').removeClass('sidebar-color'); + } +} + +function legendClickCallback(event) { + event = event || window.event; + + var target = event.target || event.srcElement; + while (target.nodeName !== 'LI') { + target = target.parentElement; + } + var parent = target.parentElement; + var chartId = parseInt(parent.classList[0].split("-")[0], 10); + var chart = Chart.instances[chartId]; + var index = Array.prototype.slice.call(parent.children).indexOf(target); + + chart.legend.options.onClick.call(chart, event, chart.legend.legendItems[index]); + if (chart.isDatasetVisible(index)) { + target.classList.remove('hidden'); + } else { + target.classList.add('hidden'); + } +} + +$(document).ready(function(){ + + $('.btn-refresh-card').on('click', function(){var e=$(this).parents(".card");e.length&&(e.addClass("is-loading"),setTimeout(function(){e.removeClass("is-loading")},3e3))}) + + var scrollbarDashboard = $('.sidebar .scrollbar'); + if (scrollbarDashboard.length > 0) { + scrollbarDashboard.scrollbar(); + } + + var contentScrollbar = $('.main-panel .content-scroll'); + if (contentScrollbar.length > 0) { + contentScrollbar.scrollbar(); + } + + var messagesScrollbar = $('.messages-scroll.scrollbar-outer'); + if (messagesScrollbar.length > 0) { + messagesScrollbar.scrollbar(); + } + + var tasksScrollbar = $('.tasks-scroll.scrollbar-outer'); + if (tasksScrollbar.length > 0) { + tasksScrollbar.scrollbar(); + } + + var quickScrollbar = $('.quick-scroll'); + if (quickScrollbar.length > 0) { + quickScrollbar.scrollbar(); + } + + var messageNotifScrollbar = $('.message-notif-scroll'); + if (messageNotifScrollbar.length > 0) { + messageNotifScrollbar.scrollbar(); + } + + var notifScrollbar = $('.notif-scroll'); + if (notifScrollbar.length > 0) { + notifScrollbar.scrollbar(); + } + + var quickActionsScrollbar = $('.quick-actions-scroll'); + if (quickActionsScrollbar.length > 0) { + quickActionsScrollbar.scrollbar(); + } + + var userScrollbar = $('.dropdown-user-scroll'); + if (userScrollbar.length > 0) { + userScrollbar.scrollbar(); + } + + $('.scroll-bar').draggable(); + + $('#search-nav').on('shown.bs.collapse', function () { + $('.nav-search .form-control').focus(); + }); + + var toggle_sidebar = false, + toggle_sidebar2 = false, + toggle_quick_sidebar = false, + toggle_topbar = false, + minimize_sidebar = false, + toggle_page_sidebar = false, + toggle_overlay_sidebar = false, + nav_open = 0, + quick_sidebar_open = 0, + topbar_open = 0, + mini_sidebar = 0, + page_sidebar_open = 0, + overlay_sidebar_open = 0; + + + if(!toggle_sidebar && $('.sidenav-toggler').length) { + var toggle = $('.sidenav-toggler'); + + toggle.on('click', function(){ + if (nav_open == 1){ + $('html').removeClass('nav_open'); + $('.body-overlay').remove(); + toggle.removeClass('toggled'); + nav_open = 0; + } else { + $('html').addClass('nav_open'); + $('
').insertAfter('.nav-bottom'); + toggle.addClass('toggled'); + nav_open = 1; + } + }); + + $('.wrapper').mouseup(function(e) + { + var subject = $('.nav-bottom'); + + if(e.target.className != subject.attr('class') && !subject.has(e.target).length) + { + $('html').removeClass('nav_open'); + $('.body-overlay').remove(); + toggle.removeClass('toggled'); + nav_open = 0; + } + }); + + $(".nav-bottom .close-menu").on('click', function(){ + $('html').removeClass('nav_open'); + $('.body-overlay').remove(); + toggle.removeClass('toggled'); + nav_open = 0; + }); + + toggle_sidebar = true; + } + + if(!toggle_sidebar2 && $('.sidenav-toggler2').length) { + var toggle = $('.sidenav-toggler2'); + + toggle.on('click', function(){ + if (nav_open == 1){ + $('html').removeClass('nav_open'); + $('.body-overlay').remove(); + toggle.removeClass('toggled'); + nav_open = 0; + } else { + $('html').addClass('nav_open'); + $('
').insertAfter('.page-navigation'); + toggle.addClass('toggled'); + nav_open = 1; + } + }); + + $('.wrapper').mouseup(function(e) + { + var subject = $('.navbar-header-left'); + + if(e.target.className != subject.attr('class') && !subject.has(e.target).length) + { + $('html').removeClass('nav_open'); + $('.body-overlay').remove(); + toggle.removeClass('toggled'); + nav_open = 0; + } + }); + + $(".page-navigation .close-menu").on('click', function(){ + $('html').removeClass('nav_open'); + $('.body-overlay').remove(); + toggle.removeClass('toggled'); + nav_open = 0; + }); + + toggle_sidebar2 = true; + } + + if(!quick_sidebar_open) { + var toggle = $('.quick-sidebar-toggler'); + + toggle.on('click', function(){ + if (nav_open == 1){ + $('html').removeClass('quick_sidebar_open'); + $('.quick-sidebar-overlay').remove(); + toggle.removeClass('toggled'); + quick_sidebar_open = 0; + } else { + $('html').addClass('quick_sidebar_open'); + toggle.addClass('toggled'); + $('
').insertAfter('.quick-sidebar'); + quick_sidebar_open = 1; + } + }); + + $('.wrapper').mouseup(function(e) + { + var subject = $('.quick-sidebar'); + + if(e.target.className != subject.attr('class') && !subject.has(e.target).length) + { + $('html').removeClass('quick_sidebar_open'); + $('.quick-sidebar-toggler').removeClass('toggled'); + $('.quick-sidebar-overlay').remove(); + quick_sidebar_open = 0; + } + }); + + $(".close-quick-sidebar").on('click', function(){ + $('html').removeClass('quick_sidebar_open'); + $('.quick-sidebar-toggler').removeClass('toggled'); + $('.quick-sidebar-overlay').remove(); + quick_sidebar_open = 0; + }); + + quick_sidebar_open = true; + } + + if(!toggle_topbar) { + var topbar = $('.topbar-toggler'); + + topbar.on('click', function() { + if (topbar_open == 1) { + $('html').removeClass('topbar_open'); + topbar.removeClass('toggled'); + topbar_open = 0; + } else { + $('html').addClass('topbar_open'); + topbar.addClass('toggled'); + topbar_open = 1; + } + }); + toggle_topbar = true; + } + + if(!minimize_sidebar){ + var minibutton = $('.toggle-sidebar'); + if($('.wrapper').hasClass('sidebar_minimize')){ + mini_sidebar = 1; + minibutton.addClass('toggled'); + minibutton.html(''); + } + + minibutton.on('click', function() { + if (mini_sidebar == 1) { + $('.wrapper').removeClass('sidebar_minimize'); + minibutton.removeClass('toggled'); + minibutton.html(''); + mini_sidebar = 0; + } else { + $('.wrapper').addClass('sidebar_minimize'); + minibutton.addClass('toggled'); + minibutton.html(''); + mini_sidebar = 1; + } + $(window).resize(); + }); + minimize_sidebar = true; + } + + if(!toggle_page_sidebar) { + var pageSidebarToggler = $('.page-sidebar-toggler'); + + pageSidebarToggler.on('click', function() { + if (page_sidebar_open == 1) { + $('html').removeClass('pagesidebar_open'); + pageSidebarToggler.removeClass('toggled'); + page_sidebar_open = 0; + } else { + $('html').addClass('pagesidebar_open'); + pageSidebarToggler.addClass('toggled'); + page_sidebar_open = 1; + } + }); + + var pageSidebarClose = $('.page-sidebar .back'); + + pageSidebarClose.on('click', function() { + $('html').removeClass('pagesidebar_open'); + pageSidebarToggler.removeClass('toggled'); + page_sidebar_open = 0; + }); + + toggle_page_sidebar = true; + } + + if(!toggle_overlay_sidebar){ + var overlaybutton = $('.sidenav-overlay-toggler'); + if($('.wrapper').hasClass('is-show')){ + overlay_sidebar_open = 1; + overlaybutton.addClass('toggled'); + overlaybutton.html(''); + } + + overlaybutton.on('click', function() { + if (overlay_sidebar_open == 1) { + $('.wrapper').removeClass('is-show'); + overlaybutton.removeClass('toggled'); + overlaybutton.html(''); + overlay_sidebar_open = 0; + } else { + $('.wrapper').addClass('is-show'); + overlaybutton.addClass('toggled'); + overlaybutton.html(''); + overlay_sidebar_open = 1; + } + $(window).resize(); + }); + minimize_sidebar = true; + } + + $('.sidebar').hover(function() { + if ($('.wrapper').hasClass('sidebar_minimize')){ + $('.wrapper').addClass('sidebar_minimize_hover'); + } + }, function(){ + if ($('.wrapper').hasClass('sidebar_minimize')){ + $('.wrapper').removeClass('sidebar_minimize_hover'); + } + }); + + //Chat Open + $('.messages-contact .user a').on('click', function(){ + $('.tab-chat').addClass('show-chat') + }); + + $('.messages-wrapper .return').on('click', function(){ + $('.tab-chat').removeClass('show-chat') + }); + + //select all + $('[data-select="checkbox"]').change(function(){ + var target = $(this).attr('data-target'); + $(target).prop('checked', $(this).prop("checked")); + }) + + //form-group-default active if input focus + $(".form-group-default .form-control").focus(function(){ + $(this).parent().addClass("active"); + }).blur(function(){ + $(this).parent().removeClass("active"); + }) + +}); + +// Navigation in mobile menu on click +var navItemClicked = $('.page-navigation > .nav-item'); +navItemClicked.on("click", function(e) { + if(window.matchMedia('(max-width: 991px)').matches) { + if(!($(this).hasClass('show-submenu'))) { + navItemClicked.removeClass('show-submenu'); + $(this).addClass('show-submenu'); + } else { + $(this).removeClass('show-submenu'); + } + } +}); + +// Input File Image + +function readURL(input) { + if (input.files && input.files[0]) { + var reader = new FileReader(); + + reader.onload = function (e) { + $(input).parent('.input-file-image').find('.img-upload-preview').attr('src', e.target.result); + } + + reader.readAsDataURL(input.files[0]); + } +} + +$('.input-file-image input[type="file"').change(function () { + readURL(this); +}); + +// Show Password + +function showPassword(button) { + var inputPassword = $(button).parent().find('input'); + if (inputPassword.attr('type') === "password") { + inputPassword.attr('type', 'text'); + } else { + inputPassword.attr('type','password'); + } +} + +$('.show-password').on('click', function(){ + showPassword(this); +}) + +// Sign In & Sign Up +var containerSignIn = $('.container-login'), +containerSignUp = $('.container-signup'), +showSignIn = true, +showSignUp = false; + +function changeContainer(){ + if(showSignIn == true){ + containerSignIn.css('display', 'block') + } else { + containerSignIn.css('display', 'none') + } + + if(showSignUp == true){ + containerSignUp.css('display', 'block') + } else { + containerSignUp.css('display', 'none') + } +} + +$('#show-signup').on('click', function(){ + showSignUp = true; + showSignIn = false; + changeContainer(); +}) + +$('#show-signin').on('click', function(){ + showSignUp = false; + showSignIn = true; + changeContainer(); +}) + +changeContainer(); + +//Input with Floating Label + +$('.form-floating-label .form-control').keyup(function(){ + if($(this).val() !== '') { + $(this).addClass('filled'); + } else { + $(this).removeClass('filled'); + } +}) + diff --git a/src/main/resources/static/assets/js/core/bootstrap.min.js b/src/main/resources/static/assets/js/core/bootstrap.min.js new file mode 100644 index 0000000..534d533 --- /dev/null +++ b/src/main/resources/static/assets/js/core/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:''}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/assets/js/core/jquery.3.2.1.min.js b/src/main/resources/static/assets/js/core/jquery.3.2.1.min.js new file mode 100644 index 0000000..644d35e --- /dev/null +++ b/src/main/resources/static/assets/js/core/jquery.3.2.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/huodong2.html b/src/main/resources/templates/huodong2.html new file mode 100644 index 0000000..ecf91e8 --- /dev/null +++ b/src/main/resources/templates/huodong2.html @@ -0,0 +1,626 @@ + + + + + + + + + + +
+创建活动 + + + +
+
+
+ + + + +
+ + + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +

+ + +

+ + +
+ + +
+ + + + + + + + +
+
+ +
+ + +
+
+ + + +
+ +
+ +
+ + + +
+
+ 筛选添加(不选默认为全选) +

+
+
+ + 职务: + + + + + +
+
+ + 学院和专业: + + 学院
+ 专业
+ +
+
+ + 班级: + + + +
+ +
+
+ + 性别: + + +
+ +
+

+ + + + + +

+
+
+
+ +
+ + + +
+
+ 筛选添加(不选默认为全选) +

+
+
职务: + + + + + +
+
学院和专业: + + 学院 +
+ + 专业 +
+
+
班级: + +
+
+
性别: + + +
+ +
+

+ + +

+
+
+ + + +
+
+ + +
+
+ + +
+ 报名开始时间: + + + + +
+ +
+ 报名持续时长: + + + +
+ + + +
+
+
+ +
+ +
+ 开始时间: + + + + +
+
+ 持续时长: + + + +
+ + + +
+
+ + +
+
+ 周期: + + 周 +
+ 哪一天开展活动: +
+ + + + + + + + +
+ + +
+
+
+ + + +
+
+ +
+ + + +
+
+ 筛选添加(不选默认为全选) +

+
+
职务: + + + + + +
+
学院和专业: + + 学院 +
+ + 专业 +
+
+
班级: + +
+
+
性别: + + +
+ +
+

+ + +

+
+
+ + + + +
+ + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/huodong3.html b/src/main/resources/templates/huodong3.html new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/templates/huodong4.html b/src/main/resources/templates/huodong4.html new file mode 100644 index 0000000..04d0b02 --- /dev/null +++ b/src/main/resources/templates/huodong4.html @@ -0,0 +1,387 @@ + + + + + + + + + +
+ +home + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html new file mode 100644 index 0000000..fe8927a --- /dev/null +++ b/src/main/resources/templates/index.html @@ -0,0 +1,537 @@ + + + +
+ + +
+
+
+
+ +
+
+
+
+
+
+

Dashboard

+
Free Bootstrap 4 Admin Dashboard
+
+ +
+
+
+
+
+
+
+
+
Overall statistics
+
Daily information about statistics in system
+
+
+
+
New Users
+
+
+
+
Sales
+
+
+
+
Subscribers
+
+
+
+
+
+
+
+
+
Total income & spend statistics
+
+
+
+
Total Income
+

$9.782

+
+
+
Total Spend
+

$1,248

+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
User Statistics
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
Daily Sales
+
March 25 - April 02
+
+
+
+

$4,578.58

+
+
+ +
+
+
+
+
+
+7%
+

213

+

Transactions

+
+
+
+
+
+
+
+
+
+
+
+
+

Users Geolocation

+
+ + + +
+
+

+ Map of the distribution of users around the world

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ indonesia +
+
Indonesia + 2.320 + + 42.18% +
+
+ united states +
+
USA + 240 + + 4.36% +
+
+ australia +
+
Australia + 119 + + 2.16% +
+
+ russia +
+
Russia + 1.081 + + 19.65% +
+
+ china +
+
China + 1.100 + + 20% +
+
+ brazil +
+
Brasil + 640 + + 11.63% +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Top Products
+
+
+
+
+ ... +
+
+
CSS
+ Cascading Style Sheets +
+
+

+$17

+
+
+
+
+
+ ... +
+
+
J.CO Donuts
+ The Best Donuts +
+
+

+$300

+
+
+
+
+
+ ... +
+
+
Ready Pro
+ Bootstrap 4 Admin Dashboard +
+
+

+$350

+
+
+
+
+ +
+
+
+
+
+
+
+
Suggested People
+
+
+
+ ... +
+
+
Jimmy Denis
+
Graphic Designer
+
+ +
+
+
+ ... +
+
+
Chad
+
CEO Zeleaf
+
+ +
+
+
+ ... +
+
+
Talha
+
Front End Designer
+
+ +
+
+
+ ... +
+
+
John Doe
+
Back End Developer
+
+ +
+
+
+ ... +
+
+
Talha
+
Front End Designer
+
+ +
+
+
+ ... +
+
+
Jimmy Denis
+
Graphic Designer
+
+ +
+
+
+
+
+
+
+
+

Active user right now

+

17

+

Page view per minutes

+
+

Top active pages

+
    +
  • /product/readypro/index.html 7
  • +
  • /product/atlantis/demo.html 10
  • +
+
+
+
+
+
+
+
+
+
Feed Activity
+
+
+
    +
  1. + + Responded to need "Volunteer opportunity" +
  2. +
  3. + + Added an interest "Volunteer Activities" +
  4. +
  5. + + Joined the group "Boardsmanship Forum" +
  6. +
  7. + + Responded to need "In-Kind Opportunity" +
  8. +
  9. + + Created need "Volunteer Opportunity" +
  10. +
  11. + + Attending the event "Some New Event" +
  12. +
+
+
+
+
+
+
+
+
Support Tickets
+
+ +
+
+
+
+
+
+ J +
+
+
Joko Subianto pending
+ I am facing some trouble with my viewport. When i start my +
+
+ 8:40 PM +
+
+
+
+
+ P +
+
+
Prabowo Widodo open
+ I have some query regarding the license issue. +
+
+ 1 Day Ago +
+
+
+
+
+ L +
+
+
Lee Chong Wei closed
+ Is there any update plan for RTL version near future? +
+
+ 2 Days Ago +
+
+
+
+
+ P +
+
+
Peter Parker open
+ I have some query regarding the license issue. +
+
+ 2 Day Ago +
+
+
+
+
+ L +
+
+
Logan Paul closed
+ Is there any update plan for RTL version near future? +
+
+ 2 Days Ago +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/information.html b/src/main/resources/templates/information.html new file mode 100644 index 0000000..27d7389 --- /dev/null +++ b/src/main/resources/templates/information.html @@ -0,0 +1,220 @@ + + + + + + + + + + +
+information + + + +
+
+
+ +
基本信息
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
姓名二狗子在校状态在校
学号2018303208身份学生
手机180892131811性别
班号14011809班级软件九班
专业软件工程学院软件学院
邮箱857331073@qq.com职务
+
统计信息
+ + + + + + + + + + + + + + + + + + + + + + + +
学分积学分积排名综合测评综测排名考勤次数考勤率活动参加数
1个表格单元格表格单元格表格单元格表格单元格表格单元格表格单元格
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/layout.html b/src/main/resources/templates/layout.html new file mode 100644 index 0000000..9e386e3 --- /dev/null +++ b/src/main/resources/templates/layout.html @@ -0,0 +1,737 @@ + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+
+ +
+
Settings
+
+
+
+

Logo Header

+
+ + + + + + + + +
+ + + + + + + +
+
+
+

Navbar Header

+
+ + + + + + + + +
+ + + + + + + +
+
+
+

Sidebar

+
+ + + +
+
+
+

Background

+
+ + + + +
+
+
+
+
+ +
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html new file mode 100644 index 0000000..4f94998 --- /dev/null +++ b/src/main/resources/templates/login.html @@ -0,0 +1,64 @@ + + + + + 全员育人系统登录 + + + + + + + + +
+
+
+

登录

+
+
+
+
+ +
+ + + + +
+ +
+
+ +
+ + + + +
+ +
+
+
+ +
+ +
+
+
+ +
+ 忘记密码 +     + 注册账号 +
+
+
+ + + + diff --git a/src/main/resources/templates/main.html b/src/main/resources/templates/main.html new file mode 100644 index 0000000..5a5df66 --- /dev/null +++ b/src/main/resources/templates/main.html @@ -0,0 +1,394 @@ + + + + + + + + + +
+ +main + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/not_found.html b/src/main/resources/templates/not_found.html new file mode 100644 index 0000000..6a4a8e1 --- /dev/null +++ b/src/main/resources/templates/not_found.html @@ -0,0 +1,31 @@ + + + +
+ +notfound + + + +
+
+ +
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/src/main/resources/templates/query.html b/src/main/resources/templates/query.html new file mode 100644 index 0000000..de567c1 --- /dev/null +++ b/src/main/resources/templates/query.html @@ -0,0 +1,11 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html new file mode 100644 index 0000000..ceb1ccd --- /dev/null +++ b/src/main/resources/templates/register.html @@ -0,0 +1,51 @@ + + + +
+ + +
+
+
+
+
+
+
+

注册

+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+ + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..d80081d --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/src/test/java/com/codesdream/ase/test/AchievementServiceTest.java b/src/test/java/com/codesdream/ase/test/AchievementServiceTest.java new file mode 100644 index 0000000..381f586 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/AchievementServiceTest.java @@ -0,0 +1,31 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.AchievementService; +import com.codesdream.ase.service.ActivityService; +import com.codesdream.ase.service.UserService; +import javafx.util.Pair; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +/** + * 成绩管理子系统单元测试 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +@ActiveProfiles("test") + +public class AchievementServiceTest { + + @Resource + private AchievementService achievementService; + + +} diff --git a/src/test/java/com/codesdream/ase/test/ActivityServiceTest.java b/src/test/java/com/codesdream/ase/test/ActivityServiceTest.java new file mode 100644 index 0000000..68cbc66 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/ActivityServiceTest.java @@ -0,0 +1,56 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.model.activity.Activity; +import com.codesdream.ase.model.activity.Report; +import com.codesdream.ase.model.permission.User; +import com.codesdream.ase.service.ActivityService; +import com.codesdream.ase.service.UserService; +import javafx.util.Pair; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@SpringBootTest +@RunWith(SpringRunner.class) +public class ActivityServiceTest { + @Resource + ActivityService activityService; + + @Resource + UserService userService; + + //Activity model的增删改查 + @Test + public void baseFuncTest(){ + User creator = new User(); + creator.setUsername("Tom"); + creator.setPassword("123456"); + creator.getUserAuth().setStudentID("2018303026"); + creator.getUserAuth().setMail("937447984@qq.com"); + creator.getUserAuth().setUserQuestion("Your favourite animal?"); + creator.getUserAuth().setUserAnswer("Cat"); + creator.getUserDetail().setAtSchool(true); + creator.getUserDetail().setRealName("张三"); + Pair checker = userService.checkIfUserExists("Tom"); + if(checker.getKey()){ + userService.delete(checker.getValue()); + } + creator = userService.save(creator); + Activity activity = new Activity(); + activity.setTitle("活动1"); + + activity.setCreator(creator); + activity.setType("lo"); + activity.setChiefManager(creator); + Report report = new Report(); + report.setTitle("活动1的报告"); + activity = activityService.save(activity); + activity = activityService.addReport(activity, report); + //activityService.delete(); + //Activity activity1 = new Activity("活动2"); + } + +} diff --git a/src/test/java/com/codesdream/ase/test/AseApplicationTests.java b/src/test/java/com/codesdream/ase/test/AseApplicationTests.java new file mode 100644 index 0000000..761d785 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/AseApplicationTests.java @@ -0,0 +1,13 @@ +package com.codesdream.ase.test; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class AseApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/src/test/java/com/codesdream/ase/test/AuthServiceTest.java b/src/test/java/com/codesdream/ase/test/AuthServiceTest.java new file mode 100644 index 0000000..ba50288 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/AuthServiceTest.java @@ -0,0 +1,28 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.service.AuthService; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ActiveProfiles("test") +public class AuthServiceTest { + + @Resource + private AuthService authService; + + // 测试随机验证码 + @Test + public void preValidationCodeCheckerTest(){ + String authStr = authService.preValidationCodeGetter(); + + Assert.assertTrue(authService.preValidationCodeChecker(authStr)); + } +} diff --git a/src/test/java/com/codesdream/ase/test/BaseInformationTest.java b/src/test/java/com/codesdream/ase/test/BaseInformationTest.java new file mode 100644 index 0000000..b52bffe --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/BaseInformationTest.java @@ -0,0 +1,41 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.component.ASESpringUtil; +import com.codesdream.ase.component.datamanager.DataExcelReader; +import com.codesdream.ase.component.datamanager.DataTable; +import com.codesdream.ase.service.IBaseInformationService; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@SpringBootTest +@RunWith(SpringRunner.class) +public class BaseInformationTest { + + @Resource + private IBaseInformationService informationService; + + @Resource + private ASESpringUtil springUtil; + + @Test + public void studentInfoImportTest() { + DataTable table = springUtil.getBean(DataTable.class); + table.importTable(new DataExcelReader("SoftInformation.xlsx")); + informationService.studentInfoImportFromDataTable(table); + } + + @Test + public void baseInformationBaseTest() { + Assert.assertTrue(informationService.checkAdministrativeDivision("广东省")); + Assert.assertEquals(informationService.findAdministrativeDivisionByName("广东").getName(), "广东省"); + Assert.assertTrue(informationService.checkCollege("软件学院")); + Assert.assertTrue(informationService.checkEthnic("汉族")); + Assert.assertTrue(informationService.checkMajor("软件工程")); + Assert.assertTrue(informationService.checkPoliticalStatus("群众")); + } +} diff --git a/src/test/java/com/codesdream/ase/test/DataManagerTest.java b/src/test/java/com/codesdream/ase/test/DataManagerTest.java new file mode 100644 index 0000000..e3065c5 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/DataManagerTest.java @@ -0,0 +1,203 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.component.ASESpringUtil; +import com.codesdream.ase.component.datamanager.*; +import com.codesdream.ase.repository.permission.UserRepository; +import lombok.extern.slf4j.Slf4j; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.io.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Optional; + +/** + * 测试DataModel相关查找器 + */ +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest +@ActiveProfiles("test") +public class DataManagerTest { + @Resource + ASESpringUtil springUtil; + + // Model 查找器测试 + @Test + public void dataModelSearcherTest() { + DataModelSearcher dataModelSearcher = springUtil.getBean(DataModelSearcher.class); + dataModelSearcher.getDataModelClass("permission", "Tag"); + Assert.assertTrue(dataModelSearcher.isPresent()); + + for(String param : dataModelSearcher.getDataModelParamArgs()){ + System.out.println(param); + } + + } + + // Repository 查找器测试 + @Test + public void dataModelRepositorySearcherTest(){ + DataModelRepositorySearcher dataModelRepositorySearcher = + springUtil.getBean(DataModelRepositorySearcher.class); + + dataModelRepositorySearcher.getDataModelRepositoryClass("permission", "User"); + Assert.assertTrue(dataModelRepositorySearcher.isPresent()); + UserRepository userRepository = dataModelRepositorySearcher.getDataModelRepositoryInstance(); + + } + + // 测试Excel导出功能 + @Test + public void dataExcelGeneratorTest(){ + DataExcelGenerator dataExcelGenerator = new DataExcelGenerator("DataExcelGeneratorTest.xlsx"); + + // 设置表头信息 + Collection titles = new ArrayList<>(); + titles.add("Name"); + titles.add("Sex"); + titles.add("Age"); + dataExcelGenerator.setTableTitle(titles); + + Collection dataCollection = new ArrayList<>(); + dataCollection.add("Tom"); + dataCollection.add("M"); + dataCollection.add("18"); + + dataExcelGenerator.insertRow(1, dataCollection); + dataExcelGenerator.insertRow(dataCollection); + + dataCollection.add("Tom"); + dataCollection.add("M"); + dataCollection.add("18"); + dataExcelGenerator.insertRowDataALL(dataCollection); + + // 保存数据 + dataExcelGenerator.save(); + + } + + // 测试Excel导入功能 + @Test + public void dataExcelReaderTest(){ + DataExcelReader dataExcelReader = new DataExcelReader("DataExcelGeneratorTest.xlsx"); + + // 从文件中读取数据 + dataExcelReader.readFile(); + // 读取表头信息 + Collection title = dataExcelReader.readColsTitle(); + // 读一行取数据 + Collection data = dataExcelReader.readRow(); + + Iterator iterator = title.iterator(); + Assert.assertEquals(iterator.next(), "Name"); + Assert.assertEquals(iterator.next(), "Sex"); + Assert.assertEquals(iterator.next(), "Age"); + + iterator = data.iterator(); + Assert.assertEquals(iterator.next(), "Tom"); + Assert.assertEquals(iterator.next(), "M"); + Assert.assertEquals(iterator.next(), "18"); + } + + + // Data Table 基本测试 + @Test + public void dataTableBaseTest(){ + DataTable table = springUtil.getBean(DataTable.class); + table.addColTitle("Name").addColTitle("Sex").addColTitle("Age"); + + + Collection dataCollection = new ArrayList<>(); + dataCollection.add("Tom"); + dataCollection.add("M"); + dataCollection.add("18"); + table.addRow(dataCollection); + dataCollection.clear(); + dataCollection.add("Pat"); + dataCollection.add("F"); + dataCollection.add("16"); + table.addRow(dataCollection); + + dataCollection = table.getRow(0); + Iterator iterator = dataCollection.iterator(); + Assert.assertEquals(iterator.next(), "Tom"); + Assert.assertEquals(iterator.next(), "M"); + Assert.assertEquals(iterator.next(), "18"); + + dataCollection = table.getRow(1); + iterator = dataCollection.iterator(); + Assert.assertEquals(iterator.next(), "Pat"); + Assert.assertEquals(iterator.next(), "F"); + Assert.assertEquals(iterator.next(), "16"); + } + + // Excel表格导入测试 + @Test + public void dataTableImportTest(){ + DataTable table = springUtil.getBean(DataTable.class); + table.importTable(new DataExcelReader("DataExcelGeneratorTest.xlsx")); + Collection dataCollection = table.getRow(0); + Iterator iterator = dataCollection.iterator(); + Assert.assertEquals(iterator.next(), "Tom"); + Assert.assertEquals(iterator.next(), "M"); + Assert.assertEquals(iterator.next(), "18"); + } + + // Excel表格导出测试 + @Test + public void dataTableExportTest(){ + DataTable table = springUtil.getBean(DataTable.class); + table.addColTitle("Name").addColTitle("Sex").addColTitle("Age"); + + + Collection dataCollection = new ArrayList<>(); + dataCollection.add("Tom"); + dataCollection.add("M"); + dataCollection.add("18"); + table.addRow(dataCollection); + dataCollection.clear(); + dataCollection.add("Pat"); + dataCollection.add("F"); + dataCollection.add("16"); + table.addRow(dataCollection); + + table.exportTable(new DataExcelGenerator("DataTableExport.xlsx")); + } + + // 字符串文件测试 + @Test + public void File2StringTest() throws IOException { + FileInputStream stream = new FileInputStream("test.pdf"); + + StringFileGenerator generator = springUtil.getBean(StringFileGenerator.class); + Optional file = generator.generateStringFile(stream); + + // 检查是否转换成功 + Assert.assertTrue(file.isPresent()); + // 检查字符串文件的校验功能 + Assert.assertTrue(generator.checkStringFile(file.get())); + + // 输出转化 + FileOutputStream outputStream = new FileOutputStream("testOut.pdf"); + InputStream inputStream = generator.readFileString(file.get()); + + // 输出文件 + int read = 0; + byte[] bytes = new byte[1024]; + while ((read = inputStream.read(bytes)) != -1) { + outputStream.write(bytes, 0, read); + } + + outputStream.close(); + } + + +} diff --git a/src/test/java/com/codesdream/ase/test/JSONFormValidatorTest.java b/src/test/java/com/codesdream/ase/test/JSONFormValidatorTest.java new file mode 100644 index 0000000..779f270 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/JSONFormValidatorTest.java @@ -0,0 +1,58 @@ +package com.codesdream.ase.test; + +import com.alibaba.fastjson.JSONObject; +import com.codesdream.ase.component.ASESpringUtil; +import com.codesdream.ase.configure.ActivityFormConfigure; +import com.codesdream.ase.exception.innerservererror.InvalidFormFormatException; +import com.codesdream.ase.validator.JSONFormValidator; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest +@ActiveProfiles("test") +public class JSONFormValidatorTest { + @Resource + ASESpringUtil aseSpringUtil; + + @Test + public void checkTest() throws InvalidFormFormatException { + Map map = new HashMap() {{ + put("creator", "tom"); + put("title", "haha"); + put("description", "h"); + put("cycle", "h"); + put("volunteers", "tom"); + put("participate", "tom"); + put("sign", "s"); + put("visible", "s"); + put("start-time", "1"); + put("remind", "1"); + put("enclosure", "1"); + put("chief-manager", "tom"); + put("assist-manager", "1"); + put("attendance", "1"); + put("type", "h"); + put("attendance", "aa"); + put("inform", "aaa"); + }}; + JSONObject jsonObject = new JSONObject(); + jsonObject.putAll(map); + Optional json = Optional.of(jsonObject); + ActivityFormConfigure activityFormConfigure = aseSpringUtil.getBean(ActivityFormConfigure.class); + JSONFormValidator jsonFormValidator = aseSpringUtil.getBean(JSONFormValidator.class); + if (jsonFormValidator.check(activityFormConfigure.getStdActivityForm(), json.get()).isEmpty()) { + System.out.println("error"); + } else System.out.println("ok"); + } +} diff --git a/src/test/java/com/codesdream/ase/test/PermissionServiceTest.java b/src/test/java/com/codesdream/ase/test/PermissionServiceTest.java new file mode 100644 index 0000000..f56ca04 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/PermissionServiceTest.java @@ -0,0 +1,63 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.model.permission.FunctionalPermissionContainer; +import com.codesdream.ase.model.permission.PermissionContainersCollection; +import com.codesdream.ase.model.permission.ScopePermissionContainer; +import com.codesdream.ase.model.permission.Tag; +import com.codesdream.ase.service.IPermissionService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + + +@SpringBootTest +@RunWith(SpringRunner.class) +@ActiveProfiles("test") +public class PermissionServiceTest { + + @Resource + private IPermissionService permissionService; + + @Test + public void PermissionServiceBaseTest(){ + FunctionalPermissionContainer fpc = permissionService.getDefaultFPC("活动管理权"); + fpc = permissionService.save(fpc); + + Tag tag1 = permissionService.getDefaultTag("九班班长"), + tag2 = permissionService.getDefaultTag("九班班委"), + tag3 = permissionService.getDefaultTag("九班普通学生"); + tag1 = permissionService.save(tag1); + tag2 = permissionService.save(tag2); + tag3 = permissionService.save(tag3); + + ScopePermissionContainer spc = permissionService.getDefaultSPC("九班全体学生"); + spc = permissionService.save(spc); + + PermissionContainersCollection pcc = permissionService.getDefaultPCC("九班班长权限容器集合"); + pcc = permissionService.save(pcc); + + // 给活动管理权赋予添加/参与/管理的权力 +/* fpc = permissionService.addRoleToFPC(fpc, "activity_create"); + fpc = permissionService.addRoleToFPC(fpc, "activity_participate"); + fpc = permissionService.addRoleToFPC(fpc, "activity_manage");*/ + + // 把九班班委加入到九班全体学生中 + spc = permissionService.addTagToSPC(spc, tag2); + // 将九班普通学生加入到九班全体学生中 + spc = permissionService.addTagToSPC(spc, tag3); + + // 把活动管理权赋予范围九班全体学生,加入到九班班长权限容器集合中 + pcc = permissionService.addRelationItemToPCC(pcc, fpc, spc); + // 将设置好的权限容器集合赋予九班班长 + tag1 = permissionService.addPCCToTag(tag1, pcc); + } + + @Test + public void PermissionServiceBaseTest2() { + + } +} diff --git a/src/test/java/com/codesdream/ase/test/UserTest.java b/src/test/java/com/codesdream/ase/test/UserTest.java new file mode 100644 index 0000000..4cab429 --- /dev/null +++ b/src/test/java/com/codesdream/ase/test/UserTest.java @@ -0,0 +1,86 @@ +package com.codesdream.ase.test; + +import com.codesdream.ase.model.permission.User; + +import static org.junit.Assert.*; + +import com.codesdream.ase.service.UserService; +import com.sun.org.apache.xpath.internal.operations.Bool; +import javafx.util.Pair; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import javax.swing.text.html.Option; +import java.util.Optional; + +/** + * 用户基本表单元测试 + * 用于测试数据库与DAO层交互是否通畅 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +@ActiveProfiles("test") +public class UserTest { + + @Resource + private UserService userService; + + /** + * 基本存储与查询测试 + */ + @Test + public void UserBaseTest_1(){ + User user = userService.getDefaultUser(); + user.setUsername("Tim"); + user.setPassword("123456"); + user.getUserAuth().setStudentID("2018303026"); + user.getUserAuth().setMail("937447984@qq.com"); + user.getUserAuth().setUserQuestion("Your favourite animal?"); + user.getUserAuth().setUserAnswer("Cat"); + user.getUserDetail().setAtSchool(true); + user.getUserDetail().setRealName("提姆"); + userService.save(user); + + Optional userOptional = userService.findUserByUsername("Tim"); + + assertTrue(userOptional.isPresent()); + user = userOptional.get(); + + assertEquals(user.getUsername(), "Tim"); + assertEquals(user.getPassword(), + "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"); + + // 检查账号状态 + assertTrue(user.isEnabled()); + assertFalse(user.isDeleted()); + assertTrue(user.isAccountNonExpired()); + assertTrue(user.isAccountNonLocked()); + assertTrue(user.isCredentialsNonExpired()); + assertEquals(user.getUserAuth().getStudentID(), "2018303026"); + assertEquals(user.getUserAuth().getMail(), "937447984@qq.com"); + assertEquals(user.getUserAuth().getUserQuestion(), "Your favourite animal?"); + assertEquals(user.getUserAuth().getUserAnswer(), "Cat"); + } + + @Test + public void UserBaseTest_2(){ + Optional userOptional = userService.findUserByUsername("Tim"); + assertTrue(userOptional.isPresent()); + User user = userOptional.get(); + + user.setEnabled(false); + user.getUserAuth().setMail("saturneric@163.com"); + user.getUserDetail().setRealName("张三丰"); + + user = userService.update(user); + + assertEquals(user.getUserAuth().getMail(), "saturneric@163.com"); + assertEquals(user.getUserDetail().getRealName(), "张三丰"); + assertFalse(user.isEnabled()); + + } +}