From f555cb345f6e1ceb975165c22fcec4e9037d0dba Mon Sep 17 00:00:00 2001 From: yidao620 Date: Tue, 27 Feb 2018 17:43:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0springboot-shiro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app-manage/README.md | 2 +- springboot-shiro/.gitignore | 14 + springboot-shiro/LICENSE | 20 + springboot-shiro/README.md | 18 + springboot-shiro/pom.xml | 181 + springboot-shiro/run.sh | 72 + .../java/com/xncoding/pos/Application.java | 12 + .../pos/common/dao/entity/Manager.java | 249 + .../pos/common/dao/entity/ManagerRole.java | 139 + .../pos/common/dao/entity/Permission.java | 139 + .../xncoding/pos/common/dao/entity/Role.java | 139 + .../pos/common/dao/entity/RolePermission.java | 139 + .../common/dao/repository/ManagerMapper.java | 15 + .../dao/repository/ManagerRoleMapper.java | 15 + .../dao/repository/PermissionMapper.java | 15 + .../pos/common/dao/repository/RoleMapper.java | 15 + .../dao/repository/RolePermissionMapper.java | 15 + .../pos/config/MybatisPlusConfig.java | 47 + .../com/xncoding/pos/config/ShiroConfig.java | 277 + .../config/properties/DruidProperties.java | 249 + .../pos/config/properties/MyProperties.java | 148 + .../pos/controller/LoginController.java | 109 + .../xncoding/pos/dao/entity/ManagerInfo.java | 92 + .../com/xncoding/pos/dao/entity/SysRole.java | 29 + .../pos/dao/repository/ManagerInfoDao.java | 15 + .../dao/repository/mapping/ManagerInfoDao.xml | 46 + .../pos/exception/ForbiddenUserException.java | 14 + .../com/xncoding/pos/model/BaseResponse.java | 73 + .../pos/service/ManagerInfoService.java | 42 + .../shiro/CaptchaUsernamePasswordToken.java | 29 + .../pos/shiro/IncorrectCaptchaException.java | 28 + .../com/xncoding/pos/shiro/KaptchaFilter.java | 107 + .../pos/shiro/MyExceptionResolver.java | 24 + .../com/xncoding/pos/shiro/MyShiroRealm.java | 126 + .../com/xncoding/pos/shiro/RoleFilter.java | 32 + .../java/com/xncoding/pos/shiro/ShiroKit.java | 252 + .../src/main/resources/application.yml | 116 + .../src/main/resources/banner.txt | 23 + .../src/main/resources/ehcache.xml | 83 + .../src/main/resources/public/favicon.ico | Bin 0 -> 1150 bytes .../main/resources/public/static/css/404.css | 36 + .../public/static/css/bootstrap.min.css | 6 + .../resources/public/static/css/login.css | 84 + .../css/patterns/header-profile-skin-1.png | Bin 0 -> 26278 bytes .../css/patterns/header-profile-skin-3.png | Bin 0 -> 33032 bytes .../static/css/patterns/header-profile.png | Bin 0 -> 5877 bytes .../public/static/css/patterns/shattered.png | Bin 0 -> 137733 bytes .../resources/public/static/css/style.css | 7928 +++++++++++++++++ .../resources/public/static/img/bgblack.png | Bin 0 -> 2790 bytes .../resources/public/static/img/check_alt.png | Bin 0 -> 502 bytes .../resources/public/static/img/error.png | Bin 0 -> 734 bytes .../resources/public/static/img/error/404.png | Bin 0 -> 35617 bytes .../public/static/img/error/404_msg.png | Bin 0 -> 4537 bytes .../public/static/img/error/404_to_index.png | Bin 0 -> 4896 bytes .../public/static/img/error/error_bg.jpg | Bin 0 -> 60408 bytes .../public/static/img/error/error_cloud.png | Bin 0 -> 42359 bytes .../resources/public/static/img/right.png | Bin 0 -> 725 bytes .../public/static/js/bootstrap.min.js | 7 + .../resources/public/static/js/jquery.min.js | 4 + .../src/main/resources/sql/schema.sql | 73 + .../main/resources/templates/error/404.html | 22 + .../main/resources/templates/error/500.html | 10 + .../resources/templates/error/shiro_403.html | 10 + .../src/main/resources/templates/index.html | 99 + .../src/main/resources/templates/login.html | 77 + .../templates/modules/common/welcome.html | 18 + .../java/com/xncoding/pos/SimpleTest.java | 51 + 67 files changed, 11584 insertions(+), 1 deletion(-) create mode 100644 springboot-shiro/.gitignore create mode 100644 springboot-shiro/LICENSE create mode 100644 springboot-shiro/README.md create mode 100644 springboot-shiro/pom.xml create mode 100644 springboot-shiro/run.sh create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/Application.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Manager.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/ManagerRole.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Permission.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Role.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/RolePermission.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerMapper.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerRoleMapper.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/PermissionMapper.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RoleMapper.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RolePermissionMapper.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/config/MybatisPlusConfig.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/config/ShiroConfig.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/config/properties/DruidProperties.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/config/properties/MyProperties.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/controller/LoginController.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/ManagerInfo.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/SysRole.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/ManagerInfoDao.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/mapping/ManagerInfoDao.xml create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/exception/ForbiddenUserException.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/model/BaseResponse.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/service/ManagerInfoService.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/CaptchaUsernamePasswordToken.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/IncorrectCaptchaException.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/KaptchaFilter.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyExceptionResolver.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyShiroRealm.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/RoleFilter.java create mode 100644 springboot-shiro/src/main/java/com/xncoding/pos/shiro/ShiroKit.java create mode 100644 springboot-shiro/src/main/resources/application.yml create mode 100644 springboot-shiro/src/main/resources/banner.txt create mode 100644 springboot-shiro/src/main/resources/ehcache.xml create mode 100644 springboot-shiro/src/main/resources/public/favicon.ico create mode 100644 springboot-shiro/src/main/resources/public/static/css/404.css create mode 100644 springboot-shiro/src/main/resources/public/static/css/bootstrap.min.css create mode 100644 springboot-shiro/src/main/resources/public/static/css/login.css create mode 100644 springboot-shiro/src/main/resources/public/static/css/patterns/header-profile-skin-1.png create mode 100644 springboot-shiro/src/main/resources/public/static/css/patterns/header-profile-skin-3.png create mode 100644 springboot-shiro/src/main/resources/public/static/css/patterns/header-profile.png create mode 100644 springboot-shiro/src/main/resources/public/static/css/patterns/shattered.png create mode 100644 springboot-shiro/src/main/resources/public/static/css/style.css create mode 100644 springboot-shiro/src/main/resources/public/static/img/bgblack.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/check_alt.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/error.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/error/404.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/error/404_msg.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/error/404_to_index.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/error/error_bg.jpg create mode 100644 springboot-shiro/src/main/resources/public/static/img/error/error_cloud.png create mode 100644 springboot-shiro/src/main/resources/public/static/img/right.png create mode 100644 springboot-shiro/src/main/resources/public/static/js/bootstrap.min.js create mode 100644 springboot-shiro/src/main/resources/public/static/js/jquery.min.js create mode 100644 springboot-shiro/src/main/resources/sql/schema.sql create mode 100644 springboot-shiro/src/main/resources/templates/error/404.html create mode 100644 springboot-shiro/src/main/resources/templates/error/500.html create mode 100644 springboot-shiro/src/main/resources/templates/error/shiro_403.html create mode 100644 springboot-shiro/src/main/resources/templates/index.html create mode 100644 springboot-shiro/src/main/resources/templates/login.html create mode 100644 springboot-shiro/src/main/resources/templates/modules/common/welcome.html create mode 100644 springboot-shiro/src/test/java/com/xncoding/pos/SimpleTest.java diff --git a/app-manage/README.md b/app-manage/README.md index 6295a4c..8514123 100644 --- a/app-manage/README.md +++ b/app-manage/README.md @@ -55,7 +55,7 @@ mvn install:install-file -Dfile=AXMLPrinter-1.0.jar -DgroupId=com.xncoding -Dart ## 测试账号 -1. admin/123456 +1. admin/12345678 2. test/12345678 ## 许可证 diff --git a/springboot-shiro/.gitignore b/springboot-shiro/.gitignore new file mode 100644 index 0000000..1e3c5bb --- /dev/null +++ b/springboot-shiro/.gitignore @@ -0,0 +1,14 @@ +# 此为注释– 将被Git 忽略 +# /结尾表示是目录,忽略目录和目录下的所有件 +# /开头表示根目录,否则是.gitignore的相对目录 +# !开头表示反选 +.idea/ +target/ +*.iml +*.ipr +*.iws +*.log +.svn/ +.project +rebel.xml +.rebel-remote.xml.* diff --git a/springboot-shiro/LICENSE b/springboot-shiro/LICENSE new file mode 100644 index 0000000..83cd47d --- /dev/null +++ b/springboot-shiro/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 Xiong Neng + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/springboot-shiro/README.md b/springboot-shiro/README.md new file mode 100644 index 0000000..51b92c2 --- /dev/null +++ b/springboot-shiro/README.md @@ -0,0 +1,18 @@ +## 集成Shiro权限管理 + +SpringBoot和Shiro集成,实现用户登录认证和授权访问页面。 + +## 数据库初始化 + +执行SQL文件`src/main/resources/sql/schema.sql` + +## 测试账号 + +1. admin/12345678 +2. aix/12345678 + +## 许可证 + +Copyright (c) 2018 Xiong Neng + +基于 MIT 协议发布: diff --git a/springboot-shiro/pom.xml b/springboot-shiro/pom.xml new file mode 100644 index 0000000..fc545dd --- /dev/null +++ b/springboot-shiro/pom.xml @@ -0,0 +1,181 @@ + + + 4.0.0 + + com.xncoding + springboot-shiro + 1.0.0-SNAPSHOT + jar + + springboot-shiro + 集成Shiro权限管理 + + + org.springframework.boot + spring-boot-starter-parent + 1.5.9.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + 1.1.2 + 8.0.7-dmr + 2.1.8 + 1.0.5 + + 3.0.7.RELEASE + 2.2.2 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-jetty + + + org.springframework.boot + spring-boot-starter-jdbc + + + mysql + mysql-connector-java + ${mysql-connector.version} + runtime + + + com.alibaba + druid + ${druid.version} + + + + com.baomidou + mybatis-plus + ${mybatis-plus.version} + + + com.baomidou + mybatisplus-spring-boot-starter + ${mybatisplus-spring-boot-starter.version} + + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + 2.5 + + + org.apache.commons + commons-lang3 + 3.7 + + + commons-codec + commons-codec + 1.11 + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + com.github.theborakompanioni + thymeleaf-extras-shiro + 2.0.0 + + + + org.apache.shiro + shiro-spring + 1.4.0 + + + slf4j-api + org.slf4j + + + + + + org.apache.shiro + shiro-ehcache + 1.4.0 + + + slf4j-api + org.slf4j + + + + + + com.github.axet + kaptcha + 0.0.9 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.20 + + true + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + + src/main/resources + + + src/main/java + + **/*.xml + + + + + + \ No newline at end of file diff --git a/springboot-shiro/run.sh b/springboot-shiro/run.sh new file mode 100644 index 0000000..955efb1 --- /dev/null +++ b/springboot-shiro/run.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# 项目自动更新脚本 +# 先clone相应的分支下来: +# git clone ssh://git@120.24.173.142:7999/xxx.git +# 远程调试启动: +# nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xms512m -Xmx1024m -jar -Dspring.profiles.active=${profile} ${jarfile} >/dev/null 2>&1 & + +function start { + profile="$1" + echo "启动环境profile=${profile}" + jarfile=$(ls target/*.jar) + if [[ "$?" == "0" ]]; then + stop $profile $jarfile + fi + branch=$(git branch |awk '{print $2}') + git pull origin ${branch} + echo "更新完代码开始重新打包" + mvn clean && mvn clean && mvn package -DskipTests=true + if [[ "$?" != "0" ]]; then + echo "编译出错,退出!" + exit 1 + fi + echo "nohup java -Xms512m -Xmx1024m -jar -Dspring.profiles.active=${profile} ${jarfile} >/dev/null 2>&1 &" + nohup java -Xms512m -Xmx1024m -jar -Dspring.profiles.active=${profile} ${jarfile} >/dev/null 2>&1 & + echo "启动应用中,请查看日志文件..." +} + +function stop { + profile="$1" + jarfile="$2" + ps aux | grep "${jarfile}" | grep "spring.profiles.active=${profile}" | grep -v grep > /dev/null + if [[ "$?" == "0" ]]; then + echo "该应用还在跑,我先停了它" + pid=$(ps aux | grep "${jarfile}" | grep "spring.profiles.active=${profile}" | grep -v grep |awk '{print $2}') + if [[ "$pid" != "" ]]; then + kill -9 $pid + fi + echo "停止应用成功..." + fi +} + +if [[ "$1" == "start" ]]; then + if [[ "$#" < 2 ]]; then + echo "请输入正确参数:./epay.sh start {profile}" + exit 1 + fi + profile="$2" + if [[ "$profile" != "dev" && "$profile" != "test" && "$profile" != "show" && "$profile" != "production" ]]; then + echo "参数错误,请输入正确的profile参数,使用方法:" + echo "./epay.sh start {profile} ==> 启动应用,{profile}取值:dev|test|show|production" + exit 1 + fi + start "${profile}" +elif [[ "$1" == "stop" ]]; then + if [[ "$#" < 2 ]]; then + echo "请输入正确参数:./epay.sh stop {profile}" + exit 1 + fi + profile="$2" + if [[ "$profile" != "dev" && "$profile" != "test" && "$profile" != "show" && "$profile" != "production" ]]; then + echo "参数错误,请输入正确的profile参数,使用方法:" + echo "./epay.sh stop {profile} ==> 停止应用,{profile}取值:dev|test|show|production" + exit 1 + fi + jarfile=$(ls target/*.jar) + stop $profile $jarfile +else + echo "参数错误,使用方法:{}参数是必填的,[]参数可选" + echo "./epay.sh start {profile} ==> 启动应用,{profile}取值:dev|test|show|production" + echo "./epay.sh stop {profile} ==> 停止应用,{profile}取值:dev|test|show|production" + exit 1 +fi diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/Application.java b/springboot-shiro/src/main/java/com/xncoding/pos/Application.java new file mode 100644 index 0000000..adc4c48 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/Application.java @@ -0,0 +1,12 @@ +package com.xncoding.pos; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Manager.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Manager.java new file mode 100644 index 0000000..459d06a --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Manager.java @@ -0,0 +1,249 @@ +package com.xncoding.pos.common.dao.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import java.io.Serializable; + +/** + * 后台管理用户表 + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +@TableName(value = "t_manager") +public class Manager extends Model { + +private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value="id", type= IdType.AUTO) + private Integer id; + /** + * 账号 + */ + private String username; + /** + * 名字 + */ + private String name; + /** + * 密码 + */ + private String password; + /** + * md5密码盐 + */ + private String salt; + /** + * 联系电话 + */ + private String phone; + /** + * 备注 + */ + private String tips; + /** + * 状态 1:正常 2:禁用 + */ + private Integer state; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 获取 主键ID. + * + * @return 主键ID. + */ + public Integer getId() { + return id; + } + + /** + * 设置 主键ID. + * + * @param id 主键ID. + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * 获取 账号. + * + * @return 账号. + */ + public String getUsername() { + return username; + } + + /** + * 设置 账号. + * + * @param username 账号. + */ + public void setUsername(String username) { + this.username = username; + } + + /** + * 获取 名字. + * + * @return 名字. + */ + public String getName() { + return name; + } + + /** + * 设置 名字. + * + * @param name 名字. + */ + public void setName(String name) { + this.name = name; + } + + /** + * 获取 密码. + * + * @return 密码. + */ + public String getPassword() { + return password; + } + + /** + * 设置 密码. + * + * @param password 密码. + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * 获取 md5密码盐. + * + * @return md5密码盐. + */ + public String getSalt() { + return salt; + } + + /** + * 设置 md5密码盐. + * + * @param salt md5密码盐. + */ + public void setSalt(String salt) { + this.salt = salt; + } + + /** + * 获取 联系电话. + * + * @return 联系电话. + */ + public String getPhone() { + return phone; + } + + /** + * 设置 联系电话. + * + * @param phone 联系电话. + */ + public void setPhone(String phone) { + this.phone = phone; + } + + /** + * 获取 备注. + * + * @return 备注. + */ + public String getTips() { + return tips; + } + + /** + * 设置 备注. + * + * @param tips 备注. + */ + public void setTips(String tips) { + this.tips = tips; + } + + /** + * 获取 状态 1:正常 2:禁用. + * + * @return 状态 1:正常 2:禁用. + */ + public Integer getState() { + return state; + } + + /** + * 设置 状态 1:正常 2:禁用. + * + * @param state 状态 1:正常 2:禁用. + */ + public void setState(Integer state) { + this.state = state; + } + + /** + * 获取 创建时间. + * + * @return 创建时间. + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置 创建时间. + * + * @param createdTime 创建时间. + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取 更新时间. + * + * @return 更新时间. + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置 更新时间. + * + * @param updatedTime 更新时间. + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/ManagerRole.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/ManagerRole.java new file mode 100644 index 0000000..84904b6 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/ManagerRole.java @@ -0,0 +1,139 @@ +package com.xncoding.pos.common.dao.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import java.io.Serializable; + +/** + * 用户角色关联表 + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +@TableName(value = "t_manager_role") +public class ManagerRole extends Model { + +private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value="id", type= IdType.AUTO) + private Integer id; + /** + * 管理用户ID + */ + private Integer managerId; + /** + * 角色ID + */ + private Integer roleId; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 获取 主键ID. + * + * @return 主键ID. + */ + public Integer getId() { + return id; + } + + /** + * 设置 主键ID. + * + * @param id 主键ID. + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * 获取 管理用户ID. + * + * @return 管理用户ID. + */ + public Integer getManagerId() { + return managerId; + } + + /** + * 设置 管理用户ID. + * + * @param managerId 管理用户ID. + */ + public void setManagerId(Integer managerId) { + this.managerId = managerId; + } + + /** + * 获取 角色ID. + * + * @return 角色ID. + */ + public Integer getRoleId() { + return roleId; + } + + /** + * 设置 角色ID. + * + * @param roleId 角色ID. + */ + public void setRoleId(Integer roleId) { + this.roleId = roleId; + } + + /** + * 获取 创建时间. + * + * @return 创建时间. + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置 创建时间. + * + * @param createdTime 创建时间. + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取 更新时间. + * + * @return 更新时间. + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置 更新时间. + * + * @param updatedTime 更新时间. + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Permission.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Permission.java new file mode 100644 index 0000000..1c79b9c --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Permission.java @@ -0,0 +1,139 @@ +package com.xncoding.pos.common.dao.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import java.io.Serializable; + +/** + * 权限表 + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +@TableName(value = "t_permission") +public class Permission extends Model { + +private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value="id", type= IdType.AUTO) + private Integer id; + /** + * 权限名称 + */ + private String permission; + /** + * 权限说明 + */ + private String description; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 获取 主键ID. + * + * @return 主键ID. + */ + public Integer getId() { + return id; + } + + /** + * 设置 主键ID. + * + * @param id 主键ID. + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * 获取 权限名称. + * + * @return 权限名称. + */ + public String getPermission() { + return permission; + } + + /** + * 设置 权限名称. + * + * @param permission 权限名称. + */ + public void setPermission(String permission) { + this.permission = permission; + } + + /** + * 获取 权限说明. + * + * @return 权限说明. + */ + public String getDescription() { + return description; + } + + /** + * 设置 权限说明. + * + * @param description 权限说明. + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * 获取 创建时间. + * + * @return 创建时间. + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置 创建时间. + * + * @param createdTime 创建时间. + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取 更新时间. + * + * @return 更新时间. + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置 更新时间. + * + * @param updatedTime 更新时间. + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Role.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Role.java new file mode 100644 index 0000000..def68f8 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/Role.java @@ -0,0 +1,139 @@ +package com.xncoding.pos.common.dao.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import java.io.Serializable; + +/** + * 角色表 + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +@TableName(value = "t_role") +public class Role extends Model { + +private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value="id", type= IdType.AUTO) + private Integer id; + /** + * 角色名称 + */ + private String role; + /** + * 角色说明 + */ + private String description; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 获取 主键ID. + * + * @return 主键ID. + */ + public Integer getId() { + return id; + } + + /** + * 设置 主键ID. + * + * @param id 主键ID. + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * 获取 角色名称. + * + * @return 角色名称. + */ + public String getRole() { + return role; + } + + /** + * 设置 角色名称. + * + * @param role 角色名称. + */ + public void setRole(String role) { + this.role = role; + } + + /** + * 获取 角色说明. + * + * @return 角色说明. + */ + public String getDescription() { + return description; + } + + /** + * 设置 角色说明. + * + * @param description 角色说明. + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * 获取 创建时间. + * + * @return 创建时间. + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置 创建时间. + * + * @param createdTime 创建时间. + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取 更新时间. + * + * @return 更新时间. + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置 更新时间. + * + * @param updatedTime 更新时间. + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/RolePermission.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/RolePermission.java new file mode 100644 index 0000000..68be589 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/entity/RolePermission.java @@ -0,0 +1,139 @@ +package com.xncoding.pos.common.dao.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import java.io.Serializable; + +/** + * 角色权限关联表 + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +@TableName(value = "t_role_permission") +public class RolePermission extends Model { + +private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value="id", type= IdType.AUTO) + private Integer id; + /** + * 角色ID + */ + private Integer roleId; + /** + * 权限ID + */ + private Integer permissionId; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 获取 主键ID. + * + * @return 主键ID. + */ + public Integer getId() { + return id; + } + + /** + * 设置 主键ID. + * + * @param id 主键ID. + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * 获取 角色ID. + * + * @return 角色ID. + */ + public Integer getRoleId() { + return roleId; + } + + /** + * 设置 角色ID. + * + * @param roleId 角色ID. + */ + public void setRoleId(Integer roleId) { + this.roleId = roleId; + } + + /** + * 获取 权限ID. + * + * @return 权限ID. + */ + public Integer getPermissionId() { + return permissionId; + } + + /** + * 设置 权限ID. + * + * @param permissionId 权限ID. + */ + public void setPermissionId(Integer permissionId) { + this.permissionId = permissionId; + } + + /** + * 获取 创建时间. + * + * @return 创建时间. + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置 创建时间. + * + * @param createdTime 创建时间. + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取 更新时间. + * + * @return 更新时间. + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置 更新时间. + * + * @param updatedTime 更新时间. + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerMapper.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerMapper.java new file mode 100644 index 0000000..037d8a6 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerMapper.java @@ -0,0 +1,15 @@ +package com.xncoding.pos.common.dao.repository; + +import com.xncoding.pos.common.dao.entity.Manager; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * 后台管理用户表 Mapper + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +public interface ManagerMapper extends BaseMapper { + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerRoleMapper.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerRoleMapper.java new file mode 100644 index 0000000..708c1f6 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/ManagerRoleMapper.java @@ -0,0 +1,15 @@ +package com.xncoding.pos.common.dao.repository; + +import com.xncoding.pos.common.dao.entity.ManagerRole; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * 用户角色关联表 Mapper + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +public interface ManagerRoleMapper extends BaseMapper { + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/PermissionMapper.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/PermissionMapper.java new file mode 100644 index 0000000..e32d42a --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/PermissionMapper.java @@ -0,0 +1,15 @@ +package com.xncoding.pos.common.dao.repository; + +import com.xncoding.pos.common.dao.entity.Permission; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * 权限表 Mapper + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +public interface PermissionMapper extends BaseMapper { + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RoleMapper.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RoleMapper.java new file mode 100644 index 0000000..effb8c0 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RoleMapper.java @@ -0,0 +1,15 @@ +package com.xncoding.pos.common.dao.repository; + +import com.xncoding.pos.common.dao.entity.Role; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * 角色表 Mapper + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +public interface RoleMapper extends BaseMapper { + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RolePermissionMapper.java b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RolePermissionMapper.java new file mode 100644 index 0000000..4f3506d --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/common/dao/repository/RolePermissionMapper.java @@ -0,0 +1,15 @@ +package com.xncoding.pos.common.dao.repository; + +import com.xncoding.pos.common.dao.entity.RolePermission; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * 角色权限关联表 Mapper + * + * @author 熊能 + * @version 1.0 + * @since 2018/01/02 + */ +public interface RolePermissionMapper extends BaseMapper { + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/config/MybatisPlusConfig.java b/springboot-shiro/src/main/java/com/xncoding/pos/config/MybatisPlusConfig.java new file mode 100644 index 0000000..1d92892 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/config/MybatisPlusConfig.java @@ -0,0 +1,47 @@ +package com.xncoding.pos.config; + +import com.alibaba.druid.pool.DruidDataSource; +import com.baomidou.mybatisplus.plugins.PaginationInterceptor; +import com.xncoding.pos.config.properties.DruidProperties; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.annotation.Resource; + +/** + * MybatisPlus配置 + * + * @author xiongneng + * @since 2017/5/20 21:58 + */ +@Configuration +@EnableTransactionManagement(order = 2) +@MapperScan(basePackages = { + "com.xncoding.pos.common.dao.repository", + "com.xncoding.pos.dao.repository"}) +public class MybatisPlusConfig { + + @Resource + private DruidProperties druidProperties; + + /** + * 单数据源连接池配置 + */ + @Bean + public DruidDataSource singleDatasource() { + DruidDataSource dataSource = new DruidDataSource(); + druidProperties.config(dataSource); + return dataSource; + } + + /** + * mybatis-plus分页插件 + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/config/ShiroConfig.java b/springboot-shiro/src/main/java/com/xncoding/pos/config/ShiroConfig.java new file mode 100644 index 0000000..d65c99a --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/config/ShiroConfig.java @@ -0,0 +1,277 @@ +package com.xncoding.pos.config; + +import at.pollux.thymeleaf.shiro.dialect.ShiroDialect; +import com.google.code.kaptcha.Constants; +import com.google.code.kaptcha.servlet.KaptchaServlet; +import com.xncoding.pos.shiro.KaptchaFilter; +import com.xncoding.pos.shiro.MyExceptionResolver; +import com.xncoding.pos.shiro.MyShiroRealm; +import org.apache.shiro.authc.credential.HashedCredentialsMatcher; +import org.apache.shiro.cache.ehcache.EhCacheManager; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler; +import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; +import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +import org.apache.shiro.web.mgt.CookieRememberMeManager; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.apache.shiro.web.servlet.SimpleCookie; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; + +import javax.servlet.Filter; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Description : Apache Shiro 核心通过 Filter 来实现,就好像SpringMvc 通过DispachServlet 来主控制一样。 + * 既然是使用 Filter 一般也就能猜到,是通过URL规则来进行过滤和权限校验,所以我们需要定义一系列关于URL的规则和访问权限。 + */ + +@Configuration +@Order(1) +public class ShiroConfig { + + //配置kaptcha图片验证码框架提供的Servlet,,这是个坑,很多人忘记注册(注意) + @Bean + public ServletRegistrationBean kaptchaServlet() { + ServletRegistrationBean servlet = new ServletRegistrationBean(new KaptchaServlet(), "/kaptcha.jpg"); + servlet.addInitParameter(Constants.KAPTCHA_SESSION_CONFIG_KEY, Constants.KAPTCHA_SESSION_KEY);//session key + servlet.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "50");//字体大小 + servlet.addInitParameter(Constants.KAPTCHA_BORDER, "no"); + servlet.addInitParameter(Constants.KAPTCHA_BORDER_COLOR, "105,179,90"); + servlet.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "45"); + servlet.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); + servlet.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "宋体,楷体,微软雅黑"); + servlet.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + servlet.addInitParameter(Constants.KAPTCHA_IMAGE_WIDTH, "125"); + servlet.addInitParameter(Constants.KAPTCHA_IMAGE_HEIGHT, "60"); + //可以设置很多属性,具体看com.google.code.kaptcha.Constants +// kaptcha.border 是否有边框 默认为true 我们可以自己设置yes,no +// kaptcha.border.color 边框颜色 默认为Color.BLACK +// kaptcha.border.thickness 边框粗细度 默认为1 +// kaptcha.producer.impl 验证码生成器 默认为DefaultKaptcha +// kaptcha.textproducer.impl 验证码文本生成器 默认为DefaultTextCreator +// kaptcha.textproducer.char.string 验证码文本字符内容范围 默认为abcde2345678gfynmnpwx +// kaptcha.textproducer.char.length 验证码文本字符长度 默认为5 +// kaptcha.textproducer.font.names 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) +// kaptcha.textproducer.font.size 验证码文本字符大小 默认为40 +// kaptcha.textproducer.font.color 验证码文本字符颜色 默认为Color.BLACK +// kaptcha.textproducer.char.space 验证码文本字符间距 默认为2 +// kaptcha.noise.impl 验证码噪点生成对象 默认为DefaultNoise +// kaptcha.noise.color 验证码噪点颜色 默认为Color.BLACK +// kaptcha.obscurificator.impl 验证码样式引擎 默认为WaterRipple +// kaptcha.word.impl 验证码文本字符渲染 默认为DefaultWordRenderer +// kaptcha.background.impl 验证码背景生成器 默认为DefaultBackground +// kaptcha.background.clear.from 验证码背景颜色渐进 默认为Color.LIGHT_GRAY +// kaptcha.background.clear.to 验证码背景颜色渐进 默认为Color.WHITE +// kaptcha.image.width 验证码图片宽度 默认为200 +// kaptcha.image.height 验证码图片高度 默认为50 + return servlet; + } + + //注入异常处理类 + @Bean + public MyExceptionResolver myExceptionResolver() { + return new MyExceptionResolver(); + } + + /** + * ShiroFilterFactoryBean 处理拦截资源文件问题。 + * 注意:单独一个ShiroFilterFactoryBean配置是或报错的,以为在 + * 初始化ShiroFilterFactoryBean的时候需要注入:SecurityManager Filter Chain定义说明 + * 1、一个URL可以配置多个Filter,使用逗号分隔 + * 2、当设置多个过滤器时,全部验证通过,才视为通过 + * 3、部分过滤器可指定参数,如perms,roles + */ + @Bean + public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { + + ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); + // 必须设置 SecurityManager + shiroFilterFactoryBean.setSecurityManager(securityManager); + //验证码过滤器 + Map filtersMap = shiroFilterFactoryBean.getFilters(); + KaptchaFilter kaptchaFilter = new KaptchaFilter(); + filtersMap.put("kaptchaFilter", kaptchaFilter); + //实现自己规则roles,这是为了实现or的效果 + //RoleFilter roleFilter = new RoleFilter(); + //filtersMap.put("roles", roleFilter); + shiroFilterFactoryBean.setFilters(filtersMap); + // 拦截器 + //rest:比如/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。 + //port:比如/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。 + //perms:比如/admins/user/**=perms[user:add:*],perms参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,比如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。 + //roles:比如/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,比如/admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。//要实现or的效果看http://zgzty.blog.163.com/blog/static/83831226201302983358670/ + //anon:比如/admins/**=anon 没有参数,表示可以匿名使用。 + //authc:比如/admins/user/**=authc表示需要认证才能使用,没有参数 + //authcBasic:比如/admins/user/**=authcBasic没有参数表示httpBasic认证 + //ssl:比如/admins/user/**=ssl没有参数,表示安全的url请求,协议为https + //user:比如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查 + Map filterChainDefinitionMap = new LinkedHashMap(); + // 配置退出过滤器,其中的具体的退出代码Shiro已经替我们实现了 + filterChainDefinitionMap.put("/logout", "logout"); + //配置记住我或认证通过可以访问的地址 + filterChainDefinitionMap.put("/index", "user"); + filterChainDefinitionMap.put("/", "user"); + filterChainDefinitionMap.put("/login", "kaptchaFilter"); + // :这是一个坑呢,一不小心代码就不好使了; + //这段是配合 actuator框架使用的,配置相应的角色才能访问 + // filterChainDefinitionMap.put("/health", "roles[aix]");//服务器健康状况页面 + // filterChainDefinitionMap.put("/info", "roles[aix]");//服务器信息页面 + // filterChainDefinitionMap.put("/env", "roles[aix]");//应用程序的环境变量 + // filterChainDefinitionMap.put("/metrics", "roles[aix]"); + // filterChainDefinitionMap.put("/configprops", "roles[aix]"); + //开放的静态资源 + filterChainDefinitionMap.put("/favicon.ico", "anon");//网站图标 + filterChainDefinitionMap.put("/static/**", "anon");//配置static文件下资源能被访问的,这是个例子 + filterChainDefinitionMap.put("/kaptcha.jpg", "anon");//图片验证码(kaptcha框架) + + filterChainDefinitionMap.put("/api/v1/**", "anon");//API接口 + + // swagger接口文档 + filterChainDefinitionMap.put("/v2/api-docs", "anon"); + filterChainDefinitionMap.put("/webjars/**", "anon"); + filterChainDefinitionMap.put("/swagger-resources/**", "anon"); + filterChainDefinitionMap.put("/swagger-ui.html", "anon"); + filterChainDefinitionMap.put("/doc.html", "anon"); + + // 其他的 + filterChainDefinitionMap.put("/**", "authc"); + + // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面 + shiroFilterFactoryBean.setLoginUrl("/login"); + // 登录成功后要跳转的链接 + shiroFilterFactoryBean.setSuccessUrl("/index"); + // 未授权界面,不生效(详情原因看MyExceptionResolver) + shiroFilterFactoryBean.setUnauthorizedUrl("/errorView/403_error.html"); + shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); + return shiroFilterFactoryBean; + } + + @Bean + public SecurityManager securityManager() { + DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); + // 设置realm. + securityManager.setRealm(myShiroRealm()); + //注入缓存管理器 + securityManager.setCacheManager(ehCacheManager());//这个如果执行多次,也是同样的一个对象; + //注入记住我管理器; + securityManager.setRememberMeManager(rememberMeManager()); + return securityManager; + } + + /** + * 身份认证realm; (这个需要自己写,账号密码校验;权限等) + */ + @Bean + public MyShiroRealm myShiroRealm() { + MyShiroRealm myShiroRealm = new MyShiroRealm(); + myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); + return myShiroRealm; + } + + /** + * 凭证匹配器 (由于我们的密码校验交给Shiro的SimpleAuthenticationInfo进行处理了 + * 所以我们需要修改下doGetAuthenticationInfo中的代码; @return + */ + @Bean + public HashedCredentialsMatcher hashedCredentialsMatcher() { + HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); + hashedCredentialsMatcher.setHashAlgorithmName("md5");// 散列算法:这里使用MD5算法; + hashedCredentialsMatcher.setHashIterations(2);// 散列的次数,比如散列两次,相当于md5(md5("")); + hashedCredentialsMatcher.setStoredCredentialsHexEncoded(true);//表示是否存储散列后的密码为16进制,需要和生成密码时的一样,默认是base64; + return hashedCredentialsMatcher; + } + + /** + * 开启shiro aop注解支持. 使用代理方式; 所以需要开启代码支持; + * + * @param securityManager + * @return + */ + @Bean + public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { + AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); + authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); + return authorizationAttributeSourceAdvisor; + } + + /** + * shiro缓存管理器; + * 需要注入对应的其它的实体类中: + * 1、安全管理器:securityManager + * 可见securityManager是整个shiro的核心; + * + * @return + */ + @Bean + public EhCacheManager ehCacheManager() { + EhCacheManager cacheManager = new EhCacheManager(); + cacheManager.setCacheManagerConfigFile("classpath:ehcache.xml"); + return cacheManager; + } + + /** + * cookie对象; + * + * @return + */ + @Bean + public SimpleCookie rememberMeCookie() { + //System.out.println("ShiroConfiguration.rememberMeCookie()"); + //这个参数是cookie的名称,对应前端的checkbox的name = rememberMe + SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); + // + simpleCookie.setMaxAge(259200); + return simpleCookie; + } + + /** + * cookie管理对象; + * + * @return + */ + @Bean + public CookieRememberMeManager rememberMeManager() { + //System.out.println("ShiroConfiguration.rememberMeManager()"); + CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager(); + cookieRememberMeManager.setCookie(rememberMeCookie()); + return cookieRememberMeManager; + } + + @Bean(name = "sessionManager") + public DefaultWebSessionManager defaultWebSessionManager() { + DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); + sessionManager.setGlobalSessionTimeout(18000000); + // url中是否显示session Id + sessionManager.setSessionIdUrlRewritingEnabled(false); + // 删除失效的session + sessionManager.setDeleteInvalidSessions(true); + sessionManager.setSessionValidationSchedulerEnabled(true); + sessionManager.setSessionValidationInterval(18000000); + sessionManager.setSessionValidationScheduler(getExecutorServiceSessionValidationScheduler()); + //设置SessionIdCookie 导致认证不成功,不从新设置新的cookie,从sessionManager获取sessionIdCookie + //sessionManager.setSessionIdCookie(simpleIdCookie()); + sessionManager.getSessionIdCookie().setName("session-z-id"); + sessionManager.getSessionIdCookie().setPath("/"); + sessionManager.getSessionIdCookie().setMaxAge(60 * 60 * 24 * 7); + return sessionManager; + } + + @Bean(name = "sessionValidationScheduler") + public ExecutorServiceSessionValidationScheduler getExecutorServiceSessionValidationScheduler() { + ExecutorServiceSessionValidationScheduler scheduler = new ExecutorServiceSessionValidationScheduler(); + scheduler.setInterval(900000); + return scheduler; + } + + @Bean(name = "shiroDialect") + public ShiroDialect shiroDialect() { + return new ShiroDialect(); + } + + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/config/properties/DruidProperties.java b/springboot-shiro/src/main/java/com/xncoding/pos/config/properties/DruidProperties.java new file mode 100644 index 0000000..7cb4424 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/config/properties/DruidProperties.java @@ -0,0 +1,249 @@ +package com.xncoding.pos.config.properties; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.util.JdbcConstants; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.sql.SQLException; + +/** + *

数据库数据源配置

+ *

说明:这个类中包含了许多默认配置,若这些配置符合您的情况,您可以不用管,若不符合,建议不要修改本类,建议直接在"application.yml"中配置即可

+ * + * @author xiongneng + * @since 2017-05-21 11:18 + */ +@Component +@ConfigurationProperties(prefix = "spring.datasource") +public class DruidProperties { + + private String url; + + private String username; + + private String password; + + private String driverClassName = "com.mysql.cj.jdbc.Driver"; + + private Integer initialSize = 10; + + private Integer minIdle = 3; + + private Integer maxActive = 60; + + private Integer maxWait = 60000; + + private Boolean removeAbandoned = true; + + private Integer removeAbandonedTimeout = 180; + + private Integer timeBetweenEvictionRunsMillis = 60000; + + private Integer minEvictableIdleTimeMillis = 300000; + + private String validationQuery = "SELECT 'x'"; + + private Boolean testWhileIdle = true; + + private Boolean testOnBorrow = false; + + private Boolean testOnReturn = false; + + private Boolean poolPreparedStatements = true; + + private Integer maxPoolPreparedStatementPerConnectionSize = 50; + + private String filters = "stat"; + + public void config(DruidDataSource dataSource) { + dataSource.setDbType(JdbcConstants.MYSQL); + dataSource.setUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + dataSource.setDriverClassName(driverClassName); + dataSource.setInitialSize(initialSize); // 定义初始连接数 + dataSource.setMinIdle(minIdle); // 最小空闲 + dataSource.setMaxActive(maxActive); // 定义最大连接数 + dataSource.setMaxWait(maxWait); // 获取连接等待超时的时间 + dataSource.setRemoveAbandoned(removeAbandoned); // 超过时间限制是否回收 + dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout); // 超过时间限制多长 + + // 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + // 配置一个连接在池中最小生存的时间,单位是毫秒 + dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + // 用来检测连接是否有效的sql,要求是一个查询语句 + dataSource.setValidationQuery(validationQuery); + // 申请连接的时候检测 + dataSource.setTestWhileIdle(testWhileIdle); + // 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 + dataSource.setTestOnBorrow(testOnBorrow); + // 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能 + dataSource.setTestOnReturn(testOnReturn); + // 打开PSCache,并且指定每个连接上PSCache的大小 + dataSource.setPoolPreparedStatements(poolPreparedStatements); + dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); + // 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: + // 监控统计用的filter:stat + // 日志用的filter:log4j + // 防御SQL注入的filter:wall + try { + dataSource.setFilters(filters); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + public Integer getInitialSize() { + return initialSize; + } + + public void setInitialSize(Integer initialSize) { + this.initialSize = initialSize; + } + + public Integer getMinIdle() { + return minIdle; + } + + public void setMinIdle(Integer minIdle) { + this.minIdle = minIdle; + } + + public Integer getMaxActive() { + return maxActive; + } + + public void setMaxActive(Integer maxActive) { + this.maxActive = maxActive; + } + + public Integer getMaxWait() { + return maxWait; + } + + public void setMaxWait(Integer maxWait) { + this.maxWait = maxWait; + } + + public Integer getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public Integer getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public String getValidationQuery() { + return validationQuery; + } + + public void setValidationQuery(String validationQuery) { + this.validationQuery = validationQuery; + } + + public Boolean getTestWhileIdle() { + return testWhileIdle; + } + + public void setTestWhileIdle(Boolean testWhileIdle) { + this.testWhileIdle = testWhileIdle; + } + + public Boolean getTestOnBorrow() { + return testOnBorrow; + } + + public void setTestOnBorrow(Boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } + + public Boolean getTestOnReturn() { + return testOnReturn; + } + + public void setTestOnReturn(Boolean testOnReturn) { + this.testOnReturn = testOnReturn; + } + + public Boolean getPoolPreparedStatements() { + return poolPreparedStatements; + } + + public void setPoolPreparedStatements(Boolean poolPreparedStatements) { + this.poolPreparedStatements = poolPreparedStatements; + } + + public Integer getMaxPoolPreparedStatementPerConnectionSize() { + return maxPoolPreparedStatementPerConnectionSize; + } + + public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) { + this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize; + } + + public String getFilters() { + return filters; + } + + public void setFilters(String filters) { + this.filters = filters; + } + + public Boolean getRemoveAbandoned() { + return removeAbandoned; + } + + public void setRemoveAbandoned(Boolean removeAbandoned) { + this.removeAbandoned = removeAbandoned; + } + + public Integer getRemoveAbandonedTimeout() { + return removeAbandonedTimeout; + } + + public void setRemoveAbandonedTimeout(Integer removeAbandonedTimeout) { + this.removeAbandonedTimeout = removeAbandonedTimeout; + } +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/config/properties/MyProperties.java b/springboot-shiro/src/main/java/com/xncoding/pos/config/properties/MyProperties.java new file mode 100644 index 0000000..f95f739 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/config/properties/MyProperties.java @@ -0,0 +1,148 @@ +package com.xncoding.pos.config.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + + +/** + * 本项目自定义配置 + * + * @author xiongneng + * @since 2018/01/06 21:09 + */ +@Component +@ConfigurationProperties(prefix = "xncoding") +public class MyProperties { + /** + * excel模板文件路径 + */ + private String excelPath = ""; + /** + * 文件保存路径 + */ + private String filesPath = ""; + /** + * 图片保存路径 + */ + private String picsPath = ""; + /** + * 图片访问URL前缀 + */ + private String picsUrlPrefix = ""; + /** + * 文件访问URL前缀 + */ + private String filesUrlPrefix = ""; + /** + * POS API接口前缀 + */ + private String posapiUrlPrefix = ""; + /** + * 是否验证码 + */ + private Boolean kaptchaOpen = false; + /** + * 是否开启Swaggr + */ + private Boolean swaggerOpen = false; + /** + * session 失效时间(默认为30分钟 单位:秒) + */ + private Integer sessionInvalidateTime = 30 * 60; + /** + * session 验证失效时间(默认为15分钟 单位:秒) + */ + private Integer sessionValidationInterval = 15 * 60; + /** + * 机具心跳报告超时时间 单位:分钟 + */ + private Integer heartbeatTimeout; + + public String getExcelPath() { + return excelPath; + } + + public void setExcelPath(String excelPath) { + this.excelPath = excelPath; + } + + public String getPicsUrlPrefix() { + return picsUrlPrefix; + } + + public void setPicsUrlPrefix(String picsUrlPrefix) { + this.picsUrlPrefix = picsUrlPrefix; + } + + public Boolean getKaptchaOpen() { + return kaptchaOpen; + } + + public void setKaptchaOpen(Boolean kaptchaOpen) { + this.kaptchaOpen = kaptchaOpen; + } + + public Boolean getSwaggerOpen() { + return swaggerOpen; + } + + public void setSwaggerOpen(Boolean swaggerOpen) { + this.swaggerOpen = swaggerOpen; + } + + public Integer getSessionInvalidateTime() { + return sessionInvalidateTime; + } + + public void setSessionInvalidateTime(Integer sessionInvalidateTime) { + this.sessionInvalidateTime = sessionInvalidateTime; + } + + public Integer getSessionValidationInterval() { + return sessionValidationInterval; + } + + public void setSessionValidationInterval(Integer sessionValidationInterval) { + this.sessionValidationInterval = sessionValidationInterval; + } + + public String getFilesUrlPrefix() { + return filesUrlPrefix; + } + + public void setFilesUrlPrefix(String filesUrlPrefix) { + this.filesUrlPrefix = filesUrlPrefix; + } + + public String getFilesPath() { + return filesPath; + } + + public void setFilesPath(String filesPath) { + this.filesPath = filesPath; + } + + public Integer getHeartbeatTimeout() { + return heartbeatTimeout; + } + + public void setHeartbeatTimeout(Integer heartbeatTimeout) { + this.heartbeatTimeout = heartbeatTimeout; + } + + public String getPicsPath() { + return picsPath; + } + + public void setPicsPath(String picsPath) { + this.picsPath = picsPath; + } + + public String getPosapiUrlPrefix() { + return posapiUrlPrefix; + } + + public void setPosapiUrlPrefix(String posapiUrlPrefix) { + this.posapiUrlPrefix = posapiUrlPrefix; + } +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/controller/LoginController.java b/springboot-shiro/src/main/java/com/xncoding/pos/controller/LoginController.java new file mode 100644 index 0000000..0acaa84 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/controller/LoginController.java @@ -0,0 +1,109 @@ +package com.xncoding.pos.controller; + +import com.xncoding.pos.config.properties.MyProperties; +import com.xncoding.pos.exception.ForbiddenUserException; +import com.xncoding.pos.service.ManagerInfoService; +import com.xncoding.pos.shiro.IncorrectCaptchaException; +import com.xncoding.pos.shiro.ShiroKit; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.UnknownAccountException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.util.Map; + +/** + * Description: 登录验证 + */ + +// 只用同时具有permission:view和permission:aix权限才能访问 +//@RequiresPermissions(value={"permission:view","permission:aix"}, logical= Logical.AND) +//@RequiresPermissions(value={"permission:view","permission:aix"}, logical= Logical.OR)一个就行 + +@Controller +public class LoginController { + + @Resource + private ManagerInfoService managerInfoService; + @Resource + private MyProperties myProperties; + + private static final Logger _logger = LoggerFactory.getLogger(LoginController.class); + + //登录页(shiro配置需要两个/login 接口,一个是get用来获取登陆页面,一个用post用于登录) + @RequestMapping(value = "/login", method = RequestMethod.GET) + public String login() { + if (ShiroKit.isAuthenticated()) { + return "redirect:/"; + } + return "login"; + } + + // 登录提交地址和applicationontext-shiro.xml配置的loginurl一致。 (配置文件方式的说法) + @RequestMapping(value = "/login", method = RequestMethod.POST) + public String login(HttpServletRequest request, Map map) { + _logger.info("登录方法start........."); + // 登录失败从request中获取shiro处理的异常信息。shiroLoginFailure:就是shiro异常类的全类名. + Object exception = request.getAttribute("shiroLoginFailure"); + String msg; + if (exception != null) { + if (UnknownAccountException.class.isInstance(exception)) { + msg = "用户名不正确,请重新输入"; + } else if (IncorrectCredentialsException.class.isInstance(exception)) { + msg = "密码错误,请重新输入"; + } else if (IncorrectCaptchaException.class.isInstance(exception)) { + msg = "验证码错误"; + } else if (ForbiddenUserException.class.isInstance(exception)) { + msg = "该用户已被禁用,如有疑问请联系系统管理员。"; + } else { + msg = "发生未知错误,请联系管理员。"; + } + map.put("username", request.getParameter("username")); + map.put("password", request.getParameter("password")); + map.put("msg", msg); + return "login"; + } + //如果已经登录,直接跳转主页面 + return "index"; + } + + /** + * 主页 + * @param session + * @param model + * @return + */ + @RequestMapping({"/", "/index"}) + public String index(HttpSession session, Model model) { + // _logger.info("访问首页start..."); + // 做一些其他事情,比如把项目的数量放到session中 + if (ShiroKit.hasRole("admin") && session.getAttribute("projectNum") == null) { + session.setAttribute("projectNum", 2); + } + if (session.getAttribute("picsUrlPrefix") == null) { + // 图片访问URL前缀 + session.setAttribute("picsUrlPrefix", myProperties.getPicsUrlPrefix()); + } + return "index"; + } + + /** + * 欢迎页面 + * @param request + * @param model + * @return + */ + @RequestMapping("/welcome") + public String welcome(HttpServletRequest request, Model model) { + return "modules/common/welcome"; + } + + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/ManagerInfo.java b/springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/ManagerInfo.java new file mode 100644 index 0000000..c61c9e6 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/ManagerInfo.java @@ -0,0 +1,92 @@ +package com.xncoding.pos.dao.entity; + +import com.xncoding.pos.common.dao.entity.Manager; + +import java.io.Serializable; +import java.util.List; + +/** + * Description: 后台运维管理员信息 + */ +public class ManagerInfo extends Manager implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 状态 + */ + private String stateStr; + /** + * 所属项目id列表(逗号分隔) + */ + private String pids; + /** + * 所属项目名列表(逗号分隔) + */ + private String pnames; + /** + * 所属项目id列表 + */ + private List pidsList; + + /** + * 一个管理员具有多个角色 + */ + private List roles;// 一个用户具有多个角色 + + public ManagerInfo() { + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + /** + * 密码盐 + */ + public String getCredentialsSalt() { + return getUsername() + getSalt(); + } + + @Override + public String toString() { + return "username:" + getUsername() + "|name=" + getName(); + } + + public String getStateStr() { + return stateStr; + } + + public void setStateStr(String stateStr) { + this.stateStr = stateStr; + } + + public String getPids() { + return pids; + } + + public void setPids(String pids) { + this.pids = pids; + } + + public List getPidsList() { + return pidsList; + } + + public void setPidsList(List pidsList) { + this.pidsList = pidsList; + } + + public String getPnames() { + return pnames; + } + + public void setPnames(String pnames) { + this.pnames = pnames; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/SysRole.java b/springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/SysRole.java new file mode 100644 index 0000000..9036cfc --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/dao/entity/SysRole.java @@ -0,0 +1,29 @@ +package com.xncoding.pos.dao.entity; + +import com.xncoding.pos.common.dao.entity.Permission; +import com.xncoding.pos.common.dao.entity.Role; + +import java.io.Serializable; +import java.util.List; + +/** + * Description : 角色信息 + */ +public class SysRole extends Role implements Serializable { + + private static final long serialVersionUID = 1L; + + // 拥有的权限列表 + private List permissions; + + public SysRole() { + } + + public List getPermissions() { + return permissions; + } + + public void setPermissions(List permissions) { + this.permissions = permissions; + } +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/ManagerInfoDao.java b/springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/ManagerInfoDao.java new file mode 100644 index 0000000..502dd7d --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/ManagerInfoDao.java @@ -0,0 +1,15 @@ +package com.xncoding.pos.dao.repository; + +import com.baomidou.mybatisplus.plugins.pagination.Pagination; +import com.xncoding.pos.common.dao.repository.ManagerMapper; +import com.xncoding.pos.dao.entity.ManagerInfo; + +import java.util.List; +import java.util.Map; + +/** + * Description : + */ +public interface ManagerInfoDao extends ManagerMapper { + ManagerInfo findByUsername(String username); +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/mapping/ManagerInfoDao.xml b/springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/mapping/ManagerInfoDao.xml new file mode 100644 index 0000000..b032fa4 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/dao/repository/mapping/ManagerInfoDao.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/exception/ForbiddenUserException.java b/springboot-shiro/src/main/java/com/xncoding/pos/exception/ForbiddenUserException.java new file mode 100644 index 0000000..654e795 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/exception/ForbiddenUserException.java @@ -0,0 +1,14 @@ +package com.xncoding.pos.exception; + +import org.apache.shiro.authc.AuthenticationException; + +/** + * 禁用用户异常 + * + * @author XiongNeng + * @version 1.0 + * @since 2018/1/12 + */ +public class ForbiddenUserException extends AuthenticationException { + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/model/BaseResponse.java b/springboot-shiro/src/main/java/com/xncoding/pos/model/BaseResponse.java new file mode 100644 index 0000000..882e0c7 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/model/BaseResponse.java @@ -0,0 +1,73 @@ +package com.xncoding.pos.model; + +/** + * Controller的基础返回类 + * + * @author XiongNeng + * @version 1.0 + * @since 2018/1/7 + */ +public class BaseResponse { + /** + * 是否成功 + */ + private boolean success; + + /** + * 说明 + */ + private String msg; + + /** + * 返回数据 + */ + private T data; + + /** + * 分页时候的总数 + */ + private Integer total; + + public BaseResponse() { + + } + + public BaseResponse(boolean success, String msg, Integer total, T data) { + this.success = success; + this.msg = msg; + this.total = total; + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/service/ManagerInfoService.java b/springboot-shiro/src/main/java/com/xncoding/pos/service/ManagerInfoService.java new file mode 100644 index 0000000..6b4d1f6 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/service/ManagerInfoService.java @@ -0,0 +1,42 @@ +package com.xncoding.pos.service; + +import com.xncoding.pos.dao.entity.ManagerInfo; +import com.xncoding.pos.dao.repository.ManagerInfoDao; +import com.xncoding.pos.exception.ForbiddenUserException; +import org.apache.shiro.authc.UnknownAccountException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; + +/** + * 后台用户管理 + */ + +@Service +public class ManagerInfoService { + + @Resource + private ManagerInfoDao managerInfoDao; + + /** + * 通过名称查找用户 + * @param username + * @return + */ + public ManagerInfo findByUsername(String username) { + ManagerInfo managerInfo = managerInfoDao.findByUsername(username); + if (managerInfo == null) { + throw new UnknownAccountException(); + } + if (managerInfo.getState() == 2) { + throw new ForbiddenUserException(); + } + if (managerInfo.getPidsList() == null) { + managerInfo.setPidsList(Collections.singletonList(0)); + } else if (managerInfo.getPidsList().size() == 0) { + managerInfo.getPidsList().add(0); + } + return managerInfo; + } +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/CaptchaUsernamePasswordToken.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/CaptchaUsernamePasswordToken.java new file mode 100644 index 0000000..0902834 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/CaptchaUsernamePasswordToken.java @@ -0,0 +1,29 @@ +package com.xncoding.pos.shiro; + +import org.apache.shiro.authc.UsernamePasswordToken; + +/** + * Description : 拓展登陆验证字段 + */ +public class CaptchaUsernamePasswordToken extends UsernamePasswordToken { + + private static final long serialVersionUID = 1L; + + //验证码字符串 + private String captcha; + + public CaptchaUsernamePasswordToken(String username, char[] password, + boolean rememberMe, String host, String captcha) { + super(username, password, rememberMe, host); + this.captcha = captcha; + } + + public String getCaptcha() { + return captcha; + } + + public void setCaptcha(String captcha) { + this.captcha = captcha; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/IncorrectCaptchaException.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/IncorrectCaptchaException.java new file mode 100644 index 0000000..4c43e72 --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/IncorrectCaptchaException.java @@ -0,0 +1,28 @@ +package com.xncoding.pos.shiro; + +import org.apache.shiro.authc.AuthenticationException; + +/** + * Description : 验证码错误异常 + */ +public class IncorrectCaptchaException extends AuthenticationException { + + private static final long serialVersionUID = 1L; + + public IncorrectCaptchaException() { + super(); + } + + public IncorrectCaptchaException(String message, Throwable cause) { + super(message, cause); + } + + public IncorrectCaptchaException(String message) { + super(message); + } + + public IncorrectCaptchaException(Throwable cause) { + super(cause); + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/KaptchaFilter.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/KaptchaFilter.java new file mode 100644 index 0000000..5862c6f --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/KaptchaFilter.java @@ -0,0 +1,107 @@ +package com.xncoding.pos.shiro; + +import com.xncoding.pos.dao.entity.ManagerInfo; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.subject.Subject; +import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; +import org.apache.shiro.web.util.WebUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +/** + * Description: 验证码过滤器此过滤器已经在shiro中配置,这里不需要再次配置拦截路径 + */ +public class KaptchaFilter extends FormAuthenticationFilter { + + public static final String DEFAULT_CAPTCHA_PARAM = "captcha"; + + private String captchaParam = DEFAULT_CAPTCHA_PARAM; + + private static final Logger _logger = LoggerFactory.getLogger(KaptchaFilter.class); + + //登录验证 + @Override + protected boolean executeLogin(ServletRequest request, ServletResponse response) + throws Exception { + + CaptchaUsernamePasswordToken token = createToken(request, response); + try { + _logger.info("KaptchaFilter.executeLogin"); + /*图形验证码验证*/ + doCaptchaValidate((HttpServletRequest) request, token); + Subject subject = getSubject(request, response); + subject.login(token);//正常验证 + + //到这里就算验证成功了,把用户信息放到session中 + ManagerInfo user = ShiroKit.getUser(); + ((HttpServletRequest) request).getSession().setAttribute("user", user); + + return onLoginSuccess(token, subject, request, response); + + } catch (AuthenticationException e) { + return onLoginFailure(token, e, request, response); + } + } + + @Override + protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, + ServletRequest request, ServletResponse response) throws Exception { + issueSuccessRedirect(request, response); + //we handled the success redirect directly, prevent the chain from continuing: + return false; + } + + protected void issueSuccessRedirect(ServletRequest request, ServletResponse response) throws Exception { + WebUtils.issueRedirect(request, response, "/", null, true); + } + + // 验证码校验 + protected void doCaptchaValidate(HttpServletRequest request, CaptchaUsernamePasswordToken token) { + _logger.info("KaptchaFilter.doCaptchaValidate"); + //session中的图形码字符串 + String captcha = (String) request.getSession().getAttribute( + com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY); + _logger.info("session中的图形码字符串:" + captcha); + + //比对 + if (captcha == null || !captcha.equalsIgnoreCase(token.getCaptcha())) { + throw new IncorrectCaptchaException(); + } + } + + @Override + protected CaptchaUsernamePasswordToken createToken(ServletRequest request, ServletResponse response) { + + String username = getUsername(request); + String password = getPassword(request); + String captcha = getCaptcha(request); + boolean rememberMe = isRememberMe(request); + String host = getHost(request); + + return new CaptchaUsernamePasswordToken(username, password.toCharArray(), rememberMe, host, captcha); + } + + public String getCaptchaParam() { + return captchaParam; + } + + public void setCaptchaParam(String captchaParam) { + this.captchaParam = captchaParam; + } + + protected String getCaptcha(ServletRequest request) { + return WebUtils.getCleanParam(request, getCaptchaParam()); + } + + //保存异常对象到request + @Override + protected void setFailureAttribute(ServletRequest request, AuthenticationException ae) { + request.setAttribute(getFailureKeyAttribute(), ae); + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyExceptionResolver.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyExceptionResolver.java new file mode 100644 index 0000000..de93d5f --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyExceptionResolver.java @@ -0,0 +1,24 @@ +package com.xncoding.pos.shiro; + +import org.apache.shiro.authz.UnauthorizedException; +import org.springframework.web.servlet.HandlerExceptionResolver; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Description : 自定义异常处理类 + */ +public class MyExceptionResolver implements HandlerExceptionResolver { + + @Override + public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { + //如果是shiro无权操作,因为shiro 在操作auno等一部分不进行转发至无权限url + if (ex instanceof UnauthorizedException) { + return new ModelAndView("error/shiro_403"); + } + return null; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyShiroRealm.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyShiroRealm.java new file mode 100644 index 0000000..d3f505a --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/MyShiroRealm.java @@ -0,0 +1,126 @@ +package com.xncoding.pos.shiro; + +import com.xncoding.pos.common.dao.entity.Permission; +import com.xncoding.pos.service.ManagerInfoService; +import com.xncoding.pos.dao.entity.ManagerInfo; +import com.xncoding.pos.dao.entity.SysRole; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authc.credential.CredentialsMatcher; +import org.apache.shiro.authc.credential.HashedCredentialsMatcher; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.util.ByteSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Description : 身份校验核心类 + */ + +public class MyShiroRealm extends AuthorizingRealm { + + private static final Logger _logger = LoggerFactory.getLogger(MyShiroRealm.class); + + @Autowired + ManagerInfoService managerInfoService; + + /** + * 认证信息.(身份验证) + * Authentication 是用来验证用户身份 + * + * @param token + * @return + * @throws AuthenticationException + */ + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) + throws AuthenticationException { + + _logger.info("MyShiroRealm.doGetAuthenticationInfo()"); + + //获取用户的输入的账号. + String username = (String) token.getPrincipal(); + //_logger.info("用户的账号:"+username); + + //通过username从数据库中查找 ManagerInfo对象 + //实际项目中,这里可以根据实际情况做缓存,如果不做,Shiro自己也是有时间间隔机制,2分钟内不会重复执行该方法 + ManagerInfo managerInfo = managerInfoService.findByUsername(username); + + if (managerInfo == null) { + return null; + } + + //交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以自定义实现 + SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo( + managerInfo, //用户 + managerInfo.getPassword(), //密码 + ByteSource.Util.bytes(managerInfo.getCredentialsSalt()),//salt=username+salt + getName() //realm name + ); + + //明文: 若存在,将此用户存放到登录认证info中,无需自己做密码对比,Shiro会为我们进行密码对比校验 +// SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo( +// managerInfo, //用户名 +// managerInfo.getPassword(), //密码 +// getName() //realm name +// ); + return authenticationInfo; + } + + /** + * 此方法调用hasRole,hasPermission的时候才会进行回调. + *

+ * 权限信息.(授权): + * 1、如果用户正常退出,缓存自动清空; + * 2、如果用户非正常退出,缓存自动清空; + * 3、如果我们修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。 + * (需要手动编程进行实现;放在service进行调用) + * 在权限修改后调用realm中的方法,realm已经由spring管理,所以从spring中获取realm实例,调用clearCached方法; + * :Authorization 是授权访问控制,用于对用户进行的操作授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。 + * + * @param principals + * @return + */ + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { + /* + * 当没有使用缓存的时候,不断刷新页面的话,这个代码会不断执行, + * 当其实没有必要每次都重新设置权限信息,所以我们需要放到缓存中进行管理; + * 当放到缓存中时,这样的话,doGetAuthorizationInfo就只会执行一次了, + * 缓存过期之后会再次执行。 + */ + _logger.info("权限配置-->MyShiroRealm.doGetAuthorizationInfo()"); + SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); + ManagerInfo managerInfo = (ManagerInfo) principals.getPrimaryPrincipal(); + + //设置相应角色的权限信息 + for (SysRole role : managerInfo.getRoles()) { + //设置角色 + authorizationInfo.addRole(role.getRole()); + for (Permission p : role.getPermissions()) { + //设置权限 + authorizationInfo.addStringPermission(p.getPermission()); + } + } + + return authorizationInfo; + } + + /** + * 设置认证加密方式 + */ + @Override + public void setCredentialsMatcher(CredentialsMatcher credentialsMatcher) { + HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher(); + md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.HASH_ALGORITHM_NAME); + md5CredentialsMatcher.setHashIterations(ShiroKit.HASH_ITERATIONS); + super.setCredentialsMatcher(md5CredentialsMatcher); + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/RoleFilter.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/RoleFilter.java new file mode 100644 index 0000000..9dbda1e --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/RoleFilter.java @@ -0,0 +1,32 @@ +package com.xncoding.pos.shiro; + +import org.apache.shiro.subject.Subject; +import org.apache.shiro.web.filter.authz.RolesAuthorizationFilter; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; + +/** + * Description : 角色过滤器,为了实现or的效果就使用这个过滤器,shiro默认是and的效果 + */ +public class RoleFilter extends RolesAuthorizationFilter { + + public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) + throws IOException { + + Subject subject = getSubject(request, response); + String[] rolesArray = (String[]) mappedValue; + + if (rolesArray == null || rolesArray.length == 0) { + return true; + } + for (int i = 0; i < rolesArray.length; i++) { + if (subject.hasRole(rolesArray[i])) { + return true; + } + } + return false; + } + +} diff --git a/springboot-shiro/src/main/java/com/xncoding/pos/shiro/ShiroKit.java b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/ShiroKit.java new file mode 100644 index 0000000..9cfdd2b --- /dev/null +++ b/springboot-shiro/src/main/java/com/xncoding/pos/shiro/ShiroKit.java @@ -0,0 +1,252 @@ +/** + * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com). + *

+ * 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 + *

+ * http://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. + */ +package com.xncoding.pos.shiro; + +import com.xncoding.pos.dao.entity.ManagerInfo; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; +import org.apache.shiro.crypto.hash.SimpleHash; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; + +/** + * shiro工具类 + * + * @author dafei, Chill Zhuang + */ +public class ShiroKit { + + private static final String NAMES_DELIMETER = ","; + + /** + * 散列算法 + */ + public final static String HASH_ALGORITHM_NAME = "MD5"; + + /** + * 循环次数 + */ + public final static int HASH_ITERATIONS = 2; + + /** + * shiro密码加密工具类 + * + * @param credentials 密码 + * @param saltSource 密码盐 + * @return + */ + public static String md5(String credentials, String saltSource) { + return new SimpleHash(HASH_ALGORITHM_NAME, credentials, saltSource, HASH_ITERATIONS).toHex(); + } + + /** + * 获取随机盐值 + * + * @param length 字节长度,一个字节2位16进制数表示 + * @return + */ + public static String getRandomSalt(int length) { + return new SecureRandomNumberGenerator().nextBytes(length).toHex(); + } + + /** + * 获取当前 Subject + * + * @return Subject + */ + public static Subject getSubject() { + return SecurityUtils.getSubject(); + } + + /** + * 获取封装的 ShiroUser + * + * @return ShiroUser + */ + public static ManagerInfo getUser() { + if (isGuest()) { + return null; + } else { + return (ManagerInfo) getSubject().getPrincipals().getPrimaryPrincipal(); + } + } + + /** + * 从shiro获取session + */ + public static Session getSession() { + return getSubject().getSession(); + } + + /** + * 获取shiro指定的sessionKey + */ + @SuppressWarnings("unchecked") + public static T getSessionAttr(String key) { + Session session = getSession(); + return session != null ? (T) session.getAttribute(key) : null; + } + + /** + * 设置shiro指定的sessionKey + */ + public static void setSessionAttr(String key, Object value) { + Session session = getSession(); + session.setAttribute(key, value); + } + + /** + * 移除shiro指定的sessionKey + */ + public static void removeSessionAttr(String key) { + Session session = getSession(); + if (session != null) + session.removeAttribute(key); + } + + /** + * 验证当前用户是否属于该角色?,使用时与lacksRole 搭配使用 + * + * @param roleName 角色名 + * @return 属于该角色:true,否则false + */ + public static boolean hasRole(String roleName) { + return getSubject() != null && roleName != null + && roleName.length() > 0 && getSubject().hasRole(roleName); + } + + /** + * 与hasRole标签逻辑相反,当用户不属于该角色时验证通过。 + * + * @param roleName 角色名 + * @return 不属于该角色:true,否则false + */ + public static boolean lacksRole(String roleName) { + return !hasRole(roleName); + } + + /** + * 验证当前用户是否属于以下任意一个角色。 + * + * @param roleNames 角色列表 + * @return 属于:true,否则false + */ + public static boolean hasAnyRoles(String roleNames) { + boolean hasAnyRole = false; + Subject subject = getSubject(); + if (subject != null && roleNames != null && roleNames.length() > 0) { + for (String role : roleNames.split(NAMES_DELIMETER)) { + if (subject.hasRole(role.trim())) { + hasAnyRole = true; + break; + } + } + } + return hasAnyRole; + } + + /** + * 验证当前用户是否属于以下所有角色。 + * + * @param roleNames 角色列表 + * @return 属于:true,否则false + */ + public static boolean hasAllRoles(String roleNames) { + boolean hasAllRole = true; + Subject subject = getSubject(); + if (subject != null && roleNames != null && roleNames.length() > 0) { + for (String role : roleNames.split(NAMES_DELIMETER)) { + if (!subject.hasRole(role.trim())) { + hasAllRole = false; + break; + } + } + } + return hasAllRole; + } + + /** + * 验证当前用户是否拥有指定权限,使用时与lacksPermission 搭配使用 + * + * @param permission 权限名 + * @return 拥有权限:true,否则false + */ + public static boolean hasPermission(String permission) { + return getSubject() != null && permission != null + && permission.length() > 0 + && getSubject().isPermitted(permission); + } + + /** + * 与hasPermission标签逻辑相反,当前用户没有制定权限时,验证通过。 + * + * @param permission 权限名 + * @return 拥有权限:true,否则false + */ + public static boolean lacksPermission(String permission) { + return !hasPermission(permission); + } + + /** + * 已认证通过的用户,不包含已记住的用户,这是与user标签的区别所在。与notAuthenticated搭配使用 + * + * @return 通过身份验证:true,否则false + */ + public static boolean isAuthenticated() { + return getSubject() != null && getSubject().isAuthenticated(); + } + + /** + * 未认证通过用户,与authenticated标签相对应。与guest标签的区别是,该标签包含已记住用户。。 + * + * @return 没有通过身份验证:true,否则false + */ + public static boolean notAuthenticated() { + return !isAuthenticated(); + } + + /** + * 认证通过或已记住的用户。与guset搭配使用。 + * + * @return 用户:true,否则 false + */ + public static boolean isUser() { + return getSubject() != null && getSubject().getPrincipal() != null; + } + + /** + * 验证当前用户是否为“访客”,即未认证(包含未记住)的用户。用user搭配使用 + * + * @return 访客:true,否则false + */ + public static boolean isGuest() { + return !isUser(); + } + + /** + * 输出当前用户信息,通常为登录帐号信息。 + * + * @return 当前用户信息 + */ + public static String principal() { + if (getSubject() != null) { + Object principal = getSubject().getPrincipal(); + return principal.toString(); + } + return ""; + } + +} diff --git a/springboot-shiro/src/main/resources/application.yml b/springboot-shiro/src/main/resources/application.yml new file mode 100644 index 0000000..eb1abbc --- /dev/null +++ b/springboot-shiro/src/main/resources/application.yml @@ -0,0 +1,116 @@ +########################################################## +################## 所有profile共有的配置 ################# +########################################################## + +################### 自定义项目配置 ################### +xncoding: + kaptcha-open: true #是否开启登录时验证码 (true/false) + session-open: false #是否开启session验证 (true/false) + session-invalidate-time: 7200 #session失效时间 单位:秒 + session-validation-interval: 3600 #多久检测一次失效的session 单位:秒 + heartbeat-timeout: 10 # 机具心跳报告超时时间 单位:分钟 + +################### 项目启动端口 ################### +server.port: 8092 + +################### spring配置 ################### +spring: + profiles: + active: dev + thymeleaf: + mode: HTML + cache: false + mvc: + view: + prefix: /templates + http: + multipart: + max-request-size: 100MB #最大请求大小 + max-file-size: 100MB #最大文件大小 + +################### mybatis-plus配置 ################### +mybatis-plus: + mapper-locations: classpath*:com/xncoding/pos/dao/repository/mapping/*.xml + typeAliasesPackage: > + com.xncoding.pos.api.model, + com.xncoding.pos.dao.entity, + com.xncoding.pos.common.dao.entity + global-config: + id-type: 0 # 0:数据库ID自增 1:用户输入id 2:全局唯一id(IdWorker) 3:全局唯一ID(uuid) + db-column-underline: false + refresh-mapper: true + configuration: + map-underscore-to-camel-case: true + cache-enabled: true #配置的缓存的全局开关 + lazyLoadingEnabled: true #延时加载的开关 + multipleResultSetsEnabled: true #开启的话,延时加载一个属性时会加载该对象全部属性,否则按需加载属性 + +################### spring security配置 ################### +security: + ignored: /static/** + +logging: + level: + org.springframework.web.servlet: ERROR + +--- + +##################################################################### +######################## 开发环境profile ########################## +##################################################################### +spring: + profiles: dev + datasource: + url: jdbc:mysql://123.207.66.156:3306/pos?useSSL=false&autoReconnect=true&tinyInt1isBit=false&useUnicode=true&characterEncoding=utf8 + username: root + password: _EnZhi123 + thymeleaf: + cache: false + +################### 自定义项目配置 ################### +xncoding: + excel-path: E:/home/ + files-path: E:/home/ + files-url-prefix: https://show.xncoding.net/files/ # 文件访问URL前缀 + pics-path: E:/home/ + pics-url-prefix: https://show.xncoding.net/pics/ # 图片访问URL前缀 + posapi-url-prefix: http://123.207.66.156:9095 + +logging: + level: + ROOT: INFO + com: + xncoding: DEBUG + file: E:/logs/app-manage.log + +--- + +##################################################################### +######################## 测试环境profile ########################## +##################################################################### + +spring: + profiles: test + datasource: + url: jdbc:mysql://123.207.66.156:3306/pos?useSSL=false&autoReconnect=true&tinyInt1isBit=false&useUnicode=true&characterEncoding=utf8 + username: root + password: _EnZhi123 + thymeleaf: + cache: false + +################### 自定义项目配置 ################### +xncoding: + excel-path: /var/data/ + files-path: /usr/share/nginx/html/files/ + files-url-prefix: https://show.xncoding.net/files/ # 文件访问URL前缀 + pics-path: /usr/share/nginx/html/pics/ + pics-url-prefix: https://show.xncoding.net/pics/ # 图片访问URL前缀 +# posapi-url-prefix: http://posapi.enzhico.net + posapi-url-prefix: http://123.207.66.156:9095 + +logging: + level: + ROOT: INFO + com: + xncoding: DEBUG + file: /var/logs/app-manage.log diff --git a/springboot-shiro/src/main/resources/banner.txt b/springboot-shiro/src/main/resources/banner.txt new file mode 100644 index 0000000..859b78f --- /dev/null +++ b/springboot-shiro/src/main/resources/banner.txt @@ -0,0 +1,23 @@ + + _____ _______ _____ _____ + /\ \ /::\ \ /\ \ /\ \ + /::\____\ /::::\ \ /::\____\ /::\ \ + /:::/ / /::::::\ \ /:::/ / /::::\ \ + /:::/ / /::::::::\ \ /:::/ / /::::::\ \ + /:::/ / /:::/~~\:::\ \ /:::/ / /:::/\:::\ \ + /:::/ / /:::/ \:::\ \ /:::/____/ /:::/__\:::\ \ + /:::/ / /:::/ / \:::\ \ |::| | /::::\ \:::\ \ + /:::/ / /:::/____/ \:::\____\ |::| | _____ /::::::\ \:::\ \ + /:::/ / |:::| | |:::| | |::| | /\ \ /:::/\:::\ \:::\ \ +/:::/____/ |:::|____| |:::| | |::| | /::\____\/:::/__\:::\ \:::\____\ +\:::\ \ \:::\ \ /:::/ / |::| | /:::/ /\:::\ \:::\ \::/ / + \:::\ \ \:::\ \ /:::/ / |::| | /:::/ / \:::\ \:::\ \/____/ + \:::\ \ \:::\ /:::/ / |::|____|/:::/ / \:::\ \:::\ \ + \:::\ \ \:::\__/:::/ / |:::::::::::/ / \:::\ \:::\____\ + \:::\ \ \::::::::/ / \::::::::::/____/ \:::\ \::/ / + \:::\ \ \::::::/ / ~~~~~~~~~~ \:::\ \/____/ + \:::\ \ \::::/ / \:::\ \ + \:::\____\ \::/____/ \:::\____\ + \::/ / ~~ \::/ / + \/____/ \/____/ + diff --git a/springboot-shiro/src/main/resources/ehcache.xml b/springboot-shiro/src/main/resources/ehcache.xml new file mode 100644 index 0000000..4c585ea --- /dev/null +++ b/springboot-shiro/src/main/resources/ehcache.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/springboot-shiro/src/main/resources/public/favicon.ico b/springboot-shiro/src/main/resources/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fe6cf7a7609dd163ef4ce62c7b655599f74321b4 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xgi+L2NF{@OZ^`%_&*e& z`v;devFe7JewcgFX>|Xh^U>9#^U>9#^I_`oi%SF38w{hSJ^JWJwG-K`#Mv(eR)(yP Z6gJEb5KW3cWVMv&MK%Y-hLr>4(g1Mpw(kG{ literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/css/404.css b/springboot-shiro/src/main/resources/public/static/css/404.css new file mode 100644 index 0000000..b2fe0bc --- /dev/null +++ b/springboot-shiro/src/main/resources/public/static/css/404.css @@ -0,0 +1,36 @@ +body, div { + margin: 0; + padding: 0; +} +body { + background: url("../img/error/error_bg.jpg") repeat-x scroll 0 0 #67ACE4; +} +#container { + margin: 0 auto; + padding-top: 50px; + text-align: center; + width: 560px; +} +#container img { + border: medium none; + margin-bottom: 50px; +} +#container .error { + height: 200px; + position: relative; +} +#container .error img { + bottom: -50px; + position: absolute; + right: -50px; +} +#container .msg { + margin-bottom: 65px; +} +#cloud { + background: url("../img/error/error_cloud.png") repeat-x scroll 0 0 transparent; + bottom: 0; + height: 170px; + position: absolute; + width: 100%; +} \ No newline at end of file diff --git a/springboot-shiro/src/main/resources/public/static/css/bootstrap.min.css b/springboot-shiro/src/main/resources/public/static/css/bootstrap.min.css new file mode 100644 index 0000000..f7bca0a --- /dev/null +++ b/springboot-shiro/src/main/resources/public/static/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-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-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-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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-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{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-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{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-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{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive 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-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ diff --git a/springboot-shiro/src/main/resources/public/static/css/login.css b/springboot-shiro/src/main/resources/public/static/css/login.css new file mode 100644 index 0000000..12d6272 --- /dev/null +++ b/springboot-shiro/src/main/resources/public/static/css/login.css @@ -0,0 +1,84 @@ +html{height: 100%;} +body.signin { + background: #18c8f6; + height: auto; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + color: rgba(255,255,255,.95); +} + +.signinpanel { + width: 750px; + margin: 10% auto 0 auto; +} + +.signinpanel .logopanel { + float: none; + width: auto; + padding: 0; + background: none; +} + +.signinpanel .signin-info ul { + list-style: none; + padding: 0; + margin: 20px 0; +} + +.signinpanel .form-control { + display: block; + margin-top: 15px; +} + +.signinpanel .btn { + margin-top: 15px; +} + +.signinpanel form { + background: rgba(255, 255, 255, 0.2); + border: 1px solid rgba(255,255,255,.3); + -moz-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); + -webkit-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); + box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 30px; +} + +.signup-footer{border-top: solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top: 15px;} + +@media screen and (max-width: 768px) { + .signinpanel, + .signuppanel { + margin: 0 auto; + width: 420px!important; + padding: 20px; + } + .signinpanel form { + margin-top: 20px; + } + .signup-footer { + margin-bottom: 10px; + } + .signuppanel .form-control { + margin-bottom: 10px; + } + .signup-footer .pull-left, + .signup-footer .pull-right { + float: none !important; + text-align: center; + } + .signinpanel .signin-info ul { + display: none; + } +} +@media screen and (max-width: 320px) { + .signinpanel, + .signuppanel { + margin:0 20px; + width:auto; + } +} diff --git a/springboot-shiro/src/main/resources/public/static/css/patterns/header-profile-skin-1.png b/springboot-shiro/src/main/resources/public/static/css/patterns/header-profile-skin-1.png new file mode 100644 index 0000000000000000000000000000000000000000..41c5c089bbf7ea03e71b19fe86d590d9e5e9f471 GIT binary patch literal 26278 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 literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/css/patterns/header-profile-skin-3.png b/springboot-shiro/src/main/resources/public/static/css/patterns/header-profile-skin-3.png new file mode 100644 index 0000000000000000000000000000000000000000..7a80132da83d9390a435359e8e02a6b28ef54996 GIT binary patch literal 33032 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 LNkvXXu0mjf-K0Pr literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/css/patterns/shattered.png b/springboot-shiro/src/main/resources/public/static/css/patterns/shattered.png new file mode 100644 index 0000000000000000000000000000000000000000..90ed42b85b7bdc8bd3147b9b21f53d3c57fdac26 GIT binary patch literal 137733 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

YWl9y`;K)zj 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

=Q8sO0wWEuL4*j_O7+qC@+(OC za%7h%t44Y!4&HDOr|B=HJntg`;_w@N4-Plsgn;XLaDHf+Iz)$@`R~RiFCBqBjYW@A z4O=0>8Lte%%+jH~;2x|dGimd|w=QG(0pWmr|M2eEm@8)TI$yRuo+jaRhHu!Wwd`c| z`;4Ym6o1kQxh(6)6lj(@q*Prn!a?yIQ_|lCwZfQ{eO?I{fqvp&?zmE3AzpagDm+_0 z`+2{-LJW`|^i=XE!ss1W-!2p6HDi}p5fp&@^3meua)MT^*bXVkY;@(|-K?<*v8b;` z5;PS=osbTUEP0~-60P6_7|kV*FQF*5h-M^?&bXciFGp#&`@|@eO4vD1%*aM;hrbZeo09!l|9j6+}bF7_DZP z$@fe}?Q@wt9G%Cu5s3$aHGZ+V{kJF_)?Scm(750J=O8R0j>`AbWoLHRz@YnTXqQAp z5Z5CrpNk0kfaeGWz}a()d~=pKE%H^S z7b$oO%~{p16D>pT%_a9?VH}JS2u{PP*zGtB^tw#20p}`&?@7OrheB`Nd#g>mcIz0qz8I+R+u6=*<0l% zd7^WjXAE|d0>By}U4=8MK8YMvs}kne_Ps4961`ZBqpT^pO7#T~y2;->;$)MUv-^w4 zprWcha~bUN>)kognt=W!cBOH^hofdtSf72d-JJa0W^6{i#~E6*X^7Qb=5)|}uXW|5 zkXhf|G|ovhVNti$)8WS&-Zj^QMqlh0DFPBkaLJk<9Zt{FhHF?zVrJ0cRA~<26Al&E z$eXUex-y;Dp}lv1B7n*YC-N|GHyG&O{&6u1vAj}E3vC~ zT-sr=BNN#waQ(V#?KV;3u|>?^bU9au!xB-dvOk>v9?R~jn#I+DT_}pV*u0JxKQmqA zMkj>4NocQ#TYk$i5|n4gRLGWyK0?0r&z}0niz3cPf0I0zxCdMlo6EPbWG4r9 z2y7S>%gpe8x+h>T0sY!RrLPeAb^MKGjSo`6iKWFtW*X;B5K7QK%M_q_+pP{!H_r*uY zp}+3Ty*^eNFvdj(Xlh!#p5Tni2~QnMD|P>0@Fnt+gB(;btS84U;dGcneVvtGE2dxt z@xNLYF4lF{{=3~osw_Oolri?R+Vq1L8~cS(XK&_Mb+2?N!^g_Fjq|d7-+{qI1#cca+-^@!9vp|G zXKWwxU6cAQUvqzI8IZ$2Ipe@Hi*uNM+$DU7c>oj;n#N|+ z;n$Sokx%N;cD76grMudWt6(^(TH!Pf;@Jn@}4<4GcIjQtL{nE+6y$KmWvfYYaeXepIS7Csa3S zVFt!IOy2dNbaBz(bLico(3fY;Y*Tw2f1SFIVtbYP^EB`;=*N%ykh%J}va~f6hR$`r zU*qDPC+7A^b#QCaIa}I5qDxq(m*vOdkuF=wpvyK*Xi>S3B8{aqhmBrCIZX+Etx-Y~ z_*MQDmA(SH&u$oZ_A0gMhx8BkE4qBPxC81CC?F-)_8F#Z#zCWMAxPxN>lI;>^gzgm zis-OGfA7RhgfNQ2d8AsJbBWUx3d+G{AYquCbr7&Ii|RDhGv44@8DY0aH*c+gvIekE$YcyH^A1P+V7RumPhu1JQK9rxMG!_Yl9i_(h0T6o_##82S; zH5om_do`)V&uJF=`F8uDT8{U~z2Hv|uCH0v44oQXdEGY6u4T(4kdV4|5WhcaoF^FS z#$>SP@7c2aC3hSd50}IF^4!IriR}_sY!*eJv(KWVm;#HBckVI%KUM(=UQ305x1F@xm$y&I;Pcn??_} za1fK{W&fM3L(oa=$~lGuaZpM8JItfy-_+H=>zUDecg9M+`fn=$xexD2rIN6T#-1IB zuUx#qsArB+G9PO#v}qlYR^qWTU5c@>(O=BuM1>cf9pCT*{I-+jrr7Rj^_fXr;(Q=M zWNM$tX##rL%0!v0uzA|byHI<(#gwyu4mlu!+NrDU+RKq{7opNiGrQgS5hCDd*oEv& zfXmuV{oJg0#A!iv#i0%>jz6B61OxNEK3NR;VZz!kG)H?3_v`K>L*=pFdZ|T@H0By~ zs9%!Se++6$!n3!oLA~CN5?n1mdQ> zZ(~4sm|-VlIIYI?VExo~yWKq69Dni4?Slv1St{o>xnTiC`f^cF99bSd>w_)O`gXzW zBwc+uo+GsxKUxkwA!eZX%pC5)^qTPP@{)Yf&S7nVKHNR?Ep-XaFRJ<@E%1xJz-qb` zbqgtNFnLdHcQiUW_Rd#TP6fa-5jX??Dz`(MpGcCr`jzDRt#P=qmBFJh4B{?XV0Tpv zINh-SZV)mdi}8+lN|zUqw2>tev~)6~Tdixwb!7EErVOKEdpULePpWSJZp&O4w*0vf z;rXV=#%U50!(2-8w%AafC)kav_;@WV`*^JFs`!Qwk-5`GbUO^}#f;Er2x_ys>59ZH z$K0c{V+knNlR?lwER#%MpP|fboY0xy&~j}IW-X6L0gdG4pzr#0**rLTK(Py}h;M)P z(>4C|?o8@d!}ln6=~$_#=fU#nGXpk@(Xfp1RHJg41v=jrc+eS*dF7qu zYBo{lxn^Qp4GXfkl-Pgt9DDn1{A#y!i{qHYNo&@u5?Cui_QsC|Hh&C}pfn?DV6*3F z;4tD|tS#8^w|iZeVv3RC#}((l$1m)50Efa{n;9+TC$#x#Vy7(NgHhm6-dMg@qY^~Y z_e}+|gYz^qH9U!k1Kfcc@Gl%$t&oOr2-;g=?(_#1V;Qln_C5>aDaJ_!pZ9s z+VFgF@{bRHz1=)`0K?YSPZ2D=FO`wrwzVChW-2A+@OC^Wv%5U2&(6wv7Lz8~5x;Hu z<&RC3XP4bv!Z+4z!+i>diQUA_d3-UDk;5W0h>~8vqZ-)~3EeD#mxN&8_+1*8Y0QPN z@KhFS*Rqmw-JQPs-h0vSR;xeW>z5GhW#f{J=4cY8SuLawcH-kbDX7er)>-ehyQ8Nk zi}yvySLr-X%S%QoTO-|Be8qoAqjA~SwUgpk+~H9;i|A`ix{DMIRC-TsN}OeOv@cW* zdf&YmdkJ5)dj9myZJGV518*CZb?bW?` z=Cq2pwp>gDH+XNBKNh{->ZvV9KB*8-H!P#KWZy;@WVB2}#V|!KoR8iAfUASPd#gV! ztrKQ11xx|nsHFd84?0MX(DqgqcL;jvJXWe=I5e!t?}7SI{^i*JptM&|6WyB$5$^qq zpRD*u+SBITFI2?yiH~~~hY>f%STqj%K?cus;7g6#RBd(CrQ#fU;;&nZk_=;|GIEow zZKs}9lVqosRo0t)(Rz#RzS_cxW!*=w=Q0g=Kr#~p%t{UO>*QOiaJQ~p@!pzj4*IGz z|1-(b-8uq-@K8bYTdPx2iAlyzME6A6n*^s<$>#H4ZZ;2odV;sUIeD->JTugqcQZx3 z?+*hjfmL6&^$UPGzv9CZjtnp+eD!~6I@=dHt}IVyWQ1;IN+Cs+RHbyPqO5dQO68KO ztLVgD`9rU5wN`~}W4EAg2E^|h;q zWhcUx^BCP#-h02&dQg1tJ!+J~5?zfOx7`c)mgV`e^Q4!+nmug42c^)mthS18!`2bd zDvkpCdd0@Rd2fH(G(bt56-XZT`bDOQ&KAW87d#DJI#W zLfTy{cji_r_1-$lO)YJop@=f4W=2jZv8hHOG2UwUc_|sy5@Av<6G>W$i;(_xKCKzn zP)MAoN&!9i$RuLrcT1bhk&iKsdQ zj;F6-@X3?%BL}6TrPP#)rJO?#_>Uh*4ih%<+xBcg7H%~(uI(-N%DSle==?@| zAAjq>RBY&r)u1{b?M2EnSP8M$Iq=6Dgt2c?*Brb@g+Rdo0+}lF&FIve zz|J*Kyw9_hx4Q&>C3Gn4ed2i5+g3S~NK}o*a{y03u)iSsDz7ggC_(b|#haI(zgnN4 zUtK&$sb8%7$BXBykf7&gri#?5-eTD-r6d3q=aXqf<(xEtX@4 zO7Gq__X~a@O5D&4O__O=Ckl8Cf+|pIX^JLMKJ{(<=S2B93AP&2B5TF!*n2z#<>}U4 zd^rgoFn;bCmkCWdG;Iji#3|pY4P8DD>vf<%!NG90t|6KooHuRE>y~JeT`BEkQL9}y z8wC3q^)H*#vo#L;`g6&jf{fNokO|lA!KwX%3(OoxoF_(zi<1y*EJz&?FTIG_Q zOEcx|L3|Bk4<0i;c)p0FdJRlUTDvtS#>4aCBE{4}abu|&Wia9NE*%VD+YUl#!yzDS zH`>JR_6LFy7dL*V_)gFcQmQ7D&ayL{o(MY89R-5wI}3vWrAB+tGZVP&qeCVCP9(-F!RdYy0hpqeHH#+S#4DparywrbYlR0mFn@`JxFg&z0oq5 z<7NA}eGNbMKRw%E$(_DgZ=S8rPR}=ID}?nA1XW*akHLi&(P@KEnFHmRW0nqu*G;p% zGgB@=#w>~oVMbvcB{&#%ATHdn)CJTO*tzc?G!mDJrI1+AdV(R)CPKd0fs!YodJH@< zkUTCELK=m)a#~{WOaeC0C(#^E>I|r~8nnDs-_0H@&nN18Y_R?ix(^BJ^OB~T4*O18 z@R7aTap^GgJPA9@zG=4pAD77;LIi(Tmj_kUsCOj;qzf{IJr_~jk`QsOWp+|Rd=ANz zhW5oS-3jSB5Gjn{aI5yA`1PtJR#6UlH=3n;^E#lGbjxa#!sb?YPwouV_hC5G-Hok7JgnFv9=;oJalk+ zNM|1WDP`2VP+nET+gufiEjB`Fzu~-8Rp3K4*t_m@0l0qVFgF-02^)D4kFmsNPX@Rz zf)}yc&(^OlHW!|}*sPyFUkwnNj)oI6=l%4P1w!5!Dmd$DJTVs0hvr7}CSc~uj2U3$ zj@OK|J-vS2(GijES?@ZL^F7L-eQc1Hb$A8{T?<>yc8h?wPK^S%&VG_fms+nBgp{Y8 z@Lj@Ua`g~~%>vwNT__}bKZ2dTRaJYW!T`0g$_t@%2^l+_kgOr~;V6?Krn@S`*bd)2 ziaX%DXahdZlUQ~D0q<6VyXK~+_h$`8jkw-yTK>Q?Qd59A7IPh9MM)TJj`4L={(<2}!xwP?Z%Wixt*&#KCXt*%4cN3-m*sX+2M!^T%lf8Uj47>Bz znA9ynfQ7}936Y6t{42Ti72^F&5x+vvug^|5=l5pF>Ne@M@$0@3`HIzMDJ)o4P5P`v z#D`8W#akfSPp@VCc9Iesl4sWxV2zjp6L8WnN0hwhj}+muwpms$kEERBaSB9Ehw$=nlX{0o1?E4{>XU~vS+v>Q zI8g-@)dPnF*Lm0?jtG8RYH{aiR&)&b+k^B+mmkCUOBoQai}Jm0Rj5UV`QOx*kRq#~_FdEn41gq?_M$5vK=v`TS zBdyN>$#E1S`6mJ{1kcM5zzk;leE+N7{t8)6bRWlyRCtZhw}h0V`p{bgo$ZV?9)1h>!RdQzgtyQ2dYxtmWq3r6P0-MR0o z+!pP@aS_5nys`lten8+KHNl3Q%0G1{lLvRD*pAT6i6OERfyr^<5_6BgmVK~NTQRUL z@B3;kv}nAfN~N$3@dDKtz8}CvLQu;IRMv_k zyZYZY>+jZQu>0qmb*-eMRGP4i)>~U!oHj<rW*iO_Yn$)v|3hu8i5 z^rXEeL`xdB{RG;&R3?0WC}KIQqF34$YZtZGx?=gM($VzT&28=4-`M*AIdR<_k!_PA z(#8#+DXV^ZiQf#*LxI|KPJ?|C6^$vtK-}|*JU=u(qK-IFU&MmbD{uLNfgNs^w9R9@ z(-FjV8IG9%SS%>@`%O7gpbU2~VE6D8wG`vzJ+h;P&`X)@BiM84#A)EqYG5KRVxZcP z1#$+`AT71qR}xSI+>5Af@A44`-8eeR(WtJq7E$}vKFlpeJ|htTZjPCHlg}4xuuZ8n z5}MOZp*A_THygGycO=^cQ!GuLz3V5&$)V^#94&Eou74cpSqP~GOL7;fVOa~4f@jJY zNA6qEGkwtj?4?OCG2o5T_kBpw8GdeM^1zjoQT6bl3ERWt+)T-G?D*2YHgd)YvVcR8 zn_)AvpV-p)Whi(^serf2y)Yr{GK>eGuVhImm^yN~D+g6x@ZyoDQc>ORBj#FL=K{l! zooQA&nf*Rey-#?yAng%6`#(T+=4_i--f-~V^>9k%z(`ziQZcdD5X@59FlbP9GOu?! z=Yix~#ci`SwXX=bN^PYHlSF({bA=Wt+JhgvkxO7U#fee9v@94KzE{+5Q(*yCguQOH z-3$mM1AlPUuVK0gx%oN$9ldD4QP4HT3=GRpH7(v5=$6;XjJNlS859_JH0SP=o;~49 z=}>E~rB*x4tgCD~Cxm~*zD6^Ii?Xh3+$Wos6|(W!K5(kx)()XDIzEkt6OiF>h_-~v z@_Pqijj@zT;7nb7vaP1Jv6O+u-6VT;!ZXnf%Z5tfbuD#eK^B5Dy@uiF4MfF}m-_0u z_6MvD8h4DUs{8Yz!ng;SIcU<68r~~>z4Uh*W`_|%o111Cs=L$;lSM^!he3rqjaCw> z)NMj2RZ|qLJZ4`*s?x@+Ts8WkI#l%b3TfXc++)=z)6OgL#~i8Azp4tt@nP+TIk2+~ z5fjz9uV~}GuI=g(= zVnpw6;`4mMeKEB6u)Lo;75VS(qPcV2G?JaP+SD1eFf7NX+nE`DLrW|=<0QK-MY;qw zC%;MnhC1bKBH>l_4yH;gtPOGxBlM}_xk?GfBiCca1`JK4S%y^k zLDgtitZjxFsc+-4T0zHhP_g3JU23ntSZm3>f%xB@0-k}}FaFQhz~L)00ui0`OZUZJ zt%g^vKcGL#XnE_fXwAkgfV}rV4xJPi{Wu;stVg81b(^gA9GjaVJEIzh&+>te*+rjW_g>HM1kf$pMCa&_QMhyc`V5KW92&DV=c!kj_x%k0o5 zi+o0X;~WO`s4MWWK3cpbqi^31aBzLo8D?~*x4E-d5Sj}fyd%>C**S{ksQKro4wOH& z98&UDUXDGLEL#FJI?lebTwD55iDkAW+$vF#-^sJo3XJeFvO&wMPlyY1Pw2YSg@t zxD56gG~C*y(d&(hU8XeyhlAJn#tm1TD1T!-RVq*3$5uzHdTq%|9JlJ76?j~^9+|%9 zQq5ae4N_7J6$~f%@hEC%uNmHRqsoyWpN0Q8FfjEE;4%A4c~XYE-9E-mf5+^SAR2v+ zfVpBPK;GoQmQksdwaYHorW9sma6n?Eq-M0nyh(c9p0)hez?_-!P<;n&l=RZPusM!0 z@zTOXFH%euG0z@-Q7an=y#~ti_x)#!s*XeP7J`|7r&z7v-8dWH`O;z)jA?LrBrsYOONbUN9)+q*&U~mLk@h zLh}NqF}?a-vC#=Jlw@9$S%oyUR!QOxN07^y3VF|iy%D%m>KygX4^`*#KU`crXEipO zJAqolH{<+BeZXuIQfUB(4{rHQmsu@3C)0nGl-X>2`SBNpLcLDX1L>WV+u(I;*#bE;bo( zHMO?`^AEv6)uINgO`$xdo;=(Z*|}uI01ZU0a0*>+ix$JjHi@nQQ}*~zk|^lOLkVYQ zG_0>iamRBa9Ho?ZxInu4g7_F84Ddq!NB7Pj?fG2>@Kp8JcnhOVI{>iuH$?1+(A_sS zH}Cl#lfiI&MNbp9QBM{z%J6UGPrk>I=8nK zXNkdw>bL_|JO!8M%g~#6Y!&nz@aIZQ#_{p=o=u3#)2txy&c=g698WhuV2!{Y6X&9DJjcF{|89^?&2Y&Kc!#(?jIaf5*ee9OchM=AHIq*f*I@~KYeO@p$iuz%* zmG8jK3?yEThUDOn_)2xu6b2ABDS8}$A%l&^JKOuheI>zEyL~#pJL8YS>Yc#l2(XBI z%Wv-^F9zb1jnqCmGFzCuK*#>!c(#_Cv*}xf;p$qSCSO8rYtE}Ro*uO&Riy%{@>sY! zYo-a1@tI5we;CSloOfNjTmH-_Ul?d~lWyx+g$=|zX9y>=1yHhxRs{qZlF(M)^`gn;zw>m4J== z=xY%dp&z#=N6@_@E+Tz1{GOTO5i7kKY_Y?-qH&0&-%PSrFTj69`P3<8Bo_MftF_NX z1=uuOH~Frp z(<)#ZN!@VCmMjhw^=&CEtv9;$3Uk#8pN}H&dr#~-OQY$f=~RixF^hwoy@1rKjSBtz z?EK|sbM^A#bn{c(xZiy}wqFDp(Y-G0k8M6~<@t{dc0Z>;pJ0C%B-%e-@I>>E{aikl zL?+WHNmHqJ7Lx*of?q@0x`L)ZK2+5FJOS_WtgS@GJdhp}1krsg;Tn!PL32u+Jpr^* zOeMREn-0>ji>VizEOMllChehb2gzE=>|7BqrITN6c%SCx-mpI(_7|TZ)%yc|$vd;* z;65gdUfOW~Kv_S)=M|2dD30IAUt!PmJ%Z#P0&PYuqtGQmXv&B`-B$B0K3grFbg=qn zDQ@vsG+o+~cZsm3MD8RQ_PFU<1Sw6cDm}>9UDbU;{M;J2+b>VP#jWPG&ZRjSLZKt! zPtQoGuKu{bI*p7!J72%~9H#$neg6IC{M1q<3zTN|qLJgjRI8^mVG|8M$J8?)2d;|Q zA$SndreHL^K)8tTHPD)_y_}{`431xDI1fXQHT!Isy`=B=T)O)WD-@?{ zVF)F&Z<|4|oXj1fagmgJ2AV7z$g{l9V}Z^F9m9TXBz|ERu2=E%RK9d%-mXxoWg-=C z{?2R?(K}bmH68iYnOeT*DJH`FfwRZy%3rC!ArWFjeTr@hMF5%!e+SDh_tFo_!>YWVg zlzJqdMg~sAottcGd-V0u!x36IJ19(41R0wzx^G2)o^b|5NkZL(aT4zN<^W-S4JRk# z;H}bCriS1mHADs=_~m){GH8rUnA_Av1w&tY{3y4LlK9u`C;+A@lkmTx6h zfmi`bcNORqeXwP}VyyTh0KTkumV0oNH7jpTY83|oUgd4XN6)lyiS~|YsV=`A<~w-w zUAKAm>3Ri;U2STGdf(V@2$nwwH01=K;rQ%v7cf+T))Y8!)<2%Se)^+@Nqk8gZ5}NHcu4R=lL@U`xLBk z)RlONyAanRn)d$IDdMc1s!wJy57h4NI14Jzez{5*CQyy^8!Vrf=+`Q;6C@8(nOlzO zfXUw#KO+e+j#Q`@F@BN(v6X*d+nO2pzLuovC@i)r*d16F?Qx8F21z3;33)@DMr+AK^h~eNX zcEQxt%e#^%d&xW)LU=CB4?VP&%E-jN%0$7Ni( zoui@F?SLqVevebnt6kRS#<}r zbr=CKbmZj zXk5}v8Gm*K62{!jF}c&M8Y&7Fb6{fTEyZld#|M*Jp@soD86=5&H9>6`Nh`HN+PWh1 zDj)Yl^1nJU8g6g*84k8ONZENS{ zsNmH5-UQWZK9#*68Tvt9f2m~d(H0Rv~0~;GG(AO&Wx!`Xi9JYCA;C|{0uynU4BTw&7 z{TGAUjuHkGCZgQ$;B+!@GYJ1}YmCr*+ulS8q%Xj17{uBS>n9Ld+uWRJCob{(Uhnjr6RI219$u4ha zGCRtJ&uhU0XX!K3*l|YbF#7H;`CitkcoH8Sk-mdT!Mc7U(V4_~p;Q*~Y6Y;h0+=Ls zf1DcezBQqSOsA-6Ln!veX~OULaNjY+gdo*+wQgAscv>LUEE(0s^x7(y){FfI?Z2l9 zyG~Y(o85MCzv6^*2WAd?SF^noEImW)SptN+&H-&U6Joo7n?zR@1ZY7>KKwOjR;6!z zTKX##y5OWL5^HZ8ss*7Di)?6*dBK6hz7qBB-%D+=a3+Qam8z^pl-%&4ZttLQvh@7@Z=lNf0)1mQg- ziYkIG^(>}VN6|K6)6ick$DxnQb`n5cT((-eTpD8RK9X#W#$7Ykw&oRtsYyur5-WLS znbuy1eUU{PZ5ZFK6Nottr@we3G)}bC^Ue3@^35jV{_5<1Ue9b3{5nvW3Ucl}_B{(f znENv5Vmc*pH^VMBO(k84Jq5Lp^`Ijn&5f=X-{MMUP5|#M)ug&=^04u@8$1NpWvgp# zYSwY-tjc!Nwh7)$EhtO5%h47ppjMJkm!-p^5WLQd_eY-9Dv2y1q;}V(H;7*TzEtcy zo2)CrIfKT{KBpbzJ-*vG^FVy+n%|wb$H^*}PYBJ|bX%t*FWO3zFgT8cdjiTi=tD@g zE~M;|0nb)K-#Q~kk8De}4o?ksRf7BQn0nV*6*0=?P*o`|w7N;p8-2Q(!_8H{Trc|0 zYIK{52dqeyS!eCSR|o)+am!}}WL~US=O+olpTAiHpE*C1&##yiK$3Kv; zQ-W}>rw`&5I9KxTaMa%MBz+=RLhtayGIyZ$&SFP_sO+CC z8xSp7-c4-V&)}T}#{JeO#DAfQ>D3E({eQ#RXT;w(&(2?+(~5)u%}da7xNQGy zSZPpv@7$1zQihS@|S*=8e?Tcou&k1;}09Xl01=e$X)G%ri9RG@Le^3nZ)n2wAs0x6?UUBG|5t4E{P1za4peABpWVi5>$6y1}+H% zgB`psLt7AG%r8KOpku9brDtMdzEH10a~sck-%JY z*W7D9okzOmlOa%-Wx#M>ELfi1#IW<=Nj$vi@(juT{qxPzTq+EHMgMx4o%AY)D=2?@ z_MdRyj-S59OK-5>en=@|f!Ec$he@kcsOwHwbJ3Chf`|;M#ih-y@F$2;!>CS+I$0Fp zsap)--8cC4QROcDVRWZsCg=>xTUlrqnIIK!5^6b8e)E9{Z+N(um7P=UCC@1m^Z&H?P(7?vqo`#@*z!};YdBvyyx!7(~bhIPh|lOj}} zXc5$mP0~Cm$j}8yfs|yg*oa*iHcng@T`Wc_VU}+FF*Rx$^-hpl$Fd%a_{op@>bt_! zdKmMWTGU>uchIw@-@sD6g=SwY@${xmXPEZ#i@&PTyRvzM^oHy!S(|tayiJIP<^=yN zIu`FuJPk5`Ion^1S}k8vtIDzj1zeN=nkhX*jd$V^Zw{fcgp@avQJYsfExTxYY5Ji{ zd~KI3cUi4luC&0p!@n9H+71cNkVh^>S2C`&t{Iyqe^QatAs$1uG+hA#lDQgGT}y>B zno1~mmrRtXk3_Ex_&QHrEUOYV1p|eP zC5BbW+a)Xz+U`AMrnqfuhYOz`o>qXc3De{%>JbUgia ztyPP2UOQM3&(X*mdg)tw&9_1;b_mVvWpF{E>T$t*U$38?ozh3_RGayQ)qAsqR^>cW5%Jp5TEX#5!Z~G>piptlS4G3Y5 z65bqJHck_cO|GZYrVk90V-?Mzww3FaB<8q6Lfy@zs=HTf)%vT`7ntrL z|M%x_&R<;?V>{9ZibODXa&PDWv5?M5iHEe!hue0dt1cL-1kWsWVr{#W?$C*%iE=Q< zVp=6CJkD9-_CsKCaSphU?X3e3?<-pvij;`T7-mcXHbtuDyG)A;Q z-X9$K_dJU0#!rm*ylL|80Z$T*nOVou^g06$AnWzln*GwCpYH}oYd1wN1EES%m-E&; z@zURGN=S5F#v}yQFob#mes7nj_+2NO+_iGuq6gqiV-jy4b-F#vDp81Y#&-T%Rs16D zaPU}Mf}{*Q&wUY6wMV=$I3~g3+bJX8e*q+Oldzj>p~Y9b9o!pH?REtWl9=F`O0=k)cUc(Z zx-obu8DJa(T}fCyE`9uS?=5*c==f^qSHG-A+>s!DWOb0r!|#dW(BQ2mwL%5DIYunxZfZvk$KSQ)^h7o}$IO3UNI(b8DOx zwfk|%4nE8_l8i3=-eIFt8gB1mO~kT`D0*nu;awlm5+bFOoZgV=mlA-DTx5Y>F!@CvoBZ&w8O5|Pp1GpX~qpN@~EJKW#D2BGTz(6^T@?4H(-s`nQ1X4_N< z^eMg?NpwuR+N1zZUtg_OzilqS&$TJ{Z58W5u68%E;h4UN%ZTTQZ=EaSu!+csi{yDu zB&hV$56kQ@B$o(XO~=lyTT_-#vR(^mMws)Up%E)=Tqt`6Xxl$>tTZeS>$- z9)56IH`SGA0De|T3yrxGb@4#@3W`Y4L$9Q7xu4Gz;LrEf zY~@G-Qj?-5#NgsqZ;UrgVpUht7$~ zH=HU4_K@=o+X@_e;8MPZzU)Y$7J@R6TU?~3T^%f(tX600aYa1;LEq;WCn--CD@k}p zA3iyk&%a~za`W?LI~fO)o)0FGzX3{U6puzZB_= zDU>LGb$4L!7OOenjIhAv*Wk(-F*zEPWTO*LE(a{eZM`LsCirGz`m=xfrW}NarKP$Z zWUH2Qy=c-2R+ZBs3H+Lzm*g7eXSneCfjP92hl^VLzV>PQU&^rw!Kubgv*@iY1i>r2 z7ewQ@cTH9fCrR_ow0v_UQj^=s+-|GQ8sZ1>5!{@+A)SBIaEkx(lQt8B;3;D=oXhsn z@zOfTD6P3pG2oEwJ{qO#`*%Sqa)xNqgiktkc5lJd`HbrmI*_C;9g5m_L=jJSsb|t0 z#;*7Yx(TA-|FvdaLCYP9w<>D496YpCY6~aE)v640EE))Rorat z1jN&O5A)C?y}9>XD~Qnra6F;QUs_FacHcnN9){kh^@#o{r+0ce8vX8El-ZAw{tiHD zQQZm8Z%N0dDMs+v!s``v6he14$$;y@Q;7+_OV4oGSt;G6vyhS-URv73&#x;0A|(|EIr+QVw(#&Zpqp zjGEYyT9>Mv*Xj#Db9F1`?WTA)4q0bNt_Eq^IJ&kX(mJbQxhl&CETcr}g-}QC^M~9D zveC#;cUU_Wzbp=8neP^7*mW3FZ!2Y#_DX9>Ekio~elND%@VFq;q35>!MGWK&%MHTw z__c<77baI_Teo~y;h+$>1HTcWrC-{?OzC}}hlWp@Mo*(A^5d4OLK34)@tqxwm}7JR zUY)@4K~G_a(dT#bQ@n1sKz) z_7a*eH!m*P$leXElXN@CfG{}ZV0R!%_0#4bSYbi3E6b~!UAdXLn$&s}0}@wMO;;dg zbp!SN^~|-;d@HH&sQfA>%)}=Y;^?7XUQO6TyA-N4HM9DDr{tT^NPx0!0!;?VaN7Xq zl-xcdh={EDfCx8tt_6QIyE749Q@E!u-rXlUTios(^hhF}zttg#rboLTYn<#m1a*mrqzOWm#-== znT-d$&VV!JsObbu+p6kch_yY4rybnQtog-$=2KOE;;)IuDZ+c7VT|)%CO~G<<*`@o zw_>KAo5$COb~{V3Eii<{_>?wYUS3_YZt3qAi_bLme}Bmu)h_0q0NmdN44VqW zuCA6PH_Fo-RKr;xF_#8Xb+)ca`KOQ;nf~njr#I9(#k8kC@X`lU-^j}I@VhILpRW<| zq<%2}(@zRg z*Myo&O~pO$%Kz`_?0Vz2wlpml>8&b>HXSDx!>D9SRM~PV0!uQI_Boy)&T){yb^xC= z5ClOt(7EVzBZEQGX!K1k8gtQeHn`9-a&RPE6fq}Pb{p+jK(W)o^`|HKkJj~r@hd$pR-+{{_ z@pm`V_Gb8D*!-{EIPCp%f_153QM@{Y(rkG91z zQ=q3^LCvzR_4Qdf@z%r{Tj-vwOq((aglht;#%Ad*hFUPKS=$2FIyDd!wKF&rG5Z~h zf*kB|Bi$j%x6oBVejpX8?`XxumV3(sEV`9aJ{CUlI=}_DE49tMY1e7pvkY*TzSH-Q zMiGRao|MA8v(}XOcsdM}MiN@cT!M4&s}}Xor*SeI1J&F8miDg!#HBq&fEZEw?!}Bc zQ0G%j%<@=Ns5%t);>I20U^N<$$gwXSa^rYLm0PoR8D6)jNf^c7Y|-x~*RHOfT%A9j zrl&~#IPnqp(|X>_*Si_|4k-3{I}VKD`>~rg^ZZY{Y3BPE_g^M@5=qVx;%U^CYJD>) z+xB+<_F+?aJv4@XYn87~9q+frH-G8l4c1W3Ge3#|FvRJ)Jm4y3;Z{yxafasmaTnccd@LN)ms;=iLZ-Oy^3Ia5xz zG3PjngA)hwJx|6=UFuvN#`o{DdF#ART&Ao)MFP|Q~QtGcd1QJ8Ixs#=B#gm z%(ZAi;e8r7Wb}MflX7YLtv;{a;W5^`<~K+x8m^;>uenrkk=W~pM>_d7f7Z5t)b;Zw zm>7*W9d*g<;5@S%9Jx1g_QOw8x(b$ti=p@dUY<7){cL7tm29cWquuTVpp0+;ARVAJwd4@4=zRDf#}*fBjH zpvAf-XME@H2*vZr_ig(B9e-80%bh>=36G%hZSl6BV6F~2tB-L*HpZe=$O#E=gMY#R_FlNV{bVin@V%?jAd_3Cy_R8=H24xD{{P2hAWkMJk zw2p6=AUxV&_;~GJTD{hCmG>w*tTu0_TE?7SV`8S-XR2~@G0ai&X8R}&fg#NrQBp!> z$fH5ycG;{I_G|e5_;ptfCHgoVT~6m$(?tMMQ2VdvASWRE6-7?jknefwSYdDlfhK+) zQ#*+&-ze6x+X>bT@^-xT`DVA%jh~r!fEM`EG=4G^xb-i6jmIQriw~C~Rk4yJWa$DO ztW7-}o1CND@aJNy1i;49!Pk zQY)t28%75!*)kZ|@?=f+rIcX~`z^c-pmg~lCR-6z-|=CARh$+|{KmabQ~(@mY<2pF zp7*s*G~kRvWlp|F)}#-bNS~F?ws<&u2c@TX%99PaClfOU1OKemt*pee|Rf9r_uLwIU4}Y#&F!n@)j1lxE8k(6T=vCO0D3Czu{X4skz1W#;BB(w;RjP1n2a+>Enp!}r=UAc9vf z|3Sw$QM4L)?a}FJLjj?KkZ&}$Fr3lZtBCY!=ZT9eeloft@9zbJS$?U}`y~FXq44%E z`G3-J$f5o-&-zOL$|pT zG1=|kra1{#5|ZGKjL+-gdl5CAMykW~o@ExMwu5||HuRoWMv{^Z*3Mhdh)8r}h%83V zX0ajfm|qU=>+P_)TQ|E2Hu08%fWh5jp=qQ1kC5GBnbB*vZ^CiOG)eG)ojQA1_{4 z4$;qGJIVHHgWbu^JmBVtg4LjvFTt@xQL`nZmYq7jg6YyD8rtjATZCLv)ne$fw6M4@ z#BOs5aEC5vW6?QNJV%RuA1qXYBT7<@dY2NGGs99{bMAgBF}zX-qgf}qn+aXFMvEVU zM0{hfud0z&2)-J)Su=Kl^i15TF0W=3>w0PZa6FhygWQ}j=7g_`i2Z?) zWrwL}TTE|=vVMKKdGlBRB!KsAtyeyojJT)1=~UZo)WF*j#DVDH+bjPL5LaTw5Z z94t+uel=gqB)x;1y^nrwQ}i4tF7A4|#)hq>-S;HdEN?IxCbOqvjk})`UN4OsYQm!5 zVxJ`|?y=Yl5V8?JA+5=*=#3kjS+I={+-xR>9wXK;m)o~*4KG{KRR|9I<;GRx2<=N^ z!!=@P6DlA2tlF60a)S|f5`x$4TaYlC^J6(}tzckIXtV~Nv)N&9{p;NHvxNTh(ePC{ zg4W{?L|@C76dRV4Q!#OvfgMmFw^S4h8$a#&)6G?CSfKrMp|F?q7er>0XaD=BaJ#)J z-frKyw+qA5>C0i*$iCtB#A74mXI(b0-5AAwgJ~I>d$Zw?k z%FjRR+5cQI@js^#u-Y5$&g0Uzk^fdd7e>Hx#N+vckRvDarFMHu z`2%CPDcJY*;iU!h>lHEAq*AN)7W)!>_Feq+(k(;ELQF23x702vI`Apq-S-I-MrZHn z+9yQwOyKnD&a$I^IZI4(YGFj3>v<#|`#@%YkQ7nmPA^t=?WU>i32?ccGYo{>Y} zoRkc+Zr^S^Y>xV0SN&ah-l|8O=3*Bb7+R|fk*#}I@sjo)s)$U_u>{f!zWHSpP*r@r zsQN%CH3o}TfIhk6Rf6{q{P;dtEoLiR_2+E$1F=eYx@fsO5y$(uX}xH+-2p)pZVrEQ zj__Z>JXt9gJ9cNf>Myme4lHNI5vUsoapfFYv?7GC^N4OYf6mYZ`dVSY!FlnePWc4r z75093{zMrrp|7C&`KdcGo>n`K^SB8V-sg}U|80<_1LPY+eZukA^KXa;Xd7P*-j>6~ zUb!mN@2_JCKy>ck@R9=z0HOKx_~r<0-LVO1h5!fy>=L;2##hH)V4R={qqGs5O=Fhs zzHMmMOveMj^%s!K=k?8#PP5rqB4gn)hPdz9V(->ZdtG8>OL2E9WpjJg zsM)*4e$;xGmO>%eJ#PG%$#<(98QJ~cXBZu4HTRxHr}%c>#>D#uUzvHZY68nl!T}g( zQ7*vG=Mp*)xcKVnCI#J1qNZbkXe#+P#@%s=aW=2JK;63~t~#tP?+;e8xqq7d6AruA zyzz)PB;hD6zlMFc=Ww#p{7T3(+?+eQ%0cev@zd$Ck(%wr$@X%3HT_wl!?i~96l)bcLR~S&5pyxz*D?=n4W3ozfeE?894?mNv4x?mPwoHoGG#;rSw#F zb0VzQd!vV@a<4FpMAl5bV*|$j!zw5rlg`j$hoO=2Y7H2^{XQ{wN{D5*5ALYUL%0Q6 zx@lGxEZugZ5P*N#Ri2IvcbE6Vweu8?4*>c=z~nMR4MBf&>m|3cq6aa;hrX9mtg zy9;GIYchLFJV;E!)yU&d#u}J|v_ZqC<%G0noDL-TzftJSe>^UFi5glJ$VY9BI5DkJj~1C7Yreeu$8M`Qdh65bYb+l-+W0YEot9D=jVz-NiQ-B}g?LqZL3v;*YTiuThtAQ+=tHAK=Iva9@w%fN?rw$qMU+qs| zx7bf@BlqR*w3ayfJ}#a^WdEOjNC4iYxSMX~2ytm|&K1^&(-j5N^*nG}ojZ(sW)Uv% ze{;i2Rm5ZE8|yK3({xC3Gp4~sH5zidYkEy?>=gwML&Da`1ukT$nQ9dbEw;N%UZq2^ z2`TyNG!)u@5Q|C;TI!z6C4IeN>;*yeyLOF9MdI>c)v2@lE(!8J-gGfnY0n+BIBz=D zm6!Ka3Mpn}IS7yh6PX@EE8g5^oQ(W?YI{wYo9V;v4KHz9%b3OA`_O+JE95^{M$;v3 z#lB9xzPZGA5u_{VuXG`ZvWJB~BkDpkKm+T913w2B8O~n_kL$av1J1|*PR-mMjc_qg zN9pNyT$2Z&8KyAgwCl5QHH^%Fc_gt9A_H&7Fni-Gd&6IDOl@A1$1XS7w+|am4=n9!h0YRy0H>vB4<#F%P zlU}gsen|iyI@dq65iy5|(LHRr^r^xA>o|atS2#`(PQo8j=gJ;jybQg(u$3lm|6MW7;M!jB;twWK_3wi}k>HAf38ajnO zf7we2ON9L*eT4pyksav5F+2T%{m!D;LG-PF*vmhR$M2@6DR^ToB%9i8AiWOR42$24 zgyAIpW*oVNvfE7qJ$Kuz0X?@lBhK6FY3^gtpJH>xur9Uks@Td(uuy_f9Q1i^y0 zQeDT!vtq8cA55^mm$D%>?}XB=wC@w&(|Auu0y8I^Dm<2Ssyg;VZUKi{2X{*WeRqWj z48|F~jjV^;mttTodQg$4>?I7$+_SdaiK4H~<-Azr%W z_)t?#ztVd*1DC)&^fUg(7BH6C=|Nmv{X+p=3`}lDZTVt^0vs5t6B5WvB z8>Y3hM&Tv(L+~Cg9SI(iat*YC1{C4g%G-5o)t#BsT@tKcKS>Apt<#8iek46XyC+P6 zp~^PA)ft2E@zgn)ZjpEfU>G0)RN>N}lW_UjW7Nyjz(ZDayL{4xGGrqe?mVt-gZg|o z0rQqkwa_4|v1Br|r7ZQS zbpcd&Ts>~Vl0shDEhz^c*m6R3?VF420GI&0*4uErw?NO=UD_7Nb&-wozAL7FKk};V zYpbJvB)SJHc;BFGn$5?kPv-_*6>gH zY|*^4M78ShlZl*vf!+jV2YXA+te_)0%1!nVQc2s&zh=)T2oB3v0F473l^+=z$`HOd=3qZaTg@4)0%CfhSSS!^zN)y%IO4QQx(hT$)a$E8V7(Mb>3@`23p3|lFAZ0HBAF=7vDgEC&zAJ)|T-}v_nNd_^})x z;M9m6x1?E%D!Va4#n4$Jw%VnxaLQ~~ZF0{+y%>*Edh z2WD9jSb9P#o?qy$lYQS1i+zs1KfSt;tYg4Z@^$m#Vji^O&(QLcZcuK^&jUh5$-UX~ zY$v8Fxwk>Ho}22?RS9w9V3(ji$0ch-5y0L0Y}niT=Y;8q%v&Az0WjmhYigxL3fodP zt2y6rT{(ih=?-yUhY9hn#!NjM{Mi&O?2k*S?X9e4kYc99Bkn_zyN(76)|1CnAxLgX z4bb zZoHPAmF;u%JrpOgdadn#J^C8+5S-6w_wy~XeG?_HiG`rmXTW|+VMUkk&_rzhl8ToK zvx4+uskx+n)eD_4{?0CRa8{|YTKQl6Ofk2K!L)C_YtOyc_JJ_p(H6t;q6I-|!r^$? zKi-4*wwbAH4YltuM3%P$xpS<&%*8YBh|t_2pISss1}DpdwVSKE%h9)1K@yV9X3ai| zx`y+)^`C|P&XTQ5uEOEp??sXQMiwX3uh(pP+Dn3{7{%p{xas#6zYmL1e%GTk7LHQ8^P-R@%UpxC5U?j($?J9lH8E}3<%#%P$v ziEkL70U)WK-q{FgUr2P`xR&A@KGHF8j5{$S;MPDFTDbY=`|HGSnm&ER)5Rj&wd%PQ zefIP{8NZGEOz2hILa(9xa#hj+vRT;q(FAP#w@S9?@`WK8!>XA%h7gN&+Q*gTWG!l5 z2rE9O4>)mJKjJ#TzT?aLBdt8&?nKL}cePTA(a%SMk*IKbz-e(dU|zredcT=Bi`MUd_%d!5sFSPET^0 z5$9i+&J})9%=$aW1JtdXurXNIz1Y<5M;&*zh%5fI3w|5^A07V2A}|DNyV1kZf8MCZ zFOLcd*u`0huK&F`k(o8wzrIXMp#)*MD!D;e*y;c392oQ#$)HHs)(ST@{OQTtO>8*@ zF+W_)pJJ@VhnqG~aI0m{Awf5r+37R14qOdq*XddPKU*p#%(7ExXdDX4Fl2+fm$)4- zOMM=oA)fQewcXwC?#YWmRM&psa=%&>lE>P^oR25uB)?5UV5;Z4K{G@9Fl4C_c1bHz zxRWm2O0;_33;Ty>1Fz_6&UFv-{wJAyJ*+BnveA+6EPaY4m;|t7^tbjllI()^_aU)( z_&lxlW&42dlK3oy`>X#fzslL^DAY=AEq6GWh1G(1R?@g%7VX1WA9asJA~qe3*w^a( z(gglIH0@w=^{W#>j%HO(rEN_1r*8$u3W-KGI|~B-Ri2!>m(Pk^YV&yIH@p|iO|Z?28nE{+i-Hk!53c$QYmt`| zs`FRzVT8{WWIbi4FE7SA`y-{TWJrylp50-b4SEW+9Di7iJrt}R%I!BGD@*c4@D6Z2 zvj<9hR7BO!JZd|pjn7DQyeksHsCC3DbdQu+H_vEpgYGt+&I?BA0EzIr$S6I#il87u z;EBg_wI$PBOJKmh2-yuh>8l%-#moCp+K(s6x~R#K^}V%g3qcbGW`IGaiN63i#K7RN zE27`mZEGxEu%rW&`y*8UNucby=T~veL;C5{^Ga-mz?-Lu&Tu&CpZH%BrmuBSO!28` zX~A&G%b4ex`OMN;f-dqjn~JjV8+nRf8oNXLuB7%XmWQN zqad!)@QR4oj5{hTb|8x4vsu_=O(@)s;?5%Y2Lx!F_HzEm}V9`y|XXP3EEZu^G zBUQ#|Az}G6XU#L%omv)gV5(}TG2pWBn#!BU zUTRsTh*+Mx|A=DAEdQ!i0GNrhN+)7LZv#}|$75Pmyc_pj+6!!@u#rUS6g-!FiB0 zECCP}Cl;(5yCcmi&9MQtZ=$bC}lAWms!<#AW8rQADt#}bG z<`YgE&}puD!1da%(k$eSt$DifY~-Y|$0hdN_#bOj+Dn}Fwsqgu1mpU`*;evm@JP8N z8`7%Qm-}*I$g0}C_g+aaN)$JpDWc+QLcJ3KD==b!hzHBN^q1n}qGQrAl*0mcg?aa5 zY(C~XCKxT!L%8GTj*OltEMJ*YYHBNW9|PM;<7viyqf|Fc#}*l)N4S0YVfiwxgl;`M zIZ3yQ@bBEO?cv@0ZjS*0evg_M>r(!8`#W_kMH_xml36_xNrQcGWu}D&LO`I1tG^m` z)cQJQp^8%nK=G-hFBNA=2*CTP_47IJi3ZQ{>*_Nqf9mueDMlnk7D-9&o z@G|2O_3kQx_<>Cvu1dmr_bOb@tUR!3jDtYt49ldcVK4d`V%v+z#rJ(QxcL`f2?{<@ z8p|H@vjYA4E>N1Z{GBo2FzReGLA9tP)s1}JDN%+2S#CsTIE2i_xlXA+TJ=IjlniTs znMw1^Z5^a~1xf7^j-|lu^8D2ClP&4B(?9YKFU7Kl_n-c4uPkbi)mITMc{SIIby! zx;k_XFW+3R=R%y^^60t)zv@1vGW}6st5!WhjAXz9iRiSq@zV{zPS|6hwJCwcfBPYgwV&VO{I;2i1x?}^x1yY9t2yW4qPj=Tsh9Ss>+4n%aNF9yE~;|9_bh0}1EH?4Ky4beH>^{8 zO1#E;XDQ7CUNZwXkH@r?R(jOPOrJJ2etKV1-(+B-g;Q*w=&z+wBW3(cu#`=L9v*ND7J5PgKIc85fUW0P;avq9)+ye7>@ zln2{raRzA;`^UMa-luerg&kwOag9lBEM_A)7-(zF524TqT4pnBLfiL{*cy42UOcWM z{sQjSpKq`U5a)T0Y})GknQzB;>v;cC-!O{+D^RIE{iEvL1(TO1t0;%V_Acrj-f^35 zpjLNlGb!7>e`B@r?Oan)FRu9O_B&RjVzvUZ;_ z9J)vIa>IkZ(*L#**=6r8>jdBrsITxynY8`E)A3FaU#zx>eXH+ydY^A}L4ezhTu{o} z7qWbV91{`&O`-7-zlSDFhvBov;$FEKn7I!WgQz4Y4J5Xb5hLe`R+o33)-EAx3W9lvZ;(oDruw4Dv+edKUkb+=n zSUqw_JiL{Tva_1~BQb(4!K2K2Esg|6`e$+>Ja-_nW- zr0hG@J0ZF+w{rTKv`BeF;w@@*ZfoL&pTK3X#gyU~(bUn3{f;2g&QR4sY@d8tnS?$%;|*+|d3 zaQYC+l!a`Z6u3lLM9P1gbd1Tk*m#}3nFgGQS6;3W9afA<6&@ecSS(<=(m>fj;}e~K zxw^xZM$+F&S4?y9k#!#c_`JRUp>}00Y_s1yhpS50!gD&033yMCYJJtacP#U67 zkDpMeTDRgneP=Zz)3Q0AHHfo)dJ&;5w4GanDuKR}Leaw#8Lj?(0UlO?jv$EQRmX3= z@GvpkS^`%Ud&49KWutbe@tgXsHH2?6c9#E}@zr$03b;^!REgno-~&4F9eJAhx|@jL zp|eg1$KU<0kbVhyQJGPhSn<}pT{@+^uHY|SQZVlU6}P!2PY$Q8JUU4IUX9mU zrV>Mr7+w8hrdb~qQn`rdZU`a%cZw~top*X#+ND&04d%R7UAE&EGg}I0j%xBX)~GFq zk$>4&ZgD-&C7p%j{58ZCHPiJh3V#<`b2B^XK5QPbA=l?8aGU`cDEX<|=SoBLIS}aN zO*dbwznLJPPWlC&OJw$alAT9c1F46YHh()_O|y>mi#gS867hN~fsD{_N(Dr0J(4<% z;9$(RaH)1bzv3v3vU1~#*QVU0zApt_AFg$AY+&K*?Yxn&*!sMX)#i6cVN6`P#1xES jAz)W+!Qf8=R^9&t5RCb|aP$Yx00000NkvXXu0mjfTqbw+ literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/css/style.css b/springboot-shiro/src/main/resources/public/static/css/style.css new file mode 100644 index 0000000..6cf461d --- /dev/null +++ b/springboot-shiro/src/main/resources/public/static/css/style.css @@ -0,0 +1,7928 @@ +/* + * + * H+ - 后台主题UI框架 + * version 4.0 + * +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 100; +} + +h1 { + font-size: 30px; +} + +h2 { + font-size: 24px; +} + +h3 { + font-size: 16px; +} + +h4 { + font-size: 14px; +} + +h5 { + font-size: 12px; +} + +h6 { + font-size: 10px; +} + +h3, +h4, +h5 { + margin-top: 5px; + font-weight: 600; +} + +a:focus { + outline: none; +} + +.nav > li > a { + color: #a7b1c2; + font-weight: 600; + padding: 14px 20px 14px 25px; +} + +.nav li>a { + display: block; + /*white-space: nowrap;*/ +} + +.nav.navbar-right > li > a { + color: #999c9e; +} + +.nav > li.active > a { + color: #ffffff; +} + +.navbar-default .nav > li > a:hover, +.navbar-default .nav > li > a:focus { + background-color: #293846; + color: white; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background: #fff; +} + +.nav > li > a i { + margin-right: 6px; +} + +.navbar { + border: 0; +} + +.navbar-default { + background-color: transparent; + border-color: #2f4050; + position: relative; +} + +.navbar-top-links li { + display: inline-block; +} + +.navbar-top-links li:last-child { + margin-right: 30px; +} + +body.body-small .navbar-top-links li:last-child { + margin-right: 10px; +} + +.navbar-top-links li a { + padding: 20px 10px; + min-height: 50px; +} + +.dropdown-menu { + border: medium none; + display: none; + float: left; + font-size: 12px; + left: 0; + list-style: none outside none; + padding: 0; + position: absolute; + text-shadow: none; + top: 100%; + z-index: 1000; + border-radius: 0; + box-shadow: 0 0 3px rgba(86, 96, 117, 0.3); +} + +.dropdown-menu > li > a { + border-radius: 3px; + color: inherit; + line-height: 25px; + margin: 4px; + text-align: left; + font-weight: normal; +} + +.dropdown-menu > li > a.font-bold { + font-weight: 600; +} + +.navbar-top-links .dropdown-menu li { + display: block; +} + +.navbar-top-links .dropdown-menu li:last-child { + margin-right: 0; +} + +.navbar-top-links .dropdown-menu li a { + padding: 3px 20px; + min-height: 0; +} + +.navbar-top-links .dropdown-menu li a div { + white-space: normal; +} + +.navbar-top-links .dropdown-messages, +.navbar-top-links .dropdown-tasks, +.navbar-top-links .dropdown-alerts { + width: 310px; + min-width: 0; +} + +.navbar-top-links .dropdown-messages { + margin-left: 5px; +} + +.navbar-top-links .dropdown-tasks { + margin-left: -59px; +} + +.navbar-top-links .dropdown-alerts { + margin-left: -123px; +} + +.navbar-top-links .dropdown-user { + right: 0; + left: auto; +} + +.dropdown-messages, +.dropdown-alerts { + padding: 10px 10px 10px 10px; +} + +.dropdown-messages li a, +.dropdown-alerts li a { + font-size: 12px; +} + +.dropdown-messages li em, +.dropdown-alerts li em { + font-size: 10px; +} + +.nav.navbar-top-links .dropdown-alerts a { + font-size: 12px; +} + +.nav-header { + padding: 33px 25px; + background: url("patterns/header-profile.png") no-repeat; +} + +.pace-done .nav-header { + -webkit-transition: all 0.5s; + transition: all 0.5s; +} + +.nav > li.active { + border-left: 4px solid #19aa8d; + background: #293846; +} + +.nav.nav-second-level > li.active { + border: none; +} + +.nav.nav-second-level.collapse[style] { + height: auto !important; +} + +.nav-header a { + color: #DFE4ED; +} + +.nav-header .text-muted { + color: #8095a8; +} + +.minimalize-styl-2 { + padding: 4px 12px; + margin: 14px 5px 5px 20px; + font-size: 14px; + float: left; +} + +.navbar-form-custom { + float: left; + height: 50px; + padding: 0; + width: 200px; + display: inline-table; +} + +.navbar-form-custom .form-group { + margin-bottom: 0; +} + +.nav.navbar-top-links a { + font-size: 14px; +} + +.navbar-form-custom .form-control { + background: none repeat scroll 0 0 rgba(0, 0, 0, 0); + border: medium none; + font-size: 14px; + height: 60px; + margin: 0; + z-index: 2000; +} + +.count-info .label { + line-height: 12px; + padding: 1px 5px; + position: absolute; + right: 6px; + top: 12px; +} + +.arrow { + float: right; + margin-top: 2px; +} + +.fa.arrow:before { + content: "\f104"; +} + +.active > a > .fa.arrow:before { + content: "\f107"; +} + +.nav-second-level li, +.nav-third-level li { + border-bottom: none !important; +} + +.nav-second-level li a { + padding: 7px 15px 7px 10px; + padding-left: 52px; +} + +.nav-third-level li a { + padding-left: 62px; +} + +.nav-second-level li:last-child { + margin-bottom: 10px; +} + +body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav li:hover > .nav-second-level, +.mini-navbar .nav li:focus > .nav-second-level { + display: block; + border-radius: 0 2px 2px 0; + min-width: 140px; + height: auto; +} + +body.mini-navbar .navbar-default .nav > li > .nav-second-level li a { + font-size: 12px; + border-radius: 0 2px 2px 0; +} + +.fixed-nav .slimScrollDiv #side-menu { + padding-bottom: 60px; + position: relative; +} + +.slimScrollDiv >* { + overflow: hidden; +} + +.mini-navbar .nav-second-level li a { + padding: 10px 10px 10px 15px; +} + +.canvas-menu.mini-navbar .nav-second-level { + background: #293846; +} + +.mini-navbar li.active .nav-second-level { + left: 65px; +} + +.navbar-default .special_link a { + background: #1ab394; + color: white; +} + +.navbar-default .special_link a:hover { + background: #17987e !important; + color: white; +} + +.navbar-default .special_link a span.label { + background: #fff; + color: #1ab394; +} + +.navbar-default .landing_link a { + background: #1cc09f; + color: white; +} + +.navbar-default .landing_link a:hover { + background: #1ab394 !important; + color: white; +} + +.navbar-default .landing_link a span.label { + background: #fff; + color: #1cc09f; +} + +.logo-element { + text-align: center; + font-size: 18px; + font-weight: 600; + color: white; + display: none; + padding: 18px 0; +} + +.pace-done .navbar-static-side, +.pace-done .nav-header, +.pace-done li.active, +.pace-done #page-wrapper, +.pace-done .footer { + -webkit-transition: all 0.5s; + transition: all 0.5s; +} + +.navbar-fixed-top { + background: #fff; + -webkit-transition-duration: 0.5s; + transition-duration: 0.5s; + z-index: 2030; +} + +.navbar-fixed-top, +.navbar-static-top { + background: #f3f3f4; +} + +.fixed-nav #wrapper { + padding-top: 60px; + box-sizing: border-box; +} + +.fixed-nav .minimalize-styl-2 { + margin: 14px 5px 5px 15px; +} + +.body-small .navbar-fixed-top { + margin-left: 0px; +} + +body.mini-navbar .navbar-static-side { + width: 70px; +} + +body.mini-navbar .profile-element, +body.mini-navbar .nav-label, +body.mini-navbar .navbar-default .nav li a span { + display: none; +} + +body.canvas-menu .profile-element { + display: block; +} + +body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav-second-level { + display: none; +} + +body.mini-navbar .navbar-default .nav > li > a { + font-size: 16px; +} + +body.mini-navbar .logo-element { + display: block; +} + +body.canvas-menu .logo-element { + display: none; +} + +body.mini-navbar .nav-header { + padding: 0; + background-color: #1ab394; +} + +body.canvas-menu .nav-header { + padding: 33px 25px; +} + +body.mini-navbar #page-wrapper { + margin: 0 0 0 70px; +} + +body.canvas-menu.mini-navbar #page-wrapper, +body.canvas-menu.mini-navbar .footer { + margin: 0 0 0 0; +} + +body.fixed-sidebar .navbar-static-side, +body.canvas-menu .navbar-static-side { + position: fixed; + width: 220px; + z-index: 2001; + height: 100%; +} + +body.fixed-sidebar.mini-navbar .navbar-static-side { + width: 70px; +} + +body.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 0 0 70px; +} + +body.body-small.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 0 0 70px; +} + +body.body-small.fixed-sidebar.mini-navbar .navbar-static-side { + width: 70px; +} + +.fixed-sidebar.mini-navbar .nav li> .nav-second-level { + display: none; +} + +.fixed-sidebar.mini-navbar .nav li.active { + border-left-width: 0; +} + +.fixed-sidebar.mini-navbar .nav li:hover > .nav-second-level, +.canvas-menu.mini-navbar .nav li:hover > .nav-second-level { + position: absolute; + left: 70px; + top: 0px; + background-color: #2f4050; + padding: 10px 10px 0 10px; + font-size: 12px; + display: block; + min-width: 140px; + border-radius: 2px; +} + +body.fixed-sidebar.mini-navbar .navbar-default .nav > li > .nav-second-level li a { + font-size: 12px; + border-radius: 3px; +} + +body.canvas-menu.mini-navbar .navbar-default .nav > li > .nav-second-level li a { + font-size: 13px; + border-radius: 3px; +} + +.fixed-sidebar.mini-navbar .nav-second-level li a, +.canvas-menu.mini-navbar .nav-second-level li a { + padding: 10px 10px 10px 15px; +} + +.fixed-sidebar.mini-navbar .nav-second-level, +.canvas-menu.mini-navbar .nav-second-level { + position: relative; + padding: 0; + font-size: 13px; +} + +.fixed-sidebar.mini-navbar li.active .nav-second-level, +.canvas-menu.mini-navbar li.active .nav-second-level { + left: 0px; +} + +body.canvas-menu nav.navbar-static-side { + z-index: 2001; + background: #2f4050; + height: 100%; + position: fixed; + display: none; +} + +body.canvas-menu.mini-navbar nav.navbar-static-side { + display: block; + width: 70px; +} + +.top-navigation #page-wrapper { + margin-left: 0; +} + +.top-navigation .navbar-nav .dropdown-menu > .active > a { + background: white; + color: #1ab394; + font-weight: bold; +} + +.white-bg .navbar-fixed-top, +.white-bg .navbar-static-top { + background: #fff; +} + +.top-navigation .navbar { + margin-bottom: 0; +} + +.top-navigation .nav > li > a { + padding: 15px 20px; + color: #676a6c; +} + +.top-navigation .nav > li a:hover, +.top-navigation .nav > li a:focus { + background: #fff; + color: #1ab394; +} + +.top-navigation .nav > li.active { + background: #fff; + border: none; +} + +.top-navigation .nav > li.active > a { + color: #1ab394; +} + +.top-navigation .navbar-right { + padding-right: 10px; +} + +.top-navigation .navbar-nav .dropdown-menu { + box-shadow: none; + border: 1px solid #e7eaec; +} + +.top-navigation .dropdown-menu > li > a { + margin: 0; + padding: 7px 20px; +} + +.navbar .dropdown-menu { + margin-top: 0px; +} + +.top-navigation .navbar-brand { + background: #1ab394; + color: #fff; + padding: 15px 25px; +} + +.top-navigation .navbar-top-links li:last-child { + margin-right: 0; +} + +.top-navigation.mini-navbar #page-wrapper, +.top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper, +.mini-navbar .top-navigation #page-wrapper, +.body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper, +.canvas-menu #page-wrapper { + margin: 0; +} + +.top-navigation.fixed-nav #wrapper, +.fixed-nav #wrapper.top-navigation { + margin-top: 50px; +} + +.top-navigation .footer.fixed { + margin-left: 0 !important; +} + +.top-navigation .wrapper.wrapper-content { + padding: 40px; +} + +.top-navigation.body-small .wrapper.wrapper-content, +.body-small .top-navigation .wrapper.wrapper-content { + padding: 40px 0px 40px 0px; +} + +.navbar-toggle { + background-color: #1ab394; + color: #fff; + padding: 6px 12px; + font-size: 14px; +} + +.top-navigation .navbar-nav .open .dropdown-menu > li > a, +.top-navigation .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 10px 15px 10px 20px; +} + +@media (max-width: 768px) { + .top-navigation .navbar-header { + display: block; + float: none; + } +} + +.menu-visible-lg, +.menu-visible-md { + display: none !important; +} + +@media (min-width: 1200px) { + .menu-visible-lg { + display: block !important; + } +} + +@media (min-width: 992px) { + .menu-visible-md { + display: block !important; + } +} + +@media (max-width: 767px) { + .menu-visible-md { + display: block !important; + } + .menu-visible-lg { + display: block !important; + } +} + +.btn { + border-radius: 3px; +} + +.float-e-margins .btn { + margin-bottom: 5px; +} + +.btn-w-m { + min-width: 120px; +} + +.btn-primary.btn-outline { + color: #1ab394; +} + +.btn-success.btn-outline { + color: #1c84c6; +} + +.btn-info.btn-outline { + color: #23c6c8; +} + +.btn-warning.btn-outline { + color: #f8ac59; +} + +.btn-danger.btn-outline { + color: #ed5565; +} + +.btn-primary.btn-outline:hover, +.btn-success.btn-outline:hover, +.btn-info.btn-outline:hover, +.btn-warning.btn-outline:hover, +.btn-danger.btn-outline:hover { + color: #fff; +} + +.btn-primary { + background-color: #1ab394; + border-color: #1ab394; + color: #FFFFFF; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #18a689; + border-color: #18a689; + color: #FFFFFF; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary.disabled:hover, +.btn-primary.disabled:focus, +.btn-primary.disabled:active, +.btn-primary.disabled.active, +.btn-primary[disabled], +.btn-primary[disabled]:hover, +.btn-primary[disabled]:focus, +.btn-primary[disabled]:active, +.btn-primary.active[disabled], +fieldset[disabled] .btn-primary, +fieldset[disabled] .btn-primary:hover, +fieldset[disabled] .btn-primary:focus, +fieldset[disabled] .btn-primary:active, +fieldset[disabled] .btn-primary.active { + background-color: #1dc5a3; + border-color: #1dc5a3; +} + +.btn-success { + background-color: #1c84c6; + border-color: #1c84c6; + color: #FFFFFF; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #1a7bb9; + border-color: #1a7bb9; + color: #FFFFFF; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success.disabled:hover, +.btn-success.disabled:focus, +.btn-success.disabled:active, +.btn-success.disabled.active, +.btn-success[disabled], +.btn-success[disabled]:hover, +.btn-success[disabled]:focus, +.btn-success[disabled]:active, +.btn-success.active[disabled], +fieldset[disabled] .btn-success, +fieldset[disabled] .btn-success:hover, +fieldset[disabled] .btn-success:focus, +fieldset[disabled] .btn-success:active, +fieldset[disabled] .btn-success.active { + background-color: #1f90d8; + border-color: #1f90d8; +} + +.btn-info { + background-color: #23c6c8; + border-color: #23c6c8; + color: #FFFFFF; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #21b9bb; + border-color: #21b9bb; + color: #FFFFFF; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled, +.btn-info.disabled:hover, +.btn-info.disabled:focus, +.btn-info.disabled:active, +.btn-info.disabled.active, +.btn-info[disabled], +.btn-info[disabled]:hover, +.btn-info[disabled]:focus, +.btn-info[disabled]:active, +.btn-info.active[disabled], +fieldset[disabled] .btn-info, +fieldset[disabled] .btn-info:hover, +fieldset[disabled] .btn-info:focus, +fieldset[disabled] .btn-info:active, +fieldset[disabled] .btn-info.active { + background-color: #26d7d9; + border-color: #26d7d9; +} + +.btn-default { + background-color: #c2c2c2; + border-color: #c2c2c2; + color: #FFFFFF; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-color: #bababa; + border-color: #bababa; + color: #FFFFFF; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default.disabled:hover, +.btn-default.disabled:focus, +.btn-default.disabled:active, +.btn-default.disabled.active, +.btn-default[disabled], +.btn-default[disabled]:hover, +.btn-default[disabled]:focus, +.btn-default[disabled]:active, +.btn-default.active[disabled], +fieldset[disabled] .btn-default, +fieldset[disabled] .btn-default:hover, +fieldset[disabled] .btn-default:focus, +fieldset[disabled] .btn-default:active, +fieldset[disabled] .btn-default.active { + background-color: #cccccc; + border-color: #cccccc; +} + +.btn-warning { + background-color: #f8ac59; + border-color: #f8ac59; + color: #FFFFFF; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #f7a54a; + border-color: #f7a54a; + color: #FFFFFF; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled, +.btn-warning.disabled:hover, +.btn-warning.disabled:focus, +.btn-warning.disabled:active, +.btn-warning.disabled.active, +.btn-warning[disabled], +.btn-warning[disabled]:hover, +.btn-warning[disabled]:focus, +.btn-warning[disabled]:active, +.btn-warning.active[disabled], +fieldset[disabled] .btn-warning, +fieldset[disabled] .btn-warning:hover, +fieldset[disabled] .btn-warning:focus, +fieldset[disabled] .btn-warning:active, +fieldset[disabled] .btn-warning.active { + background-color: #f9b66d; + border-color: #f9b66d; +} + +.btn-danger { + background-color: #ed5565; + border-color: #ed5565; + color: #FFFFFF; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #ec4758; + border-color: #ec4758; + color: #FFFFFF; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger.disabled:hover, +.btn-danger.disabled:focus, +.btn-danger.disabled:active, +.btn-danger.disabled.active, +.btn-danger[disabled], +.btn-danger[disabled]:hover, +.btn-danger[disabled]:focus, +.btn-danger[disabled]:active, +.btn-danger.active[disabled], +fieldset[disabled] .btn-danger, +fieldset[disabled] .btn-danger:hover, +fieldset[disabled] .btn-danger:focus, +fieldset[disabled] .btn-danger:active, +fieldset[disabled] .btn-danger.active { + background-color: #ef6776; + border-color: #ef6776; +} + +.btn-link { + color: inherit; +} + +.btn-link:hover, +.btn-link:focus, +.btn-link:active, +.btn-link.active, +.open .dropdown-toggle.btn-link { + color: #1ab394; + text-decoration: none; +} + +.btn-link:active, +.btn-link.active, +.open .dropdown-toggle.btn-link { + background-image: none; +} + +.btn-link.disabled, +.btn-link.disabled:hover, +.btn-link.disabled:focus, +.btn-link.disabled:active, +.btn-link.disabled.active, +.btn-link[disabled], +.btn-link[disabled]:hover, +.btn-link[disabled]:focus, +.btn-link[disabled]:active, +.btn-link.active[disabled], +fieldset[disabled] .btn-link, +fieldset[disabled] .btn-link:hover, +fieldset[disabled] .btn-link:focus, +fieldset[disabled] .btn-link:active, +fieldset[disabled] .btn-link.active { + color: #cacaca; +} + +.btn-white { + color: inherit; + background: white; + border: 1px solid #e7eaec; +} + +.btn-white:hover, +.btn-white:focus, +.btn-white:active, +.btn-white.active, +.open .dropdown-toggle.btn-white { + color: inherit; + border: 1px solid #d2d2d2; +} + +.btn-white:active, +.btn-white.active { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset; +} + +.btn-white:active, +.btn-white.active, +.open .dropdown-toggle.btn-white { + background-image: none; +} + +.btn-white.disabled, +.btn-white.disabled:hover, +.btn-white.disabled:focus, +.btn-white.disabled:active, +.btn-white.disabled.active, +.btn-white[disabled], +.btn-white[disabled]:hover, +.btn-white[disabled]:focus, +.btn-white[disabled]:active, +.btn-white.active[disabled], +fieldset[disabled] .btn-white, +fieldset[disabled] .btn-white:hover, +fieldset[disabled] .btn-white:focus, +fieldset[disabled] .btn-white:active, +fieldset[disabled] .btn-white.active { + color: #cacaca; +} + +.form-control, +.form-control:focus, +.has-error .form-control:focus, +.has-success .form-control:focus, +.has-warning .form-control:focus, +.navbar-collapse, +.navbar-form, +.navbar-form-custom .form-control:focus, +.navbar-form-custom .form-control:hover, +.open .btn.dropdown-toggle, +.panel, +.popover, +.progress, +.progress-bar { + box-shadow: none; +} + +.btn-outline { + color: inherit; + background-color: transparent; + -webkit-transition: all .5s; + transition: all .5s; +} + +.btn-rounded { + border-radius: 50px; +} + +.btn-large-dim { + width: 90px; + height: 90px; + font-size: 42px; +} + +button.dim { + display: inline-block; + color: #fff; + text-decoration: none; + text-transform: uppercase; + text-align: center; + padding-top: 6px; + margin-right: 10px; + position: relative; + cursor: pointer; + border-radius: 5px; + font-weight: 600; + margin-bottom: 20px !important; +} + +button.dim:active { + top: 3px; +} + +button.btn-primary.dim { + box-shadow: inset 0px 0px 0px #16987e, 0px 5px 0px 0px #16987e, 0px 10px 5px #999999; +} + +button.btn-primary.dim:active { + box-shadow: inset 0px 0px 0px #16987e, 0px 2px 0px 0px #16987e, 0px 5px 3px #999999; +} + +button.btn-default.dim { + box-shadow: inset 0px 0px 0px #b3b3b3, 0px 5px 0px 0px #b3b3b3, 0px 10px 5px #999999; +} + +button.btn-default.dim:active { + box-shadow: inset 0px 0px 0px #b3b3b3, 0px 2px 0px 0px #b3b3b3, 0px 5px 3px #999999; +} + +button.btn-warning.dim { + box-shadow: inset 0px 0px 0px #f79d3c, 0px 5px 0px 0px #f79d3c, 0px 10px 5px #999999; +} + +button.btn-warning.dim:active { + box-shadow: inset 0px 0px 0px #f79d3c, 0px 2px 0px 0px #f79d3c, 0px 5px 3px #999999; +} + +button.btn-info.dim { + box-shadow: inset 0px 0px 0px #1eacae, 0px 5px 0px 0px #1eacae, 0px 10px 5px #999999; +} + +button.btn-info.dim:active { + box-shadow: inset 0px 0px 0px #1eacae, 0px 2px 0px 0px #1eacae, 0px 5px 3px #999999; +} + +button.btn-success.dim { + box-shadow: inset 0px 0px 0px #1872ab, 0px 5px 0px 0px #1872ab, 0px 10px 5px #999999; +} + +button.btn-success.dim:active { + box-shadow: inset 0px 0px 0px #1872ab, 0px 2px 0px 0px #1872ab, 0px 5px 3px #999999; +} + +button.btn-danger.dim { + box-shadow: inset 0px 0px 0px #ea394c, 0px 5px 0px 0px #ea394c, 0px 10px 5px #999999; +} + +button.btn-danger.dim:active { + box-shadow: inset 0px 0px 0px #ea394c, 0px 2px 0px 0px #ea394c, 0px 5px 3px #999999; +} + +button.dim:before { + font-size: 50px; + line-height: 1em; + font-weight: normal; + color: #fff; + display: block; + padding-top: 10px; +} + +button.dim:active:before { + top: 7px; + font-size: 50px; +} + +.label { + background-color: #d1dade; + color: #5e5e5e; + font-size: 10px; + font-weight: 600; + padding: 3px 8px; + text-shadow: none; +} + +.badge { + background-color: #d1dade; + color: #5e5e5e; + font-size: 11px; + font-weight: 600; + padding-bottom: 4px; + padding-left: 6px; + padding-right: 6px; + text-shadow: none; +} + +.label-primary, +.badge-primary { + background-color: #1ab394; + color: #FFFFFF; +} + +.label-success, +.badge-success { + background-color: #1c84c6; + color: #FFFFFF; +} + +.label-warning, +.badge-warning { + background-color: #f8ac59; + color: #FFFFFF; +} + +.label-warning-light, +.badge-warning-light { + background-color: #f8ac59; + color: #ffffff; +} + +.label-danger, +.badge-danger { + background-color: #ed5565; + color: #FFFFFF; +} + +.label-info, +.badge-info { + background-color: #23c6c8; + color: #FFFFFF; +} + +.label-inverse, +.badge-inverse { + background-color: #262626; + color: #FFFFFF; +} + +.label-white, +.badge-white { + background-color: #FFFFFF; + color: #5E5E5E; +} + +.label-white, +.badge-disable { + background-color: #2A2E36; + color: #8B91A0; +} + + +/* TOOGLE SWICH */ + +.onoffswitch { + position: relative; + width: 64px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.onoffswitch-checkbox { + display: none; +} + +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #1ab394; + border-radius: 2px; +} + +.onoffswitch-inner { + width: 200%; + margin-left: -100%; + -webkit-transition: margin 0.3s ease-in 0s; + transition: margin 0.3s ease-in 0s; +} + +.onoffswitch-inner:before, +.onoffswitch-inner:after { + float: left; + width: 50%; + height: 20px; + padding: 0; + line-height: 20px; + font-size: 12px; + color: white; + font-family: Trebuchet, Arial, sans-serif; + font-weight: bold; + box-sizing: border-box; +} + +.onoffswitch-inner:before { + content: "ON"; + padding-left: 10px; + background-color: #1ab394; + color: #FFFFFF; +} + +.onoffswitch-inner:after { + content: "OFF"; + padding-right: 10px; + background-color: #FFFFFF; + color: #999999; + text-align: right; +} + +.onoffswitch-switch { + width: 20px; + margin: 0px; + background: #FFFFFF; + border: 2px solid #1ab394; + border-radius: 2px; + position: absolute; + top: 0; + bottom: 0; + right: 44px; + -webkit-transition: all 0.3s ease-in 0s; + transition: all 0.3s ease-in 0s; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-left: 0; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 0px; +} + + +/* CHOSEN PLUGIN */ + +.chosen-container-single .chosen-single { + background: #ffffff; + box-shadow: none; + -moz-box-sizing: border-box; + background-color: #FFFFFF; + border: 1px solid #CBD5DD; + border-radius: 2px; + cursor: text; + height: auto !important; + margin: 0; + min-height: 30px; + overflow: hidden; + padding: 4px 12px; + position: relative; + width: 100%; +} + +.chosen-container-multi .chosen-choices li.search-choice { + background: #f1f1f1; + border: 1px solid #ededed; + border-radius: 2px; + box-shadow: none; + color: #333333; + cursor: default; + line-height: 13px; + margin: 3px 0 3px 5px; + padding: 3px 20px 3px 5px; + position: relative; +} + + +/* PAGINATIN */ + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + background-color: #f4f4f4; + border-color: #DDDDDD; + color: inherit; + cursor: default; + z-index: 2; +} + +.pagination > li > a, +.pagination > li > span { + background-color: #FFFFFF; + border: 1px solid #DDDDDD; + color: inherit; + float: left; + line-height: 1.42857; + margin-left: -1px; + padding: 4px 10px; + position: relative; + text-decoration: none; +} + + +/* TOOLTIPS */ + +.tooltip-inner { + background-color: #2F4050; +} + +.tooltip.top .tooltip-arrow { + border-top-color: #2F4050; +} + +.tooltip.right .tooltip-arrow { + border-right-color: #2F4050; +} + +.tooltip.bottom .tooltip-arrow { + border-bottom-color: #2F4050; +} + +.tooltip.left .tooltip-arrow { + border-left-color: #2F4050; +} + + +/* EASY PIE CHART*/ + +.easypiechart { + position: relative; + text-align: center; +} + +.easypiechart .h2 { + margin-left: 10px; + margin-top: 10px; + display: inline-block; +} + +.easypiechart canvas { + top: 0; + left: 0; +} + +.easypiechart .easypie-text { + line-height: 1; + position: absolute; + top: 33px; + width: 100%; + z-index: 1; +} + +.easypiechart img { + margin-top: -4px; +} + +.jqstooltip { + box-sizing: content-box; +} + + +/* FULLCALENDAR */ + +.fc-state-default { + background-color: #ffffff; + background-image: none; + background-repeat: repeat-x; + box-shadow: none; + color: #333333; + text-shadow: none; +} + +.fc-state-default { + border: 1px solid; +} + +.fc-button { + color: inherit; + border: 1px solid #e7eaec; + cursor: pointer; + display: inline-block; + height: 1.9em; + line-height: 1.9em; + overflow: hidden; + padding: 0 0.6em; + position: relative; + white-space: nowrap; +} + +.fc-state-active { + background-color: #1ab394; + border-color: #1ab394; + color: #ffffff; +} + +.fc-header-title h2 { + font-size: 16px; + font-weight: 600; + color: inherit; +} + +.fc-content .fc-widget-header, +.fc-content .fc-widget-content { + border-color: #e7eaec; + font-weight: normal; +} + +.fc-border-separate tbody { + background-color: #F8F8F8; +} + +.fc-state-highlight { + background: none repeat scroll 0 0 #FCF8E3; +} + +.external-event { + padding: 5px 10px; + border-radius: 2px; + cursor: pointer; + margin-bottom: 5px; +} + +.fc-ltr .fc-event-hori.fc-event-end, +.fc-rtl .fc-event-hori.fc-event-start { + border-radius: 2px; +} + +.fc-event, +.fc-agenda .fc-event-time, +.fc-event a { + padding: 4px 6px; + background-color: #1ab394; + /* background color */ + border-color: #1ab394; + /* border color */ +} + +.fc-event-time, +.fc-event-title { + color: #717171; + padding: 0 1px; +} + +.ui-calendar .fc-event-time, +.ui-calendar .fc-event-title { + color: #fff; +} + + +/* Chat */ + +.chat-activity-list .chat-element { + border-bottom: 1px solid #e7eaec; +} + +.chat-element:first-child { + margin-top: 0; +} + +.chat-element { + padding-bottom: 15px; +} + +.chat-element, +.chat-element .media { + margin-top: 15px; +} + +.chat-element, +.media-body { + overflow: hidden; +} + +.media-body { + display: block; + width: auto; +} + +.chat-element > .pull-left { + margin-right: 10px; +} + +.chat-element img.img-circle, +.dropdown-messages-box img.img-circle { + width: 38px; + height: 38px; +} + +.chat-element .well { + border: 1px solid #e7eaec; + box-shadow: none; + margin-top: 10px; + margin-bottom: 5px; + padding: 10px 20px; + font-size: 11px; + line-height: 16px; +} + +.chat-element .actions { + margin-top: 10px; +} + +.chat-element .photos { + margin: 10px 0; +} + +.right.chat-element > .pull-right { + margin-left: 10px; +} + +.chat-photo { + max-height: 180px; + border-radius: 4px; + overflow: hidden; + margin-right: 10px; + margin-bottom: 10px; +} + +.chat { + margin: 0; + padding: 0; + list-style: none; +} + +.chat li { + margin-bottom: 10px; + padding-bottom: 5px; + border-bottom: 1px dotted #B3A9A9; +} + +.chat li.left .chat-body { + margin-left: 60px; +} + +.chat li.right .chat-body { + margin-right: 60px; +} + +.chat li .chat-body p { + margin: 0; + color: #777777; +} + +.panel .slidedown .glyphicon, +.chat .glyphicon { + margin-right: 5px; +} + +.chat-panel .panel-body { + height: 350px; + overflow-y: scroll; +} + + +/* LIST GROUP */ + +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + background-color: #1ab394; + border-color: #1ab394; + color: #FFFFFF; + z-index: 2; +} + +.list-group-item-heading { + margin-top: 10px; +} + +.list-group-item-text { + margin: 0 0 10px; + color: inherit; + font-size: 12px; + line-height: inherit; +} + +.no-padding .list-group-item { + border-left: none; + border-right: none; + border-bottom: none; +} + +.no-padding .list-group-item:first-child { + border-left: none; + border-right: none; + border-bottom: none; + border-top: none; +} + +.no-padding .list-group { + margin-bottom: 0; +} + +.list-group-item { + background-color: inherit; + border: 1px solid #e7eaec; + display: block; + margin-bottom: -1px; + padding: 10px 15px; + position: relative; +} + +.elements-list .list-group-item { + border-left: none; + border-right: none; + /*border-top: none;*/ + padding: 15px 25px; +} + +.elements-list .list-group-item:first-child { + border-left: none; + border-right: none; + border-top: none !important; +} + +.elements-list .list-group { + margin-bottom: 0; +} + +.elements-list a { + color: inherit; +} + +.elements-list .list-group-item.active, +.elements-list .list-group-item:hover { + background: #f3f3f4; + color: inherit; + border-color: #e7eaec; + /*border-bottom: 1px solid #e7eaec;*/ + /*border-top: 1px solid #e7eaec;*/ + border-radius: 0; +} + +.elements-list li.active { + -webkit-transition: none; + transition: none; +} + +.element-detail-box { + padding: 25px; +} + + +/* FLOT CHART */ + +.flot-chart { + display: block; + height: 200px; +} + +.widget .flot-chart.dashboard-chart { + display: block; + height: 120px; + margin-top: 40px; +} + +.flot-chart.dashboard-chart { + display: block; + height: 180px; + margin-top: 40px; +} + +.flot-chart-content { + width: 100%; + height: 100%; +} + +.flot-chart-pie-content { + width: 200px; + height: 200px; + margin: auto; +} + +.jqstooltip { + position: absolute; + display: block; + left: 0px; + top: 0px; + visibility: hidden; + background: #2b303a; + background-color: rgba(43, 48, 58, 0.8); + color: white; + text-align: left; + white-space: nowrap; + z-index: 10000; + padding: 5px 5px 5px 5px; + min-height: 22px; + border-radius: 3px; +} + +.jqsfield { + color: white; + text-align: left; +} + +.h-200 { + min-height: 200px; +} + +.legendLabel { + padding-left: 5px; +} + +.stat-list li:first-child { + margin-top: 0; +} + +.stat-list { + list-style: none; + padding: 0; + margin: 0; +} + +.stat-percent { + float: right; +} + +.stat-list li { + margin-top: 15px; + position: relative; +} + + +/* DATATABLES */ + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background: transparent; +} + +table.dataTable thead .sorting_asc:after { + float: right; + font-family: fontawesome; +} + +table.dataTable thead .sorting_desc:after { + content: "\f0dd"; + float: right; + font-family: fontawesome; +} + +table.dataTable thead .sorting:after { + content: "\f0dc"; + float: right; + font-family: fontawesome; + color: rgba(50, 50, 50, 0.5); +} + +.dataTables_wrapper { + padding-bottom: 30px; +} + + +/* CIRCLE */ + +.img-circle { + border-radius: 50%; +} + +.btn-circle { + width: 30px; + height: 30px; + padding: 6px 0; + border-radius: 15px; + text-align: center; + font-size: 12px; + line-height: 1.428571429; +} + +.btn-circle.btn-lg { + width: 50px; + height: 50px; + padding: 10px 16px; + border-radius: 25px; + font-size: 18px; + line-height: 1.33; +} + +.btn-circle.btn-xl { + width: 70px; + height: 70px; + padding: 10px 16px; + border-radius: 35px; + font-size: 24px; + line-height: 1.33; +} + +.show-grid [class^="col-"] { + padding-top: 10px; + padding-bottom: 10px; + border: 1px solid #ddd; + background-color: #eee !important; +} + +.show-grid { + margin: 15px 0; +} + + +/* ANIMATION */ + +.css-animation-box h1 { + font-size: 44px; +} + +.animation-efect-links a { + padding: 4px 6px; + font-size: 12px; +} + +#animation_box { + background-color: #f9f8f8; + border-radius: 16px; + width: 80%; + margin: 0 auto; + padding-top: 80px; +} + +.animation-text-box { + position: absolute; + margin-top: 40px; + left: 50%; + margin-left: -100px; + width: 200px; +} + +.animation-text-info { + position: absolute; + margin-top: -60px; + left: 50%; + margin-left: -100px; + width: 200px; + font-size: 10px; +} + +.animation-text-box h2 { + font-size: 54px; + font-weight: 600; + margin-bottom: 5px; +} + +.animation-text-box p { + font-size: 12px; + text-transform: uppercase; +} + + +/* PEACE */ + +.pace { + -webkit-pointer-events: none; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.pace-inactive { + display: none; +} + +.pace .pace-progress { + background: #1ab394; + position: fixed; + z-index: 2000; + top: 0; + width: 100%; + height: 2px; +} + +.pace-inactive { + display: none; +} + + +/* WIDGETS */ + +.widget { + border-radius: 5px; + padding: 15px 20px; + margin-bottom: 10px; + margin-top: 10px; +} + +.widget.style1 h2 { + font-size: 30px; +} + +.widget h2, +.widget h3 { + margin-top: 5px; + margin-bottom: 0; +} + +.widget-text-box { + padding: 20px; + border: 1px solid #e7eaec; + background: #ffffff; +} + +.widget-head-color-box { + border-radius: 5px 5px 0px 0px; + margin-top: 10px; +} + +.widget .flot-chart { + height: 100px; +} + +.vertical-align div { + display: inline-block; + vertical-align: middle; +} + +.vertical-align h2, +.vertical-align h3 { + margin: 0; +} + +.todo-list { + list-style: none outside none; + margin: 0; + padding: 0; + font-size: 14px; +} + +.todo-list.small-list { + font-size: 12px; +} + +.todo-list.small-list > li { + background: #f3f3f4; + border-left: none; + border-right: none; + border-radius: 4px; + color: inherit; + margin-bottom: 2px; + padding: 6px 6px 6px 12px; +} + +.todo-list.small-list .btn-xs, +.todo-list.small-list .btn-group-xs > .btn { + border-radius: 5px; + font-size: 10px; + line-height: 1.5; + padding: 1px 2px 1px 5px; +} + +.todo-list > li { + background: #f3f3f4; + border-left: 6px solid #e7eaec; + border-right: 6px solid #e7eaec; + border-radius: 4px; + color: inherit; + margin-bottom: 2px; + padding: 10px; +} + +.todo-list .handle { + cursor: move; + display: inline-block; + font-size: 16px; + margin: 0 5px; +} + +.todo-list > li .label { + font-size: 9px; + margin-left: 10px; +} + +.check-link { + font-size: 16px; +} + +.todo-completed { + text-decoration: line-through; +} + +.geo-statistic h1 { + font-size: 36px; + margin-bottom: 0; +} + +.glyphicon.fa { + font-family: "FontAwesome"; +} + + +/* INPUTS */ + +.inline { + display: inline-block !important; +} + +.input-s-sm { + width: 120px; +} + +.input-s { + width: 200px; +} + +.input-s-lg { + width: 250px; +} + +.i-checks { + padding-left: 0; +} + +.form-control, +.single-line { + background-color: #FFFFFF; + background-image: none; + border: 1px solid #e5e6e7; + border-radius: 1px; + color: inherit; + display: block; + padding: 6px 12px; + -webkit-transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + width: 100%; + font-size: 14px; +} + +.form-control:focus, +.single-line:focus { + border-color: #1ab394 !important; +} + +.has-success .form-control { + border-color: #1ab394; +} + +.has-warning .form-control { + border-color: #f8ac59; +} + +.has-error .form-control { + border-color: #ed5565; +} + +.has-success .control-label { + color: #1ab394; +} + +.has-warning .control-label { + color: #f8ac59; +} + +.has-error .control-label { + color: #ed5565; +} + +.input-group-addon { + background-color: #fff; + border: 1px solid #E5E6E7; + border-radius: 1px; + color: inherit; + font-size: 14px; + font-weight: 400; + line-height: 1; + padding: 6px 12px; + text-align: center; +} + +.spinner-buttons.input-group-btn .btn-xs { + line-height: 1.13; +} + +.spinner-buttons.input-group-btn { + width: 20%; +} + +.noUi-connect { + background: none repeat scroll 0 0 #1ab394; + box-shadow: none; +} + +.slider_red .noUi-connect { + background: none repeat scroll 0 0 #ed5565; + box-shadow: none; +} + + +/* UI Sortable */ + +.ui-sortable .ibox-title { + cursor: move; +} + +.ui-sortable-placeholder { + border: 1px dashed #cecece !important; + visibility: visible !important; + background: #e7eaec; +} + +.ibox.ui-sortable-placeholder { + margin: 0px 0px 23px !important; +} + + +/* Tabs */ + +.tabs-container .panel-body { + background: #fff; + border: 1px solid #e7eaec; + border-radius: 2px; + padding: 20px; + position: relative; +} + +.tabs-container .nav-tabs > li.active > a, +.tabs-container .nav-tabs > li.active > a:hover, +.tabs-container .nav-tabs > li.active > a:focus { + border: 1px solid #e7eaec; + border-bottom-color: transparent; + background-color: #fff; +} + +.tabs-container .nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.tabs-container .tab-pane .panel-body { + border-top: none; +} + +.tabs-container .nav-tabs > li.active > a, +.tabs-container .nav-tabs > li.active > a:hover, +.tabs-container .nav-tabs > li.active > a:focus { + border: 1px solid #e7eaec; + border-bottom-color: transparent; +} + +.tabs-container .nav-tabs { + border-bottom: 1px solid #e7eaec; +} + +.tabs-container .tab-pane .panel-body { + border-top: none; +} + +.tabs-container .tabs-left .tab-pane .panel-body, +.tabs-container .tabs-right .tab-pane .panel-body { + border-top: 1px solid #e7eaec; +} + +.tabs-container .nav-tabs > li a:hover { + background: transparent; + border-color: transparent; +} + +.tabs-container .tabs-below > .nav-tabs, +.tabs-container .tabs-right > .nav-tabs, +.tabs-container .tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tabs-container .tabs-left .panel-body { + position: static; +} + +.tabs-container .tabs-left > .nav-tabs, +.tabs-container .tabs-right > .nav-tabs { + width: 20%; +} + +.tabs-container .tabs-left .panel-body { + width: 80%; + margin-left: 20%; +} + +.tabs-container .tabs-right .panel-body { + width: 80%; + margin-right: 20%; +} + +.tabs-container .tab-content > .tab-pane, +.tabs-container .pill-content > .pill-pane { + display: none; +} + +.tabs-container .tab-content > .active, +.tabs-container .pill-content > .active { + display: block; +} + +.tabs-container .tabs-below > .nav-tabs { + border-top: 1px solid #e7eaec; +} + +.tabs-container .tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-container .tabs-below > .nav-tabs > li > a { + border-radius: 0 0 4px 4px; +} + +.tabs-container .tabs-below > .nav-tabs > li > a:hover, +.tabs-container .tabs-below > .nav-tabs > li > a:focus { + border-top-color: #e7eaec; + border-bottom-color: transparent; +} + +.tabs-container .tabs-left > .nav-tabs > li, +.tabs-container .tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-container .tabs-left > .nav-tabs > li > a, +.tabs-container .tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-container .tabs-left > .nav-tabs { + float: left; + margin-right: 19px; +} + +.tabs-container .tabs-left > .nav-tabs > li > a { + margin-right: -1px; + border-radius: 4px 0 0 4px; +} + +.tabs-container .tabs-left > .nav-tabs .active > a, +.tabs-container .tabs-left > .nav-tabs .active > a:hover, +.tabs-container .tabs-left > .nav-tabs .active > a:focus { + border-color: #e7eaec transparent #e7eaec #e7eaec; + *border-right-color: #ffffff; +} + +.tabs-container .tabs-right > .nav-tabs { + float: right; + margin-left: 19px; +} + +.tabs-container .tabs-right > .nav-tabs > li > a { + margin-left: -1px; + border-radius: 0 4px 4px 0; +} + +.tabs-container .tabs-right > .nav-tabs .active > a, +.tabs-container .tabs-right > .nav-tabs .active > a:hover, +.tabs-container .tabs-right > .nav-tabs .active > a:focus { + border-color: #e7eaec #e7eaec #e7eaec transparent; + *border-left-color: #ffffff; + z-index: 1; +} + + +/* SWITCHES */ + +.onoffswitch { + position: relative; + width: 54px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.onoffswitch-checkbox { + display: none; +} + +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #1AB394; + border-radius: 3px; +} + +.onoffswitch-inner { + display: block; + width: 200%; + margin-left: -100%; + -webkit-transition: margin 0.3s ease-in 0s; + transition: margin 0.3s ease-in 0s; +} + +.onoffswitch-inner:before, +.onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 16px; + padding: 0; + line-height: 16px; + font-size: 10px; + color: white; + font-family: Trebuchet, Arial, sans-serif; + font-weight: bold; + box-sizing: border-box; +} + +.onoffswitch-inner:before { + content: "ON"; + padding-left: 7px; + background-color: #1AB394; + color: #FFFFFF; +} + +.onoffswitch-inner:after { + content: "OFF"; + padding-right: 7px; + background-color: #FFFFFF; + color: #919191; + text-align: right; +} + +.onoffswitch-switch { + display: block; + width: 18px; + margin: 0px; + background: #FFFFFF; + border: 2px solid #1AB394; + border-radius: 3px; + position: absolute; + top: 0; + bottom: 0; + right: 36px; + -webkit-transition: all 0.3s ease-in 0s; + transition: all 0.3s ease-in 0s; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-left: 0; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 0px; +} + + +/* Nestable list */ + +.dd { + position: relative; + display: block; + margin: 0; + padding: 0; + list-style: none; + font-size: 13px; + line-height: 20px; +} + +.dd-list { + display: block; + position: relative; + margin: 0; + padding: 0; + list-style: none; +} + +.dd-list .dd-list { + padding-left: 30px; +} + +.dd-collapsed .dd-list { + display: none; +} + +.dd-item, +.dd-empty, +.dd-placeholder { + display: block; + position: relative; + margin: 0; + padding: 0; + min-height: 20px; + font-size: 13px; + line-height: 20px; +} + +.dd-handle { + display: block; + margin: 5px 0; + padding: 5px 10px; + color: #333; + text-decoration: none; + border: 1px solid #e7eaec; + background: #f5f5f5; + border-radius: 3px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.dd-handle span { + font-weight: bold; +} + +.dd-handle:hover { + background: #f0f0f0; + cursor: pointer; + font-weight: bold; +} + +.dd-item > button { + display: block; + position: relative; + cursor: pointer; + float: left; + width: 25px; + height: 20px; + margin: 5px 0; + padding: 0; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + border: 0; + background: transparent; + font-size: 12px; + line-height: 1; + text-align: center; + font-weight: bold; +} + +.dd-item > button:before { + content: '+'; + display: block; + position: absolute; + width: 100%; + text-align: center; + text-indent: 0; +} + +.dd-item > button[data-action="collapse"]:before { + content: '-'; +} + +#nestable2 .dd-item > button { + font-family: FontAwesome; + height: 34px; + width: 33px; + color: #c1c1c1; +} + +#nestable2 .dd-item > button:before { + content: "\f067"; +} + +#nestable2 .dd-item > button[data-action="collapse"]:before { + content: "\f068"; +} + +.dd-placeholder, +.dd-empty { + margin: 5px 0; + padding: 0; + min-height: 30px; + background: #f2fbff; + border: 1px dashed #b6bcbf; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.dd-empty { + border: 1px dashed #bbb; + min-height: 100px; + background-color: #e5e5e5; + background-image: -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); + background-image: linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); + background-size: 60px 60px; + background-position: 0 0, 30px 30px; +} + +.dd-dragel { + position: absolute; + z-index: 9999; + pointer-events: none; +} + +.dd-dragel > .dd-item .dd-handle { + margin-top: 0; +} + +.dd-dragel .dd-handle { + box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); +} + + +/** +* Nestable Extras +*/ + +.nestable-lists { + display: block; + clear: both; + padding: 30px 0; + width: 100%; + border: 0; + border-top: 2px solid #ddd; + border-bottom: 2px solid #ddd; +} + +#nestable-menu { + padding: 0; + margin: 10px 0 20px 0; +} + +#nestable-output, +#nestable2-output { + width: 100%; + font-size: 0.75em; + line-height: 1.333333em; + font-family: lucida grande, lucida sans unicode, helvetica, arial, sans-serif; + padding: 5px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +#nestable2 .dd-handle { + color: inherit; + border: 1px dashed #e7eaec; + background: #f3f3f4; + padding: 10px; +} + +#nestable2 .dd-handle:hover { + /*background: #bbb;*/ +} + +#nestable2 span.label { + margin-right: 10px; +} + +#nestable-output, +#nestable2-output { + font-size: 12px; + padding: 25px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + + +/* CodeMirror */ + +.CodeMirror { + border: 1px solid #eee; + height: auto; +} + +.CodeMirror-scroll { + overflow-y: hidden; + overflow-x: auto; +} + + +/* Google Maps */ + +.google-map { + height: 300px; +} + + +/* Validation */ + +label.error { + color: #cc5965; + display: inline-block; + margin-left: 5px; +} + +.form-control.error { + border: 1px dotted #cc5965; +} + + +/* ngGrid */ + +.gridStyle { + border: 1px solid #d4d4d4; + width: 100%; + height: 400px; +} + +.gridStyle2 { + border: 1px solid #d4d4d4; + width: 500px; + height: 300px; +} + +.ngH eaderCell { + border-right: none; + border-bottom: 1px solid #e7eaec; +} + +.ngCell { + border-right: none; +} + +.ngTopPanel { + background: #F5F5F6; +} + +.ngRow.even { + background: #f9f9f9; +} + +.ngRow.selected { + background: #EBF2F1; +} + +.ngRow { + border-bottom: 1px solid #e7eaec; +} + +.ngCell { + background-color: transparent; +} + +.ngHeaderCell { + border-right: none; +} + + +/* Toastr custom style */ + +#toast-container > .toast { + background-image: none !important; +} + +#toast-container > .toast:before { + position: fixed; + font-family: FontAwesome; + font-size: 24px; + line-height: 24px; + float: left; + color: #FFF; + padding-right: 0.5em; + margin: auto 0.5em auto -1.5em; +} + +#toast-container > div { + box-shadow: 0 0 3px #999; + opacity: .9; + -ms-filter: alpha(opacity=90); + filter: alpha(opacity=90); +} + +#toast-container >:hover { + box-shadow: 0 0 4px #999; + opacity: 1; + -ms-filter: alpha(opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} + +.toast { + background-color: #1ab394; +} + +.toast-success { + background-color: #1ab394; +} + +.toast-error { + background-color: #ed5565; +} + +.toast-info { + background-color: #23c6c8; +} + +.toast-warning { + background-color: #f8ac59; +} + +.toast-top-full-width { + margin-top: 20px; +} + +.toast-bottom-full-width { + margin-bottom: 20px; +} + + +/* Image cropper style */ + +.img-container, +.img-preview { + overflow: hidden; + text-align: center; + width: 100%; +} + +.img-preview-sm { + height: 130px; + width: 200px; +} + + +/* Forum styles */ + +.forum-post-container .media { + margin: 10px 10px 10px 10px; + padding: 20px 10px 20px 10px; + border-bottom: 1px solid #f1f1f1; +} + +.forum-avatar { + float: left; + margin-right: 20px; + text-align: center; + width: 110px; +} + +.forum-avatar .img-circle { + height: 48px; + width: 48px; +} + +.author-info { + color: #676a6c; + font-size: 11px; + margin-top: 5px; + text-align: center; +} + +.forum-post-info { + padding: 9px 12px 6px 12px; + background: #f9f9f9; + border: 1px solid #f1f1f1; +} + +.media-body > .media { + background: #f9f9f9; + border-radius: 3px; + border: 1px solid #f1f1f1; +} + +.forum-post-container .media-body .photos { + margin: 10px 0; +} + +.forum-photo { + max-width: 140px; + border-radius: 3px; +} + +.media-body > .media .forum-avatar { + width: 70px; + margin-right: 10px; +} + +.media-body > .media .forum-avatar .img-circle { + height: 38px; + width: 38px; +} + +.mid-icon { + font-size: 66px; +} + +.forum-item { + margin: 10px 0; + padding: 10px 0 20px; + border-bottom: 1px solid #f1f1f1; +} + +.views-number { + font-size: 24px; + line-height: 18px; + font-weight: 400; +} + +.forum-container, +.forum-post-container { + padding: 30px !important; +} + +.forum-item small { + color: #999; +} + +.forum-item .forum-sub-title { + color: #999; + margin-left: 50px; +} + +.forum-title { + margin: 15px 0 15px 0; +} + +.forum-info { + text-align: center; +} + +.forum-desc { + color: #999; +} + +.forum-icon { + float: left; + width: 30px; + margin-right: 20px; + text-align: center; +} + +a.forum-item-title { + color: inherit; + display: block; + font-size: 18px; + font-weight: 600; +} + +a.forum-item-title:hover { + color: inherit; +} + +.forum-icon .fa { + font-size: 30px; + margin-top: 8px; + color: #9b9b9b; +} + +.forum-item.active .fa { + color: #1ab394; +} + +.forum-item.active a.forum-item-title { + color: #1ab394; +} + +@media (max-width: 992px) { + .forum-info { + margin: 15px 0 10px 0px; + /* Comment this is you want to show forum info in small devices */ + display: none; + } + .forum-desc { + float: none !important; + } +} + + +/* New Timeline style */ + +.vertical-container { + /* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */ + width: 90%; + max-width: 1170px; + margin: 0 auto; +} + +.vertical-container::after { + /* clearfix */ + content: ''; + display: table; + clear: both; +} + +#vertical-timeline { + position: relative; + padding: 0; + margin-top: 2em; + margin-bottom: 2em; +} + +#vertical-timeline::before { + content: ''; + position: absolute; + top: 0; + left: 18px; + height: 100%; + width: 4px; + background: #f1f1f1; +} + +.vertical-timeline-content .btn { + float: right; +} + +#vertical-timeline.light-timeline:before { + background: #e7eaec; +} + +.dark-timeline .vertical-timeline-content:before { + border-color: transparent #f5f5f5 transparent transparent; +} + +.dark-timeline.center-orientation .vertical-timeline-content:before { + border-color: transparent transparent transparent #f5f5f5; +} + +.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before, +.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before { + border-color: transparent #f5f5f5 transparent transparent; +} + +.dark-timeline .vertical-timeline-content, +.dark-timeline.center-orientation .vertical-timeline-content { + background: #f5f5f5; +} + +@media only screen and (min-width: 1170px) { + #vertical-timeline.center-orientation { + margin-top: 3em; + margin-bottom: 3em; + } + #vertical-timeline.center-orientation:before { + left: 50%; + margin-left: -2px; + } +} + +@media only screen and (max-width: 1170px) { + .center-orientation.dark-timeline .vertical-timeline-content:before { + border-color: transparent #f5f5f5 transparent transparent; + } +} + +.vertical-timeline-block { + position: relative; + margin: 2em 0; +} + +.vertical-timeline-block:after { + content: ""; + display: table; + clear: both; +} + +.vertical-timeline-block:first-child { + margin-top: 0; +} + +.vertical-timeline-block:last-child { + margin-bottom: 0; +} + +@media only screen and (min-width: 1170px) { + .center-orientation .vertical-timeline-block { + margin: 4em 0; + } + .center-orientation .vertical-timeline-block:first-child { + margin-top: 0; + } + .center-orientation .vertical-timeline-block:last-child { + margin-bottom: 0; + } +} + +.vertical-timeline-icon { + position: absolute; + top: 0; + left: 0; + width: 40px; + height: 40px; + border-radius: 50%; + font-size: 16px; + border: 3px solid #f1f1f1; + text-align: center; +} + +.vertical-timeline-icon i { + display: block; + width: 24px; + height: 24px; + position: relative; + left: 50%; + top: 50%; + margin-left: -12px; + margin-top: -9px; +} + +@media only screen and (min-width: 1170px) { + .center-orientation .vertical-timeline-icon { + width: 50px; + height: 50px; + left: 50%; + margin-left: -25px; + -webkit-transform: translateZ(0); + -webkit-backface-visibility: hidden; + font-size: 19px; + } + .center-orientation .vertical-timeline-icon i { + margin-left: -12px; + margin-top: -10px; + } + .center-orientation .cssanimations .vertical-timeline-icon.is-hidden { + visibility: hidden; + } +} + +.vertical-timeline-content { + position: relative; + margin-left: 60px; + background: white; + border-radius: 0.25em; + padding: 1em; +} + +.vertical-timeline-content:after { + content: ""; + display: table; + clear: both; +} + +.vertical-timeline-content h2 { + font-weight: 400; + margin-top: 4px; +} + +.vertical-timeline-content p { + margin: 1em 0; + line-height: 1.6; +} + +.vertical-timeline-content .vertical-date { + float: left; + font-weight: 500; +} + +.vertical-date small { + color: #1ab394; + font-weight: 400; +} + +.vertical-timeline-content::before { + content: ''; + position: absolute; + top: 16px; + right: 100%; + height: 0; + width: 0; + border: 7px solid transparent; + border-right: 7px solid white; +} + +@media only screen and (min-width: 768px) { + .vertical-timeline-content h2 { + font-size: 18px; + } + .vertical-timeline-content p { + font-size: 13px; + } +} + +@media only screen and (min-width: 1170px) { + .center-orientation .vertical-timeline-content { + margin-left: 0; + padding: 1.6em; + width: 45%; + } + .center-orientation .vertical-timeline-content::before { + top: 24px; + left: 100%; + border-color: transparent; + border-left-color: white; + } + .center-orientation .vertical-timeline-content .btn { + float: left; + } + .center-orientation .vertical-timeline-content .vertical-date { + position: absolute; + width: 100%; + left: 122%; + top: 2px; + font-size: 14px; + } + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content { + float: right; + } + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before { + top: 24px; + left: auto; + right: 100%; + border-color: transparent; + border-right-color: white; + } + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn { + float: right; + } + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date { + left: auto; + right: 122%; + text-align: right; + } + .center-orientation .cssanimations .vertical-timeline-content.is-hidden { + visibility: hidden; + } +} + +.sidebard-panel { + width: 220px; + background: #ebebed; + padding: 10px 20px; + position: absolute; + right: 0; +} + +.sidebard-panel .feed-element img.img-circle { + width: 32px; + height: 32px; +} + +.sidebard-panel .feed-element, +.media-body, +.sidebard-panel p { + font-size: 12px; +} + +.sidebard-panel .feed-element { + margin-top: 20px; + padding-bottom: 0; +} + +.sidebard-panel .list-group { + margin-bottom: 10px; +} + +.sidebard-panel .list-group .list-group-item { + padding: 5px 0; + font-size: 12px; + border: 0; +} + +.sidebar-content .wrapper, +.wrapper.sidebar-content { + padding-right: 240px !important; +} + +#right-sidebar { + background-color: #fff; + border-left: 1px solid #e7eaec; + border-top: 1px solid #e7eaec; + overflow: hidden; + position: fixed; + top: 60px; + width: 260px !important; + z-index: 1009; + bottom: 0; + right: -260px; +} + +#right-sidebar.sidebar-open { + right: 0; +} + +#right-sidebar.sidebar-open.sidebar-top { + top: 0; + border-top: none; +} + +.sidebar-container ul.nav-tabs { + border: none; +} + +.sidebar-container ul.nav-tabs.navs-4 li { + width: 25%; +} + +.sidebar-container ul.nav-tabs.navs-3 li { + width: 33.3333%; +} + +.sidebar-container ul.nav-tabs.navs-2 li { + width: 50%; +} + +.sidebar-container ul.nav-tabs li { + border: none; +} + +.sidebar-container ul.nav-tabs li a { + border: none; + padding: 12px 10px; + margin: 0; + border-radius: 0; + background: #2f4050; + color: #fff; + text-align: center; + border-right: 1px solid #334556; +} + +.sidebar-container ul.nav-tabs li.active a { + border: none; + background: #f9f9f9; + color: #676a6c; + font-weight: bold; +} + +.sidebar-container .nav-tabs > li.active > a:hover, +.sidebar-container .nav-tabs > li.active > a:focus { + border: none; +} + +.sidebar-container ul.sidebar-list { + margin: 0; + padding: 0; +} + +.sidebar-container ul.sidebar-list li { + border-bottom: 1px solid #e7eaec; + padding: 15px 20px; + list-style: none; + font-size: 12px; +} + +.sidebar-container .sidebar-message:nth-child(2n+2) { + background: #f9f9f9; +} + +.sidebar-container ul.sidebar-list li a { + text-decoration: none; + color: inherit; +} + +.sidebar-container .sidebar-content { + padding: 15px 20px; + font-size: 12px; +} + +.sidebar-container .sidebar-title { + background: #f9f9f9; + padding: 20px; + border-bottom: 1px solid #e7eaec; +} + +.sidebar-container .sidebar-title h3 { + margin-bottom: 3px; + padding-left: 2px; +} + +.sidebar-container .tab-content h4 { + margin-bottom: 5px; +} + +.sidebar-container .sidebar-message > a > .pull-left { + margin-right: 10px; +} + +.sidebar-container .sidebar-message > a { + text-decoration: none; + color: inherit; +} + +.sidebar-container .sidebar-message { + padding: 15px 20px; +} + +.sidebar-container .sidebar-message .message-avatar { + height: 38px; + width: 38px; + border-radius: 50%; +} + +.sidebar-container .setings-item { + padding: 15px 20px; + border-bottom: 1px solid #e7eaec; +} + +body { + font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + color: #676a6c; + overflow-x: hidden; +} + +html, +body { + height: 100%; +} + +body.full-height-layout #wrapper, +body.full-height-layout #page-wrapper { + height: 100%; +} + +#page-wrapper { + min-height: auto; +} + +body.boxed-layout { + background: url('patterns/shattered.png'); +} + +body.boxed-layout #wrapper { + background-color: #2f4050; + max-width: 1200px; + margin: 0 auto; +} + +.top-navigation.boxed-layout #wrapper, +.boxed-layout #wrapper.top-navigation { + max-width: 1300px !important; +} + +.block { + display: block; +} + +.clear { + display: block; + overflow: hidden; +} + +a { + cursor: pointer; +} + +a:hover, +a:focus { + text-decoration: none; +} + +.border-bottom { + border-bottom: 1px solid #e7eaec !important; +} + +.font-bold { + font-weight: 600; +} + +.font-noraml { + font-weight: 400; +} + +.text-uppercase { + text-transform: uppercase; +} + +.b-r { + border-right: 1px solid #e7eaec; +} + +.hr-line-dashed { + border-top: 1px dashed #e7eaec; + color: #ffffff; + background-color: #ffffff; + height: 1px; + margin: 20px 0; +} + +.hr-line-solid { + border-bottom: 1px solid #e7eaec; + background-color: rgba(0, 0, 0, 0); + border-style: solid !important; + margin-top: 15px; + margin-bottom: 15px; +} + +video { + width: 100% !important; + height: auto !important; +} + + +/* GALLERY */ + +.gallery > .row > div { + margin-bottom: 15px; +} + +.fancybox img { + margin-bottom: 5px; + /* Only for demo */ + width: 24%; +} + + +/* Summernote text editor */ + +.note-editor { + height: auto!important; + min-height: 100px; + border: solid 1px #e5e6e7; +} + + +/* MODAL */ + +.modal-content { + background-clip: padding-box; + background-color: #FFFFFF; + border: 1px solid rgba(0, 0, 0, 0); + border-radius: 4px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + outline: 0 none; +} + +.modal-dialog { + z-index: 1200; +} + +.modal-body { + padding: 20px 30px 30px 30px; +} + +.inmodal .modal-body { + background: #f8fafb; +} + +.inmodal .modal-header { + padding: 30px 15px; + text-align: center; +} + +.animated.modal.fade .modal-dialog { + -webkit-transform: none; + -ms-transform: none; + transform: none; +} + +.inmodal .modal-title { + font-size: 26px; +} + +.inmodal .modal-icon { + font-size: 84px; + color: #e2e3e3; +} + +.modal-footer { + margin-top: 0; +} + + +/* WRAPPERS */ + +#wrapper { + width: 100%; + overflow-x: hidden; + background-color: #2f4050; +} + +.wrapper { + padding: 0 20px; +} + +.wrapper-content { + padding: 20px; +} + +#page-wrapper { + padding: 0 15px; + position: inherit; + margin: 0 0 0 220px; +} + +.title-action { + text-align: right; + padding-top: 30px; +} + +.ibox-content h1, +.ibox-content h2, +.ibox-content h3, +.ibox-content h4, +.ibox-content h5, +.ibox-title h1, +.ibox-title h2, +.ibox-title h3, +.ibox-title h4, +.ibox-title h5 { + margin-top: 5px; +} + +ul.unstyled, +ol.unstyled { + list-style: none outside none; + margin-left: 0; +} + +.big-icon { + font-size: 160px; + color: #e5e6e7; +} + + +/* FOOTER */ + +.footer { + background: none repeat scroll 0 0 white; + border-top: 1px solid #e7eaec; + overflow: hidden; + padding: 10px 20px; + margin: 0 -15px; + height: 36px; +} + +.footer.fixed_full { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + padding: 10px 20px; + background: white; + border-top: 1px solid #e7eaec; +} + +.footer.fixed { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + padding: 10px 20px; + background: white; + border-top: 1px solid #e7eaec; + margin-left: 220px; +} + +body.mini-navbar .footer.fixed, +body.body-small.mini-navbar .footer.fixed { + margin: 0 0 0 70px; +} + +body.mini-navbar.canvas-menu .footer.fixed, +body.canvas-menu .footer.fixed { + margin: 0 !important; +} + +body.fixed-sidebar.body-small.mini-navbar .footer.fixed { + margin: 0 0 0 220px; +} + +body.body-small .footer.fixed { + margin-left: 0px; +} + + +/* PANELS */ + +.page-heading { + border-top: 0; + padding: 0px 20px 20px; +} + +.panel-heading h1, +.panel-heading h2 { + margin-bottom: 5px; +} + + +/*CONTENTTABS*/ + +.content-tabs { + position: relative; + height: 42px; + background: #fafafa; + line-height: 40px; +} + +.content-tabs .roll-nav, +.page-tabs-list { + position: absolute; + width: 40px; + height: 40px; + text-align: center; + color: #999; + z-index: 2; + top: 0; +} + +.content-tabs .roll-left { + left: 0; + border-right: solid 1px #eee; +} + +.content-tabs .roll-right { + right: 0; + border-left: solid 1px #eee; +} + +.content-tabs button { + background: #fff; + border: 0; + height: 40px; + width: 40px; + outline: none; +} + +.content-tabs button:hover { + background: #fafafa; +} + +nav.page-tabs { + margin-left: 40px; + width: 100000px; + height: 40px; + overflow: hidden; +} + +nav.page-tabs .page-tabs-content { + float: left; +} + +.page-tabs a { + display: block; + float: left; + border-right: solid 1px #eee; + padding: 0 15px; +} + +.page-tabs a i:hover { + color: #c00; +} + +.page-tabs a:hover, +.content-tabs .roll-nav:hover { + color: #777; + background: #f2f2f2; + cursor: pointer; +} + +.roll-right.J_tabRight { + right: 140px; +} + +.roll-right.btn-group { + right: 60px; + width: 80px; + padding: 0; +} + +.roll-right.btn-group button { + width: 80px; +} + +.roll-right.J_tabExit { + background: #fff; + height: 40px; + width: 60px; + outline: none; +} + +.dropdown-menu-right { + left: auto; +} + +#content-main { + height: calc(100% - 42px); + overflow: hidden; +} + +.fixed-nav #content-main { + height: calc(100% - 80px); + overflow: hidden; +} + + +/* TABLES */ + +.table-bordered { + border: 1px solid #EBEBEB; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + background-color: #F5F5F6; + border-bottom-width: 1px; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #e7e7e7; +} + +.table > thead > tr > th { + border-bottom: 1px solid #DDDDDD; + vertical-align: bottom; +} + +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + border-top: 1px solid #e7eaec; + line-height: 1.42857; + padding: 8px; + vertical-align: middle; +} + + +/* PANELS */ + +.panel.blank-panel { + background: none; + margin: 0; +} + +.blank-panel .panel-heading { + padding-bottom: 0; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + background: none; + border-color: #dddddd #dddddd rgba(0, 0, 0, 0); + border-bottom: #f3f3f4; + -webkit-border-image: none; + -o-border-image: none; + border-image: none; + border-style: solid; + border-width: 1px; + color: #555555; + cursor: default; +} + +.nav.nav-tabs li { + background: none; + border: none; +} + +.nav-tabs > li > a { + color: #A7B1C2; + font-weight: 600; + padding: 10px 20px 10px 25px; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + background-color: #e6e6e6; + color: #676a6c; +} + +.ui-tab .tab-content { + padding: 20px 0px; +} + + +/* GLOBAL */ + +.no-padding { + padding: 0 !important; +} + +.no-borders { + border: none !important; +} + +.no-margins { + margin: 0 !important; +} + +.no-top-border { + border-top: 0 !important; +} + +.ibox-content.text-box { + padding-bottom: 0px; + padding-top: 15px; +} + +.border-left-right { + border-left: 1px solid #e7eaec; + border-right: 1px solid #e7eaec; + border-top: none; + border-bottom: none; +} + +.border-left { + border-left: 1px solid #e7eaec; + border-right: none; + border-top: none; + border-bottom: none; +} + +.border-right { + border-left: none; + border-right: 1px solid #e7eaec; + border-top: none; + border-bottom: none; +} + +.full-width { + width: 100% !important; +} + +.link-block { + font-size: 12px; + padding: 10px; +} + +.nav.navbar-top-links .link-block a { + font-size: 12px; +} + +.link-block a { + font-size: 10px; + color: inherit; +} + +body.mini-navbar .branding { + display: none; +} + +img.circle-border { + border: 6px solid #FFFFFF; + border-radius: 50%; +} + +.branding { + float: left; + color: #FFFFFF; + font-size: 18px; + font-weight: 600; + padding: 17px 20px; + text-align: center; + background-color: #1ab394; +} + +.login-panel { + margin-top: 25%; +} + +.page-header { + padding: 20px 0 9px; + margin: 0 0 20px; + border-bottom: 1px solid #eeeeee; +} + +.fontawesome-icon-list { + margin-top: 22px; +} + +.fontawesome-icon-list .fa-hover a { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + color: #222222; + line-height: 32px; + height: 32px; + padding-left: 10px; + border-radius: 4px; +} + +.fontawesome-icon-list .fa-hover a .fa { + width: 32px; + font-size: 14px; + display: inline-block; + text-align: right; + margin-right: 10px; +} + +.fontawesome-icon-list .fa-hover a:hover { + background-color: #1d9d74; + color: #ffffff; + text-decoration: none; +} + +.fontawesome-icon-list .fa-hover a:hover .fa { + font-size: 30px; + vertical-align: -6px; +} + +.fontawesome-icon-list .fa-hover a:hover .text-muted { + color: #bbe2d5; +} + +.feature-list .col-md-4 { + margin-bottom: 22px; +} + +.feature-list h4 .fa:before { + vertical-align: -10%; + font-size: 28px; + display: inline-block; + width: 1.07142857em; + text-align: center; + margin-right: 5px; +} + +.ui-draggable .ibox-title { + cursor: move; +} + +.breadcrumb { + background-color: #ffffff; + padding: 0; + margin-bottom: 0; +} + +.breadcrumb > li a { + color: inherit; +} + +.breadcrumb > .active { + color: inherit; +} + +code { + background-color: #F9F2F4; + border-radius: 4px; + color: #ca4440; + font-size: 90%; + padding: 2px 4px; + white-space: nowrap; +} + +.ibox { + clear: both; + margin-bottom: 25px; + margin-top: 0; + padding: 0; +} + +.ibox.collapsed .ibox-content { + display: none; +} + +.ibox.collapsed .fa.fa-chevron-up:before { + content: "\f078"; +} + +.ibox.collapsed .fa.fa-chevron-down:before { + content: "\f077"; +} + +.ibox:after, +.ibox:before { + display: table; +} + +.ibox-title { + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + background-color: #ffffff; + border-color: #e7eaec; + -webkit-border-image: none; + -o-border-image: none; + border-image: none; + border-style: solid solid none; + border-width: 4px 0px 0; + color: inherit; + margin-bottom: 0; + padding: 14px 15px 7px; + min-height: 48px; +} + +.ibox-content { + background-color: #ffffff; + color: inherit; + padding: 15px 20px 20px 20px; + border-color: #e7eaec; + -webkit-border-image: none; + -o-border-image: none; + border-image: none; + border-style: solid solid none; + border-width: 1px 0px; +} + +table.table-mail tr td { + padding: 12px; +} + +.table-mail .check-mail { + padding-left: 20px; +} + +.table-mail .mail-date { + padding-right: 20px; +} + +.star-mail, +.check-mail { + width: 40px; +} + +.unread td a, +.unread td { + font-weight: 600; + color: inherit; +} + +.read td a, +.read td { + font-weight: normal; + color: inherit; +} + +.unread td { + background-color: #f9f8f8; +} + +.ibox-content { + clear: both; +} + +.ibox-heading { + background-color: #f3f6fb; + border-bottom: none; +} + +.ibox-heading h3 { + font-weight: 200; + font-size: 24px; +} + +.ibox-title h5 { + display: inline-block; + font-size: 14px; + margin: 0 0 7px; + padding: 0; + text-overflow: ellipsis; + float: left; +} + +.ibox-title .label { + float: left; + margin-left: 4px; +} + +.ibox-tools { + display: inline-block; + float: right; + margin-top: 0; + position: relative; + padding: 0; +} + +.ibox-tools a { + cursor: pointer; + margin-left: 5px; + color: #c4c4c4; +} + +.ibox-tools a.btn-primary { + color: #fff; +} + +.ibox-tools .dropdown-menu > li > a { + padding: 4px 10px; + font-size: 12px; +} + +.ibox .open > .dropdown-menu { + left: auto; + right: 0; +} + + +/* BACKGROUNDS */ + +.gray-bg { + background-color: #f3f3f4; +} + +.white-bg { + background-color: #ffffff; +} + +.navy-bg { + background-color: #1ab394; + color: #ffffff; +} + +.blue-bg { + background-color: #1c84c6; + color: #ffffff; +} + +.lazur-bg { + background-color: #23c6c8; + color: #ffffff; +} + +.yellow-bg { + background-color: #f8ac59; + color: #ffffff; +} + +.red-bg { + background-color: #ed5565; + color: #ffffff; +} + +.black-bg { + background-color: #262626; +} + +.panel-primary { + border-color: #1ab394; +} + +.panel-primary > .panel-heading { + background-color: #1ab394; + border-color: #1ab394; +} + +.panel-success { + border-color: #1c84c6; +} + +.panel-success > .panel-heading { + background-color: #1c84c6; + border-color: #1c84c6; + color: #ffffff; +} + +.panel-info { + border-color: #23c6c8; +} + +.panel-info > .panel-heading { + background-color: #23c6c8; + border-color: #23c6c8; + color: #ffffff; +} + +.panel-warning { + border-color: #f8ac59; +} + +.panel-warning > .panel-heading { + background-color: #f8ac59; + border-color: #f8ac59; + color: #ffffff; +} + +.panel-danger { + border-color: #ed5565; +} + +.panel-danger > .panel-heading { + background-color: #ed5565; + border-color: #ed5565; + color: #ffffff; +} + +.progress-bar { + background-color: #1ab394; +} + +.progress-small, +.progress-small .progress-bar { + height: 10px; +} + +.progress-small, +.progress-mini { + margin-top: 5px; +} + +.progress-mini, +.progress-mini .progress-bar { + height: 5px; + margin-bottom: 0px; +} + +.progress-bar-navy-light { + background-color: #3dc7ab; +} + +.progress-bar-success { + background-color: #1c84c6; +} + +.progress-bar-info { + background-color: #23c6c8; +} + +.progress-bar-warning { + background-color: #f8ac59; +} + +.progress-bar-danger { + background-color: #ed5565; +} + +.panel-title { + font-size: inherit; +} + +.jumbotron { + border-radius: 6px; + padding: 40px; +} + +.jumbotron h1 { + margin-top: 0; +} + + +/* COLORS */ + +.text-navy { + color: #1ab394; +} + +.text-primary { + color: inherit; +} + +.text-success { + color: #1c84c6; +} + +.text-info { + color: #23c6c8; +} + +.text-warning { + color: #f8ac59; +} + +.text-danger { + color: #ed5565; +} + +.text-muted { + color: #888888; +} + +.simple_tag { + background-color: #f3f3f4; + border: 1px solid #e7eaec; + border-radius: 2px; + color: inherit; + font-size: 10px; + margin-right: 5px; + margin-top: 5px; + padding: 5px 12px; + display: inline-block; +} + +.img-shadow { + box-shadow: 0px 0px 3px 0px #919191; +} + + +/* For handle diferent bg color in AngularJS version */ + +.dashboards\.dashboard_2 nav.navbar, +.dashboards\.dashboard_3 nav.navbar, +.mailbox\.inbox nav.navbar, +.mailbox\.email_view nav.navbar, +.mailbox\.email_compose nav.navbar, +.dashboards\.dashboard_4_1 nav.navbar { + background: #fff; +} + + +/* For handle diferent bg color in MVC version */ + +.Dashboard_2 .navbar.navbar-static-top, +.Dashboard_3 .navbar.navbar-static-top, +.Dashboard_4_1 .navbar.navbar-static-top, +.ComposeEmail .navbar.navbar-static-top, +.EmailView .navbar.navbar-static-top, +.Inbox .navbar.navbar-static-top { + background: #fff; +} + +a.close-canvas-menu { + position: absolute; + top: 10px; + right: 15px; + z-index: 1011; + color: #a7b1c2; +} + +a.close-canvas-menu:hover { + color: #fff; +} + + +/* FULL HEIGHT */ + +.full-height { + height: 100%; +} + +.fh-breadcrumb { + height: calc(100% - 196px); + margin: 0 -15px; + position: relative; +} + +.fh-no-breadcrumb { + height: calc(100% - 99px); + margin: 0 -15px; + position: relative; +} + +.fh-column { + background: #fff; + height: 100%; + width: 240px; + float: left; +} + +.modal-backdrop { + z-index: 2040 !important; +} + +.modal { + z-index: 2050 !important; +} + +.spiner-example { + height: 200px; + padding-top: 70px; +} + + +/* MARGINS & PADDINGS */ + +.p-xxs { + padding: 5px; +} + +.p-xs { + padding: 10px; +} + +.p-sm { + padding: 15px; +} + +.p-m { + padding: 20px; +} + +.p-md { + padding: 25px; +} + +.p-lg { + padding: 30px; +} + +.p-xl { + padding: 40px; +} + +.m-xxs { + margin: 2px 4px; +} + +.m-xs { + margin: 5px; +} + +.m-sm { + margin: 10px; +} + +.m { + margin: 15px; +} + +.m-md { + margin: 20px; +} + +.m-lg { + margin: 30px; +} + +.m-xl { + margin: 50px; +} + +.m-n { + margin: 0 !important; +} + +.m-l-none { + margin-left: 0; +} + +.m-l-xs { + margin-left: 5px; +} + +.m-l-sm { + margin-left: 10px; +} + +.m-l { + margin-left: 15px; +} + +.m-l-md { + margin-left: 20px; +} + +.m-l-lg { + margin-left: 30px; +} + +.m-l-xl { + margin-left: 40px; +} + +.m-l-n-xxs { + margin-left: -1px; +} + +.m-l-n-xs { + margin-left: -5px; +} + +.m-l-n-sm { + margin-left: -10px; +} + +.m-l-n { + margin-left: -15px; +} + +.m-l-n-md { + margin-left: -20px; +} + +.m-l-n-lg { + margin-left: -30px; +} + +.m-l-n-xl { + margin-left: -40px; +} + +.m-t-none { + margin-top: 0; +} + +.m-t-xxs { + margin-top: 1px; +} + +.m-t-xs { + margin-top: 5px; +} + +.m-t-sm { + margin-top: 10px; +} + +.m-t { + margin-top: 15px; +} + +.m-t-md { + margin-top: 20px; +} + +.m-t-lg { + margin-top: 30px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-n-xxs { + margin-top: -1px; +} + +.m-t-n-xs { + margin-top: -5px; +} + +.m-t-n-sm { + margin-top: -10px; +} + +.m-t-n { + margin-top: -15px; +} + +.m-t-n-md { + margin-top: -20px; +} + +.m-t-n-lg { + margin-top: -30px; +} + +.m-t-n-xl { + margin-top: -40px; +} + +.m-r-none { + margin-right: 0; +} + +.m-r-xxs { + margin-right: 1px; +} + +.m-r-xs { + margin-right: 5px; +} + +.m-r-sm { + margin-right: 10px; +} + +.m-r { + margin-right: 15px; +} + +.m-r-md { + margin-right: 20px; +} + +.m-r-lg { + margin-right: 30px; +} + +.m-r-xl { + margin-right: 40px; +} + +.m-r-n-xxs { + margin-right: -1px; +} + +.m-r-n-xs { + margin-right: -5px; +} + +.m-r-n-sm { + margin-right: -10px; +} + +.m-r-n { + margin-right: -15px; +} + +.m-r-n-md { + margin-right: -20px; +} + +.m-r-n-lg { + margin-right: -30px; +} + +.m-r-n-xl { + margin-right: -40px; +} + +.m-b-none { + margin-bottom: 0; +} + +.m-b-xxs { + margin-bottom: 1px; +} + +.m-b-xs { + margin-bottom: 5px; +} + +.m-b-sm { + margin-bottom: 10px; +} + +.m-b { + margin-bottom: 15px; +} + +.m-b-md { + margin-bottom: 20px; +} + +.m-b-lg { + margin-bottom: 30px; +} + +.m-b-xl { + margin-bottom: 40px; +} + +.m-b-n-xxs { + margin-bottom: -1px; +} + +.m-b-n-xs { + margin-bottom: -5px; +} + +.m-b-n-sm { + margin-bottom: -10px; +} + +.m-b-n { + margin-bottom: -15px; +} + +.m-b-n-md { + margin-bottom: -20px; +} + +.m-b-n-lg { + margin-bottom: -30px; +} + +.m-b-n-xl { + margin-bottom: -40px; +} + +.space-15 { + margin: 15px 0; +} + +.space-20 { + margin: 20px 0; +} + +.space-25 { + margin: 25px 0; +} + +.space-30 { + margin: 30px 0; +} + +body.modal-open { + padding-right: inherit !important; +} + + +/* SEARCH PAGE */ + +.search-form { + margin-top: 10px; +} + +.search-result h3 { + margin-bottom: 0; + color: #1E0FBE; +} + +.search-result .search-link { + color: #006621; +} + +.search-result p { + font-size: 12px; + margin-top: 5px; +} + + +/* CONTACTS */ + +.contact-box { + background-color: #ffffff; + border: 1px solid #e7eaec; + padding: 20px; + margin-bottom: 20px; +} + +.contact-box a { + color: inherit; +} + + +/* INVOICE */ + +.invoice-table tbody > tr > td:last-child, +.invoice-table tbody > tr > td:nth-child(4), +.invoice-table tbody > tr > td:nth-child(3), +.invoice-table tbody > tr > td:nth-child(2) { + text-align: right; +} + +.invoice-table thead > tr > th:last-child, +.invoice-table thead > tr > th:nth-child(4), +.invoice-table thead > tr > th:nth-child(3), +.invoice-table thead > tr > th:nth-child(2) { + text-align: right; +} + +.invoice-total > tbody > tr > td:first-child { + text-align: right; +} + +.invoice-total > tbody > tr > td { + border: 0 none; +} + +.invoice-total > tbody > tr > td:last-child { + border-bottom: 1px solid #DDDDDD; + text-align: right; + width: 15%; +} + + +/* ERROR & LOGIN & LOCKSCREEN*/ + +.middle-box { + max-width: 400px; + z-index: 100; + margin: 0 auto; + padding-top: 40px; +} + +.lockscreen.middle-box { + width: 200px; + padding-top: 110px; +} + +.loginscreen.middle-box { + width: 300px; +} + +.loginColumns { + max-width: 800px; + margin: 0 auto; + padding: 100px 20px 20px 20px; +} + +.passwordBox { + max-width: 460px; + margin: 0 auto; + padding: 100px 20px 20px 20px; +} + +.logo-name { + color: #e6e6e6; + font-size: 180px; + font-weight: 800; + letter-spacing: -10px; + margin-bottom: 0px; +} + +.middle-box h1 { + font-size: 170px; +} + +.wrapper .middle-box { + margin-top: 140px; +} + +.lock-word { + z-index: 10; + position: absolute; + top: 110px; + left: 50%; + margin-left: -470px; +} + +.lock-word span { + font-size: 100px; + font-weight: 600; + color: #e9e9e9; + display: inline-block; +} + +.lock-word .first-word { + margin-right: 160px; +} + + +/* DASBOARD */ + +.dashboard-header { + border-top: 0; + padding: 20px 20px 20px 20px; +} + +.dashboard-header h2 { + margin-top: 10px; + font-size: 26px; +} + +.fist-item { + border-top: none !important; +} + +.statistic-box { + margin-top: 40px; +} + +.dashboard-header .list-group-item span.label { + margin-right: 10px; +} + +.list-group.clear-list .list-group-item { + border-top: 1px solid #e7eaec; + border-bottom: 0; + border-right: 0; + border-left: 0; + padding: 10px 0; +} + +ul.clear-list:first-child { + border-top: none !important; +} + + +/* Intimeline */ + +.timeline-item .date i { + position: absolute; + top: 0; + right: 0; + padding: 5px; + width: 30px; + text-align: center; + border-top: 1px solid #e7eaec; + border-bottom: 1px solid #e7eaec; + border-left: 1px solid #e7eaec; + background: #f8f8f8; +} + +.timeline-item .date { + text-align: right; + width: 110px; + position: relative; + padding-top: 30px; +} + +.timeline-item .content { + border-left: 1px solid #e7eaec; + border-top: 1px solid #e7eaec; + padding-top: 10px; + min-height: 100px; +} + +.timeline-item .content:hover { + background: #f6f6f6; +} + + +/* PIN BOARD */ + +ul.notes li, +ul.tag-list li { + list-style: none; +} + +ul.notes li h4 { + margin-top: 20px; + font-size: 16px; +} + +ul.notes li div { + text-decoration: none; + color: #000; + background: #ffc; + display: block; + height: 140px; + width: 140px; + padding: 1em; + position: relative; +} + +ul.notes li div small { + position: absolute; + top: 5px; + right: 5px; + font-size: 10px; +} + +ul.notes li div a { + position: absolute; + right: 10px; + bottom: 10px; + color: inherit; +} + +ul.notes li { + margin: 10px 40px 50px 0px; + float: left; +} + +ul.notes li div p { + font-size: 12px; +} + +ul.notes li div { + text-decoration: none; + color: #000; + background: #ffc; + display: block; + height: 140px; + width: 140px; + padding: 1em; + /* Firefox */ + /* Safari+Chrome */ + /* Opera */ + box-shadow: 5px 5px 2px rgba(33, 33, 33, 0.7); +} + +ul.notes li div { + -webkit-transform: rotate(-6deg); + -o-transform: rotate(-6deg); + -moz-transform: rotate(-6deg); +} + +ul.notes li:nth-child(even) div { + -o-transform: rotate(4deg); + -webkit-transform: rotate(4deg); + -moz-transform: rotate(4deg); + position: relative; + top: 5px; +} + +ul.notes li:nth-child(3n) div { + -o-transform: rotate(-3deg); + -webkit-transform: rotate(-3deg); + -moz-transform: rotate(-3deg); + position: relative; + top: -5px; +} + +ul.notes li:nth-child(5n) div { + -o-transform: rotate(5deg); + -webkit-transform: rotate(5deg); + -moz-transform: rotate(5deg); + position: relative; + top: -10px; +} + +ul.notes li div:hover, +ul.notes li div:focus { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -o-transform: scale(1.1); + position: relative; + z-index: 5; +} + +ul.notes li div { + text-decoration: none; + color: #000; + background: #ffc; + display: block; + height: 210px; + width: 210px; + padding: 1em; + box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7); + -webkit-transition: -webkit-transform 0.15s linear; +} + + +/* FILE MANAGER */ + +.file-box { + float: left; + width: 220px; +} + +.file-manager h5 { + text-transform: uppercase; +} + +.file-manager { + list-style: none outside none; + margin: 0; + padding: 0; +} + +.folder-list li a { + color: #666666; + display: block; + padding: 5px 0; +} + +.folder-list li { + border-bottom: 1px solid #e7eaec; + display: block; +} + +.folder-list li i { + margin-right: 8px; + color: #3d4d5d; +} + +.category-list li a { + color: #666666; + display: block; + padding: 5px 0; +} + +.category-list li { + display: block; +} + +.category-list li i { + margin-right: 8px; + color: #3d4d5d; +} + +.category-list li a .text-navy { + color: #1ab394; +} + +.category-list li a .text-primary { + color: #1c84c6; +} + +.category-list li a .text-info { + color: #23c6c8; +} + +.category-list li a .text-danger { + color: #EF5352; +} + +.category-list li a .text-warning { + color: #F8AC59; +} + +.file-manager h5.tag-title { + margin-top: 20px; +} + +.tag-list li { + float: left; +} + +.tag-list li a { + font-size: 10px; + background-color: #f3f3f4; + padding: 5px 12px; + color: inherit; + border-radius: 2px; + border: 1px solid #e7eaec; + margin-right: 5px; + margin-top: 5px; + display: block; +} + +.file { + border: 1px solid #e7eaec; + padding: 0; + background-color: #ffffff; + position: relative; + margin-bottom: 20px; + margin-right: 20px; +} + +.file-manager .hr-line-dashed { + margin: 15px 0; +} + +.file .icon, +.file .image { + height: 100px; + overflow: hidden; +} + +.file .icon { + padding: 15px 10px; + text-align: center; +} + +.file-control { + color: inherit; + font-size: 11px; + margin-right: 10px; +} + +.file-control.active { + text-decoration: underline; +} + +.file .icon i { + font-size: 70px; + color: #dadada; +} + +.file .file-name { + padding: 10px; + background-color: #f8f8f8; + border-top: 1px solid #e7eaec; +} + +.file-name small { + color: #676a6c; +} + +.corner { + position: absolute; + display: inline-block; + width: 0; + height: 0; + line-height: 0; + border: 0.6em solid transparent; + border-right: 0.6em solid #f1f1f1; + border-bottom: 0.6em solid #f1f1f1; + right: 0em; + bottom: 0em; +} + +a.compose-mail { + padding: 8px 10px; +} + +.mail-search { + max-width: 300px; +} + + +/* PROFILE */ + +.profile-content { + border-top: none !important; +} + +.feed-activity-list .feed-element { + border-bottom: 1px solid #e7eaec; +} + +.feed-element:first-child { + margin-top: 0; +} + +.feed-element { + padding-bottom: 15px; +} + +.feed-element, +.feed-element .media { + margin-top: 15px; +} + +.feed-element, +.media-body { + overflow: hidden; +} + +.feed-element > .pull-left { + margin-right: 10px; +} + +.feed-element img.img-circle, +.dropdown-messages-box img.img-circle { + width: 38px; + height: 38px; +} + +.feed-element .well { + border: 1px solid #e7eaec; + box-shadow: none; + margin-top: 10px; + margin-bottom: 5px; + padding: 10px 20px; + font-size: 11px; + line-height: 16px; +} + +.feed-element .actions { + margin-top: 10px; +} + +.feed-element .photos { + margin: 10px 0; +} + +.feed-photo { + max-height: 180px; + border-radius: 4px; + overflow: hidden; + margin-right: 10px; + margin-bottom: 10px; +} + + +/* MAILBOX */ + +.mail-box { + background-color: #ffffff; + border: 1px solid #e7eaec; + border-top: 0; + padding: 0px; + margin-bottom: 20px; +} + +.mail-box-header { + background-color: #ffffff; + border: 1px solid #e7eaec; + border-bottom: 0; + padding: 30px 20px 20px 20px; +} + +.mail-box-header h2 { + margin-top: 0px; +} + +.mailbox-content .tag-list li a { + background: #ffffff; +} + +.mail-body { + border-top: 1px solid #e7eaec; + padding: 20px; +} + +.mail-text { + border-top: 1px solid #e7eaec; +} + +.mail-text .note-toolbar { + padding: 10px 15px; +} + +.mail-body .form-group { + margin-bottom: 5px; +} + +.mail-text .note-editor .note-toolbar { + background-color: #F9F8F8; +} + +.mail-attachment { + border-top: 1px solid #e7eaec; + padding: 20px; + font-size: 12px; +} + +.mailbox-content { + background: none; + border: none; + padding: 10px; +} + +.mail-ontact { + width: 23%; +} + + +/* PROJECTS */ + +.project-people, +.project-actions { + text-align: right; + vertical-align: middle; +} + +dd.project-people { + text-align: left; + margin-top: 5px; +} + +.project-people img { + width: 32px; + height: 32px; +} + +.project-title a { + font-size: 14px; + color: #676a6c; + font-weight: 600; +} + +.project-list table tr td { + border-top: none; + border-bottom: 1px solid #e7eaec; + padding: 15px 10px; + vertical-align: middle; +} + +.project-manager .tag-list li a { + font-size: 10px; + background-color: white; + padding: 5px 12px; + color: inherit; + border-radius: 2px; + border: 1px solid #e7eaec; + margin-right: 5px; + margin-top: 5px; + display: block; +} + +.project-files li a { + font-size: 11px; + color: #676a6c; + margin-left: 10px; + line-height: 22px; +} + + +/* FAQ */ + +.faq-item { + padding: 20px; + margin-bottom: 2px; + background: #fff; +} + +.faq-question { + font-size: 18px; + font-weight: 600; + color: #1ab394; + display: block; +} + +.faq-question:hover { + color: #179d82; +} + +.faq-answer { + margin-top: 10px; + background: #f3f3f4; + border: 1px solid #e7eaec; + border-radius: 3px; + padding: 15px; +} + +.faq-item .tag-item { + background: #f3f3f4; + padding: 2px 6px; + font-size: 10px; + text-transform: uppercase; +} + + +/* Chat view */ + +.message-input { + height: 90px !important; +} + +.chat-avatar { + white: 36px; + height: 36px; + float: left; + margin-right: 10px; +} + +.chat-user-name { + padding: 10px; +} + +.chat-user { + padding: 8px 10px; + border-bottom: 1px solid #e7eaec; +} + +.chat-user a { + color: inherit; +} + +.chat-view { + z-index: 20012; +} + +.chat-users, +.chat-statistic { + margin-left: -30px; +} + +@media (max-width: 992px) { + .chat-users, + .chat-statistic { + margin-left: 0px; + } +} + +.chat-view .ibox-content { + padding: 0; +} + +.chat-message { + padding: 10px 20px; +} + +.message-avatar { + height: 48px; + width: 48px; + border: 1px solid #e7eaec; + border-radius: 4px; + margin-top: 1px; +} + +.chat-discussion .chat-message:nth-child(2n+1) .message-avatar { + float: left; + margin-right: 10px; +} + +.chat-discussion .chat-message:nth-child(2n) .message-avatar { + float: right; + margin-left: 10px; +} + +.message { + background-color: #fff; + border: 1px solid #e7eaec; + text-align: left; + display: block; + padding: 10px 20px; + position: relative; + border-radius: 4px; +} + +.chat-discussion .chat-message:nth-child(2n+1) .message-date { + float: right; +} + +.chat-discussion .chat-message:nth-child(2n) .message-date { + float: left; +} + +.chat-discussion .chat-message:nth-child(2n+1) .message { + text-align: left; + margin-left: 55px; +} + +.chat-discussion .chat-message:nth-child(2n) .message { + text-align: right; + margin-right: 55px; +} + +.message-date { + font-size: 10px; + color: #888888; +} + +.message-content { + display: block; +} + +.chat-discussion { + background: #eee; + padding: 15px; + height: 400px; + overflow-y: auto; +} + +.chat-users { + overflow-y: auto; + height: 400px; +} + +.chat-message-form .form-group { + margin-bottom: 0; +} + + +/* jsTree */ + +.jstree-open > .jstree-anchor > .fa-folder:before { + content: "\f07c"; +} + +.jstree-default .jstree-icon.none { + width: 0; +} + + +/* CLIENTS */ + +.clients-list { + margin-top: 20px; +} + +.clients-list .tab-pane { + position: relative; + height: 600px; +} + +.client-detail { + position: relative; + height: 620px; +} + +.clients-list table tr td { + height: 46px; + vertical-align: middle; + border: none; +} + +.client-link { + font-weight: 600; + color: inherit; +} + +.client-link:hover { + color: inherit; +} + +.client-avatar { + width: 42px; +} + +.client-avatar img { + width: 28px; + height: 28px; + border-radius: 50%; +} + +.contact-type { + width: 20px; + color: #c1c3c4; +} + +.client-status { + text-align: left; +} + +.client-detail .vertical-timeline-content p { + margin: 0; +} + +.client-detail .vertical-timeline-icon.gray-bg { + color: #a7aaab; +} + +.clients-list .nav-tabs > li.active > a, +.clients-list .nav-tabs > li.active > a:hover, +.clients-list .nav-tabs > li.active > a:focus { + border-bottom: 1px solid #fff; +} + + +/* BLOG ARTICLE */ + +.blog h2 { + font-weight: 700; +} + +.blog h5 { + margin: 0 0 5px 0; +} + +.blog .btn { + margin: 0 0 5px 0; +} + +.article h1 { + font-size: 48px; + font-weight: 700; + color: #2F4050; +} + +.article p { + font-size: 15px; + line-height: 26px; +} + +.article-title { + text-align: center; + margin: 60px 0 40px 0; +} + +.article .ibox-content { + padding: 40px; +} + + +/* ISSUE TRACKER */ + +.issue-tracker .btn-link { + color: #1ab394; +} + +table.issue-tracker tbody tr td { + vertical-align: middle; + height: 50px; +} + +.issue-info { + width: 50%; +} + +.issue-info a { + font-weight: 600; + color: #676a6c; +} + +.issue-info small { + display: block; +} + + +/* TEAMS */ + +.team-members { + margin: 10px 0; +} + +.team-members img.img-circle { + width: 42px; + height: 42px; + margin-bottom: 5px; +} + + +/* AGILE BOARD */ + +.sortable-list { + padding: 10px 0; +} + +.agile-list { + list-style: none; + margin: 0; +} + +.agile-list li { + background: #FAFAFB; + border: 1px solid #e7eaec; + margin: 0px 0 10px 0; + padding: 10px; + border-radius: 2px; +} + +.agile-list li:hover { + cursor: pointer; + background: #fff; +} + +.agile-list li.warning-element { + border-left: 3px solid #f8ac59; +} + +.agile-list li.danger-element { + border-left: 3px solid #ed5565; +} + +.agile-list li.info-element { + border-left: 3px solid #1c84c6; +} + +.agile-list li.success-element { + border-left: 3px solid #1ab394; +} + +.agile-detail { + margin-top: 5px; + font-size: 12px; +} + + +/* DIFF */ + +ins { + background-color: #c6ffc6; + text-decoration: none; +} + +del { + background-color: #ffc6c6; +} + +#small-chat { + position: fixed; + bottom: 50px; + right: 26px; + z-index: 100; +} + +#small-chat .badge { + position: absolute; + top: -3px; + right: -4px; +} + +.open-small-chat { + height: 38px; + width: 38px; + display: block; + background: #1ab394; + padding: 9px 8px; + text-align: center; + color: #fff; + border-radius: 50%; +} + +.open-small-chat:hover { + color: white; + background: #1ab394; +} + +.small-chat-box { + display: none; + position: fixed; + bottom: 50px; + right: 80px; + background: #fff; + border: 1px solid #e7eaec; + width: 230px; + height: 320px; + border-radius: 4px; +} + +.small-chat-box.ng-small-chat { + display: block; +} + +.body-small .small-chat-box { + bottom: 70px; + right: 20px; +} + +.small-chat-box.active { + display: block; +} + +.small-chat-box .heading { + background: #2f4050; + padding: 8px 15px; + font-weight: bold; + color: #fff; +} + +.small-chat-box .chat-date { + opacity: 0.6; + font-size: 10px; + font-weight: normal; +} + +.small-chat-box .content { + padding: 15px 15px; +} + +.small-chat-box .content .author-name { + font-weight: bold; + margin-bottom: 3px; + font-size: 11px; +} + +.small-chat-box .content > div { + padding-bottom: 20px; +} + +.small-chat-box .content .chat-message { + padding: 5px 10px; + border-radius: 6px; + font-size: 11px; + line-height: 14px; + max-width: 80%; + background: #f3f3f4; + margin-bottom: 10px; +} + +.small-chat-box .content .chat-message.active { + background: #1ab394; + color: #fff; +} + +.small-chat-box .content .left { + text-align: left; + clear: both; +} + +.small-chat-box .content .left .chat-message { + float: left; +} + +.small-chat-box .content .right { + text-align: right; + clear: both; +} + +.small-chat-box .content .right .chat-message { + float: right; +} + +.small-chat-box .form-chat { + padding: 10px 10px; +} + + +/* + * Usage: + * + *

+ * + */ + +.sk-spinner-rotating-plane.sk-spinner { + width: 30px; + height: 30px; + background-color: #1ab394; + margin: 0 auto; + -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out; + animation: sk-rotatePlane 1.2s infinite ease-in-out; +} + +@-webkit-keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} + +@keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-double-bounce.sk-spinner { + width: 40px; + height: 40px; + position: relative; + margin: 0 auto; +} + +.sk-spinner-double-bounce .sk-double-bounce1, +.sk-spinner-double-bounce .sk-double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #1ab394; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-doubleBounce 2s infinite ease-in-out; + animation: sk-doubleBounce 2s infinite ease-in-out; +} + +.sk-spinner-double-bounce .sk-double-bounce2 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +@-webkit-keyframes sk-doubleBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-doubleBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-wave.sk-spinner { + margin: 0 auto; + width: 50px; + height: 30px; + text-align: center; + font-size: 10px; +} + +.sk-spinner-wave div { + background-color: #1ab394; + height: 100%; + width: 6px; + display: inline-block; + -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out; + animation: sk-waveStretchDelay 1.2s infinite ease-in-out; +} + +.sk-spinner-wave .sk-rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.sk-spinner-wave .sk-rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.sk-spinner-wave .sk-rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.sk-spinner-wave .sk-rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +@-webkit-keyframes sk-waveStretchDelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); + } + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } +} + +@keyframes sk-waveStretchDelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); + } + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-wandering-cubes.sk-spinner { + margin: 0 auto; + width: 32px; + height: 32px; + position: relative; +} + +.sk-spinner-wandering-cubes .sk-cube1, +.sk-spinner-wandering-cubes .sk-cube2 { + background-color: #1ab394; + width: 10px; + height: 10px; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; + animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; +} + +.sk-spinner-wandering-cubes .sk-cube2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +@-webkit-keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); + } + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); + } + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); + } + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +@keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); + } + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); + } + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); + } + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + + +/* + * Usage: + * + *
+ * + */ + +.sk-spinner-pulse.sk-spinner { + width: 40px; + height: 40px; + margin: 0 auto; + background-color: #1ab394; + border-radius: 100%; + -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out; + animation: sk-pulseScaleOut 1s infinite ease-in-out; +} + +@-webkit-keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } +} + +@keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-chasing-dots.sk-spinner { + margin: 0 auto; + width: 40px; + height: 40px; + position: relative; + text-align: center; + -webkit-animation: sk-chasingDotsRotate 2s infinite linear; + animation: sk-chasingDotsRotate 2s infinite linear; +} + +.sk-spinner-chasing-dots .sk-dot1, +.sk-spinner-chasing-dots .sk-dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #1ab394; + border-radius: 100%; + -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out; + animation: sk-chasingDotsBounce 2s infinite ease-in-out; +} + +.sk-spinner-chasing-dots .sk-dot2 { + top: auto; + bottom: 0px; + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +@-webkit-keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@-webkit-keyframes sk-chasingDotsBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-chasingDotsBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-three-bounce.sk-spinner { + margin: 0 auto; + width: 70px; + text-align: center; +} + +.sk-spinner-three-bounce div { + width: 18px; + height: 18px; + background-color: #1ab394; + border-radius: 100%; + display: inline-block; + -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.sk-spinner-three-bounce .sk-bounce1 { + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; +} + +.sk-spinner-three-bounce .sk-bounce2 { + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; +} + +@-webkit-keyframes sk-threeBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-threeBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; +} + +.sk-spinner-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} + +.sk-spinner-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 20%; + height: 20%; + background-color: #1ab394; + border-radius: 100%; + -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.sk-spinner-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); +} + +.sk-spinner-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); +} + +.sk-spinner-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.sk-spinner-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); +} + +.sk-spinner-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); +} + +.sk-spinner-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.sk-spinner-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); +} + +.sk-spinner-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); +} + +.sk-spinner-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.sk-spinner-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); +} + +.sk-spinner-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); +} + +.sk-spinner-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.sk-spinner-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.sk-spinner-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.sk-spinner-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +.sk-spinner-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; +} + +.sk-spinner-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; +} + +.sk-spinner-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; +} + +.sk-spinner-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; +} + +.sk-spinner-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} + +.sk-spinner-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; +} + +.sk-spinner-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; +} + +@-webkit-keyframes sk-circleBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-circleBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-cube-grid { + /* + * Spinner positions + * 1 2 3 + * 4 5 6 + * 7 8 9 + */ +} + +.sk-spinner-cube-grid.sk-spinner { + width: 30px; + height: 30px; + margin: 0 auto; +} + +.sk-spinner-cube-grid .sk-cube { + width: 33%; + height: 33%; + background-color: #1ab394; + float: left; + -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +@-webkit-keyframes sk-cubeGridScaleDelay { + 0%, + 70%, + 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); + } + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); + } +} + +@keyframes sk-cubeGridScaleDelay { + 0%, + 70%, + 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); + } + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); + } +} + + +/* + * Usage: + * + *
+ * + *
+ * + */ + +.sk-spinner-wordpress.sk-spinner { + background-color: #1ab394; + width: 30px; + height: 30px; + border-radius: 30px; + position: relative; + margin: 0 auto; + -webkit-animation: sk-innerCircle 1s linear infinite; + animation: sk-innerCircle 1s linear infinite; +} + +.sk-spinner-wordpress .sk-inner-circle { + display: block; + background-color: #fff; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; + top: 5px; + left: 5px; +} + +@-webkit-keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ + +.sk-spinner-fading-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; +} + +.sk-spinner-fading-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} + +.sk-spinner-fading-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 18%; + height: 18%; + background-color: #1ab394; + border-radius: 100%; + -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.sk-spinner-fading-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); +} + +.sk-spinner-fading-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); +} + +.sk-spinner-fading-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.sk-spinner-fading-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); +} + +.sk-spinner-fading-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); +} + +.sk-spinner-fading-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.sk-spinner-fading-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); +} + +.sk-spinner-fading-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); +} + +.sk-spinner-fading-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.sk-spinner-fading-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); +} + +.sk-spinner-fading-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); +} + +.sk-spinner-fading-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.sk-spinner-fading-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.sk-spinner-fading-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.sk-spinner-fading-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +.sk-spinner-fading-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; +} + +.sk-spinner-fading-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; +} + +.sk-spinner-fading-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; +} + +.sk-spinner-fading-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; +} + +.sk-spinner-fading-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} + +.sk-spinner-fading-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; +} + +.sk-spinner-fading-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; +} + +@-webkit-keyframes sk-circleFadeDelay { + 0%, + 39%, + 100% { + opacity: 0; + } + 40% { + opacity: 1; + } +} + +@keyframes sk-circleFadeDelay { + 0%, + 39%, + 100% { + opacity: 0; + } + 40% { + opacity: 1; + } +} + +body.rtls { + /* Theme config */ +} + +body.rtls #page-wrapper { + margin: 0 220px 0 0; +} + +body.rtls .nav-second-level li a { + padding: 7px 35px 7px 10px; +} + +body.rtls .ibox-title h5 { + float: right; +} + +body.rtls .pull-right { + float: left !important; +} + +body.rtls .pull-left { + float: right !important; +} + +body.rtls .ibox-tools { + float: left; +} + +body.rtls .stat-percent { + float: left; +} + +body.rtls .navbar-right { + float: left !important; +} + +body.rtls .navbar-top-links li:last-child { + margin-left: 40px; + margin-right: 0; +} + +body.rtls .minimalize-styl-2 { + float: right; + margin: 14px 20px 5px 5px; +} + +body.rtls .feed-element > .pull-left { + margin-left: 10px; + margin-right: 0; +} + +body.rtls .timeline-item .date { + text-align: left; +} + +body.rtls .timeline-item .date i { + left: 0; + right: auto; +} + +body.rtls .timeline-item .content { + border-right: 1px solid #e7eaec; + border-left: none; +} + +body.rtls .toast-close-button { + float: left; +} + +body.rtls #toast-container > .toast:before { + margin: auto -1.5em auto 0.5em; +} + +body.rtls #toast-container > div { + padding: 15px 50px 15px 15px; +} + +body.rtls .center-orientation .vertical-timeline-icon i { + margin-left: 0; + margin-right: -12px; +} + +body.rtls .vertical-timeline-icon i { + right: 50%; + left: auto; + margin-left: auto; + margin-right: -12px; +} + +body.rtls .file-box { + float: right; +} + +body.rtls ul.notes li { + float: right; +} + +body.rtls .chat-users, +body.rtls .chat-statistic { + margin-right: -30px; + margin-left: auto; +} + +body.rtls .dropdown-menu > li > a { + text-align: right; +} + +body.rtls .b-r { + border-left: 1px solid #e7eaec; + border-right: none; +} + +body.rtls .dd-list .dd-list { + padding-right: 30px; + padding-left: 0; +} + +body.rtls .dd-item > button { + float: right; +} + +body.rtls .skin-setttings { + margin-right: 40px; + margin-left: 0; +} + +body.rtls .skin-setttings { + direction: ltr; +} + +body.rtls .footer.fixed { + margin-right: 220px; + margin-left: 0; +} + +@media (max-width: 992px) { + body.rtls .chat-users, + body.rtls .chat-statistic { + margin-right: 0px; + } +} + +body.rtls.mini-navbar .footer.fixed, +body.body-small.mini-navbar .footer.fixed { + margin: 0 70px 0 0; +} + +body.rtls.mini-navbar.fixed-sidebar .footer.fixed, +body.body-small.mini-navbar .footer.fixed { + margin: 0 0 0 0; +} + +body.rtls.top-navigation .navbar-toggle { + float: right; + margin-left: 15px; + margin-right: 15px; +} + +.body-small.rtls.top-navigation .navbar-header { + float: none; +} + +body.rtls.top-navigation #page-wrapper { + margin: 0; +} + +body.rtls.mini-navbar #page-wrapper { + margin: 0 70px 0 0; +} + +body.rtls.mini-navbar.fixed-sidebar #page-wrapper { + margin: 0 0 0 0; +} + +body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 220px 0 0; +} + +body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side { + width: 220px; +} + +.body-small.rtls .navbar-fixed-top { + margin-right: 0px; +} + +.body-small.rtls .navbar-header { + float: right; +} + +body.rtls .navbar-top-links li:last-child { + margin-left: 20px; +} + +body.rtls .top-navigation #page-wrapper, +body.rtls.mini-navbar .top-navigation #page-wrapper, +body.rtls.mini-navbar.top-navigation #page-wrapper { + margin: 0; +} + +body.rtls .top-navigation .footer.fixed, +body.rtls.top-navigation .footer.fixed { + margin: 0; +} + +@media (max-width: 768px) { + body.rtls .navbar-top-links li:last-child { + margin-left: 20px; + } + .body-small.rtls #page-wrapper { + position: inherit; + margin: 0 0 0 0px; + min-height: 1000px; + } + .body-small.rtls .navbar-static-side { + display: none; + z-index: 2001; + position: absolute; + width: 70px; + } + .body-small.rtls.mini-navbar .navbar-static-side { + display: block; + } + .rtls.fixed-sidebar.body-small .navbar-static-side { + display: none; + z-index: 2001; + position: fixed; + width: 220px; + } + .rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side { + display: block; + } +} + +.rtls .ltr-support { + direction: ltr; +} + + +/* + * + * This is style for skin config + * Use only in demo theme + * +*/ + +.skin-setttings .title { + background: #efefef; + text-align: center; + text-transform: uppercase; + font-weight: 600; + display: block; + padding: 10px 15px; + font-size: 12px; +} + +.setings-item { + padding: 10px 30px; +} + +.setings-item.nb { + border: none; +} + +.setings-item.skin { + text-align: center; +} + +.setings-item .switch { + float: right; +} + +.skin-name a { + text-transform: uppercase; +} + +.setings-item a { + color: #fff; +} + +.default-skin, +.blue-skin, +.ultra-skin, +.yellow-skin { + text-align: center; +} + +.default-skin { + font-weight: 600; + background: #1ab394; +} + +.default-skin:hover { + background: #199d82; +} + +.blue-skin { + font-weight: 600; + background: url("patterns/header-profile-skin-1.png") repeat scroll 0 0; +} + +.blue-skin:hover { + background: #0d8ddb; +} + +.yellow-skin { + font-weight: 600; + background: url("patterns/header-profile-skin-3.png") repeat scroll 0 100%; +} + +.yellow-skin:hover { + background: #ce8735; +} + +.content-tabs { + border-bottom: solid 2px #2f4050; +} + +.page-tabs a { + color: #999; +} + +.page-tabs a i { + color: #ccc; +} + +.page-tabs a.active { + background: #2f4050; + color: #a7b1c2; +} + +.page-tabs a.active:hover, +.page-tabs a.active i:hover { + background: #293846; + color: #fff; +} + + +/* + * + * SKIN 1 - H+ - 后台主题UI框架 + * NAME - Blue light + * +*/ + +.skin-1 .minimalize-styl-2 { + margin: 14px 5px 5px 30px; +} + +.skin-1 .navbar-top-links li:last-child { + margin-right: 30px; +} + +.skin-1.fixed-nav .minimalize-styl-2 { + margin: 14px 5px 5px 15px; +} + +.skin-1 .spin-icon { + background: #0e9aef !important; +} + +.skin-1 .nav-header { + background: #0e9aef; + background: url('patterns/header-profile-skin-1.png'); +} + +.skin-1.mini-navbar .nav-second-level { + background: #3e495f; +} + +.skin-1 .breadcrumb { + background: transparent; +} + +.skin-1 .page-heading { + border: none; +} + +.skin-1 .nav > li.active { + background: #3a4459; +} + +.skin-1 .nav > li > a { + color: #9ea6b9; +} + +.skin-1 .nav > li.active > a { + color: #fff; +} + +.skin-1 .navbar-minimalize { + background: #0e9aef; + border-color: #0e9aef; +} + +body.skin-1 { + background: #3e495f; +} + +.skin-1 .navbar-static-top { + background: #ffffff; +} + +.skin-1 .dashboard-header { + background: transparent; + border-bottom: none !important; + border-top: none; + padding: 20px 30px 10px 30px; +} + +.fixed-nav.skin-1 .navbar-fixed-top { + background: #fff; +} + +.skin-1 .wrapper-content { + padding: 30px 15px; +} + +.skin-1 #page-wrapper { + background: #f4f6fa; +} + +.skin-1 .ibox-title, +.skin-1 .ibox-content { + border-width: 1px; +} + +.skin-1 .ibox-content:last-child { + border-style: solid solid solid solid; +} + +.skin-1 .nav > li.active { + border: none; +} + +.skin-1 .nav-header { + padding: 35px 25px 25px 25px; +} + +.skin-1 .nav-header a.dropdown-toggle { + color: #fff; + margin-top: 10px; +} + +.skin-1 .nav-header a.dropdown-toggle .text-muted { + color: #fff; + opacity: 0.8; +} + +.skin-1 .profile-element { + text-align: center; +} + +.skin-1 .img-circle { + border-radius: 5px; +} + +.skin-1 .navbar-default .nav > li > a:hover, +.skin-1 .navbar-default .nav > li > a:focus { + background: #39aef5; + color: #fff; +} + +.skin-1 .nav.nav-tabs > li.active > a { + color: #555; +} + +.skin-1 .content-tabs { + border-bottom: solid 2px #39aef5; +} + +.skin-1 .nav.nav-tabs > li.active { + background: transparent; +} + +.skin-1 .page-tabs a.active { + background: #39aef5; + color: #fff; +} + +.skin-1 .page-tabs a.active:hover, +.skin-1 .page-tabs a.active i:hover { + background: #0e9aef; + color: #fff; +} + + +/* + * + * SKIN 3 - H+ - 后台主题UI框架 + * NAME - Yellow/purple + * +*/ + +.skin-3 .minimalize-styl-2 { + margin: 14px 5px 5px 30px; +} + +.skin-3 .navbar-top-links li:last-child { + margin-right: 30px; +} + +.skin-3.fixed-nav .minimalize-styl-2 { + margin: 14px 5px 5px 15px; +} + +.skin-3 .spin-icon { + background: #ecba52 !important; +} + +body.boxed-layout.skin-3 #wrapper { + background: #3e2c42; +} + +.skin-3 .nav-header { + background: #ecba52; + background: url('patterns/header-profile-skin-3.png'); +} + +.skin-3.mini-navbar .nav-second-level { + background: #3e2c42; +} + +.skin-3 .breadcrumb { + background: transparent; +} + +.skin-3 .page-heading { + border: none; +} + +.skin-3 .nav > li.active { + background: #38283c; +} + +.fixed-nav.skin-3 .navbar-fixed-top { + background: #fff; +} + +.skin-3 .nav > li > a { + color: #948b96; +} + +.skin-3 .nav > li.active > a { + color: #fff; +} + +.skin-3 .navbar-minimalize { + background: #ecba52; + border-color: #ecba52; +} + +body.skin-3 { + background: #3e2c42; +} + +.skin-3 .navbar-static-top { + background: #ffffff; +} + +.skin-3 .dashboard-header { + background: transparent; + border-bottom: none !important; + border-top: none; + padding: 20px 30px 10px 30px; +} + +.skin-3 .wrapper-content { + padding: 30px 15px; +} + +.skin-3 #page-wrapper { + background: #f4f6fa; +} + +.skin-3 .ibox-title, +.skin-3 .ibox-content { + border-width: 1px; +} + +.skin-3 .ibox-content:last-child { + border-style: solid solid solid solid; +} + +.skin-3 .nav > li.active { + border: none; +} + +.skin-3 .nav-header { + padding: 35px 25px 25px 25px; +} + +.skin-3 .nav-header a.dropdown-toggle { + color: #fff; + margin-top: 10px; +} + +.skin-3 .nav-header a.dropdown-toggle .text-muted { + color: #fff; + opacity: 0.8; +} + +.skin-3 .profile-element { + text-align: center; +} + +.skin-3 .img-circle { + border-radius: 5px; +} + +.skin-3 .navbar-default .nav > li > a:hover, +.skin-3 .navbar-default .nav > li > a:focus { + background: #38283c; + color: #fff; +} + +.skin-3 .nav.nav-tabs > li.active > a { + color: #555; +} + +.skin-3 .nav.nav-tabs > li.active { + background: transparent; +} + +.skin-3 .content-tabs { + border-bottom: solid 2px #3e2c42; +} + +.skin-3 .nav.nav-tabs > li.active { + background: transparent; +} + +.skin-3 .page-tabs a.active { + background: #3e2c42; + color: #fff; +} + +.skin-3 .page-tabs a.active:hover, +.skin-3 .page-tabs a.active i:hover { + background: #38283c; + color: #fff; +} + +@media (min-width: 768px) { + .navbar-top-links .dropdown-messages, + .navbar-top-links .dropdown-tasks, + .navbar-top-links .dropdown-alerts { + margin-left: auto; + } +} + +@media (max-width: 768px) { + body.fixed-sidebar .navbar-static-side { + display: none; + } + body.fixed-sidebar.mini-navbar .navbar-static-side { + width: 70px; + } + .lock-word { + display: none; + } + .navbar-form-custom { + display: none; + } + .navbar-header { + display: inline; + float: left; + } + .sidebard-panel { + z-index: 2; + position: relative; + width: auto; + min-height: 100% !important; + } + .sidebar-content .wrapper { + padding-right: 0px; + z-index: 1; + } + .fixed-sidebar.body-small .navbar-static-side { + display: none; + z-index: 2001; + position: fixed; + width: 220px; + } + .fixed-sidebar.body-small.mini-navbar .navbar-static-side { + display: block; + } + .ibox-tools { + float: none; + text-align: right; + display: block; + } + .content-tabs { + display: none; + } + #content-main { + height: calc(100% - 100px); + } + .fixed-nav #content-main { + height: calc(100% - 38px); + } +} + +.navbar-static-side { + background: #2f4050; +} + +.nav-close { + padding: 10px; + display: block; + position: absolute; + right: 5px; + top: 5px; + font-size: 1.4em; + cursor: pointer; + z-index: 10; + display: none; + color: rgba(255, 255, 255, .3); +} + +@media (max-width: 350px) { + body.fixed-sidebar.mini-navbar .navbar-static-side { + width: 0; + } + .nav-close { + display: block; + } + #page-wrapper { + margin-left: 0!important; + } + .timeline-item .date { + text-align: left; + width: 110px; + position: relative; + padding-top: 30px; + } + .timeline-item .date i { + position: absolute; + top: 0; + left: 15px; + padding: 5px; + width: 30px; + text-align: center; + border: 1px solid #e7eaec; + background: #f8f8f8; + } + .timeline-item .content { + border-left: none; + border-top: 1px solid #e7eaec; + padding-top: 10px; + min-height: 100px; + } + .nav.navbar-top-links li.dropdown { + display: none; + } + .ibox-tools { + float: none; + text-align: left; + display: inline-block; + } +} + + +/*JQGRID*/ + +.ui-jqgrid-titlebar { + height: 40px; + line-height: 24px; + color: #676a6c; + background-color: #F9F9F9; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.ui-jqgrid .ui-jqgrid-title { + float: left; + margin-left: 5px; + font-weight: 700; +} + +.ui-jqgrid .ui-jqgrid-titlebar { + position: relative; + border-left: 0px solid; + border-right: 0px solid; + border-top: 0px solid; +} + + +/* Social feed */ + +.social-feed-separated .social-feed-box { + margin-left: 62px; +} + +.social-feed-separated .social-avatar { + float: left; + padding: 0; +} + +.social-feed-separated .social-avatar img { + width: 52px; + height: 52px; + border: 1px solid #e7eaec; +} + +.social-feed-separated .social-feed-box .social-avatar { + padding: 15px 15px 0 15px; + float: none; +} + +.social-feed-box { + /*padding: 15px;*/ + border: 1px solid #e7eaec; + background: #fff; + margin-bottom: 15px; +} + +.article .social-feed-box { + margin-bottom: 0; + border-bottom: none; +} + +.article .social-feed-box:last-child { + margin-bottom: 0; + border-bottom: 1px solid #e7eaec; +} + +.article .social-feed-box p { + font-size: 13px; + line-height: 18px; +} + +.social-action { + margin: 15px; +} + +.social-avatar { + padding: 15px 15px 0 15px; +} + +.social-comment .social-comment { + margin-left: 45px; +} + +.social-avatar img { + height: 40px; + width: 40px; + margin-right: 10px; +} + +.social-avatar .media-body a { + font-size: 14px; + display: block; +} + +.social-body { + padding: 15px; +} + +.social-body img { + margin-bottom: 10px; +} + +.social-footer { + border-top: 1px solid #e7eaec; + padding: 10px 15px; + background: #f9f9f9; +} + +.social-footer .social-comment img { + width: 32px; + margin-right: 10px; +} + +.social-comment:first-child { + margin-top: 0; +} + +.social-comment { + margin-top: 15px; +} + +.social-comment textarea { + font-size: 12px; +} + +.checkbox input[type=checkbox], +.checkbox-inline input[type=checkbox], +.radio input[type=radio], +.radio-inline input[type=radio] { + margin-top: -4px; +} + + +/* Only demo */ + +@media (max-width: 1000px) { + .welcome-message { + display: none; + } +} + + +/* ECHARTS */ + +.echarts { + height: 240px; +} + +.checkbox-inline, +.radio-inline, +.checkbox-inline+.checkbox-inline, +.radio-inline+.radio-inline { + margin: 0 15px 0 0; +} + +.navbar-toggle { + background-color: #fff; +} + +.J_menuTab { + -webkit-transition: all .3s ease-out 0s; + transition: all .3s ease-out 0s; +} + +::-webkit-scrollbar-track { + background-color: #F5F5F5; +} + +::-webkit-scrollbar { + width: 6px; + background-color: #F5F5F5; +} + +::-webkit-scrollbar-thumb { + background-color: #999; +} + + +/*GO HOME*/ + +.gohome { + position: fixed; + top: 20px; + right: 20px; + z-index: 100; +} + +.gohome a { + height: 38px; + width: 38px; + display: block; + background: #2f4050; + padding: 9px 8px; + text-align: center; + color: #fff; + border-radius: 50%; + opacity: .5; +} + +.gohome a:hover { + opacity: 1; +} + +@media only screen and (-webkit-min-device-pixel-ratio : 2){ + #content-main { + -webkit-overflow-scrolling: touch; + } +} + +.navbar-header { + width: 60%; +} + +.bs-glyphicons { + margin: 0 -10px 20px; + overflow: hidden +} + +.bs-glyphicons-list { + padding-left: 0; + list-style: none +} + +.bs-glyphicons li { + float: left; + width: 25%; + height: 115px; + padding: 10px; + font-size: 10px; + line-height: 1.4; + text-align: center; + background-color: #f9f9f9; + border: 1px solid #fff +} + +.bs-glyphicons .glyphicon { + margin-top: 5px; + margin-bottom: 10px; + font-size: 24px +} + +.bs-glyphicons .glyphicon-class { + display: block; + text-align: center; + word-wrap: break-word +} + +.bs-glyphicons li:hover { + color: #fff; + background-color: #1ab394; +} + +@media (min-width: 768px) { + .bs-glyphicons { + margin-right: 0; + margin-left: 0 + } + .bs-glyphicons li { + width: 12.5%; + font-size: 12px + } +} +.table tr td { + word-break: break-all; + word-wrap: break-word; +} +.Validform_checktip{ + margin-left:8px; + line-height:20px; + height:20px; + display: inline-block; + color:#999; + font-size:12px; +} +.Validform_right{ + color:#71b83d; + padding-left:20px; + background:url(../img/right.png) no-repeat left center; +} +.Validform_wrong{ + color:red; + padding-left:20px; + white-space:nowrap; + background:url(../img/error.png) no-repeat left center; +} +.Validform_loading{ + padding-left:20px; + background:url(../img/onLoad.gif) no-repeat left center; +} +.Validform_error{ + background-color:#ffe7e7; +} +#Validform_msg{color:#7d8289; font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; width:280px; -webkit-box-shadow:2px 2px 3px #aaa; -moz-box-shadow:2px 2px 3px #aaa; background:#fff; position:absolute; top:0px; right:50px; z-index:99999; display:none;filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color='#999999');} +#Validform_msg .iframe{position:absolute; left:0px; top:-1px; z-index:-1;} +#Validform_msg .Validform_title{line-height:25px; height:25px; text-align:left; font-weight:bold; padding:0 8px; color:#fff; position:relative; background-color:#000;} +#Validform_msg a.Validform_close:link,#Validform_msg a.Validform_close:visited{line-height:22px; position:absolute; right:8px; top:0px; color:#fff; text-decoration:none;} +#Validform_msg a.Validform_close:hover{color:#cc0;} +#Validform_msg .Validform_info{padding:8px;border:1px solid #000; border-top:none; text-align:left;} \ No newline at end of file diff --git a/springboot-shiro/src/main/resources/public/static/img/bgblack.png b/springboot-shiro/src/main/resources/public/static/img/bgblack.png new file mode 100644 index 0000000000000000000000000000000000000000..83776557fef58ceba0f2b248f74dde96e292b4f3 GIT binary patch literal 2790 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 literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/img/check_alt.png b/springboot-shiro/src/main/resources/public/static/img/check_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..5be78b49af5493972d5a772941a8363b9503b23e GIT binary patch literal 502 zcmVkO_z&SfeQh|1GSAk;($s%Y7DuO^JJF~om?Dw<4x&%nq$~J;A1>b`w z3$w1^H}DE&VWSf^&;TD{%)ujMW>mllgq*htDBCX>3&m=6jb?>_kbivvWt(#N4!N<8 zi>THGu#^|bj}duGf|-^7BER-6W+IUGympv&)po?gnZUvi#T(#=GsZ2(!oDYtLG&6f zUBQGi#|-2i;0H)EQHaRd8DJHz_5kmM^F>pBoS7SAUS55|cZw>SVqV*Q!Y>K|d%6X8 zjlgK-Td)O=So;JsjF3!VXUDhWiFm&t65?!>LsP4^|rlYWk*vH7=1=<;=o( zxCJMJKT_zQC46Lx9nr-@Pq5r6XW>Dv1BACrzOCadsSvRqjl4m?%Nqep<+k!HV)8cl sz=z34Jk8uaPJiZBZ6?6;^ZX&e0AgjXwa;lz0ssI207*qoM6N<$f;Y6+YXATM literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/img/error.png b/springboot-shiro/src/main/resources/public/static/img/error.png new file mode 100644 index 0000000000000000000000000000000000000000..aeff2a4381c3afcb5400a1be3de594ae4d48d3f9 GIT binary patch literal 734 zcmV<40wMj0P)Z^#`=7P1_&{pR;U!332 zue=+CLUurSyQ z^SPZ8vq3FJZ0bgHvmkx*OFdYLy{!?Ddi$i0LTtN&xjV6NMOu- zLn!Mgz2_Zmrp_ED9ZQgyUnWQLKqh(A?qCO?sv5@X5+bgk#y2Q_@YVq|49%gYO$>nC zT!fi503RSZfV5_erJ@Vy2JG*92f$=oHJ=-c0cZ`!2vpZ#`T}erM*wS=hzY^-*jyB$ zn*dClswBOcL=#zt>xuvf)KsFxHd*%{90mknIDi+vmcFIAl^-kNDB-TtWaR)tx3F-N zS6@%Kx0A)_8k6I*k>SR!ejot|$4EoLP_iVsc)5OlVxYh;*Li(1{;Dc+3X4$P9)A9a zFgZ3G8ENXirOJ7~fK5QSw!>swIj20eRN5YSb<>xMcSve7q?;y5Phd(3l#Prub@$uF zt3Vvk{{^^ghvnJ-oDX>IbJcEp6WGGG@~$k{%Ifx|G@!7P7sD1#@K>1r0E(y?&u4fN QssI2007*qoM6N<$g7aWZF#rGn literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/img/error/404.png b/springboot-shiro/src/main/resources/public/static/img/error/404.png new file mode 100644 index 0000000000000000000000000000000000000000..600d6d8f5f76b3c1a97275308ac315cb55ba8eb6 GIT binary patch literal 35617 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⪙7}#{Mvaha%E&Xx)WLzP-@=$BHZjb@Dg9z44uY}r2D|#O2d}? z!O?6!tY}fe!Nm3w)zgm8>kyWDkdoRKwpua1E2Q-U5K-U>g#3Yi#K6!ygk+bL_nWr{ zdy=LKNt}9FkMMqUw7RuK{~bE2Md5Q1VpK5 zpYk|{ImkD5ay2V_Pl1t8t}Z^FGuwo!*NyjX-sO}B@$+ZfLQg;hBVosPtx1~gl^6sS z8*zvP_7gx2pGqZ$S2J0Jq`JCh0mn3!A>iwwL)0!u$BSCdr)-#x(6?d%a(A-4NU~|O z55`J0^I}T!irD3uPx85d?$JuqXK<;qB=^XR`KUXMTB#5K%*6Ok7>L2T;v_#dKd6Di(F zHFJIkYauHJnO<)+BK8;5?fHRV#6kb=@sTY&B=<&StgGHqMC|5w$}ePk*OeLBxu5f@ zWIp>T{zFoITAJBizkT`(3zjx`(XQyH1LKipZ|!W%Fiz)Ig7{X3d^2#+wb<;&@e#A| zv~xQeC42nG)#Xe1M-o;0UVV-$^d##HqP~>mz{!*~O9meI9q1ri2#e=Q_jLQ&W@ea{ zhY>CYpt**1PJW-72cENTTtyvh0!r7Iv8%JZh$C#XD@a#D5jeqKQMMEb3e9wc`H@`N z)oO9atIbv()?n$J=1q2W@Sz4YDooAxso;66T-oyjkG@0K^}f4vyM5tJABeMNC_Hc- z)W9+G4k$HSfh@52;o%;Bg{*DO z^?EUG83o7MT?>krY^&l0rh2!9vPiH5h6aEWaXEk9M_i=+e7025!Zz0wXHe~J`#E<$u23!sq}1 literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/img/error/404_msg.png b/springboot-shiro/src/main/resources/public/static/img/error/404_msg.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc72d4c779947a9b76cdabfb552e55efdb5b734 GIT binary patch literal 4537 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

YLy(bj7`f_guKBrUlR~|2{&@7&Bl=@ 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%0D01j%vwK&C>D2RxkNUqOC@i5~kbcG5@aje7?X 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 Hu0mjfJP=OM literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/js/bootstrap.min.js b/springboot-shiro/src/main/resources/public/static/js/bootstrap.min.js new file mode 100644 index 0000000..e364a13 --- /dev/null +++ b/springboot-shiro/src/main/resources/public/static/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth

',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); diff --git a/springboot-shiro/src/main/resources/public/static/js/jquery.min.js b/springboot-shiro/src/main/resources/public/static/js/jquery.min.js new file mode 100644 index 0000000..49990d6 --- /dev/null +++ b/springboot-shiro/src/main/resources/public/static/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"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){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=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=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.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,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$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("div");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=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);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 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 pa(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:!1},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=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),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){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):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(U,"='$1']"),!(!c.matchesSelector||!p||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&&D.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.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:X,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(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===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 X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(ca,da).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("(^|"+L+")"+a+"("+L+"|$)"))&&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(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/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=J(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(R,"$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(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).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:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!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 Z.test(a.nodeName)},input:function(a){return Y.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:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(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}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};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=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0: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){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),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),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==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,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.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 this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(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&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n(" + + + + + + + + + + \ No newline at end of file diff --git a/springboot-shiro/src/main/resources/templates/login.html b/springboot-shiro/src/main/resources/templates/login.html new file mode 100644 index 0000000..23c03e8 --- /dev/null +++ b/springboot-shiro/src/main/resources/templates/login.html @@ -0,0 +1,77 @@ + + + + + + SpringBoot Shiro测试 + + + + + + + +
+
+
+

+
+

欢迎使用XX管理平台

+
+
+
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+ + + +
+
+
+ + + + + \ No newline at end of file diff --git a/springboot-shiro/src/main/resources/templates/modules/common/welcome.html b/springboot-shiro/src/main/resources/templates/modules/common/welcome.html new file mode 100644 index 0000000..cff4537 --- /dev/null +++ b/springboot-shiro/src/main/resources/templates/modules/common/welcome.html @@ -0,0 +1,18 @@ + + + + + + + + + + +
+
+

欢迎您!

+
+
+ + diff --git a/springboot-shiro/src/test/java/com/xncoding/pos/SimpleTest.java b/springboot-shiro/src/test/java/com/xncoding/pos/SimpleTest.java new file mode 100644 index 0000000..5120283 --- /dev/null +++ b/springboot-shiro/src/test/java/com/xncoding/pos/SimpleTest.java @@ -0,0 +1,51 @@ +package com.xncoding.pos; + +import com.xncoding.pos.shiro.ShiroKit; +import org.junit.Test; + +import java.nio.file.*; + +/** + * SimpleTest + * + * @author XiongNeng + * @version 1.0 + * @since 2018/1/4 + */ +public class SimpleTest { + @Test + public void testMd5() { + //盐(用户名+随机数) + String username = "admin"; + String salt = ShiroKit.getRandomSalt(16); + //原密码 + String password = "12345678"; + String encodedPassword = ShiroKit.md5(password, username + salt); + System.out.println("这个是保存进数据库的密码:" + encodedPassword); + System.out.println("这个是保存进数据库的盐:" + salt); + } + + @Test + public void test1() throws Exception { + WatchService watchService + = FileSystems.getDefault().newWatchService(); + + Path path = Paths.get(System.getProperty("user.home")); + + path.register( + watchService, + StandardWatchEventKinds.ENTRY_CREATE, + StandardWatchEventKinds.ENTRY_DELETE, + StandardWatchEventKinds.ENTRY_MODIFY); + + WatchKey key; + while ((key = watchService.take()) != null) { + for (WatchEvent event : key.pollEvents()) { + System.out.println( + "Event kind:" + event.kind() + + ". File affected: " + event.context() + "."); + } + key.reset(); + } + } +}

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 MxjNKO^rwjb*(U^0MgRZ+ literal 0 HcmV?d00001 diff --git a/springboot-shiro/src/main/resources/public/static/img/error/error_cloud.png b/springboot-shiro/src/main/resources/public/static/img/error/error_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..2c55284107d083ab04f04351deef2a96ce357f8c GIT binary patch literal 42359 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