Commit 7cf75518cb5fb8134ba9bd3c6eabf61cbf057fbc

Authored by Andy
2 parents 9e0f981e 22654974

Merge branch 'test' of http://192.168.1.195:9998/web_developers/workreport into test

# Conflicts:
#	.idea/modules.xml
Showing 129 changed files with 15940 additions and 5 deletions

Too many changes.

To preserve performance only 100 of 129 files are displayed.

workreport renamed to .gitignore
.idea/modules.xml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <project version="4">
3   - <component name="ProjectModuleManager">
4   - <modules>
5   - <module fileurl="file://$PROJECT_DIR$/workreport.iml" filepath="$PROJECT_DIR$/workreport.iml" />
6   - </modules>
7   - </component>
  3 + <component name="ProjectModuleManager">
  4 + <modules>
  5 + <module fileurl="file://$PROJECT_DIR$/workreport.iml" filepath="$PROJECT_DIR$/workreport.iml" />
  6 + </modules>
  7 + </component>
8 8 </project>
9 9 \ No newline at end of file
... ...
home.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 + <meta charset="UTF-8">
  5 + <title>Title</title>
  6 +</head>
  7 +<body>
  8 +
  9 +</body>
  10 +</html>
0 11 \ No newline at end of file
... ...
index/index.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 + <meta charset="UTF-8">
  5 + <title>工时系统</title>
  6 + <link rel="stylesheet" id="pageCssLink" type="text/css" href=""/>
  7 + <link rel="stylesheet" href="../resource/lib/bootstrap/css/bootstrap.min.css">
  8 + <link rel="stylesheet" href="../resource/lib/bootstrap-daterangepicker/daterangepicker.css">
  9 + <link rel="stylesheet" href="../resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.css">
  10 + <link rel="stylesheet" href="../resource/lib/bootstrap-select/css/bootstrap-select.css">
  11 + <link rel="stylesheet" href="../resource/lib/bootstrap-table/bootstrap-table.min.css">
  12 + <link rel="stylesheet" href="../resource/lib/bootstrap-table/bootstrap-table-fixed-columns.css">
  13 + <link rel="stylesheet" href="../resource/lib/font-awesome/css/font-awesome.min.css">
  14 + <link rel="stylesheet" href="../resource/public/components.min.css?a=2">
  15 + <link rel="stylesheet" href="../resource/public/plugins.min.css?a=2">
  16 + <link rel="stylesheet" href="../resource/public/commoncss.css?a=2">
  17 +
  18 +
  19 +</head>
  20 +<body>
  21 +<!----------------------------------------------头部-->
  22 +<header>
  23 + <div class="nav-bar-wrap">
  24 + <div class="float-left login-name">
  25 + <span id="">张志涛</span>&nbsp;&nbsp;<span class="cursorpointer">退出</span>
  26 + </div>
  27 +
  28 + <nav class="float-right">
  29 + <ul class="nav-bar-container">
  30 + <li class="navbar-active" id="button-workfill"><a href="#/workfill">工时填报</a></li>
  31 + <li id="button-workquery"><a href="#/workquery" >工时查询</a></li>
  32 + <li id="button-hourscount"><a href="#/hourscount" >工时统计</a></li>
  33 + <li id="button-staffmanage"><a href="#/staffmanage" >员工管理</a></li>
  34 + </ul>
  35 + </nav>
  36 + </div>
  37 +</header>
  38 +
  39 +<!----------------------------------------------内容-->
  40 +<div id="main-con" class="main-con"></div>
  41 +<script src="../resource/lib/jquery/jquery.min.js"></script>
  42 +<script src="../resource/lib/bootstrap/js/bootstrap.min.js"></script>
  43 +<script src="../resource/lib/bootstrap-daterangepicker/moment.js"></script>
  44 +<script src="../resource/lib/bootstrap-daterangepicker/daterangepicker.js"></script>
  45 +<script src="../resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.js"></script>
  46 +<script src="../resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.zh-CN.js"></script>
  47 +<script src="../resource/lib/bootstrap-select/js/bootstrap-select.js"></script>
  48 +<script src="../resource/lib/bootstrap-table/bootstrap-table.min.js"></script>
  49 +<script src="../resource/lib/bootstrap-table/bootstrap-table-fixed-columns.js"></script>
  50 +<script src="../resource/lib/bootstrap-table/bootstrap-table-zh-CN.js"></script>
  51 +<script src="../resource/lib/dateUtils/DateUtils.js"></script>
  52 +<script src="../resource/lib/jqueryform/jquery.form.js"></script>
  53 +
  54 +<script src="../topages/topagesTmp.js"></script>
  55 +<!--<script src="../topages/workquery/workquery.js"></script>-->
  56 +</body>
  57 +</html>
0 58 \ No newline at end of file
... ...
login/login.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 + <meta charset="UTF-8">
  5 + <title>登录</title>
  6 + <link rel="stylesheet" href="../resource/lib/bootstrap/css/bootstrap.min.css">
  7 + <link rel="stylesheet" href="../resource/public/components.min.css?a=2">
  8 + <link rel="stylesheet" href="../resource/public/plugins.min.css?a=2">
  9 + <link rel="stylesheet" href="../resource/public/commoncss.css?a=2">
  10 + <link rel="stylesheet" href="../topages/login/login.css">
  11 +
  12 +</head>
  13 +<body>
  14 +
  15 + <div class="float-left login-wrap">
  16 + <div class="login-main">
  17 + <div class="login-name">中兴智能日报系统</div>
  18 + <div class="login-hint">轻松工作每一天</div>
  19 + <input type="text" class="login-username" id="login-username" placeholder="邮箱或者账户名">
  20 + <input type="password" class="login-password" id="login-password" placeholder="密码">
  21 + <div class="login-btn" id="login-btn">登录</div>
  22 + </div>
  23 + </div>
  24 + <div class="float-left login-bg"></div>
  25 +
  26 +
  27 +<script src="../resource/lib/jquery/jquery.min.js"></script>
  28 +<script src="../topages/login/login.js"></script>
  29 +</body>
  30 +</html>
0 31 \ No newline at end of file
... ...
resource/img/arrow-down.png 0 → 100644

168 Bytes

resource/img/arrow-up.png 0 → 100644

165 Bytes

resource/img/circle-icon.png 0 → 100644

234 Bytes

resource/img/commited-icon-1.png 0 → 100644

441 Bytes

resource/img/commited-icon-2.png 0 → 100644

408 Bytes

resource/img/commited-icon-3.png 0 → 100644

422 Bytes

resource/img/commited-icon-4.png 0 → 100644

472 Bytes

resource/img/commited-icon-5.png 0 → 100644

440 Bytes

resource/img/commited-icon-6.png 0 → 100644

418 Bytes

resource/img/commited-icon-7.png 0 → 100644

397 Bytes

resource/img/dataicon.png 0 → 100644

326 Bytes

resource/img/login-bg.png 0 → 100644

295 KB

resource/img/login-btn.png 0 → 100644

2.41 KB

resource/img/nodata-icon.png 0 → 100644

45.5 KB

resource/img/person-cion.png 0 → 100644

366 Bytes

resource/img/search-btn.png 0 → 100644

2.05 KB

resource/img/time-opr-area.png 0 → 100644

1.82 KB

resource/img/workquery-card-allcounter.png 0 → 100644

2.6 KB

resource/img/workquery-card-commitedcounter.png 0 → 100644

3.23 KB

resource/img/workquery-card-nocommitedcounter.png 0 → 100644

2.92 KB

resource/lib/bootstrap-daterangepicker/daterangepicker.css 0 → 100755
  1 +.daterangepicker {
  2 + position: absolute;
  3 + color: inherit;
  4 + background: #fff;
  5 + border-radius: 4px;
  6 + width: 278px;
  7 + padding: 4px;
  8 + margin-top: 1px;
  9 + top: 100px;
  10 + left: 20px;
  11 + /* Calendars */ }
  12 + .daterangepicker:before, .daterangepicker:after {
  13 + position: absolute;
  14 + display: inline-block;
  15 + border-bottom-color: rgba(0, 0, 0, 0.2);
  16 + content: ''; }
  17 + .daterangepicker:before {
  18 + top: -7px;
  19 + border-right: 7px solid transparent;
  20 + border-left: 7px solid transparent;
  21 + border-bottom: 7px solid #ccc; }
  22 + .daterangepicker:after {
  23 + top: -6px;
  24 + border-right: 6px solid transparent;
  25 + border-bottom: 6px solid #fff;
  26 + border-left: 6px solid transparent; }
  27 + .daterangepicker.opensleft:before {
  28 + right: 9px; }
  29 + .daterangepicker.opensleft:after {
  30 + right: 10px; }
  31 + .daterangepicker.openscenter:before {
  32 + left: 0;
  33 + right: 0;
  34 + width: 0;
  35 + margin-left: auto;
  36 + margin-right: auto; }
  37 + .daterangepicker.openscenter:after {
  38 + left: 0;
  39 + right: 0;
  40 + width: 0;
  41 + margin-left: auto;
  42 + margin-right: auto; }
  43 + .daterangepicker.opensright:before {
  44 + left: 9px; }
  45 + .daterangepicker.opensright:after {
  46 + left: 10px; }
  47 + .daterangepicker.dropup {
  48 + margin-top: -5px; }
  49 + .daterangepicker.dropup:before {
  50 + top: initial;
  51 + bottom: -7px;
  52 + border-bottom: initial;
  53 + border-top: 7px solid #ccc; }
  54 + .daterangepicker.dropup:after {
  55 + top: initial;
  56 + bottom: -6px;
  57 + border-bottom: initial;
  58 + border-top: 6px solid #fff; }
  59 + .daterangepicker.dropdown-menu {
  60 + max-width: none;
  61 + z-index: 3001; }
  62 + .daterangepicker.single .ranges, .daterangepicker.single .calendar {
  63 + float: none; }
  64 + .daterangepicker.show-calendar .calendar {
  65 + display: block; }
  66 + .daterangepicker .calendar {
  67 + display: none;
  68 + max-width: 270px;
  69 + margin: 4px; }
  70 + .daterangepicker .calendar.single .calendar-table {
  71 + border: none; }
  72 + .daterangepicker .calendar th, .daterangepicker .calendar td {
  73 + white-space: nowrap;
  74 + text-align: center;
  75 + min-width: 32px; }
  76 + .daterangepicker .calendar-table {
  77 + border: 1px solid #fff;
  78 + padding: 4px;
  79 + border-radius: 4px;
  80 + background: #fff; }
  81 + .daterangepicker table {
  82 + width: 100%;
  83 + margin: 0; }
  84 + .daterangepicker td, .daterangepicker th {
  85 + text-align: center;
  86 + width: 20px;
  87 + height: 20px;
  88 + border-radius: 4px;
  89 + border: 1px solid transparent;
  90 + white-space: nowrap;
  91 + cursor: pointer; }
  92 + .daterangepicker td.available:hover, .daterangepicker th.available:hover {
  93 + background: #eee; }
  94 + .daterangepicker td.week, .daterangepicker th.week {
  95 + font-size: 80%;
  96 + color: #ccc; }
  97 + .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
  98 + background-color: #fff;
  99 + border-color: transparent;
  100 + color: #999; }
  101 + .daterangepicker td.in-range {
  102 + background-color: #ebf4f8;
  103 + border-color: transparent;
  104 + color: #000;
  105 + border-radius: 0; }
  106 + .daterangepicker td.start-date {
  107 + border-radius: 4px 0 0 4px; }
  108 + .daterangepicker td.end-date {
  109 + border-radius: 0 4px 4px 0; }
  110 + .daterangepicker td.start-date.end-date {
  111 + border-radius: 4px; }
  112 + .daterangepicker td.active, .daterangepicker td.active:hover {
  113 + background-color: #357ebd;
  114 + border-color: transparent;
  115 + color: #fff; }
  116 + .daterangepicker th.month {
  117 + width: auto; }
  118 + .daterangepicker td.disabled, .daterangepicker option.disabled {
  119 + color: #999;
  120 + cursor: not-allowed;
  121 + text-decoration: line-through; }
  122 + .daterangepicker select.monthselect, .daterangepicker select.yearselect {
  123 + font-size: 12px;
  124 + padding: 1px;
  125 + height: auto;
  126 + margin: 0;
  127 + cursor: default; }
  128 + .daterangepicker select.monthselect {
  129 + margin-right: 2%;
  130 + width: 56%; }
  131 + .daterangepicker select.yearselect {
  132 + width: 40%; }
  133 + .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
  134 + width: 50px;
  135 + margin-bottom: 0; }
  136 + .daterangepicker .input-mini {
  137 + border: 1px solid #ccc;
  138 + border-radius: 4px;
  139 + color: #555;
  140 + height: 30px;
  141 + line-height: 30px;
  142 + display: block;
  143 + vertical-align: middle;
  144 + margin: 0 0 5px 0;
  145 + padding: 0 6px 0 28px;
  146 + width: 100%; }
  147 + .daterangepicker .input-mini.active {
  148 + border: 1px solid #08c;
  149 + border-radius: 4px; }
  150 + .daterangepicker .daterangepicker_input {
  151 + position: relative; }
  152 + .daterangepicker .daterangepicker_input i {
  153 + position: absolute;
  154 + left: 8px;
  155 + top: 8px; }
  156 + .daterangepicker .calendar-time {
  157 + text-align: center;
  158 + margin: 5px auto;
  159 + line-height: 30px;
  160 + position: relative;
  161 + padding-left: 28px; }
  162 + .daterangepicker .calendar-time select.disabled {
  163 + color: #ccc;
  164 + cursor: not-allowed; }
  165 +
  166 +.ranges {
  167 + font-size: 11px;
  168 + float: none;
  169 + margin: 4px;
  170 + text-align: left; }
  171 + .ranges ul {
  172 + list-style: none;
  173 + margin: 0 auto;
  174 + padding: 0;
  175 + width: 100%; }
  176 + .ranges li {
  177 + font-size: 13px;
  178 + background: #f5f5f5;
  179 + border: 1px solid #f5f5f5;
  180 + border-radius: 4px;
  181 + color: #08c;
  182 + padding: 3px 12px;
  183 + margin-bottom: 8px;
  184 + cursor: pointer; }
  185 + .ranges li:hover {
  186 + background: #08c;
  187 + border: 1px solid #08c;
  188 + color: #fff; }
  189 + .ranges li.active {
  190 + background: #08c;
  191 + border: 1px solid #08c;
  192 + color: #fff; }
  193 +
  194 +/* Larger Screen Styling */
  195 +@media (min-width: 564px) {
  196 + .daterangepicker {
  197 + width: auto; }
  198 + .daterangepicker .ranges ul {
  199 + width: 160px; }
  200 + .daterangepicker.single .ranges ul {
  201 + width: 100%; }
  202 + .daterangepicker.single .calendar.left {
  203 + clear: none; }
  204 + .daterangepicker.single .ranges, .daterangepicker.single .calendar {
  205 + float: left; }
  206 + .daterangepicker .calendar.left {
  207 + clear: left;
  208 + margin-right: 0; }
  209 + .daterangepicker .calendar.left .calendar-table {
  210 + border-right: none;
  211 + border-top-right-radius: 0;
  212 + border-bottom-right-radius: 0; }
  213 + .daterangepicker .calendar.right {
  214 + margin-left: 0; }
  215 + .daterangepicker .calendar.right .calendar-table {
  216 + border-left: none;
  217 + border-top-left-radius: 0;
  218 + border-bottom-left-radius: 0; }
  219 + .daterangepicker .left .daterangepicker_input {
  220 + padding-right: 12px; }
  221 + .daterangepicker .calendar.left .calendar-table {
  222 + padding-right: 12px; }
  223 + .daterangepicker .ranges, .daterangepicker .calendar {
  224 + float: left; } }
  225 +
  226 +@media (min-width: 730px) {
  227 + .daterangepicker .ranges {
  228 + width: auto;
  229 + float: left; }
  230 + .daterangepicker .calendar.left {
  231 + clear: none; } }
  232 +
... ...
resource/lib/bootstrap-daterangepicker/daterangepicker.js 0 → 100755
  1 +/**
  2 +* @version: 2.1.19
  3 +* @author: Dan Grossman http://www.dangrossman.info/
  4 +* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.
  5 +* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
  6 +* @website: https://www.improvely.com/
  7 +*/
  8 +
  9 +(function(root, factory) {
  10 +
  11 + if (typeof define === 'function' && define.amd) {
  12 + define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) {
  13 + root.daterangepicker = factory(root, exports, momentjs, $);
  14 + });
  15 +
  16 + } else if (typeof exports !== 'undefined') {
  17 + var momentjs = require('moment');
  18 + var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; //isomorphic issue
  19 + if (!jQuery) {
  20 + try {
  21 + jQuery = require('jquery');
  22 + if (!jQuery.fn) jQuery.fn = {}; //isomorphic issue
  23 + } catch (err) {
  24 + if (!jQuery) throw new Error('jQuery dependency not found');
  25 + }
  26 + }
  27 +
  28 + factory(root, exports, momentjs, jQuery);
  29 +
  30 + // Finally, as a browser global.
  31 + } else {
  32 + root.daterangepicker = factory(root, {}, root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$));
  33 + }
  34 +
  35 +}(this || {}, function(root, daterangepicker, moment, $) { // 'this' doesn't exist on a server
  36 +
  37 + var DateRangePicker = function(element, options, cb) {
  38 +
  39 + //default settings for options
  40 + this.parentEl = 'body';
  41 + this.element = $(element);
  42 + this.startDate = moment().startOf('day');
  43 + this.endDate = moment().endOf('day');
  44 + this.minDate = false;
  45 + this.maxDate = false;
  46 + this.dateLimit = false;
  47 + this.autoApply = false;
  48 + this.singleDatePicker = false;
  49 + this.showDropdowns = false;
  50 + this.showWeekNumbers = false;
  51 + this.showISOWeekNumbers = false;
  52 + this.timePicker = false;
  53 + this.timePicker24Hour = false;
  54 + this.timePickerIncrement = 1;
  55 + this.timePickerSeconds = false;
  56 + this.linkedCalendars = true;
  57 + this.autoUpdateInput = true;
  58 + this.alwaysShowCalendars = false;
  59 + this.ranges = {};
  60 +
  61 + this.opens = 'right';
  62 + if (this.element.hasClass('pull-right'))
  63 + this.opens = 'left';
  64 +
  65 + this.drops = 'down';
  66 + if (this.element.hasClass('dropup'))
  67 + this.drops = 'up';
  68 +
  69 + this.buttonClasses = 'btn btn-sm';
  70 + this.applyClass = 'btn-success';
  71 + this.cancelClass = 'btn-default';
  72 +
  73 + this.locale = {
  74 + format: 'YYYY-MM-DD',
  75 + separator: ' - ',
  76 + applyLabel: '确定',
  77 + cancelLabel: '取消',
  78 + weekLabel: 'W',
  79 + customRangeLabel: '自定义',
  80 + daysOfWeek: moment.weekdaysMin(),
  81 + monthNames: moment.monthsShort(),
  82 + firstDay: moment.localeData().firstDayOfWeek()
  83 + };
  84 +
  85 + this.callback = function() { };
  86 +
  87 + //some state information
  88 + this.isShowing = false;
  89 + this.leftCalendar = {};
  90 + this.rightCalendar = {};
  91 +
  92 + //custom options from user
  93 + if (typeof options !== 'object' || options === null)
  94 + options = {};
  95 +
  96 + //allow setting options with data attributes
  97 + //data-api options will be overwritten with custom javascript options
  98 + options = $.extend(this.element.data(), options);
  99 +
  100 + //html template for the picker UI
  101 + if (typeof options.template !== 'string' && !(options.template instanceof $))
  102 + options.template = '<div class="daterangepicker dropdown-menu">' +
  103 + '<div class="calendar left">' +
  104 + '<div class="daterangepicker_input">' +
  105 + '<input class="input-mini" type="text" name="daterangepicker_start" value="" />' +
  106 + '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
  107 + '<div class="calendar-time">' +
  108 + '<div></div>' +
  109 + '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
  110 + '</div>' +
  111 + '</div>' +
  112 + '<div class="calendar-table"></div>' +
  113 + '</div>' +
  114 + '<div class="calendar right">' +
  115 + '<div class="daterangepicker_input">' +
  116 + '<input class="input-mini" type="text" name="daterangepicker_end" value="" />' +
  117 + '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
  118 + '<div class="calendar-time">' +
  119 + '<div></div>' +
  120 + '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
  121 + '</div>' +
  122 + '</div>' +
  123 + '<div class="calendar-table"></div>' +
  124 + '</div>' +
  125 + '<div class="ranges">' +
  126 + '<div class="range_inputs">' +
  127 + '<button class="applyBtn" disabled="disabled" type="button"></button> ' +
  128 + '<button class="cancelBtn" type="button"></button>' +
  129 + '</div>' +
  130 + '</div>' +
  131 + '</div>';
  132 +
  133 + this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
  134 + this.container = $(options.template).appendTo(this.parentEl);
  135 +
  136 + //
  137 + // handle all the possible options overriding defaults
  138 + //
  139 +
  140 + if (typeof options.locale === 'object') {
  141 +
  142 + if (typeof options.locale.format === 'string')
  143 + this.locale.format = options.locale.format;
  144 +
  145 + if (typeof options.locale.separator === 'string')
  146 + this.locale.separator = options.locale.separator;
  147 +
  148 + if (typeof options.locale.daysOfWeek === 'object')
  149 + this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
  150 +
  151 + if (typeof options.locale.monthNames === 'object')
  152 + this.locale.monthNames = options.locale.monthNames.slice();
  153 +
  154 + if (typeof options.locale.firstDay === 'number')
  155 + this.locale.firstDay = options.locale.firstDay;
  156 +
  157 + if (typeof options.locale.applyLabel === 'string')
  158 + this.locale.applyLabel = options.locale.applyLabel;
  159 +
  160 + if (typeof options.locale.cancelLabel === 'string')
  161 + this.locale.cancelLabel = options.locale.cancelLabel;
  162 +
  163 + if (typeof options.locale.weekLabel === 'string')
  164 + this.locale.weekLabel = options.locale.weekLabel;
  165 +
  166 + if (typeof options.locale.customRangeLabel === 'string')
  167 + this.locale.customRangeLabel = options.locale.customRangeLabel;
  168 +
  169 + }
  170 +
  171 + if (typeof options.startDate === 'string')
  172 + this.startDate = moment(options.startDate, this.locale.format);
  173 +
  174 + if (typeof options.endDate === 'string')
  175 + this.endDate = moment(options.endDate, this.locale.format);
  176 +
  177 + if (typeof options.minDate === 'string')
  178 + this.minDate = moment(options.minDate, this.locale.format);
  179 +
  180 + if (typeof options.maxDate === 'string')
  181 + this.maxDate = moment(options.maxDate, this.locale.format);
  182 +
  183 + if (typeof options.startDate === 'object')
  184 + this.startDate = moment(options.startDate);
  185 +
  186 + if (typeof options.endDate === 'object')
  187 + this.endDate = moment(options.endDate);
  188 +
  189 + if (typeof options.minDate === 'object')
  190 + this.minDate = moment(options.minDate);
  191 +
  192 + if (typeof options.maxDate === 'object')
  193 + this.maxDate = moment(options.maxDate);
  194 +
  195 + // sanity check for bad options
  196 + if (this.minDate && this.startDate.isBefore(this.minDate))
  197 + this.startDate = this.minDate.clone();
  198 +
  199 + // sanity check for bad options
  200 + if (this.maxDate && this.endDate.isAfter(this.maxDate))
  201 + this.endDate = this.maxDate.clone();
  202 +
  203 + if (typeof options.applyClass === 'string')
  204 + this.applyClass = options.applyClass;
  205 +
  206 + if (typeof options.cancelClass === 'string')
  207 + this.cancelClass = options.cancelClass;
  208 +
  209 + if (typeof options.dateLimit === 'object')
  210 + this.dateLimit = options.dateLimit;
  211 +
  212 + if (typeof options.opens === 'string')
  213 + this.opens = options.opens;
  214 +
  215 + if (typeof options.drops === 'string')
  216 + this.drops = options.drops;
  217 +
  218 + if (typeof options.showWeekNumbers === 'boolean')
  219 + this.showWeekNumbers = options.showWeekNumbers;
  220 +
  221 + if (typeof options.showISOWeekNumbers === 'boolean')
  222 + this.showISOWeekNumbers = options.showISOWeekNumbers;
  223 +
  224 + if (typeof options.buttonClasses === 'string')
  225 + this.buttonClasses = options.buttonClasses;
  226 +
  227 + if (typeof options.buttonClasses === 'object')
  228 + this.buttonClasses = options.buttonClasses.join(' ');
  229 +
  230 + if (typeof options.showDropdowns === 'boolean')
  231 + this.showDropdowns = options.showDropdowns;
  232 +
  233 + if (typeof options.singleDatePicker === 'boolean') {
  234 + this.singleDatePicker = options.singleDatePicker;
  235 + if (this.singleDatePicker)
  236 + this.endDate = this.startDate.clone();
  237 + }
  238 +
  239 + if (typeof options.timePicker === 'boolean')
  240 + this.timePicker = options.timePicker;
  241 +
  242 + if (typeof options.timePickerSeconds === 'boolean')
  243 + this.timePickerSeconds = options.timePickerSeconds;
  244 +
  245 + if (typeof options.timePickerIncrement === 'number')
  246 + this.timePickerIncrement = options.timePickerIncrement;
  247 +
  248 + if (typeof options.timePicker24Hour === 'boolean')
  249 + this.timePicker24Hour = options.timePicker24Hour;
  250 +
  251 + if (typeof options.autoApply === 'boolean')
  252 + this.autoApply = options.autoApply;
  253 +
  254 + if (typeof options.autoUpdateInput === 'boolean')
  255 + this.autoUpdateInput = options.autoUpdateInput;
  256 +
  257 + if (typeof options.linkedCalendars === 'boolean')
  258 + this.linkedCalendars = options.linkedCalendars;
  259 +
  260 + if (typeof options.isInvalidDate === 'function')
  261 + this.isInvalidDate = options.isInvalidDate;
  262 +
  263 + if (typeof options.alwaysShowCalendars === 'boolean')
  264 + this.alwaysShowCalendars = options.alwaysShowCalendars;
  265 +
  266 + // update day names order to firstDay
  267 + if (this.locale.firstDay != 0) {
  268 + var iterator = this.locale.firstDay;
  269 + while (iterator > 0) {
  270 + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());
  271 + iterator--;
  272 + }
  273 + }
  274 +
  275 + var start, end, range;
  276 +
  277 + //if no start/end dates set, check if an input element contains initial values
  278 + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
  279 + if ($(this.element).is('input[type=text]')) {
  280 + var val = $(this.element).val(),
  281 + split = val.split(this.locale.separator);
  282 +
  283 + start = end = null;
  284 +
  285 + if (split.length == 2) {
  286 + start = moment(split[0], this.locale.format);
  287 + end = moment(split[1], this.locale.format);
  288 + } else if (this.singleDatePicker && val !== "") {
  289 + start = moment(val, this.locale.format);
  290 + end = moment(val, this.locale.format);
  291 + }
  292 + if (start !== null && end !== null) {
  293 + this.setStartDate(start);
  294 + this.setEndDate(end);
  295 + }
  296 + }
  297 + }
  298 +
  299 + if (typeof options.ranges === 'object') {
  300 + for (range in options.ranges) {
  301 +
  302 + if (typeof options.ranges[range][0] === 'string')
  303 + start = moment(options.ranges[range][0], this.locale.format);
  304 + else
  305 + start = moment(options.ranges[range][0]);
  306 +
  307 + if (typeof options.ranges[range][1] === 'string')
  308 + end = moment(options.ranges[range][1], this.locale.format);
  309 + else
  310 + end = moment(options.ranges[range][1]);
  311 +
  312 + // If the start or end date exceed those allowed by the minDate or dateLimit
  313 + // options, shorten the range to the allowable period.
  314 + if (this.minDate && start.isBefore(this.minDate))
  315 + start = this.minDate.clone();
  316 +
  317 + var maxDate = this.maxDate;
  318 + if (this.dateLimit && start.clone().add(this.dateLimit).isAfter(maxDate))
  319 + maxDate = start.clone().add(this.dateLimit);
  320 + if (maxDate && end.isAfter(maxDate))
  321 + end = maxDate.clone();
  322 +
  323 + // If the end of the range is before the minimum or the start of the range is
  324 + // after the maximum, don't display this range option at all.
  325 + if ((this.minDate && end.isBefore(this.minDate)) || (maxDate && start.isAfter(maxDate)))
  326 + continue;
  327 +
  328 + //Support unicode chars in the range names.
  329 + var elem = document.createElement('textarea');
  330 + elem.innerHTML = range;
  331 + var rangeHtml = elem.value;
  332 +
  333 + this.ranges[rangeHtml] = [start, end];
  334 + }
  335 +
  336 + var list = '<ul>';
  337 + for (range in this.ranges) {
  338 + list += '<li>' + range + '</li>';
  339 + }
  340 + list += '<li>' + this.locale.customRangeLabel + '</li>';
  341 + list += '</ul>';
  342 + this.container.find('.ranges').prepend(list);
  343 + }
  344 +
  345 + if (typeof cb === 'function') {
  346 + this.callback = cb;
  347 + }
  348 +
  349 + if (!this.timePicker) {
  350 + this.startDate = this.startDate.startOf('day');
  351 + this.endDate = this.endDate.endOf('day');
  352 + this.container.find('.calendar-time').hide();
  353 + }
  354 +
  355 + //can't be used together for now
  356 + if (this.timePicker && this.autoApply)
  357 + this.autoApply = false;
  358 +
  359 + if (this.autoApply && typeof options.ranges !== 'object') {
  360 + this.container.find('.ranges').hide();
  361 + } else if (this.autoApply) {
  362 + this.container.find('.applyBtn, .cancelBtn').addClass('hide');
  363 + }
  364 +
  365 + if (this.singleDatePicker) {
  366 + this.container.addClass('single');
  367 + this.container.find('.calendar.left').addClass('single');
  368 + this.container.find('.calendar.left').show();
  369 + this.container.find('.calendar.right').hide();
  370 + this.container.find('.daterangepicker_input input, .daterangepicker_input i').hide();
  371 + if (!this.timePicker) {
  372 + this.container.find('.ranges').hide();
  373 + }
  374 + }
  375 +
  376 + if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {
  377 + this.container.addClass('show-calendar');
  378 + }
  379 +
  380 + this.container.addClass('opens' + this.opens);
  381 +
  382 + //swap the position of the predefined ranges if opens right
  383 + if (typeof options.ranges !== 'undefined' && this.opens == 'right') {
  384 + var ranges = this.container.find('.ranges');
  385 + var html = ranges.clone();
  386 + ranges.remove();
  387 + this.container.find('.calendar.left').parent().prepend(html);
  388 + }
  389 +
  390 + //apply CSS classes and labels to buttons
  391 + this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);
  392 + if (this.applyClass.length)
  393 + this.container.find('.applyBtn').addClass(this.applyClass);
  394 + if (this.cancelClass.length)
  395 + this.container.find('.cancelBtn').addClass(this.cancelClass);
  396 + this.container.find('.applyBtn').html(this.locale.applyLabel);
  397 + this.container.find('.cancelBtn').html(this.locale.cancelLabel);
  398 +
  399 + //
  400 + // event listeners
  401 + //
  402 +
  403 + this.container.find('.calendar')
  404 + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
  405 + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
  406 + .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
  407 + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
  408 + .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))
  409 + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))
  410 + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))
  411 + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))
  412 + .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))
  413 + //.on('keyup.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this))
  414 + .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));
  415 +
  416 + this.container.find('.ranges')
  417 + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
  418 + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))
  419 + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
  420 + .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))
  421 + .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));
  422 +
  423 + if (this.element.is('input')) {
  424 + this.element.on({
  425 + 'click.daterangepicker': $.proxy(this.show, this),
  426 + 'focus.daterangepicker': $.proxy(this.show, this),
  427 + 'keyup.daterangepicker': $.proxy(this.elementChanged, this),
  428 + 'keydown.daterangepicker': $.proxy(this.keydown, this)
  429 + });
  430 + } else {
  431 + this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
  432 + }
  433 +
  434 + //
  435 + // if attached to a text input, set the initial value
  436 + //
  437 +
  438 + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
  439 + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
  440 + this.element.trigger('change');
  441 + } else if (this.element.is('input') && this.autoUpdateInput) {
  442 + this.element.val(this.startDate.format(this.locale.format));
  443 + this.element.trigger('change');
  444 + }
  445 +
  446 + };
  447 +
  448 + DateRangePicker.prototype = {
  449 +
  450 + constructor: DateRangePicker,
  451 +
  452 + setStartDate: function(startDate) {
  453 + if (typeof startDate === 'string')
  454 + this.startDate = moment(startDate, this.locale.format);
  455 +
  456 + if (typeof startDate === 'object')
  457 + this.startDate = moment(startDate);
  458 +
  459 + if (!this.timePicker)
  460 + this.startDate = this.startDate.startOf('day');
  461 +
  462 + if (this.timePicker && this.timePickerIncrement)
  463 + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
  464 +
  465 + if (this.minDate && this.startDate.isBefore(this.minDate))
  466 + this.startDate = this.minDate;
  467 +
  468 + if (this.maxDate && this.startDate.isAfter(this.maxDate))
  469 + this.startDate = this.maxDate;
  470 +
  471 + if (!this.isShowing)
  472 + this.updateElement();
  473 +
  474 + this.updateMonthsInView();
  475 + },
  476 +
  477 + setEndDate: function(endDate) {
  478 + if (typeof endDate === 'string')
  479 + this.endDate = moment(endDate, this.locale.format);
  480 +
  481 + if (typeof endDate === 'object')
  482 + this.endDate = moment(endDate);
  483 +
  484 + if (!this.timePicker)
  485 + this.endDate = this.endDate.endOf('day');
  486 +
  487 + if (this.timePicker && this.timePickerIncrement)
  488 + this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
  489 +
  490 + if (this.endDate.isBefore(this.startDate))
  491 + this.endDate = this.startDate.clone();
  492 +
  493 + if (this.maxDate && this.endDate.isAfter(this.maxDate))
  494 + this.endDate = this.maxDate;
  495 +
  496 + if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))
  497 + this.endDate = this.startDate.clone().add(this.dateLimit);
  498 +
  499 + this.previousRightTime = this.endDate.clone();
  500 +
  501 + if (!this.isShowing)
  502 + this.updateElement();
  503 +
  504 + this.updateMonthsInView();
  505 + },
  506 +
  507 + isInvalidDate: function() {
  508 + return false;
  509 + },
  510 +
  511 + updateView: function() {
  512 + if (this.timePicker) {
  513 + this.renderTimePicker('left');
  514 + this.renderTimePicker('right');
  515 + if (!this.endDate) {
  516 + this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');
  517 + } else {
  518 + this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');
  519 + }
  520 + }
  521 + if (this.endDate) {
  522 + this.container.find('input[name="daterangepicker_end"]').removeClass('active');
  523 + this.container.find('input[name="daterangepicker_start"]').addClass('active');
  524 + } else {
  525 + this.container.find('input[name="daterangepicker_end"]').addClass('active');
  526 + this.container.find('input[name="daterangepicker_start"]').removeClass('active');
  527 + }
  528 + this.updateMonthsInView();
  529 + this.updateCalendars();
  530 + this.updateFormInputs();
  531 + },
  532 +
  533 + updateMonthsInView: function() {
  534 + if (this.endDate) {
  535 +
  536 + //if both dates are visible already, do nothing
  537 + if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&
  538 + (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
  539 + &&
  540 + (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
  541 + ) {
  542 + return;
  543 + }
  544 +
  545 + this.leftCalendar.month = this.startDate.clone().date(2);
  546 + if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {
  547 + this.rightCalendar.month = this.endDate.clone().date(2);
  548 + } else {
  549 + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
  550 + }
  551 +
  552 + } else {
  553 + if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {
  554 + this.leftCalendar.month = this.startDate.clone().date(2);
  555 + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
  556 + }
  557 + }
  558 + },
  559 +
  560 + updateCalendars: function() {
  561 +
  562 + if (this.timePicker) {
  563 + var hour, minute, second;
  564 + if (this.endDate) {
  565 + hour = parseInt(this.container.find('.left .hourselect').val(), 10);
  566 + minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
  567 + second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
  568 + if (!this.timePicker24Hour) {
  569 + var ampm = this.container.find('.left .ampmselect').val();
  570 + if (ampm === 'PM' && hour < 12)
  571 + hour += 12;
  572 + if (ampm === 'AM' && hour === 12)
  573 + hour = 0;
  574 + }
  575 + } else {
  576 + hour = parseInt(this.container.find('.right .hourselect').val(), 10);
  577 + minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
  578 + second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
  579 + if (!this.timePicker24Hour) {
  580 + var ampm = this.container.find('.right .ampmselect').val();
  581 + if (ampm === 'PM' && hour < 12)
  582 + hour += 12;
  583 + if (ampm === 'AM' && hour === 12)
  584 + hour = 0;
  585 + }
  586 + }
  587 + this.leftCalendar.month.hour(hour).minute(minute).second(second);
  588 + this.rightCalendar.month.hour(hour).minute(minute).second(second);
  589 + }
  590 +
  591 + this.renderCalendar('left');
  592 + this.renderCalendar('right');
  593 +
  594 + //highlight any predefined range matching the current start and end dates
  595 + this.container.find('.ranges li').removeClass('active');
  596 + if (this.endDate == null) return;
  597 +
  598 + this.calculateChosenLabel();
  599 + },
  600 +
  601 + renderCalendar: function(side) {
  602 +
  603 + //
  604 + // Build the matrix of dates that will populate the calendar
  605 + //
  606 +
  607 + var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;
  608 + var month = calendar.month.month();
  609 + var year = calendar.month.year();
  610 + var hour = calendar.month.hour();
  611 + var minute = calendar.month.minute();
  612 + var second = calendar.month.second();
  613 + var daysInMonth = moment([year, month]).daysInMonth();
  614 + var firstDay = moment([year, month, 1]);
  615 + var lastDay = moment([year, month, daysInMonth]);
  616 + var lastMonth = moment(firstDay).subtract(1, 'month').month();
  617 + var lastYear = moment(firstDay).subtract(1, 'month').year();
  618 + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();
  619 + var dayOfWeek = firstDay.day();
  620 +
  621 + //initialize a 6 rows x 7 columns array for the calendar
  622 + var calendar = [];
  623 + calendar.firstDay = firstDay;
  624 + calendar.lastDay = lastDay;
  625 +
  626 + for (var i = 0; i < 6; i++) {
  627 + calendar[i] = [];
  628 + }
  629 +
  630 + //populate the calendar with date objects
  631 + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;
  632 + if (startDay > daysInLastMonth)
  633 + startDay -= 7;
  634 +
  635 + if (dayOfWeek == this.locale.firstDay)
  636 + startDay = daysInLastMonth - 6;
  637 +
  638 + var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);
  639 +
  640 + var col, row;
  641 + for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {
  642 + if (i > 0 && col % 7 === 0) {
  643 + col = 0;
  644 + row++;
  645 + }
  646 + calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);
  647 + curDate.hour(12);
  648 +
  649 + if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {
  650 + calendar[row][col] = this.minDate.clone();
  651 + }
  652 +
  653 + if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {
  654 + calendar[row][col] = this.maxDate.clone();
  655 + }
  656 +
  657 + }
  658 +
  659 + //make the calendar object available to hoverDate/clickDate
  660 + if (side == 'left') {
  661 + this.leftCalendar.calendar = calendar;
  662 + } else {
  663 + this.rightCalendar.calendar = calendar;
  664 + }
  665 +
  666 + //
  667 + // Display the calendar
  668 + //
  669 +
  670 + var minDate = side == 'left' ? this.minDate : this.startDate;
  671 + var maxDate = this.maxDate;
  672 + var selected = side == 'left' ? this.startDate : this.endDate;
  673 +
  674 + var html = '<table class="table-condensed">';
  675 + html += '<thead>';
  676 + html += '<tr>';
  677 +
  678 + // add empty cell for week number
  679 + if (this.showWeekNumbers || this.showISOWeekNumbers)
  680 + html += '<th></th>';
  681 +
  682 + if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {
  683 + html += '<th class="prev available"><i class="fa fa-chevron-left glyphicon glyphicon-chevron-left"></i></th>';
  684 + } else {
  685 + html += '<th></th>';
  686 + }
  687 +
  688 + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY");
  689 +
  690 + if (this.showDropdowns) {
  691 + var currentMonth = calendar[1][1].month();
  692 + var currentYear = calendar[1][1].year();
  693 + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);
  694 + var minYear = (minDate && minDate.year()) || (currentYear - 50);
  695 + var inMinYear = currentYear == minYear;
  696 + var inMaxYear = currentYear == maxYear;
  697 +
  698 + var monthHtml = '<select class="monthselect">';
  699 + for (var m = 0; m < 12; m++) {
  700 + if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) {
  701 + monthHtml += "<option value='" + m + "'" +
  702 + (m === currentMonth ? " selected='selected'" : "") +
  703 + ">" + this.locale.monthNames[m] + "</option>";
  704 + } else {
  705 + monthHtml += "<option value='" + m + "'" +
  706 + (m === currentMonth ? " selected='selected'" : "") +
  707 + " disabled='disabled'>" + this.locale.monthNames[m] + "</option>";
  708 + }
  709 + }
  710 + monthHtml += "</select>";
  711 +
  712 + var yearHtml = '<select class="yearselect">';
  713 + for (var y = minYear; y <= maxYear; y++) {
  714 + yearHtml += '<option value="' + y + '"' +
  715 + (y === currentYear ? ' selected="selected"' : '') +
  716 + '>' + y + '</option>';
  717 + }
  718 + yearHtml += '</select>';
  719 +
  720 + dateHtml = monthHtml + yearHtml;
  721 + }
  722 +
  723 + html += '<th colspan="5" class="month">' + dateHtml + '</th>';
  724 + if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {
  725 + html += '<th class="next available"><i class="fa fa-chevron-right glyphicon glyphicon-chevron-right"></i></th>';
  726 + } else {
  727 + html += '<th></th>';
  728 + }
  729 +
  730 + html += '</tr>';
  731 + html += '<tr>';
  732 +
  733 + // add week number label
  734 + if (this.showWeekNumbers || this.showISOWeekNumbers)
  735 + html += '<th class="week">' + this.locale.weekLabel + '</th>';
  736 +
  737 + $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {
  738 + html += '<th>' + dayOfWeek + '</th>';
  739 + });
  740 +
  741 + html += '</tr>';
  742 + html += '</thead>';
  743 + html += '<tbody>';
  744 +
  745 + //adjust maxDate to reflect the dateLimit setting in order to
  746 + //grey out end dates beyond the dateLimit
  747 + if (this.endDate == null && this.dateLimit) {
  748 + var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');
  749 + if (!maxDate || maxLimit.isBefore(maxDate)) {
  750 + maxDate = maxLimit;
  751 + }
  752 + }
  753 +
  754 + for (var row = 0; row < 6; row++) {
  755 + html += '<tr>';
  756 +
  757 + // add week number
  758 + if (this.showWeekNumbers)
  759 + html += '<td class="week">' + calendar[row][0].week() + '</td>';
  760 + else if (this.showISOWeekNumbers)
  761 + html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>';
  762 +
  763 + for (var col = 0; col < 7; col++) {
  764 +
  765 + var classes = [];
  766 +
  767 + //highlight today's date
  768 + if (calendar[row][col].isSame(new Date(), "day"))
  769 + classes.push('today');
  770 +
  771 + //highlight weekends
  772 + if (calendar[row][col].isoWeekday() > 5)
  773 + classes.push('weekend');
  774 +
  775 + //grey out the dates in other months displayed at beginning and end of this calendar
  776 + if (calendar[row][col].month() != calendar[1][1].month())
  777 + classes.push('off');
  778 +
  779 + //don't allow selection of dates before the minimum date
  780 + if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))
  781 + classes.push('off', 'disabled');
  782 +
  783 + //don't allow selection of dates after the maximum date
  784 + if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))
  785 + classes.push('off', 'disabled');
  786 +
  787 + //don't allow selection of date if a custom function decides it's invalid
  788 + if (this.isInvalidDate(calendar[row][col]))
  789 + classes.push('off', 'disabled');
  790 +
  791 + //highlight the currently selected start date
  792 + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))
  793 + classes.push('active', 'start-date');
  794 +
  795 + //highlight the currently selected end date
  796 + if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))
  797 + classes.push('active', 'end-date');
  798 +
  799 + //highlight dates in-between the selected dates
  800 + if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)
  801 + classes.push('in-range');
  802 +
  803 + var cname = '', disabled = false;
  804 + for (var i = 0; i < classes.length; i++) {
  805 + cname += classes[i] + ' ';
  806 + if (classes[i] == 'disabled')
  807 + disabled = true;
  808 + }
  809 + if (!disabled)
  810 + cname += 'available';
  811 +
  812 + html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>';
  813 +
  814 + }
  815 + html += '</tr>';
  816 + }
  817 +
  818 + html += '</tbody>';
  819 + html += '</table>';
  820 +
  821 + this.container.find('.calendar.' + side + ' .calendar-table').html(html);
  822 +
  823 + },
  824 +
  825 + renderTimePicker: function(side) {
  826 +
  827 + var html, selected, minDate, maxDate = this.maxDate;
  828 +
  829 + if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))
  830 + maxDate = this.startDate.clone().add(this.dateLimit);
  831 +
  832 + if (side == 'left') {
  833 + selected = this.startDate.clone();
  834 + minDate = this.minDate;
  835 + } else if (side == 'right') {
  836 + selected = this.endDate ? this.endDate.clone() : this.previousRightTime.clone();
  837 + minDate = this.startDate;
  838 +
  839 + //Preserve the time already selected
  840 + var timeSelector = this.container.find('.calendar.right .calendar-time div');
  841 + if (timeSelector.html() != '') {
  842 +
  843 + selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());
  844 + selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());
  845 + selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());
  846 +
  847 + if (!this.timePicker24Hour) {
  848 + var ampm = timeSelector.find('.ampmselect option:selected').val();
  849 + if (ampm === 'PM' && selected.hour() < 12)
  850 + selected.hour(selected.hour() + 12);
  851 + if (ampm === 'AM' && selected.hour() === 12)
  852 + selected.hour(0);
  853 + }
  854 +
  855 + if (selected.isBefore(this.startDate))
  856 + selected = this.startDate.clone();
  857 +
  858 + if (selected.isAfter(maxDate))
  859 + selected = maxDate.clone();
  860 +
  861 + }
  862 + }
  863 +
  864 + //
  865 + // hours
  866 + //
  867 +
  868 + html = '<select class="hourselect">';
  869 +
  870 + var start = this.timePicker24Hour ? 0 : 1;
  871 + var end = this.timePicker24Hour ? 23 : 12;
  872 +
  873 + for (var i = start; i <= end; i++) {
  874 + var i_in_24 = i;
  875 + if (!this.timePicker24Hour)
  876 + i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i);
  877 +
  878 + var time = selected.clone().hour(i_in_24);
  879 + var disabled = false;
  880 + if (minDate && time.minute(59).isBefore(minDate))
  881 + disabled = true;
  882 + if (maxDate && time.minute(0).isAfter(maxDate))
  883 + disabled = true;
  884 +
  885 + if (i_in_24 == selected.hour() && !disabled) {
  886 + html += '<option value="' + i + '" selected="selected">' + i + '</option>';
  887 + } else if (disabled) {
  888 + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>';
  889 + } else {
  890 + html += '<option value="' + i + '">' + i + '</option>';
  891 + }
  892 + }
  893 +
  894 + html += '</select> ';
  895 +
  896 + //
  897 + // minutes
  898 + //
  899 +
  900 + html += ': <select class="minuteselect">';
  901 +
  902 + for (var i = 0; i < 60; i += this.timePickerIncrement) {
  903 + var padded = i < 10 ? '0' + i : i;
  904 + var time = selected.clone().minute(i);
  905 +
  906 + var disabled = false;
  907 + if (minDate && time.second(59).isBefore(minDate))
  908 + disabled = true;
  909 + if (maxDate && time.second(0).isAfter(maxDate))
  910 + disabled = true;
  911 +
  912 + if (selected.minute() == i && !disabled) {
  913 + html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
  914 + } else if (disabled) {
  915 + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
  916 + } else {
  917 + html += '<option value="' + i + '">' + padded + '</option>';
  918 + }
  919 + }
  920 +
  921 + html += '</select> ';
  922 +
  923 + //
  924 + // seconds
  925 + //
  926 +
  927 + if (this.timePickerSeconds) {
  928 + html += ': <select class="secondselect">';
  929 +
  930 + for (var i = 0; i < 60; i++) {
  931 + var padded = i < 10 ? '0' + i : i;
  932 + var time = selected.clone().second(i);
  933 +
  934 + var disabled = false;
  935 + if (minDate && time.isBefore(minDate))
  936 + disabled = true;
  937 + if (maxDate && time.isAfter(maxDate))
  938 + disabled = true;
  939 +
  940 + if (selected.second() == i && !disabled) {
  941 + html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
  942 + } else if (disabled) {
  943 + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
  944 + } else {
  945 + html += '<option value="' + i + '">' + padded + '</option>';
  946 + }
  947 + }
  948 +
  949 + html += '</select> ';
  950 + }
  951 +
  952 + //
  953 + // AM/PM
  954 + //
  955 +
  956 + if (!this.timePicker24Hour) {
  957 + html += '<select class="ampmselect">';
  958 +
  959 + var am_html = '';
  960 + var pm_html = '';
  961 +
  962 + if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate))
  963 + am_html = ' disabled="disabled" class="disabled"';
  964 +
  965 + if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate))
  966 + pm_html = ' disabled="disabled" class="disabled"';
  967 +
  968 + if (selected.hour() >= 12) {
  969 + html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>';
  970 + } else {
  971 + html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>';
  972 + }
  973 +
  974 + html += '</select>';
  975 + }
  976 +
  977 + this.container.find('.calendar.' + side + ' .calendar-time div').html(html);
  978 +
  979 + },
  980 +
  981 + updateFormInputs: function() {
  982 +
  983 + //ignore mouse movements while an above-calendar text input has focus
  984 + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
  985 + return;
  986 +
  987 + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));
  988 + if (this.endDate)
  989 + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));
  990 +
  991 + if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {
  992 + this.container.find('button.applyBtn').removeAttr('disabled');
  993 + } else {
  994 + this.container.find('button.applyBtn').attr('disabled', 'disabled');
  995 + }
  996 +
  997 + },
  998 +
  999 + move: function() {
  1000 + var parentOffset = { top: 0, left: 0 },
  1001 + containerTop;
  1002 + var parentRightEdge = $(window).width();
  1003 + if (!this.parentEl.is('body')) {
  1004 + parentOffset = {
  1005 + top: this.parentEl.offset().top - this.parentEl.scrollTop(),
  1006 + left: this.parentEl.offset().left - this.parentEl.scrollLeft()
  1007 + };
  1008 + parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;
  1009 + }
  1010 +
  1011 + if (this.drops == 'up')
  1012 + containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
  1013 + else
  1014 + containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
  1015 + this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');
  1016 +
  1017 + if (this.opens == 'left') {
  1018 + this.container.css({
  1019 + top: containerTop,
  1020 + right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),
  1021 + left: 'auto'
  1022 + });
  1023 + if (this.container.offset().left < 0) {
  1024 + this.container.css({
  1025 + right: 'auto',
  1026 + left: 9
  1027 + });
  1028 + }
  1029 + } else if (this.opens == 'center') {
  1030 + this.container.css({
  1031 + top: containerTop,
  1032 + left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
  1033 + - this.container.outerWidth() / 2,
  1034 + right: 'auto'
  1035 + });
  1036 + if (this.container.offset().left < 0) {
  1037 + this.container.css({
  1038 + right: 'auto',
  1039 + left: 9
  1040 + });
  1041 + }
  1042 + } else {
  1043 + this.container.css({
  1044 + top: containerTop,
  1045 + left: this.element.offset().left - parentOffset.left,
  1046 + right: 'auto'
  1047 + });
  1048 + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {
  1049 + this.container.css({
  1050 + left: 'auto',
  1051 + right: 0
  1052 + });
  1053 + }
  1054 + }
  1055 + },
  1056 +
  1057 + show: function(e) {
  1058 + if (this.isShowing) return;
  1059 +
  1060 + // Create a click proxy that is private to this instance of datepicker, for unbinding
  1061 + this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
  1062 +
  1063 + // Bind global datepicker mousedown for hiding and
  1064 + $(document)
  1065 + .on('mousedown.daterangepicker', this._outsideClickProxy)
  1066 + // also support mobile devices
  1067 + .on('touchend.daterangepicker', this._outsideClickProxy)
  1068 + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
  1069 + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
  1070 + // and also close when focus changes to outside the picker (eg. tabbing between controls)
  1071 + .on('focusin.daterangepicker', this._outsideClickProxy);
  1072 +
  1073 + // Reposition the picker if the window is resized while it's open
  1074 + $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
  1075 +
  1076 + this.oldStartDate = this.startDate.clone();
  1077 + this.oldEndDate = this.endDate.clone();
  1078 + this.previousRightTime = this.endDate.clone();
  1079 +
  1080 + this.updateView();
  1081 + this.container.show();
  1082 + this.move();
  1083 + this.element.trigger('show.daterangepicker', this);
  1084 + this.isShowing = true;
  1085 + },
  1086 +
  1087 + hide: function(e) {
  1088 + if (!this.isShowing) return;
  1089 +
  1090 + //incomplete date selection, revert to last values
  1091 + if (!this.endDate) {
  1092 + this.startDate = this.oldStartDate.clone();
  1093 + this.endDate = this.oldEndDate.clone();
  1094 + }
  1095 +
  1096 + //if a new date range was selected, invoke the user callback function
  1097 + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
  1098 + this.callback(this.startDate, this.endDate, this.chosenLabel);
  1099 +
  1100 + //if picker is attached to a text input, update it
  1101 + this.updateElement();
  1102 +
  1103 + $(document).off('.daterangepicker');
  1104 + $(window).off('.daterangepicker');
  1105 + this.container.hide();
  1106 + this.element.trigger('hide.daterangepicker', this);
  1107 + this.isShowing = false;
  1108 + },
  1109 +
  1110 + toggle: function(e) {
  1111 + if (this.isShowing) {
  1112 + this.hide();
  1113 + } else {
  1114 + this.show();
  1115 + }
  1116 + },
  1117 +
  1118 + outsideClick: function(e) {
  1119 + var target = $(e.target);
  1120 + // if the page is clicked anywhere except within the daterangerpicker/button
  1121 + // itself then call this.hide()
  1122 + if (
  1123 + // ie modal dialog fix
  1124 + e.type == "focusin" ||
  1125 + target.closest(this.element).length ||
  1126 + target.closest(this.container).length ||
  1127 + target.closest('.calendar-table').length
  1128 + ) return;
  1129 + this.hide();
  1130 + },
  1131 +
  1132 + showCalendars: function() {
  1133 + this.container.addClass('show-calendar');
  1134 + this.move();
  1135 + this.element.trigger('showCalendar.daterangepicker', this);
  1136 + },
  1137 +
  1138 + hideCalendars: function() {
  1139 + this.container.removeClass('show-calendar');
  1140 + this.element.trigger('hideCalendar.daterangepicker', this);
  1141 + },
  1142 +
  1143 + hoverRange: function(e) {
  1144 +
  1145 + //ignore mouse movements while an above-calendar text input has focus
  1146 + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
  1147 + return;
  1148 +
  1149 + var label = e.target.innerHTML;
  1150 + if (label == this.locale.customRangeLabel) {
  1151 + this.updateView();
  1152 + } else {
  1153 + var dates = this.ranges[label];
  1154 + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));
  1155 + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));
  1156 + }
  1157 +
  1158 + },
  1159 +
  1160 + clickRange: function(e) {
  1161 + var label = e.target.innerHTML;
  1162 + this.chosenLabel = label;
  1163 + if (label == this.locale.customRangeLabel) {
  1164 + this.showCalendars();
  1165 + } else {
  1166 + var dates = this.ranges[label];
  1167 + this.startDate = dates[0];
  1168 + this.endDate = dates[1];
  1169 +
  1170 + if (!this.timePicker) {
  1171 + this.startDate.startOf('day');
  1172 + this.endDate.endOf('day');
  1173 + }
  1174 +
  1175 + if (!this.alwaysShowCalendars)
  1176 + this.hideCalendars();
  1177 + this.clickApply();
  1178 + }
  1179 + },
  1180 +
  1181 + clickPrev: function(e) {
  1182 + var cal = $(e.target).parents('.calendar');
  1183 + if (cal.hasClass('left')) {
  1184 + this.leftCalendar.month.subtract(1, 'month');
  1185 + if (this.linkedCalendars)
  1186 + this.rightCalendar.month.subtract(1, 'month');
  1187 + } else {
  1188 + this.rightCalendar.month.subtract(1, 'month');
  1189 + }
  1190 + this.updateCalendars();
  1191 + },
  1192 +
  1193 + clickNext: function(e) {
  1194 + var cal = $(e.target).parents('.calendar');
  1195 + if (cal.hasClass('left')) {
  1196 + this.leftCalendar.month.add(1, 'month');
  1197 + } else {
  1198 + this.rightCalendar.month.add(1, 'month');
  1199 + if (this.linkedCalendars)
  1200 + this.leftCalendar.month.add(1, 'month');
  1201 + }
  1202 + this.updateCalendars();
  1203 + },
  1204 +
  1205 + hoverDate: function(e) {
  1206 +
  1207 + //ignore mouse movements while an above-calendar text input has focus
  1208 + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
  1209 + return;
  1210 +
  1211 + //ignore dates that can't be selected
  1212 + if (!$(e.target).hasClass('available')) return;
  1213 +
  1214 + //have the text inputs above calendars reflect the date being hovered over
  1215 + var title = $(e.target).attr('data-title');
  1216 + var row = title.substr(1, 1);
  1217 + var col = title.substr(3, 1);
  1218 + var cal = $(e.target).parents('.calendar');
  1219 + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
  1220 +
  1221 + if (this.endDate) {
  1222 + this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));
  1223 + } else {
  1224 + this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));
  1225 + }
  1226 +
  1227 + //highlight the dates between the start date and the date being hovered as a potential end date
  1228 + var leftCalendar = this.leftCalendar;
  1229 + var rightCalendar = this.rightCalendar;
  1230 + var startDate = this.startDate;
  1231 + if (!this.endDate) {
  1232 + this.container.find('.calendar td').each(function(index, el) {
  1233 +
  1234 + //skip week numbers, only look at dates
  1235 + if ($(el).hasClass('week')) return;
  1236 +
  1237 + var title = $(el).attr('data-title');
  1238 + var row = title.substr(1, 1);
  1239 + var col = title.substr(3, 1);
  1240 + var cal = $(el).parents('.calendar');
  1241 + var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];
  1242 +
  1243 + if (dt.isAfter(startDate) && dt.isBefore(date)) {
  1244 + $(el).addClass('in-range');
  1245 + } else {
  1246 + $(el).removeClass('in-range');
  1247 + }
  1248 +
  1249 + });
  1250 + }
  1251 +
  1252 + },
  1253 +
  1254 + clickDate: function(e) {
  1255 +
  1256 + if (!$(e.target).hasClass('available')) return;
  1257 +
  1258 + var title = $(e.target).attr('data-title');
  1259 + var row = title.substr(1, 1);
  1260 + var col = title.substr(3, 1);
  1261 + var cal = $(e.target).parents('.calendar');
  1262 + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
  1263 +
  1264 + //
  1265 + // this function needs to do a few things:
  1266 + // * alternate between selecting a start and end date for the range,
  1267 + // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date
  1268 + // * if autoapply is enabled, and an end date was chosen, apply the selection
  1269 + // * if single date picker mode, and time picker isn't enabled, apply the selection immediately
  1270 + //
  1271 +
  1272 + if (this.endDate || date.isBefore(this.startDate, 'day')) {
  1273 + if (this.timePicker) {
  1274 + var hour = parseInt(this.container.find('.left .hourselect').val(), 10);
  1275 + if (!this.timePicker24Hour) {
  1276 + var ampm = this.container.find('.left .ampmselect').val();
  1277 + if (ampm === 'PM' && hour < 12)
  1278 + hour += 12;
  1279 + if (ampm === 'AM' && hour === 12)
  1280 + hour = 0;
  1281 + }
  1282 + var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
  1283 + var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
  1284 + date = date.clone().hour(hour).minute(minute).second(second);
  1285 + }
  1286 + this.endDate = null;
  1287 + this.setStartDate(date.clone());
  1288 + } else if (!this.endDate && date.isBefore(this.startDate)) {
  1289 + //special case: clicking the same date for start/end,
  1290 + //but the time of the end date is before the start date
  1291 + this.setEndDate(this.startDate.clone());
  1292 + } else {
  1293 + if (this.timePicker) {
  1294 + var hour = parseInt(this.container.find('.right .hourselect').val(), 10);
  1295 + if (!this.timePicker24Hour) {
  1296 + var ampm = this.container.find('.right .ampmselect').val();
  1297 + if (ampm === 'PM' && hour < 12)
  1298 + hour += 12;
  1299 + if (ampm === 'AM' && hour === 12)
  1300 + hour = 0;
  1301 + }
  1302 + var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
  1303 + var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
  1304 + date = date.clone().hour(hour).minute(minute).second(second);
  1305 + }
  1306 + this.setEndDate(date.clone());
  1307 + if (this.autoApply) {
  1308 + this.calculateChosenLabel();
  1309 + this.clickApply();
  1310 + }
  1311 + }
  1312 +
  1313 + if (this.singleDatePicker) {
  1314 + this.setEndDate(this.startDate);
  1315 + if (!this.timePicker)
  1316 + this.clickApply();
  1317 + }
  1318 +
  1319 + this.updateView();
  1320 +
  1321 + },
  1322 +
  1323 + calculateChosenLabel: function() {
  1324 + var customRange = true;
  1325 + var i = 0;
  1326 + for (var range in this.ranges) {
  1327 + if (this.timePicker) {
  1328 + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) {
  1329 + customRange = false;
  1330 + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();
  1331 + break;
  1332 + }
  1333 + } else {
  1334 + //ignore times when comparing dates if time picker is not enabled
  1335 + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {
  1336 + customRange = false;
  1337 + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();
  1338 + break;
  1339 + }
  1340 + }
  1341 + i++;
  1342 + }
  1343 + if (customRange) {
  1344 + this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();
  1345 + this.showCalendars();
  1346 + }
  1347 + },
  1348 +
  1349 + clickApply: function(e) {
  1350 + this.hide();
  1351 + this.element.trigger('apply.daterangepicker', this);
  1352 + },
  1353 +
  1354 + clickCancel: function(e) {
  1355 + this.startDate = this.oldStartDate;
  1356 + this.endDate = this.oldEndDate;
  1357 + this.hide();
  1358 + this.element.trigger('cancel.daterangepicker', this);
  1359 + },
  1360 +
  1361 + monthOrYearChanged: function(e) {
  1362 + var isLeft = $(e.target).closest('.calendar').hasClass('left'),
  1363 + leftOrRight = isLeft ? 'left' : 'right',
  1364 + cal = this.container.find('.calendar.'+leftOrRight);
  1365 +
  1366 + // Month must be Number for new moment versions
  1367 + var month = parseInt(cal.find('.monthselect').val(), 10);
  1368 + var year = cal.find('.yearselect').val();
  1369 +
  1370 + if (!isLeft) {
  1371 + if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {
  1372 + month = this.startDate.month();
  1373 + year = this.startDate.year();
  1374 + }
  1375 + }
  1376 +
  1377 + if (this.minDate) {
  1378 + if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {
  1379 + month = this.minDate.month();
  1380 + year = this.minDate.year();
  1381 + }
  1382 + }
  1383 +
  1384 + if (this.maxDate) {
  1385 + if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {
  1386 + month = this.maxDate.month();
  1387 + year = this.maxDate.year();
  1388 + }
  1389 + }
  1390 +
  1391 + if (isLeft) {
  1392 + this.leftCalendar.month.month(month).year(year);
  1393 + if (this.linkedCalendars)
  1394 + this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');
  1395 + } else {
  1396 + this.rightCalendar.month.month(month).year(year);
  1397 + if (this.linkedCalendars)
  1398 + this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');
  1399 + }
  1400 + this.updateCalendars();
  1401 + },
  1402 +
  1403 + timeChanged: function(e) {
  1404 +
  1405 + var cal = $(e.target).closest('.calendar'),
  1406 + isLeft = cal.hasClass('left');
  1407 +
  1408 + var hour = parseInt(cal.find('.hourselect').val(), 10);
  1409 + var minute = parseInt(cal.find('.minuteselect').val(), 10);
  1410 + var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;
  1411 +
  1412 + if (!this.timePicker24Hour) {
  1413 + var ampm = cal.find('.ampmselect').val();
  1414 + if (ampm === 'PM' && hour < 12)
  1415 + hour += 12;
  1416 + if (ampm === 'AM' && hour === 12)
  1417 + hour = 0;
  1418 + }
  1419 +
  1420 + if (isLeft) {
  1421 + var start = this.startDate.clone();
  1422 + start.hour(hour);
  1423 + start.minute(minute);
  1424 + start.second(second);
  1425 + this.setStartDate(start);
  1426 + if (this.singleDatePicker) {
  1427 + this.endDate = this.startDate.clone();
  1428 + } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {
  1429 + this.setEndDate(start.clone());
  1430 + }
  1431 + } else if (this.endDate) {
  1432 + var end = this.endDate.clone();
  1433 + end.hour(hour);
  1434 + end.minute(minute);
  1435 + end.second(second);
  1436 + this.setEndDate(end);
  1437 + }
  1438 +
  1439 + //update the calendars so all clickable dates reflect the new time component
  1440 + this.updateCalendars();
  1441 +
  1442 + //update the form inputs above the calendars with the new time
  1443 + this.updateFormInputs();
  1444 +
  1445 + //re-render the time pickers because changing one selection can affect what's enabled in another
  1446 + this.renderTimePicker('left');
  1447 + this.renderTimePicker('right');
  1448 +
  1449 + },
  1450 +
  1451 + formInputsChanged: function(e) {
  1452 + var isRight = $(e.target).closest('.calendar').hasClass('right');
  1453 + var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format);
  1454 + var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format);
  1455 +
  1456 + if (start.isValid() && end.isValid()) {
  1457 +
  1458 + if (isRight && end.isBefore(start))
  1459 + start = end.clone();
  1460 +
  1461 + this.setStartDate(start);
  1462 + this.setEndDate(end);
  1463 +
  1464 + if (isRight) {
  1465 + this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format));
  1466 + } else {
  1467 + this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format));
  1468 + }
  1469 +
  1470 + }
  1471 +
  1472 + this.updateCalendars();
  1473 + if (this.timePicker) {
  1474 + this.renderTimePicker('left');
  1475 + this.renderTimePicker('right');
  1476 + }
  1477 + },
  1478 +
  1479 + elementChanged: function() {
  1480 + if (!this.element.is('input')) return;
  1481 + if (!this.element.val().length) return;
  1482 + if (this.element.val().length < this.locale.format.length) return;
  1483 +
  1484 + var dateString = this.element.val().split(this.locale.separator),
  1485 + start = null,
  1486 + end = null;
  1487 +
  1488 + if (dateString.length === 2) {
  1489 + start = moment(dateString[0], this.locale.format);
  1490 + end = moment(dateString[1], this.locale.format);
  1491 + }
  1492 +
  1493 + if (this.singleDatePicker || start === null || end === null) {
  1494 + start = moment(this.element.val(), this.locale.format);
  1495 + end = start;
  1496 + }
  1497 +
  1498 + if (!start.isValid() || !end.isValid()) return;
  1499 +
  1500 + this.setStartDate(start);
  1501 + this.setEndDate(end);
  1502 + this.updateView();
  1503 + },
  1504 +
  1505 + keydown: function(e) {
  1506 + //hide on tab or enter
  1507 + if ((e.keyCode === 9) || (e.keyCode === 13)) {
  1508 + this.hide();
  1509 + }
  1510 + },
  1511 +
  1512 + updateElement: function() {
  1513 + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
  1514 + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
  1515 + this.element.trigger('change');
  1516 + } else if (this.element.is('input') && this.autoUpdateInput) {
  1517 + this.element.val(this.startDate.format(this.locale.format));
  1518 + this.element.trigger('change');
  1519 + }
  1520 + },
  1521 +
  1522 + remove: function() {
  1523 + this.container.remove();
  1524 + this.element.off('.daterangepicker');
  1525 + this.element.removeData();
  1526 + }
  1527 +
  1528 + };
  1529 +
  1530 + $.fn.daterangepicker = function(options, callback) {
  1531 + this.each(function() {
  1532 + var el = $(this);
  1533 + if (el.data('daterangepicker'))
  1534 + el.data('daterangepicker').remove();
  1535 + el.data('daterangepicker', new DateRangePicker(el, options, callback));
  1536 + });
  1537 + return this;
  1538 + };
  1539 +
  1540 + return DateRangePicker;
  1541 +
  1542 +}));
... ...
resource/lib/bootstrap-daterangepicker/moment.js 0 → 100755
  1 +//! moment.js
  2 +//! version : 2.10.6
  3 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
  4 +//! license : MIT
  5 +//! momentjs.com
  6 +
  7 +(function (global, factory) {
  8 + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  9 + typeof define === 'function' && define.amd ? define(factory) :
  10 + global.moment = factory()
  11 +}(this, function () { 'use strict';
  12 +
  13 + var hookCallback;
  14 +
  15 + function utils_hooks__hooks () {
  16 + return hookCallback.apply(null, arguments);
  17 + }
  18 +
  19 + // This is done to register the method called with moment()
  20 + // without creating circular dependencies.
  21 + function setHookCallback (callback) {
  22 + hookCallback = callback;
  23 + }
  24 +
  25 + function isArray(input) {
  26 + return Object.prototype.toString.call(input) === '[object Array]';
  27 + }
  28 +
  29 + function isDate(input) {
  30 + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
  31 + }
  32 +
  33 + function map(arr, fn) {
  34 + var res = [], i;
  35 + for (i = 0; i < arr.length; ++i) {
  36 + res.push(fn(arr[i], i));
  37 + }
  38 + return res;
  39 + }
  40 +
  41 + function hasOwnProp(a, b) {
  42 + return Object.prototype.hasOwnProperty.call(a, b);
  43 + }
  44 +
  45 + function extend(a, b) {
  46 + for (var i in b) {
  47 + if (hasOwnProp(b, i)) {
  48 + a[i] = b[i];
  49 + }
  50 + }
  51 +
  52 + if (hasOwnProp(b, 'toString')) {
  53 + a.toString = b.toString;
  54 + }
  55 +
  56 + if (hasOwnProp(b, 'valueOf')) {
  57 + a.valueOf = b.valueOf;
  58 + }
  59 +
  60 + return a;
  61 + }
  62 +
  63 + function create_utc__createUTC (input, format, locale, strict) {
  64 + return createLocalOrUTC(input, format, locale, strict, true).utc();
  65 + }
  66 +
  67 + function defaultParsingFlags() {
  68 + // We need to deep clone this object.
  69 + return {
  70 + empty : false,
  71 + unusedTokens : [],
  72 + unusedInput : [],
  73 + overflow : -2,
  74 + charsLeftOver : 0,
  75 + nullInput : false,
  76 + invalidMonth : null,
  77 + invalidFormat : false,
  78 + userInvalidated : false,
  79 + iso : false
  80 + };
  81 + }
  82 +
  83 + function getParsingFlags(m) {
  84 + if (m._pf == null) {
  85 + m._pf = defaultParsingFlags();
  86 + }
  87 + return m._pf;
  88 + }
  89 +
  90 + function valid__isValid(m) {
  91 + if (m._isValid == null) {
  92 + var flags = getParsingFlags(m);
  93 + m._isValid = !isNaN(m._d.getTime()) &&
  94 + flags.overflow < 0 &&
  95 + !flags.empty &&
  96 + !flags.invalidMonth &&
  97 + !flags.invalidWeekday &&
  98 + !flags.nullInput &&
  99 + !flags.invalidFormat &&
  100 + !flags.userInvalidated;
  101 +
  102 + if (m._strict) {
  103 + m._isValid = m._isValid &&
  104 + flags.charsLeftOver === 0 &&
  105 + flags.unusedTokens.length === 0 &&
  106 + flags.bigHour === undefined;
  107 + }
  108 + }
  109 + return m._isValid;
  110 + }
  111 +
  112 + function valid__createInvalid (flags) {
  113 + var m = create_utc__createUTC(NaN);
  114 + if (flags != null) {
  115 + extend(getParsingFlags(m), flags);
  116 + }
  117 + else {
  118 + getParsingFlags(m).userInvalidated = true;
  119 + }
  120 +
  121 + return m;
  122 + }
  123 +
  124 + var momentProperties = utils_hooks__hooks.momentProperties = [];
  125 +
  126 + function copyConfig(to, from) {
  127 + var i, prop, val;
  128 +
  129 + if (typeof from._isAMomentObject !== 'undefined') {
  130 + to._isAMomentObject = from._isAMomentObject;
  131 + }
  132 + if (typeof from._i !== 'undefined') {
  133 + to._i = from._i;
  134 + }
  135 + if (typeof from._f !== 'undefined') {
  136 + to._f = from._f;
  137 + }
  138 + if (typeof from._l !== 'undefined') {
  139 + to._l = from._l;
  140 + }
  141 + if (typeof from._strict !== 'undefined') {
  142 + to._strict = from._strict;
  143 + }
  144 + if (typeof from._tzm !== 'undefined') {
  145 + to._tzm = from._tzm;
  146 + }
  147 + if (typeof from._isUTC !== 'undefined') {
  148 + to._isUTC = from._isUTC;
  149 + }
  150 + if (typeof from._offset !== 'undefined') {
  151 + to._offset = from._offset;
  152 + }
  153 + if (typeof from._pf !== 'undefined') {
  154 + to._pf = getParsingFlags(from);
  155 + }
  156 + if (typeof from._locale !== 'undefined') {
  157 + to._locale = from._locale;
  158 + }
  159 +
  160 + if (momentProperties.length > 0) {
  161 + for (i in momentProperties) {
  162 + prop = momentProperties[i];
  163 + val = from[prop];
  164 + if (typeof val !== 'undefined') {
  165 + to[prop] = val;
  166 + }
  167 + }
  168 + }
  169 +
  170 + return to;
  171 + }
  172 +
  173 + var updateInProgress = false;
  174 +
  175 + // Moment prototype object
  176 + function Moment(config) {
  177 + copyConfig(this, config);
  178 + this._d = new Date(config._d != null ? config._d.getTime() : NaN);
  179 + // Prevent infinite loop in case updateOffset creates new moment
  180 + // objects.
  181 + if (updateInProgress === false) {
  182 + updateInProgress = true;
  183 + utils_hooks__hooks.updateOffset(this);
  184 + updateInProgress = false;
  185 + }
  186 + }
  187 +
  188 + function isMoment (obj) {
  189 + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
  190 + }
  191 +
  192 + function absFloor (number) {
  193 + if (number < 0) {
  194 + return Math.ceil(number);
  195 + } else {
  196 + return Math.floor(number);
  197 + }
  198 + }
  199 +
  200 + function toInt(argumentForCoercion) {
  201 + var coercedNumber = +argumentForCoercion,
  202 + value = 0;
  203 +
  204 + if (coercedNumber !== 0 && isFinite(coercedNumber)) {
  205 + value = absFloor(coercedNumber);
  206 + }
  207 +
  208 + return value;
  209 + }
  210 +
  211 + function compareArrays(array1, array2, dontConvert) {
  212 + var len = Math.min(array1.length, array2.length),
  213 + lengthDiff = Math.abs(array1.length - array2.length),
  214 + diffs = 0,
  215 + i;
  216 + for (i = 0; i < len; i++) {
  217 + if ((dontConvert && array1[i] !== array2[i]) ||
  218 + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
  219 + diffs++;
  220 + }
  221 + }
  222 + return diffs + lengthDiff;
  223 + }
  224 +
  225 + function Locale() {
  226 + }
  227 +
  228 + var locales = {};
  229 + var globalLocale;
  230 +
  231 + function normalizeLocale(key) {
  232 + return key ? key.toLowerCase().replace('_', '-') : key;
  233 + }
  234 +
  235 + // pick the locale from the array
  236 + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
  237 + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
  238 + function chooseLocale(names) {
  239 + var i = 0, j, next, locale, split;
  240 +
  241 + while (i < names.length) {
  242 + split = normalizeLocale(names[i]).split('-');
  243 + j = split.length;
  244 + next = normalizeLocale(names[i + 1]);
  245 + next = next ? next.split('-') : null;
  246 + while (j > 0) {
  247 + locale = loadLocale(split.slice(0, j).join('-'));
  248 + if (locale) {
  249 + return locale;
  250 + }
  251 + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
  252 + //the next array item is better than a shallower substring of this one
  253 + break;
  254 + }
  255 + j--;
  256 + }
  257 + i++;
  258 + }
  259 + return null;
  260 + }
  261 +
  262 + function loadLocale(name) {
  263 + var oldLocale = null;
  264 + // TODO: Find a better way to register and load all the locales in Node
  265 + if (!locales[name] && typeof module !== 'undefined' &&
  266 + module && module.exports) {
  267 + try {
  268 + oldLocale = globalLocale._abbr;
  269 + require('./locale/' + name);
  270 + // because defineLocale currently also sets the global locale, we
  271 + // want to undo that for lazy loaded locales
  272 + locale_locales__getSetGlobalLocale(oldLocale);
  273 + } catch (e) { }
  274 + }
  275 + return locales[name];
  276 + }
  277 +
  278 + // This function will load locale and then set the global locale. If
  279 + // no arguments are passed in, it will simply return the current global
  280 + // locale key.
  281 + function locale_locales__getSetGlobalLocale (key, values) {
  282 + var data;
  283 + if (key) {
  284 + if (typeof values === 'undefined') {
  285 + data = locale_locales__getLocale(key);
  286 + }
  287 + else {
  288 + data = defineLocale(key, values);
  289 + }
  290 +
  291 + if (data) {
  292 + // moment.duration._locale = moment._locale = data;
  293 + globalLocale = data;
  294 + }
  295 + }
  296 +
  297 + return globalLocale._abbr;
  298 + }
  299 +
  300 + function defineLocale (name, values) {
  301 + if (values !== null) {
  302 + values.abbr = name;
  303 + locales[name] = locales[name] || new Locale();
  304 + locales[name].set(values);
  305 +
  306 + // backwards compat for now: also set the locale
  307 + locale_locales__getSetGlobalLocale(name);
  308 +
  309 + return locales[name];
  310 + } else {
  311 + // useful for testing
  312 + delete locales[name];
  313 + return null;
  314 + }
  315 + }
  316 +
  317 + // returns locale data
  318 + function locale_locales__getLocale (key) {
  319 + var locale;
  320 +
  321 + if (key && key._locale && key._locale._abbr) {
  322 + key = key._locale._abbr;
  323 + }
  324 +
  325 + if (!key) {
  326 + return globalLocale;
  327 + }
  328 +
  329 + if (!isArray(key)) {
  330 + //short-circuit everything else
  331 + locale = loadLocale(key);
  332 + if (locale) {
  333 + return locale;
  334 + }
  335 + key = [key];
  336 + }
  337 +
  338 + return chooseLocale(key);
  339 + }
  340 +
  341 + var aliases = {};
  342 +
  343 + function addUnitAlias (unit, shorthand) {
  344 + var lowerCase = unit.toLowerCase();
  345 + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
  346 + }
  347 +
  348 + function normalizeUnits(units) {
  349 + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
  350 + }
  351 +
  352 + function normalizeObjectUnits(inputObject) {
  353 + var normalizedInput = {},
  354 + normalizedProp,
  355 + prop;
  356 +
  357 + for (prop in inputObject) {
  358 + if (hasOwnProp(inputObject, prop)) {
  359 + normalizedProp = normalizeUnits(prop);
  360 + if (normalizedProp) {
  361 + normalizedInput[normalizedProp] = inputObject[prop];
  362 + }
  363 + }
  364 + }
  365 +
  366 + return normalizedInput;
  367 + }
  368 +
  369 + function makeGetSet (unit, keepTime) {
  370 + return function (value) {
  371 + if (value != null) {
  372 + get_set__set(this, unit, value);
  373 + utils_hooks__hooks.updateOffset(this, keepTime);
  374 + return this;
  375 + } else {
  376 + return get_set__get(this, unit);
  377 + }
  378 + };
  379 + }
  380 +
  381 + function get_set__get (mom, unit) {
  382 + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
  383 + }
  384 +
  385 + function get_set__set (mom, unit, value) {
  386 + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
  387 + }
  388 +
  389 + // MOMENTS
  390 +
  391 + function getSet (units, value) {
  392 + var unit;
  393 + if (typeof units === 'object') {
  394 + for (unit in units) {
  395 + this.set(unit, units[unit]);
  396 + }
  397 + } else {
  398 + units = normalizeUnits(units);
  399 + if (typeof this[units] === 'function') {
  400 + return this[units](value);
  401 + }
  402 + }
  403 + return this;
  404 + }
  405 +
  406 + function zeroFill(number, targetLength, forceSign) {
  407 + var absNumber = '' + Math.abs(number),
  408 + zerosToFill = targetLength - absNumber.length,
  409 + sign = number >= 0;
  410 + return (sign ? (forceSign ? '+' : '') : '-') +
  411 + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
  412 + }
  413 +
  414 + var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
  415 +
  416 + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
  417 +
  418 + var formatFunctions = {};
  419 +
  420 + var formatTokenFunctions = {};
  421 +
  422 + // token: 'M'
  423 + // padded: ['MM', 2]
  424 + // ordinal: 'Mo'
  425 + // callback: function () { this.month() + 1 }
  426 + function addFormatToken (token, padded, ordinal, callback) {
  427 + var func = callback;
  428 + if (typeof callback === 'string') {
  429 + func = function () {
  430 + return this[callback]();
  431 + };
  432 + }
  433 + if (token) {
  434 + formatTokenFunctions[token] = func;
  435 + }
  436 + if (padded) {
  437 + formatTokenFunctions[padded[0]] = function () {
  438 + return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
  439 + };
  440 + }
  441 + if (ordinal) {
  442 + formatTokenFunctions[ordinal] = function () {
  443 + return this.localeData().ordinal(func.apply(this, arguments), token);
  444 + };
  445 + }
  446 + }
  447 +
  448 + function removeFormattingTokens(input) {
  449 + if (input.match(/\[[\s\S]/)) {
  450 + return input.replace(/^\[|\]$/g, '');
  451 + }
  452 + return input.replace(/\\/g, '');
  453 + }
  454 +
  455 + function makeFormatFunction(format) {
  456 + var array = format.match(formattingTokens), i, length;
  457 +
  458 + for (i = 0, length = array.length; i < length; i++) {
  459 + if (formatTokenFunctions[array[i]]) {
  460 + array[i] = formatTokenFunctions[array[i]];
  461 + } else {
  462 + array[i] = removeFormattingTokens(array[i]);
  463 + }
  464 + }
  465 +
  466 + return function (mom) {
  467 + var output = '';
  468 + for (i = 0; i < length; i++) {
  469 + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
  470 + }
  471 + return output;
  472 + };
  473 + }
  474 +
  475 + // format date using native date object
  476 + function formatMoment(m, format) {
  477 + if (!m.isValid()) {
  478 + return m.localeData().invalidDate();
  479 + }
  480 +
  481 + format = expandFormat(format, m.localeData());
  482 + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
  483 +
  484 + return formatFunctions[format](m);
  485 + }
  486 +
  487 + function expandFormat(format, locale) {
  488 + var i = 5;
  489 +
  490 + function replaceLongDateFormatTokens(input) {
  491 + return locale.longDateFormat(input) || input;
  492 + }
  493 +
  494 + localFormattingTokens.lastIndex = 0;
  495 + while (i >= 0 && localFormattingTokens.test(format)) {
  496 + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
  497 + localFormattingTokens.lastIndex = 0;
  498 + i -= 1;
  499 + }
  500 +
  501 + return format;
  502 + }
  503 +
  504 + var match1 = /\d/; // 0 - 9
  505 + var match2 = /\d\d/; // 00 - 99
  506 + var match3 = /\d{3}/; // 000 - 999
  507 + var match4 = /\d{4}/; // 0000 - 9999
  508 + var match6 = /[+-]?\d{6}/; // -999999 - 999999
  509 + var match1to2 = /\d\d?/; // 0 - 99
  510 + var match1to3 = /\d{1,3}/; // 0 - 999
  511 + var match1to4 = /\d{1,4}/; // 0 - 9999
  512 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
  513 +
  514 + var matchUnsigned = /\d+/; // 0 - inf
  515 + var matchSigned = /[+-]?\d+/; // -inf - inf
  516 +
  517 + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
  518 +
  519 + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
  520 +
  521 + // any word (or two) characters or numbers including two/three word month in arabic.
  522 + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
  523 +
  524 + var regexes = {};
  525 +
  526 + function isFunction (sth) {
  527 + // https://github.com/moment/moment/issues/2325
  528 + return typeof sth === 'function' &&
  529 + Object.prototype.toString.call(sth) === '[object Function]';
  530 + }
  531 +
  532 +
  533 + function addRegexToken (token, regex, strictRegex) {
  534 + regexes[token] = isFunction(regex) ? regex : function (isStrict) {
  535 + return (isStrict && strictRegex) ? strictRegex : regex;
  536 + };
  537 + }
  538 +
  539 + function getParseRegexForToken (token, config) {
  540 + if (!hasOwnProp(regexes, token)) {
  541 + return new RegExp(unescapeFormat(token));
  542 + }
  543 +
  544 + return regexes[token](config._strict, config._locale);
  545 + }
  546 +
  547 + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
  548 + function unescapeFormat(s) {
  549 + return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
  550 + return p1 || p2 || p3 || p4;
  551 + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
  552 + }
  553 +
  554 + var tokens = {};
  555 +
  556 + function addParseToken (token, callback) {
  557 + var i, func = callback;
  558 + if (typeof token === 'string') {
  559 + token = [token];
  560 + }
  561 + if (typeof callback === 'number') {
  562 + func = function (input, array) {
  563 + array[callback] = toInt(input);
  564 + };
  565 + }
  566 + for (i = 0; i < token.length; i++) {
  567 + tokens[token[i]] = func;
  568 + }
  569 + }
  570 +
  571 + function addWeekParseToken (token, callback) {
  572 + addParseToken(token, function (input, array, config, token) {
  573 + config._w = config._w || {};
  574 + callback(input, config._w, config, token);
  575 + });
  576 + }
  577 +
  578 + function addTimeToArrayFromToken(token, input, config) {
  579 + if (input != null && hasOwnProp(tokens, token)) {
  580 + tokens[token](input, config._a, config, token);
  581 + }
  582 + }
  583 +
  584 + var YEAR = 0;
  585 + var MONTH = 1;
  586 + var DATE = 2;
  587 + var HOUR = 3;
  588 + var MINUTE = 4;
  589 + var SECOND = 5;
  590 + var MILLISECOND = 6;
  591 +
  592 + function daysInMonth(year, month) {
  593 + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
  594 + }
  595 +
  596 + // FORMATTING
  597 +
  598 + addFormatToken('M', ['MM', 2], 'Mo', function () {
  599 + return this.month() + 1;
  600 + });
  601 +
  602 + addFormatToken('MMM', 0, 0, function (format) {
  603 + return this.localeData().monthsShort(this, format);
  604 + });
  605 +
  606 + addFormatToken('MMMM', 0, 0, function (format) {
  607 + return this.localeData().months(this, format);
  608 + });
  609 +
  610 + // ALIASES
  611 +
  612 + addUnitAlias('month', 'M');
  613 +
  614 + // PARSING
  615 +
  616 + addRegexToken('M', match1to2);
  617 + addRegexToken('MM', match1to2, match2);
  618 + addRegexToken('MMM', matchWord);
  619 + addRegexToken('MMMM', matchWord);
  620 +
  621 + addParseToken(['M', 'MM'], function (input, array) {
  622 + array[MONTH] = toInt(input) - 1;
  623 + });
  624 +
  625 + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
  626 + var month = config._locale.monthsParse(input, token, config._strict);
  627 + // if we didn't find a month name, mark the date as invalid.
  628 + if (month != null) {
  629 + array[MONTH] = month;
  630 + } else {
  631 + getParsingFlags(config).invalidMonth = input;
  632 + }
  633 + });
  634 +
  635 + // LOCALES
  636 +
  637 + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
  638 + function localeMonths (m) {
  639 + return this._months[m.month()];
  640 + }
  641 +
  642 + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
  643 + function localeMonthsShort (m) {
  644 + return this._monthsShort[m.month()];
  645 + }
  646 +
  647 + function localeMonthsParse (monthName, format, strict) {
  648 + var i, mom, regex;
  649 +
  650 + if (!this._monthsParse) {
  651 + this._monthsParse = [];
  652 + this._longMonthsParse = [];
  653 + this._shortMonthsParse = [];
  654 + }
  655 +
  656 + for (i = 0; i < 12; i++) {
  657 + // make the regex if we don't have it already
  658 + mom = create_utc__createUTC([2000, i]);
  659 + if (strict && !this._longMonthsParse[i]) {
  660 + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
  661 + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
  662 + }
  663 + if (!strict && !this._monthsParse[i]) {
  664 + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
  665 + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
  666 + }
  667 + // test the regex
  668 + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
  669 + return i;
  670 + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
  671 + return i;
  672 + } else if (!strict && this._monthsParse[i].test(monthName)) {
  673 + return i;
  674 + }
  675 + }
  676 + }
  677 +
  678 + // MOMENTS
  679 +
  680 + function setMonth (mom, value) {
  681 + var dayOfMonth;
  682 +
  683 + // TODO: Move this out of here!
  684 + if (typeof value === 'string') {
  685 + value = mom.localeData().monthsParse(value);
  686 + // TODO: Another silent failure?
  687 + if (typeof value !== 'number') {
  688 + return mom;
  689 + }
  690 + }
  691 +
  692 + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
  693 + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
  694 + return mom;
  695 + }
  696 +
  697 + function getSetMonth (value) {
  698 + if (value != null) {
  699 + setMonth(this, value);
  700 + utils_hooks__hooks.updateOffset(this, true);
  701 + return this;
  702 + } else {
  703 + return get_set__get(this, 'Month');
  704 + }
  705 + }
  706 +
  707 + function getDaysInMonth () {
  708 + return daysInMonth(this.year(), this.month());
  709 + }
  710 +
  711 + function checkOverflow (m) {
  712 + var overflow;
  713 + var a = m._a;
  714 +
  715 + if (a && getParsingFlags(m).overflow === -2) {
  716 + overflow =
  717 + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
  718 + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
  719 + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
  720 + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
  721 + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
  722 + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
  723 + -1;
  724 +
  725 + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
  726 + overflow = DATE;
  727 + }
  728 +
  729 + getParsingFlags(m).overflow = overflow;
  730 + }
  731 +
  732 + return m;
  733 + }
  734 +
  735 + function warn(msg) {
  736 + if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {
  737 + console.warn('Deprecation warning: ' + msg);
  738 + }
  739 + }
  740 +
  741 + function deprecate(msg, fn) {
  742 + var firstTime = true;
  743 +
  744 + return extend(function () {
  745 + if (firstTime) {
  746 + warn(msg + '\n' + (new Error()).stack);
  747 + firstTime = false;
  748 + }
  749 + return fn.apply(this, arguments);
  750 + }, fn);
  751 + }
  752 +
  753 + var deprecations = {};
  754 +
  755 + function deprecateSimple(name, msg) {
  756 + if (!deprecations[name]) {
  757 + warn(msg);
  758 + deprecations[name] = true;
  759 + }
  760 + }
  761 +
  762 + utils_hooks__hooks.suppressDeprecationWarnings = false;
  763 +
  764 + var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
  765 +
  766 + var isoDates = [
  767 + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
  768 + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
  769 + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
  770 + ['GGGG-[W]WW', /\d{4}-W\d{2}/],
  771 + ['YYYY-DDD', /\d{4}-\d{3}/]
  772 + ];
  773 +
  774 + // iso time formats and regexes
  775 + var isoTimes = [
  776 + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
  777 + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
  778 + ['HH:mm', /(T| )\d\d:\d\d/],
  779 + ['HH', /(T| )\d\d/]
  780 + ];
  781 +
  782 + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
  783 +
  784 + // date from iso format
  785 + function configFromISO(config) {
  786 + var i, l,
  787 + string = config._i,
  788 + match = from_string__isoRegex.exec(string);
  789 +
  790 + if (match) {
  791 + getParsingFlags(config).iso = true;
  792 + for (i = 0, l = isoDates.length; i < l; i++) {
  793 + if (isoDates[i][1].exec(string)) {
  794 + config._f = isoDates[i][0];
  795 + break;
  796 + }
  797 + }
  798 + for (i = 0, l = isoTimes.length; i < l; i++) {
  799 + if (isoTimes[i][1].exec(string)) {
  800 + // match[6] should be 'T' or space
  801 + config._f += (match[6] || ' ') + isoTimes[i][0];
  802 + break;
  803 + }
  804 + }
  805 + if (string.match(matchOffset)) {
  806 + config._f += 'Z';
  807 + }
  808 + configFromStringAndFormat(config);
  809 + } else {
  810 + config._isValid = false;
  811 + }
  812 + }
  813 +
  814 + // date from iso format or fallback
  815 + function configFromString(config) {
  816 + var matched = aspNetJsonRegex.exec(config._i);
  817 +
  818 + if (matched !== null) {
  819 + config._d = new Date(+matched[1]);
  820 + return;
  821 + }
  822 +
  823 + configFromISO(config);
  824 + if (config._isValid === false) {
  825 + delete config._isValid;
  826 + utils_hooks__hooks.createFromInputFallback(config);
  827 + }
  828 + }
  829 +
  830 + utils_hooks__hooks.createFromInputFallback = deprecate(
  831 + 'moment construction falls back to js Date. This is ' +
  832 + 'discouraged and will be removed in upcoming major ' +
  833 + 'release. Please refer to ' +
  834 + 'https://github.com/moment/moment/issues/1407 for more info.',
  835 + function (config) {
  836 + config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
  837 + }
  838 + );
  839 +
  840 + function createDate (y, m, d, h, M, s, ms) {
  841 + //can't just apply() to create a date:
  842 + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
  843 + var date = new Date(y, m, d, h, M, s, ms);
  844 +
  845 + //the date constructor doesn't accept years < 1970
  846 + if (y < 1970) {
  847 + date.setFullYear(y);
  848 + }
  849 + return date;
  850 + }
  851 +
  852 + function createUTCDate (y) {
  853 + var date = new Date(Date.UTC.apply(null, arguments));
  854 + if (y < 1970) {
  855 + date.setUTCFullYear(y);
  856 + }
  857 + return date;
  858 + }
  859 +
  860 + addFormatToken(0, ['YY', 2], 0, function () {
  861 + return this.year() % 100;
  862 + });
  863 +
  864 + addFormatToken(0, ['YYYY', 4], 0, 'year');
  865 + addFormatToken(0, ['YYYYY', 5], 0, 'year');
  866 + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
  867 +
  868 + // ALIASES
  869 +
  870 + addUnitAlias('year', 'y');
  871 +
  872 + // PARSING
  873 +
  874 + addRegexToken('Y', matchSigned);
  875 + addRegexToken('YY', match1to2, match2);
  876 + addRegexToken('YYYY', match1to4, match4);
  877 + addRegexToken('YYYYY', match1to6, match6);
  878 + addRegexToken('YYYYYY', match1to6, match6);
  879 +
  880 + addParseToken(['YYYYY', 'YYYYYY'], YEAR);
  881 + addParseToken('YYYY', function (input, array) {
  882 + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
  883 + });
  884 + addParseToken('YY', function (input, array) {
  885 + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
  886 + });
  887 +
  888 + // HELPERS
  889 +
  890 + function daysInYear(year) {
  891 + return isLeapYear(year) ? 366 : 365;
  892 + }
  893 +
  894 + function isLeapYear(year) {
  895 + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
  896 + }
  897 +
  898 + // HOOKS
  899 +
  900 + utils_hooks__hooks.parseTwoDigitYear = function (input) {
  901 + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
  902 + };
  903 +
  904 + // MOMENTS
  905 +
  906 + var getSetYear = makeGetSet('FullYear', false);
  907 +
  908 + function getIsLeapYear () {
  909 + return isLeapYear(this.year());
  910 + }
  911 +
  912 + addFormatToken('w', ['ww', 2], 'wo', 'week');
  913 + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
  914 +
  915 + // ALIASES
  916 +
  917 + addUnitAlias('week', 'w');
  918 + addUnitAlias('isoWeek', 'W');
  919 +
  920 + // PARSING
  921 +
  922 + addRegexToken('w', match1to2);
  923 + addRegexToken('ww', match1to2, match2);
  924 + addRegexToken('W', match1to2);
  925 + addRegexToken('WW', match1to2, match2);
  926 +
  927 + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
  928 + week[token.substr(0, 1)] = toInt(input);
  929 + });
  930 +
  931 + // HELPERS
  932 +
  933 + // firstDayOfWeek 0 = sun, 6 = sat
  934 + // the day of the week that starts the week
  935 + // (usually sunday or monday)
  936 + // firstDayOfWeekOfYear 0 = sun, 6 = sat
  937 + // the first week is the week that contains the first
  938 + // of this day of the week
  939 + // (eg. ISO weeks use thursday (4))
  940 + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
  941 + var end = firstDayOfWeekOfYear - firstDayOfWeek,
  942 + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
  943 + adjustedMoment;
  944 +
  945 +
  946 + if (daysToDayOfWeek > end) {
  947 + daysToDayOfWeek -= 7;
  948 + }
  949 +
  950 + if (daysToDayOfWeek < end - 7) {
  951 + daysToDayOfWeek += 7;
  952 + }
  953 +
  954 + adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');
  955 + return {
  956 + week: Math.ceil(adjustedMoment.dayOfYear() / 7),
  957 + year: adjustedMoment.year()
  958 + };
  959 + }
  960 +
  961 + // LOCALES
  962 +
  963 + function localeWeek (mom) {
  964 + return weekOfYear(mom, this._week.dow, this._week.doy).week;
  965 + }
  966 +
  967 + var defaultLocaleWeek = {
  968 + dow : 0, // Sunday is the first day of the week.
  969 + doy : 6 // The week that contains Jan 1st is the first week of the year.
  970 + };
  971 +
  972 + function localeFirstDayOfWeek () {
  973 + return this._week.dow;
  974 + }
  975 +
  976 + function localeFirstDayOfYear () {
  977 + return this._week.doy;
  978 + }
  979 +
  980 + // MOMENTS
  981 +
  982 + function getSetWeek (input) {
  983 + var week = this.localeData().week(this);
  984 + return input == null ? week : this.add((input - week) * 7, 'd');
  985 + }
  986 +
  987 + function getSetISOWeek (input) {
  988 + var week = weekOfYear(this, 1, 4).week;
  989 + return input == null ? week : this.add((input - week) * 7, 'd');
  990 + }
  991 +
  992 + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
  993 +
  994 + // ALIASES
  995 +
  996 + addUnitAlias('dayOfYear', 'DDD');
  997 +
  998 + // PARSING
  999 +
  1000 + addRegexToken('DDD', match1to3);
  1001 + addRegexToken('DDDD', match3);
  1002 + addParseToken(['DDD', 'DDDD'], function (input, array, config) {
  1003 + config._dayOfYear = toInt(input);
  1004 + });
  1005 +
  1006 + // HELPERS
  1007 +
  1008 + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
  1009 + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
  1010 + var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear;
  1011 + if (d < firstDayOfWeek) {
  1012 + d += 7;
  1013 + }
  1014 +
  1015 + weekday = weekday != null ? 1 * weekday : firstDayOfWeek;
  1016 +
  1017 + dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday;
  1018 +
  1019 + return {
  1020 + year: dayOfYear > 0 ? year : year - 1,
  1021 + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
  1022 + };
  1023 + }
  1024 +
  1025 + // MOMENTS
  1026 +
  1027 + function getSetDayOfYear (input) {
  1028 + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
  1029 + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
  1030 + }
  1031 +
  1032 + // Pick the first defined of two or three arguments.
  1033 + function defaults(a, b, c) {
  1034 + if (a != null) {
  1035 + return a;
  1036 + }
  1037 + if (b != null) {
  1038 + return b;
  1039 + }
  1040 + return c;
  1041 + }
  1042 +
  1043 + function currentDateArray(config) {
  1044 + var now = new Date();
  1045 + if (config._useUTC) {
  1046 + return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];
  1047 + }
  1048 + return [now.getFullYear(), now.getMonth(), now.getDate()];
  1049 + }
  1050 +
  1051 + // convert an array to a date.
  1052 + // the array should mirror the parameters below
  1053 + // note: all values past the year are optional and will default to the lowest possible value.
  1054 + // [year, month, day , hour, minute, second, millisecond]
  1055 + function configFromArray (config) {
  1056 + var i, date, input = [], currentDate, yearToUse;
  1057 +
  1058 + if (config._d) {
  1059 + return;
  1060 + }
  1061 +
  1062 + currentDate = currentDateArray(config);
  1063 +
  1064 + //compute day of the year from weeks and weekdays
  1065 + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
  1066 + dayOfYearFromWeekInfo(config);
  1067 + }
  1068 +
  1069 + //if the day of the year is set, figure out what it is
  1070 + if (config._dayOfYear) {
  1071 + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
  1072 +
  1073 + if (config._dayOfYear > daysInYear(yearToUse)) {
  1074 + getParsingFlags(config)._overflowDayOfYear = true;
  1075 + }
  1076 +
  1077 + date = createUTCDate(yearToUse, 0, config._dayOfYear);
  1078 + config._a[MONTH] = date.getUTCMonth();
  1079 + config._a[DATE] = date.getUTCDate();
  1080 + }
  1081 +
  1082 + // Default to current date.
  1083 + // * if no year, month, day of month are given, default to today
  1084 + // * if day of month is given, default month and year
  1085 + // * if month is given, default only year
  1086 + // * if year is given, don't default anything
  1087 + for (i = 0; i < 3 && config._a[i] == null; ++i) {
  1088 + config._a[i] = input[i] = currentDate[i];
  1089 + }
  1090 +
  1091 + // Zero out whatever was not defaulted, including time
  1092 + for (; i < 7; i++) {
  1093 + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
  1094 + }
  1095 +
  1096 + // Check for 24:00:00.000
  1097 + if (config._a[HOUR] === 24 &&
  1098 + config._a[MINUTE] === 0 &&
  1099 + config._a[SECOND] === 0 &&
  1100 + config._a[MILLISECOND] === 0) {
  1101 + config._nextDay = true;
  1102 + config._a[HOUR] = 0;
  1103 + }
  1104 +
  1105 + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
  1106 + // Apply timezone offset from input. The actual utcOffset can be changed
  1107 + // with parseZone.
  1108 + if (config._tzm != null) {
  1109 + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
  1110 + }
  1111 +
  1112 + if (config._nextDay) {
  1113 + config._a[HOUR] = 24;
  1114 + }
  1115 + }
  1116 +
  1117 + function dayOfYearFromWeekInfo(config) {
  1118 + var w, weekYear, week, weekday, dow, doy, temp;
  1119 +
  1120 + w = config._w;
  1121 + if (w.GG != null || w.W != null || w.E != null) {
  1122 + dow = 1;
  1123 + doy = 4;
  1124 +
  1125 + // TODO: We need to take the current isoWeekYear, but that depends on
  1126 + // how we interpret now (local, utc, fixed offset). So create
  1127 + // a now version of current config (take local/utc/offset flags, and
  1128 + // create now).
  1129 + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
  1130 + week = defaults(w.W, 1);
  1131 + weekday = defaults(w.E, 1);
  1132 + } else {
  1133 + dow = config._locale._week.dow;
  1134 + doy = config._locale._week.doy;
  1135 +
  1136 + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
  1137 + week = defaults(w.w, 1);
  1138 +
  1139 + if (w.d != null) {
  1140 + // weekday -- low day numbers are considered next week
  1141 + weekday = w.d;
  1142 + if (weekday < dow) {
  1143 + ++week;
  1144 + }
  1145 + } else if (w.e != null) {
  1146 + // local weekday -- counting starts from begining of week
  1147 + weekday = w.e + dow;
  1148 + } else {
  1149 + // default to begining of week
  1150 + weekday = dow;
  1151 + }
  1152 + }
  1153 + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
  1154 +
  1155 + config._a[YEAR] = temp.year;
  1156 + config._dayOfYear = temp.dayOfYear;
  1157 + }
  1158 +
  1159 + utils_hooks__hooks.ISO_8601 = function () {};
  1160 +
  1161 + // date from string and format string
  1162 + function configFromStringAndFormat(config) {
  1163 + // TODO: Move this to another part of the creation flow to prevent circular deps
  1164 + if (config._f === utils_hooks__hooks.ISO_8601) {
  1165 + configFromISO(config);
  1166 + return;
  1167 + }
  1168 +
  1169 + config._a = [];
  1170 + getParsingFlags(config).empty = true;
  1171 +
  1172 + // This array is used to make a Date, either with `new Date` or `Date.UTC`
  1173 + var string = '' + config._i,
  1174 + i, parsedInput, tokens, token, skipped,
  1175 + stringLength = string.length,
  1176 + totalParsedInputLength = 0;
  1177 +
  1178 + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
  1179 +
  1180 + for (i = 0; i < tokens.length; i++) {
  1181 + token = tokens[i];
  1182 + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
  1183 + if (parsedInput) {
  1184 + skipped = string.substr(0, string.indexOf(parsedInput));
  1185 + if (skipped.length > 0) {
  1186 + getParsingFlags(config).unusedInput.push(skipped);
  1187 + }
  1188 + string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
  1189 + totalParsedInputLength += parsedInput.length;
  1190 + }
  1191 + // don't parse if it's not a known token
  1192 + if (formatTokenFunctions[token]) {
  1193 + if (parsedInput) {
  1194 + getParsingFlags(config).empty = false;
  1195 + }
  1196 + else {
  1197 + getParsingFlags(config).unusedTokens.push(token);
  1198 + }
  1199 + addTimeToArrayFromToken(token, parsedInput, config);
  1200 + }
  1201 + else if (config._strict && !parsedInput) {
  1202 + getParsingFlags(config).unusedTokens.push(token);
  1203 + }
  1204 + }
  1205 +
  1206 + // add remaining unparsed input length to the string
  1207 + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
  1208 + if (string.length > 0) {
  1209 + getParsingFlags(config).unusedInput.push(string);
  1210 + }
  1211 +
  1212 + // clear _12h flag if hour is <= 12
  1213 + if (getParsingFlags(config).bigHour === true &&
  1214 + config._a[HOUR] <= 12 &&
  1215 + config._a[HOUR] > 0) {
  1216 + getParsingFlags(config).bigHour = undefined;
  1217 + }
  1218 + // handle meridiem
  1219 + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
  1220 +
  1221 + configFromArray(config);
  1222 + checkOverflow(config);
  1223 + }
  1224 +
  1225 +
  1226 + function meridiemFixWrap (locale, hour, meridiem) {
  1227 + var isPm;
  1228 +
  1229 + if (meridiem == null) {
  1230 + // nothing to do
  1231 + return hour;
  1232 + }
  1233 + if (locale.meridiemHour != null) {
  1234 + return locale.meridiemHour(hour, meridiem);
  1235 + } else if (locale.isPM != null) {
  1236 + // Fallback
  1237 + isPm = locale.isPM(meridiem);
  1238 + if (isPm && hour < 12) {
  1239 + hour += 12;
  1240 + }
  1241 + if (!isPm && hour === 12) {
  1242 + hour = 0;
  1243 + }
  1244 + return hour;
  1245 + } else {
  1246 + // this is not supposed to happen
  1247 + return hour;
  1248 + }
  1249 + }
  1250 +
  1251 + function configFromStringAndArray(config) {
  1252 + var tempConfig,
  1253 + bestMoment,
  1254 +
  1255 + scoreToBeat,
  1256 + i,
  1257 + currentScore;
  1258 +
  1259 + if (config._f.length === 0) {
  1260 + getParsingFlags(config).invalidFormat = true;
  1261 + config._d = new Date(NaN);
  1262 + return;
  1263 + }
  1264 +
  1265 + for (i = 0; i < config._f.length; i++) {
  1266 + currentScore = 0;
  1267 + tempConfig = copyConfig({}, config);
  1268 + if (config._useUTC != null) {
  1269 + tempConfig._useUTC = config._useUTC;
  1270 + }
  1271 + tempConfig._f = config._f[i];
  1272 + configFromStringAndFormat(tempConfig);
  1273 +
  1274 + if (!valid__isValid(tempConfig)) {
  1275 + continue;
  1276 + }
  1277 +
  1278 + // if there is any input that was not parsed add a penalty for that format
  1279 + currentScore += getParsingFlags(tempConfig).charsLeftOver;
  1280 +
  1281 + //or tokens
  1282 + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
  1283 +
  1284 + getParsingFlags(tempConfig).score = currentScore;
  1285 +
  1286 + if (scoreToBeat == null || currentScore < scoreToBeat) {
  1287 + scoreToBeat = currentScore;
  1288 + bestMoment = tempConfig;
  1289 + }
  1290 + }
  1291 +
  1292 + extend(config, bestMoment || tempConfig);
  1293 + }
  1294 +
  1295 + function configFromObject(config) {
  1296 + if (config._d) {
  1297 + return;
  1298 + }
  1299 +
  1300 + var i = normalizeObjectUnits(config._i);
  1301 + config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];
  1302 +
  1303 + configFromArray(config);
  1304 + }
  1305 +
  1306 + function createFromConfig (config) {
  1307 + var res = new Moment(checkOverflow(prepareConfig(config)));
  1308 + if (res._nextDay) {
  1309 + // Adding is smart enough around DST
  1310 + res.add(1, 'd');
  1311 + res._nextDay = undefined;
  1312 + }
  1313 +
  1314 + return res;
  1315 + }
  1316 +
  1317 + function prepareConfig (config) {
  1318 + var input = config._i,
  1319 + format = config._f;
  1320 +
  1321 + config._locale = config._locale || locale_locales__getLocale(config._l);
  1322 +
  1323 + if (input === null || (format === undefined && input === '')) {
  1324 + return valid__createInvalid({nullInput: true});
  1325 + }
  1326 +
  1327 + if (typeof input === 'string') {
  1328 + config._i = input = config._locale.preparse(input);
  1329 + }
  1330 +
  1331 + if (isMoment(input)) {
  1332 + return new Moment(checkOverflow(input));
  1333 + } else if (isArray(format)) {
  1334 + configFromStringAndArray(config);
  1335 + } else if (format) {
  1336 + configFromStringAndFormat(config);
  1337 + } else if (isDate(input)) {
  1338 + config._d = input;
  1339 + } else {
  1340 + configFromInput(config);
  1341 + }
  1342 +
  1343 + return config;
  1344 + }
  1345 +
  1346 + function configFromInput(config) {
  1347 + var input = config._i;
  1348 + if (input === undefined) {
  1349 + config._d = new Date();
  1350 + } else if (isDate(input)) {
  1351 + config._d = new Date(+input);
  1352 + } else if (typeof input === 'string') {
  1353 + configFromString(config);
  1354 + } else if (isArray(input)) {
  1355 + config._a = map(input.slice(0), function (obj) {
  1356 + return parseInt(obj, 10);
  1357 + });
  1358 + configFromArray(config);
  1359 + } else if (typeof(input) === 'object') {
  1360 + configFromObject(config);
  1361 + } else if (typeof(input) === 'number') {
  1362 + // from milliseconds
  1363 + config._d = new Date(input);
  1364 + } else {
  1365 + utils_hooks__hooks.createFromInputFallback(config);
  1366 + }
  1367 + }
  1368 +
  1369 + function createLocalOrUTC (input, format, locale, strict, isUTC) {
  1370 + var c = {};
  1371 +
  1372 + if (typeof(locale) === 'boolean') {
  1373 + strict = locale;
  1374 + locale = undefined;
  1375 + }
  1376 + // object construction must be done this way.
  1377 + // https://github.com/moment/moment/issues/1423
  1378 + c._isAMomentObject = true;
  1379 + c._useUTC = c._isUTC = isUTC;
  1380 + c._l = locale;
  1381 + c._i = input;
  1382 + c._f = format;
  1383 + c._strict = strict;
  1384 +
  1385 + return createFromConfig(c);
  1386 + }
  1387 +
  1388 + function local__createLocal (input, format, locale, strict) {
  1389 + return createLocalOrUTC(input, format, locale, strict, false);
  1390 + }
  1391 +
  1392 + var prototypeMin = deprecate(
  1393 + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
  1394 + function () {
  1395 + var other = local__createLocal.apply(null, arguments);
  1396 + return other < this ? this : other;
  1397 + }
  1398 + );
  1399 +
  1400 + var prototypeMax = deprecate(
  1401 + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
  1402 + function () {
  1403 + var other = local__createLocal.apply(null, arguments);
  1404 + return other > this ? this : other;
  1405 + }
  1406 + );
  1407 +
  1408 + // Pick a moment m from moments so that m[fn](other) is true for all
  1409 + // other. This relies on the function fn to be transitive.
  1410 + //
  1411 + // moments should either be an array of moment objects or an array, whose
  1412 + // first element is an array of moment objects.
  1413 + function pickBy(fn, moments) {
  1414 + var res, i;
  1415 + if (moments.length === 1 && isArray(moments[0])) {
  1416 + moments = moments[0];
  1417 + }
  1418 + if (!moments.length) {
  1419 + return local__createLocal();
  1420 + }
  1421 + res = moments[0];
  1422 + for (i = 1; i < moments.length; ++i) {
  1423 + if (!moments[i].isValid() || moments[i][fn](res)) {
  1424 + res = moments[i];
  1425 + }
  1426 + }
  1427 + return res;
  1428 + }
  1429 +
  1430 + // TODO: Use [].sort instead?
  1431 + function min () {
  1432 + var args = [].slice.call(arguments, 0);
  1433 +
  1434 + return pickBy('isBefore', args);
  1435 + }
  1436 +
  1437 + function max () {
  1438 + var args = [].slice.call(arguments, 0);
  1439 +
  1440 + return pickBy('isAfter', args);
  1441 + }
  1442 +
  1443 + function Duration (duration) {
  1444 + var normalizedInput = normalizeObjectUnits(duration),
  1445 + years = normalizedInput.year || 0,
  1446 + quarters = normalizedInput.quarter || 0,
  1447 + months = normalizedInput.month || 0,
  1448 + weeks = normalizedInput.week || 0,
  1449 + days = normalizedInput.day || 0,
  1450 + hours = normalizedInput.hour || 0,
  1451 + minutes = normalizedInput.minute || 0,
  1452 + seconds = normalizedInput.second || 0,
  1453 + milliseconds = normalizedInput.millisecond || 0;
  1454 +
  1455 + // representation for dateAddRemove
  1456 + this._milliseconds = +milliseconds +
  1457 + seconds * 1e3 + // 1000
  1458 + minutes * 6e4 + // 1000 * 60
  1459 + hours * 36e5; // 1000 * 60 * 60
  1460 + // Because of dateAddRemove treats 24 hours as different from a
  1461 + // day when working around DST, we need to store them separately
  1462 + this._days = +days +
  1463 + weeks * 7;
  1464 + // It is impossible translate months into days without knowing
  1465 + // which months you are are talking about, so we have to store
  1466 + // it separately.
  1467 + this._months = +months +
  1468 + quarters * 3 +
  1469 + years * 12;
  1470 +
  1471 + this._data = {};
  1472 +
  1473 + this._locale = locale_locales__getLocale();
  1474 +
  1475 + this._bubble();
  1476 + }
  1477 +
  1478 + function isDuration (obj) {
  1479 + return obj instanceof Duration;
  1480 + }
  1481 +
  1482 + function offset (token, separator) {
  1483 + addFormatToken(token, 0, 0, function () {
  1484 + var offset = this.utcOffset();
  1485 + var sign = '+';
  1486 + if (offset < 0) {
  1487 + offset = -offset;
  1488 + sign = '-';
  1489 + }
  1490 + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
  1491 + });
  1492 + }
  1493 +
  1494 + offset('Z', ':');
  1495 + offset('ZZ', '');
  1496 +
  1497 + // PARSING
  1498 +
  1499 + addRegexToken('Z', matchOffset);
  1500 + addRegexToken('ZZ', matchOffset);
  1501 + addParseToken(['Z', 'ZZ'], function (input, array, config) {
  1502 + config._useUTC = true;
  1503 + config._tzm = offsetFromString(input);
  1504 + });
  1505 +
  1506 + // HELPERS
  1507 +
  1508 + // timezone chunker
  1509 + // '+10:00' > ['10', '00']
  1510 + // '-1530' > ['-15', '30']
  1511 + var chunkOffset = /([\+\-]|\d\d)/gi;
  1512 +
  1513 + function offsetFromString(string) {
  1514 + var matches = ((string || '').match(matchOffset) || []);
  1515 + var chunk = matches[matches.length - 1] || [];
  1516 + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
  1517 + var minutes = +(parts[1] * 60) + toInt(parts[2]);
  1518 +
  1519 + return parts[0] === '+' ? minutes : -minutes;
  1520 + }
  1521 +
  1522 + // Return a moment from input, that is local/utc/zone equivalent to model.
  1523 + function cloneWithOffset(input, model) {
  1524 + var res, diff;
  1525 + if (model._isUTC) {
  1526 + res = model.clone();
  1527 + diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);
  1528 + // Use low-level api, because this fn is low-level api.
  1529 + res._d.setTime(+res._d + diff);
  1530 + utils_hooks__hooks.updateOffset(res, false);
  1531 + return res;
  1532 + } else {
  1533 + return local__createLocal(input).local();
  1534 + }
  1535 + }
  1536 +
  1537 + function getDateOffset (m) {
  1538 + // On Firefox.24 Date#getTimezoneOffset returns a floating point.
  1539 + // https://github.com/moment/moment/pull/1871
  1540 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
  1541 + }
  1542 +
  1543 + // HOOKS
  1544 +
  1545 + // This function will be called whenever a moment is mutated.
  1546 + // It is intended to keep the offset in sync with the timezone.
  1547 + utils_hooks__hooks.updateOffset = function () {};
  1548 +
  1549 + // MOMENTS
  1550 +
  1551 + // keepLocalTime = true means only change the timezone, without
  1552 + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
  1553 + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
  1554 + // +0200, so we adjust the time as needed, to be valid.
  1555 + //
  1556 + // Keeping the time actually adds/subtracts (one hour)
  1557 + // from the actual represented time. That is why we call updateOffset
  1558 + // a second time. In case it wants us to change the offset again
  1559 + // _changeInProgress == true case, then we have to adjust, because
  1560 + // there is no such time in the given timezone.
  1561 + function getSetOffset (input, keepLocalTime) {
  1562 + var offset = this._offset || 0,
  1563 + localAdjust;
  1564 + if (input != null) {
  1565 + if (typeof input === 'string') {
  1566 + input = offsetFromString(input);
  1567 + }
  1568 + if (Math.abs(input) < 16) {
  1569 + input = input * 60;
  1570 + }
  1571 + if (!this._isUTC && keepLocalTime) {
  1572 + localAdjust = getDateOffset(this);
  1573 + }
  1574 + this._offset = input;
  1575 + this._isUTC = true;
  1576 + if (localAdjust != null) {
  1577 + this.add(localAdjust, 'm');
  1578 + }
  1579 + if (offset !== input) {
  1580 + if (!keepLocalTime || this._changeInProgress) {
  1581 + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
  1582 + } else if (!this._changeInProgress) {
  1583 + this._changeInProgress = true;
  1584 + utils_hooks__hooks.updateOffset(this, true);
  1585 + this._changeInProgress = null;
  1586 + }
  1587 + }
  1588 + return this;
  1589 + } else {
  1590 + return this._isUTC ? offset : getDateOffset(this);
  1591 + }
  1592 + }
  1593 +
  1594 + function getSetZone (input, keepLocalTime) {
  1595 + if (input != null) {
  1596 + if (typeof input !== 'string') {
  1597 + input = -input;
  1598 + }
  1599 +
  1600 + this.utcOffset(input, keepLocalTime);
  1601 +
  1602 + return this;
  1603 + } else {
  1604 + return -this.utcOffset();
  1605 + }
  1606 + }
  1607 +
  1608 + function setOffsetToUTC (keepLocalTime) {
  1609 + return this.utcOffset(0, keepLocalTime);
  1610 + }
  1611 +
  1612 + function setOffsetToLocal (keepLocalTime) {
  1613 + if (this._isUTC) {
  1614 + this.utcOffset(0, keepLocalTime);
  1615 + this._isUTC = false;
  1616 +
  1617 + if (keepLocalTime) {
  1618 + this.subtract(getDateOffset(this), 'm');
  1619 + }
  1620 + }
  1621 + return this;
  1622 + }
  1623 +
  1624 + function setOffsetToParsedOffset () {
  1625 + if (this._tzm) {
  1626 + this.utcOffset(this._tzm);
  1627 + } else if (typeof this._i === 'string') {
  1628 + this.utcOffset(offsetFromString(this._i));
  1629 + }
  1630 + return this;
  1631 + }
  1632 +
  1633 + function hasAlignedHourOffset (input) {
  1634 + input = input ? local__createLocal(input).utcOffset() : 0;
  1635 +
  1636 + return (this.utcOffset() - input) % 60 === 0;
  1637 + }
  1638 +
  1639 + function isDaylightSavingTime () {
  1640 + return (
  1641 + this.utcOffset() > this.clone().month(0).utcOffset() ||
  1642 + this.utcOffset() > this.clone().month(5).utcOffset()
  1643 + );
  1644 + }
  1645 +
  1646 + function isDaylightSavingTimeShifted () {
  1647 + if (typeof this._isDSTShifted !== 'undefined') {
  1648 + return this._isDSTShifted;
  1649 + }
  1650 +
  1651 + var c = {};
  1652 +
  1653 + copyConfig(c, this);
  1654 + c = prepareConfig(c);
  1655 +
  1656 + if (c._a) {
  1657 + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
  1658 + this._isDSTShifted = this.isValid() &&
  1659 + compareArrays(c._a, other.toArray()) > 0;
  1660 + } else {
  1661 + this._isDSTShifted = false;
  1662 + }
  1663 +
  1664 + return this._isDSTShifted;
  1665 + }
  1666 +
  1667 + function isLocal () {
  1668 + return !this._isUTC;
  1669 + }
  1670 +
  1671 + function isUtcOffset () {
  1672 + return this._isUTC;
  1673 + }
  1674 +
  1675 + function isUtc () {
  1676 + return this._isUTC && this._offset === 0;
  1677 + }
  1678 +
  1679 + var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/;
  1680 +
  1681 + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
  1682 + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
  1683 + var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
  1684 +
  1685 + function create__createDuration (input, key) {
  1686 + var duration = input,
  1687 + // matching against regexp is expensive, do it on demand
  1688 + match = null,
  1689 + sign,
  1690 + ret,
  1691 + diffRes;
  1692 +
  1693 + if (isDuration(input)) {
  1694 + duration = {
  1695 + ms : input._milliseconds,
  1696 + d : input._days,
  1697 + M : input._months
  1698 + };
  1699 + } else if (typeof input === 'number') {
  1700 + duration = {};
  1701 + if (key) {
  1702 + duration[key] = input;
  1703 + } else {
  1704 + duration.milliseconds = input;
  1705 + }
  1706 + } else if (!!(match = aspNetRegex.exec(input))) {
  1707 + sign = (match[1] === '-') ? -1 : 1;
  1708 + duration = {
  1709 + y : 0,
  1710 + d : toInt(match[DATE]) * sign,
  1711 + h : toInt(match[HOUR]) * sign,
  1712 + m : toInt(match[MINUTE]) * sign,
  1713 + s : toInt(match[SECOND]) * sign,
  1714 + ms : toInt(match[MILLISECOND]) * sign
  1715 + };
  1716 + } else if (!!(match = create__isoRegex.exec(input))) {
  1717 + sign = (match[1] === '-') ? -1 : 1;
  1718 + duration = {
  1719 + y : parseIso(match[2], sign),
  1720 + M : parseIso(match[3], sign),
  1721 + d : parseIso(match[4], sign),
  1722 + h : parseIso(match[5], sign),
  1723 + m : parseIso(match[6], sign),
  1724 + s : parseIso(match[7], sign),
  1725 + w : parseIso(match[8], sign)
  1726 + };
  1727 + } else if (duration == null) {// checks for null or undefined
  1728 + duration = {};
  1729 + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
  1730 + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
  1731 +
  1732 + duration = {};
  1733 + duration.ms = diffRes.milliseconds;
  1734 + duration.M = diffRes.months;
  1735 + }
  1736 +
  1737 + ret = new Duration(duration);
  1738 +
  1739 + if (isDuration(input) && hasOwnProp(input, '_locale')) {
  1740 + ret._locale = input._locale;
  1741 + }
  1742 +
  1743 + return ret;
  1744 + }
  1745 +
  1746 + create__createDuration.fn = Duration.prototype;
  1747 +
  1748 + function parseIso (inp, sign) {
  1749 + // We'd normally use ~~inp for this, but unfortunately it also
  1750 + // converts floats to ints.
  1751 + // inp may be undefined, so careful calling replace on it.
  1752 + var res = inp && parseFloat(inp.replace(',', '.'));
  1753 + // apply sign while we're at it
  1754 + return (isNaN(res) ? 0 : res) * sign;
  1755 + }
  1756 +
  1757 + function positiveMomentsDifference(base, other) {
  1758 + var res = {milliseconds: 0, months: 0};
  1759 +
  1760 + res.months = other.month() - base.month() +
  1761 + (other.year() - base.year()) * 12;
  1762 + if (base.clone().add(res.months, 'M').isAfter(other)) {
  1763 + --res.months;
  1764 + }
  1765 +
  1766 + res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
  1767 +
  1768 + return res;
  1769 + }
  1770 +
  1771 + function momentsDifference(base, other) {
  1772 + var res;
  1773 + other = cloneWithOffset(other, base);
  1774 + if (base.isBefore(other)) {
  1775 + res = positiveMomentsDifference(base, other);
  1776 + } else {
  1777 + res = positiveMomentsDifference(other, base);
  1778 + res.milliseconds = -res.milliseconds;
  1779 + res.months = -res.months;
  1780 + }
  1781 +
  1782 + return res;
  1783 + }
  1784 +
  1785 + function createAdder(direction, name) {
  1786 + return function (val, period) {
  1787 + var dur, tmp;
  1788 + //invert the arguments, but complain about it
  1789 + if (period !== null && !isNaN(+period)) {
  1790 + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
  1791 + tmp = val; val = period; period = tmp;
  1792 + }
  1793 +
  1794 + val = typeof val === 'string' ? +val : val;
  1795 + dur = create__createDuration(val, period);
  1796 + add_subtract__addSubtract(this, dur, direction);
  1797 + return this;
  1798 + };
  1799 + }
  1800 +
  1801 + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
  1802 + var milliseconds = duration._milliseconds,
  1803 + days = duration._days,
  1804 + months = duration._months;
  1805 + updateOffset = updateOffset == null ? true : updateOffset;
  1806 +
  1807 + if (milliseconds) {
  1808 + mom._d.setTime(+mom._d + milliseconds * isAdding);
  1809 + }
  1810 + if (days) {
  1811 + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
  1812 + }
  1813 + if (months) {
  1814 + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
  1815 + }
  1816 + if (updateOffset) {
  1817 + utils_hooks__hooks.updateOffset(mom, days || months);
  1818 + }
  1819 + }
  1820 +
  1821 + var add_subtract__add = createAdder(1, 'add');
  1822 + var add_subtract__subtract = createAdder(-1, 'subtract');
  1823 +
  1824 + function moment_calendar__calendar (time, formats) {
  1825 + // We want to compare the start of today, vs this.
  1826 + // Getting start-of-today depends on whether we're local/utc/offset or not.
  1827 + var now = time || local__createLocal(),
  1828 + sod = cloneWithOffset(now, this).startOf('day'),
  1829 + diff = this.diff(sod, 'days', true),
  1830 + format = diff < -6 ? 'sameElse' :
  1831 + diff < -1 ? 'lastWeek' :
  1832 + diff < 0 ? 'lastDay' :
  1833 + diff < 1 ? 'sameDay' :
  1834 + diff < 2 ? 'nextDay' :
  1835 + diff < 7 ? 'nextWeek' : 'sameElse';
  1836 + return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now)));
  1837 + }
  1838 +
  1839 + function clone () {
  1840 + return new Moment(this);
  1841 + }
  1842 +
  1843 + function isAfter (input, units) {
  1844 + var inputMs;
  1845 + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
  1846 + if (units === 'millisecond') {
  1847 + input = isMoment(input) ? input : local__createLocal(input);
  1848 + return +this > +input;
  1849 + } else {
  1850 + inputMs = isMoment(input) ? +input : +local__createLocal(input);
  1851 + return inputMs < +this.clone().startOf(units);
  1852 + }
  1853 + }
  1854 +
  1855 + function isBefore (input, units) {
  1856 + var inputMs;
  1857 + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
  1858 + if (units === 'millisecond') {
  1859 + input = isMoment(input) ? input : local__createLocal(input);
  1860 + return +this < +input;
  1861 + } else {
  1862 + inputMs = isMoment(input) ? +input : +local__createLocal(input);
  1863 + return +this.clone().endOf(units) < inputMs;
  1864 + }
  1865 + }
  1866 +
  1867 + function isBetween (from, to, units) {
  1868 + return this.isAfter(from, units) && this.isBefore(to, units);
  1869 + }
  1870 +
  1871 + function isSame (input, units) {
  1872 + var inputMs;
  1873 + units = normalizeUnits(units || 'millisecond');
  1874 + if (units === 'millisecond') {
  1875 + input = isMoment(input) ? input : local__createLocal(input);
  1876 + return +this === +input;
  1877 + } else {
  1878 + inputMs = +local__createLocal(input);
  1879 + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
  1880 + }
  1881 + }
  1882 +
  1883 + function diff (input, units, asFloat) {
  1884 + var that = cloneWithOffset(input, this),
  1885 + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,
  1886 + delta, output;
  1887 +
  1888 + units = normalizeUnits(units);
  1889 +
  1890 + if (units === 'year' || units === 'month' || units === 'quarter') {
  1891 + output = monthDiff(this, that);
  1892 + if (units === 'quarter') {
  1893 + output = output / 3;
  1894 + } else if (units === 'year') {
  1895 + output = output / 12;
  1896 + }
  1897 + } else {
  1898 + delta = this - that;
  1899 + output = units === 'second' ? delta / 1e3 : // 1000
  1900 + units === 'minute' ? delta / 6e4 : // 1000 * 60
  1901 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
  1902 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
  1903 + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
  1904 + delta;
  1905 + }
  1906 + return asFloat ? output : absFloor(output);
  1907 + }
  1908 +
  1909 + function monthDiff (a, b) {
  1910 + // difference in months
  1911 + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
  1912 + // b is in (anchor - 1 month, anchor + 1 month)
  1913 + anchor = a.clone().add(wholeMonthDiff, 'months'),
  1914 + anchor2, adjust;
  1915 +
  1916 + if (b - anchor < 0) {
  1917 + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
  1918 + // linear across the month
  1919 + adjust = (b - anchor) / (anchor - anchor2);
  1920 + } else {
  1921 + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
  1922 + // linear across the month
  1923 + adjust = (b - anchor) / (anchor2 - anchor);
  1924 + }
  1925 +
  1926 + return -(wholeMonthDiff + adjust);
  1927 + }
  1928 +
  1929 + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
  1930 +
  1931 + function toString () {
  1932 + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
  1933 + }
  1934 +
  1935 + function moment_format__toISOString () {
  1936 + var m = this.clone().utc();
  1937 + if (0 < m.year() && m.year() <= 9999) {
  1938 + if ('function' === typeof Date.prototype.toISOString) {
  1939 + // native implementation is ~50x faster, use it when we can
  1940 + return this.toDate().toISOString();
  1941 + } else {
  1942 + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
  1943 + }
  1944 + } else {
  1945 + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
  1946 + }
  1947 + }
  1948 +
  1949 + function format (inputString) {
  1950 + var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
  1951 + return this.localeData().postformat(output);
  1952 + }
  1953 +
  1954 + function from (time, withoutSuffix) {
  1955 + if (!this.isValid()) {
  1956 + return this.localeData().invalidDate();
  1957 + }
  1958 + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
  1959 + }
  1960 +
  1961 + function fromNow (withoutSuffix) {
  1962 + return this.from(local__createLocal(), withoutSuffix);
  1963 + }
  1964 +
  1965 + function to (time, withoutSuffix) {
  1966 + if (!this.isValid()) {
  1967 + return this.localeData().invalidDate();
  1968 + }
  1969 + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
  1970 + }
  1971 +
  1972 + function toNow (withoutSuffix) {
  1973 + return this.to(local__createLocal(), withoutSuffix);
  1974 + }
  1975 +
  1976 + function locale (key) {
  1977 + var newLocaleData;
  1978 +
  1979 + if (key === undefined) {
  1980 + return this._locale._abbr;
  1981 + } else {
  1982 + newLocaleData = locale_locales__getLocale(key);
  1983 + if (newLocaleData != null) {
  1984 + this._locale = newLocaleData;
  1985 + }
  1986 + return this;
  1987 + }
  1988 + }
  1989 +
  1990 + var lang = deprecate(
  1991 + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
  1992 + function (key) {
  1993 + if (key === undefined) {
  1994 + return this.localeData();
  1995 + } else {
  1996 + return this.locale(key);
  1997 + }
  1998 + }
  1999 + );
  2000 +
  2001 + function localeData () {
  2002 + return this._locale;
  2003 + }
  2004 +
  2005 + function startOf (units) {
  2006 + units = normalizeUnits(units);
  2007 + // the following switch intentionally omits break keywords
  2008 + // to utilize falling through the cases.
  2009 + switch (units) {
  2010 + case 'year':
  2011 + this.month(0);
  2012 + /* falls through */
  2013 + case 'quarter':
  2014 + case 'month':
  2015 + this.date(1);
  2016 + /* falls through */
  2017 + case 'week':
  2018 + case 'isoWeek':
  2019 + case 'day':
  2020 + this.hours(0);
  2021 + /* falls through */
  2022 + case 'hour':
  2023 + this.minutes(0);
  2024 + /* falls through */
  2025 + case 'minute':
  2026 + this.seconds(0);
  2027 + /* falls through */
  2028 + case 'second':
  2029 + this.milliseconds(0);
  2030 + }
  2031 +
  2032 + // weeks are a special case
  2033 + if (units === 'week') {
  2034 + this.weekday(0);
  2035 + }
  2036 + if (units === 'isoWeek') {
  2037 + this.isoWeekday(1);
  2038 + }
  2039 +
  2040 + // quarters are also special
  2041 + if (units === 'quarter') {
  2042 + this.month(Math.floor(this.month() / 3) * 3);
  2043 + }
  2044 +
  2045 + return this;
  2046 + }
  2047 +
  2048 + function endOf (units) {
  2049 + units = normalizeUnits(units);
  2050 + if (units === undefined || units === 'millisecond') {
  2051 + return this;
  2052 + }
  2053 + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
  2054 + }
  2055 +
  2056 + function to_type__valueOf () {
  2057 + return +this._d - ((this._offset || 0) * 60000);
  2058 + }
  2059 +
  2060 + function unix () {
  2061 + return Math.floor(+this / 1000);
  2062 + }
  2063 +
  2064 + function toDate () {
  2065 + return this._offset ? new Date(+this) : this._d;
  2066 + }
  2067 +
  2068 + function toArray () {
  2069 + var m = this;
  2070 + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
  2071 + }
  2072 +
  2073 + function toObject () {
  2074 + var m = this;
  2075 + return {
  2076 + years: m.year(),
  2077 + months: m.month(),
  2078 + date: m.date(),
  2079 + hours: m.hours(),
  2080 + minutes: m.minutes(),
  2081 + seconds: m.seconds(),
  2082 + milliseconds: m.milliseconds()
  2083 + };
  2084 + }
  2085 +
  2086 + function moment_valid__isValid () {
  2087 + return valid__isValid(this);
  2088 + }
  2089 +
  2090 + function parsingFlags () {
  2091 + return extend({}, getParsingFlags(this));
  2092 + }
  2093 +
  2094 + function invalidAt () {
  2095 + return getParsingFlags(this).overflow;
  2096 + }
  2097 +
  2098 + addFormatToken(0, ['gg', 2], 0, function () {
  2099 + return this.weekYear() % 100;
  2100 + });
  2101 +
  2102 + addFormatToken(0, ['GG', 2], 0, function () {
  2103 + return this.isoWeekYear() % 100;
  2104 + });
  2105 +
  2106 + function addWeekYearFormatToken (token, getter) {
  2107 + addFormatToken(0, [token, token.length], 0, getter);
  2108 + }
  2109 +
  2110 + addWeekYearFormatToken('gggg', 'weekYear');
  2111 + addWeekYearFormatToken('ggggg', 'weekYear');
  2112 + addWeekYearFormatToken('GGGG', 'isoWeekYear');
  2113 + addWeekYearFormatToken('GGGGG', 'isoWeekYear');
  2114 +
  2115 + // ALIASES
  2116 +
  2117 + addUnitAlias('weekYear', 'gg');
  2118 + addUnitAlias('isoWeekYear', 'GG');
  2119 +
  2120 + // PARSING
  2121 +
  2122 + addRegexToken('G', matchSigned);
  2123 + addRegexToken('g', matchSigned);
  2124 + addRegexToken('GG', match1to2, match2);
  2125 + addRegexToken('gg', match1to2, match2);
  2126 + addRegexToken('GGGG', match1to4, match4);
  2127 + addRegexToken('gggg', match1to4, match4);
  2128 + addRegexToken('GGGGG', match1to6, match6);
  2129 + addRegexToken('ggggg', match1to6, match6);
  2130 +
  2131 + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
  2132 + week[token.substr(0, 2)] = toInt(input);
  2133 + });
  2134 +
  2135 + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
  2136 + week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
  2137 + });
  2138 +
  2139 + // HELPERS
  2140 +
  2141 + function weeksInYear(year, dow, doy) {
  2142 + return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
  2143 + }
  2144 +
  2145 + // MOMENTS
  2146 +
  2147 + function getSetWeekYear (input) {
  2148 + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
  2149 + return input == null ? year : this.add((input - year), 'y');
  2150 + }
  2151 +
  2152 + function getSetISOWeekYear (input) {
  2153 + var year = weekOfYear(this, 1, 4).year;
  2154 + return input == null ? year : this.add((input - year), 'y');
  2155 + }
  2156 +
  2157 + function getISOWeeksInYear () {
  2158 + return weeksInYear(this.year(), 1, 4);
  2159 + }
  2160 +
  2161 + function getWeeksInYear () {
  2162 + var weekInfo = this.localeData()._week;
  2163 + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
  2164 + }
  2165 +
  2166 + addFormatToken('Q', 0, 0, 'quarter');
  2167 +
  2168 + // ALIASES
  2169 +
  2170 + addUnitAlias('quarter', 'Q');
  2171 +
  2172 + // PARSING
  2173 +
  2174 + addRegexToken('Q', match1);
  2175 + addParseToken('Q', function (input, array) {
  2176 + array[MONTH] = (toInt(input) - 1) * 3;
  2177 + });
  2178 +
  2179 + // MOMENTS
  2180 +
  2181 + function getSetQuarter (input) {
  2182 + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
  2183 + }
  2184 +
  2185 + addFormatToken('D', ['DD', 2], 'Do', 'date');
  2186 +
  2187 + // ALIASES
  2188 +
  2189 + addUnitAlias('date', 'D');
  2190 +
  2191 + // PARSING
  2192 +
  2193 + addRegexToken('D', match1to2);
  2194 + addRegexToken('DD', match1to2, match2);
  2195 + addRegexToken('Do', function (isStrict, locale) {
  2196 + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
  2197 + });
  2198 +
  2199 + addParseToken(['D', 'DD'], DATE);
  2200 + addParseToken('Do', function (input, array) {
  2201 + array[DATE] = toInt(input.match(match1to2)[0], 10);
  2202 + });
  2203 +
  2204 + // MOMENTS
  2205 +
  2206 + var getSetDayOfMonth = makeGetSet('Date', true);
  2207 +
  2208 + addFormatToken('d', 0, 'do', 'day');
  2209 +
  2210 + addFormatToken('dd', 0, 0, function (format) {
  2211 + return this.localeData().weekdaysMin(this, format);
  2212 + });
  2213 +
  2214 + addFormatToken('ddd', 0, 0, function (format) {
  2215 + return this.localeData().weekdaysShort(this, format);
  2216 + });
  2217 +
  2218 + addFormatToken('dddd', 0, 0, function (format) {
  2219 + return this.localeData().weekdays(this, format);
  2220 + });
  2221 +
  2222 + addFormatToken('e', 0, 0, 'weekday');
  2223 + addFormatToken('E', 0, 0, 'isoWeekday');
  2224 +
  2225 + // ALIASES
  2226 +
  2227 + addUnitAlias('day', 'd');
  2228 + addUnitAlias('weekday', 'e');
  2229 + addUnitAlias('isoWeekday', 'E');
  2230 +
  2231 + // PARSING
  2232 +
  2233 + addRegexToken('d', match1to2);
  2234 + addRegexToken('e', match1to2);
  2235 + addRegexToken('E', match1to2);
  2236 + addRegexToken('dd', matchWord);
  2237 + addRegexToken('ddd', matchWord);
  2238 + addRegexToken('dddd', matchWord);
  2239 +
  2240 + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {
  2241 + var weekday = config._locale.weekdaysParse(input);
  2242 + // if we didn't get a weekday name, mark the date as invalid
  2243 + if (weekday != null) {
  2244 + week.d = weekday;
  2245 + } else {
  2246 + getParsingFlags(config).invalidWeekday = input;
  2247 + }
  2248 + });
  2249 +
  2250 + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
  2251 + week[token] = toInt(input);
  2252 + });
  2253 +
  2254 + // HELPERS
  2255 +
  2256 + function parseWeekday(input, locale) {
  2257 + if (typeof input !== 'string') {
  2258 + return input;
  2259 + }
  2260 +
  2261 + if (!isNaN(input)) {
  2262 + return parseInt(input, 10);
  2263 + }
  2264 +
  2265 + input = locale.weekdaysParse(input);
  2266 + if (typeof input === 'number') {
  2267 + return input;
  2268 + }
  2269 +
  2270 + return null;
  2271 + }
  2272 +
  2273 + // LOCALES
  2274 +
  2275 + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
  2276 + function localeWeekdays (m) {
  2277 + return this._weekdays[m.day()];
  2278 + }
  2279 +
  2280 + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
  2281 + function localeWeekdaysShort (m) {
  2282 + return this._weekdaysShort[m.day()];
  2283 + }
  2284 +
  2285 + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
  2286 + function localeWeekdaysMin (m) {
  2287 + return this._weekdaysMin[m.day()];
  2288 + }
  2289 +
  2290 + function localeWeekdaysParse (weekdayName) {
  2291 + var i, mom, regex;
  2292 +
  2293 + this._weekdaysParse = this._weekdaysParse || [];
  2294 +
  2295 + for (i = 0; i < 7; i++) {
  2296 + // make the regex if we don't have it already
  2297 + if (!this._weekdaysParse[i]) {
  2298 + mom = local__createLocal([2000, 1]).day(i);
  2299 + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
  2300 + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
  2301 + }
  2302 + // test the regex
  2303 + if (this._weekdaysParse[i].test(weekdayName)) {
  2304 + return i;
  2305 + }
  2306 + }
  2307 + }
  2308 +
  2309 + // MOMENTS
  2310 +
  2311 + function getSetDayOfWeek (input) {
  2312 + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
  2313 + if (input != null) {
  2314 + input = parseWeekday(input, this.localeData());
  2315 + return this.add(input - day, 'd');
  2316 + } else {
  2317 + return day;
  2318 + }
  2319 + }
  2320 +
  2321 + function getSetLocaleDayOfWeek (input) {
  2322 + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
  2323 + return input == null ? weekday : this.add(input - weekday, 'd');
  2324 + }
  2325 +
  2326 + function getSetISODayOfWeek (input) {
  2327 + // behaves the same as moment#day except
  2328 + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
  2329 + // as a setter, sunday should belong to the previous week.
  2330 + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
  2331 + }
  2332 +
  2333 + addFormatToken('H', ['HH', 2], 0, 'hour');
  2334 + addFormatToken('h', ['hh', 2], 0, function () {
  2335 + return this.hours() % 12 || 12;
  2336 + });
  2337 +
  2338 + function meridiem (token, lowercase) {
  2339 + addFormatToken(token, 0, 0, function () {
  2340 + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
  2341 + });
  2342 + }
  2343 +
  2344 + meridiem('a', true);
  2345 + meridiem('A', false);
  2346 +
  2347 + // ALIASES
  2348 +
  2349 + addUnitAlias('hour', 'h');
  2350 +
  2351 + // PARSING
  2352 +
  2353 + function matchMeridiem (isStrict, locale) {
  2354 + return locale._meridiemParse;
  2355 + }
  2356 +
  2357 + addRegexToken('a', matchMeridiem);
  2358 + addRegexToken('A', matchMeridiem);
  2359 + addRegexToken('H', match1to2);
  2360 + addRegexToken('h', match1to2);
  2361 + addRegexToken('HH', match1to2, match2);
  2362 + addRegexToken('hh', match1to2, match2);
  2363 +
  2364 + addParseToken(['H', 'HH'], HOUR);
  2365 + addParseToken(['a', 'A'], function (input, array, config) {
  2366 + config._isPm = config._locale.isPM(input);
  2367 + config._meridiem = input;
  2368 + });
  2369 + addParseToken(['h', 'hh'], function (input, array, config) {
  2370 + array[HOUR] = toInt(input);
  2371 + getParsingFlags(config).bigHour = true;
  2372 + });
  2373 +
  2374 + // LOCALES
  2375 +
  2376 + function localeIsPM (input) {
  2377 + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
  2378 + // Using charAt should be more compatible.
  2379 + return ((input + '').toLowerCase().charAt(0) === 'p');
  2380 + }
  2381 +
  2382 + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
  2383 + function localeMeridiem (hours, minutes, isLower) {
  2384 + if (hours > 11) {
  2385 + return isLower ? 'pm' : 'PM';
  2386 + } else {
  2387 + return isLower ? 'am' : 'AM';
  2388 + }
  2389 + }
  2390 +
  2391 +
  2392 + // MOMENTS
  2393 +
  2394 + // Setting the hour should keep the time, because the user explicitly
  2395 + // specified which hour he wants. So trying to maintain the same hour (in
  2396 + // a new timezone) makes sense. Adding/subtracting hours does not follow
  2397 + // this rule.
  2398 + var getSetHour = makeGetSet('Hours', true);
  2399 +
  2400 + addFormatToken('m', ['mm', 2], 0, 'minute');
  2401 +
  2402 + // ALIASES
  2403 +
  2404 + addUnitAlias('minute', 'm');
  2405 +
  2406 + // PARSING
  2407 +
  2408 + addRegexToken('m', match1to2);
  2409 + addRegexToken('mm', match1to2, match2);
  2410 + addParseToken(['m', 'mm'], MINUTE);
  2411 +
  2412 + // MOMENTS
  2413 +
  2414 + var getSetMinute = makeGetSet('Minutes', false);
  2415 +
  2416 + addFormatToken('s', ['ss', 2], 0, 'second');
  2417 +
  2418 + // ALIASES
  2419 +
  2420 + addUnitAlias('second', 's');
  2421 +
  2422 + // PARSING
  2423 +
  2424 + addRegexToken('s', match1to2);
  2425 + addRegexToken('ss', match1to2, match2);
  2426 + addParseToken(['s', 'ss'], SECOND);
  2427 +
  2428 + // MOMENTS
  2429 +
  2430 + var getSetSecond = makeGetSet('Seconds', false);
  2431 +
  2432 + addFormatToken('S', 0, 0, function () {
  2433 + return ~~(this.millisecond() / 100);
  2434 + });
  2435 +
  2436 + addFormatToken(0, ['SS', 2], 0, function () {
  2437 + return ~~(this.millisecond() / 10);
  2438 + });
  2439 +
  2440 + addFormatToken(0, ['SSS', 3], 0, 'millisecond');
  2441 + addFormatToken(0, ['SSSS', 4], 0, function () {
  2442 + return this.millisecond() * 10;
  2443 + });
  2444 + addFormatToken(0, ['SSSSS', 5], 0, function () {
  2445 + return this.millisecond() * 100;
  2446 + });
  2447 + addFormatToken(0, ['SSSSSS', 6], 0, function () {
  2448 + return this.millisecond() * 1000;
  2449 + });
  2450 + addFormatToken(0, ['SSSSSSS', 7], 0, function () {
  2451 + return this.millisecond() * 10000;
  2452 + });
  2453 + addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
  2454 + return this.millisecond() * 100000;
  2455 + });
  2456 + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
  2457 + return this.millisecond() * 1000000;
  2458 + });
  2459 +
  2460 +
  2461 + // ALIASES
  2462 +
  2463 + addUnitAlias('millisecond', 'ms');
  2464 +
  2465 + // PARSING
  2466 +
  2467 + addRegexToken('S', match1to3, match1);
  2468 + addRegexToken('SS', match1to3, match2);
  2469 + addRegexToken('SSS', match1to3, match3);
  2470 +
  2471 + var token;
  2472 + for (token = 'SSSS'; token.length <= 9; token += 'S') {
  2473 + addRegexToken(token, matchUnsigned);
  2474 + }
  2475 +
  2476 + function parseMs(input, array) {
  2477 + array[MILLISECOND] = toInt(('0.' + input) * 1000);
  2478 + }
  2479 +
  2480 + for (token = 'S'; token.length <= 9; token += 'S') {
  2481 + addParseToken(token, parseMs);
  2482 + }
  2483 + // MOMENTS
  2484 +
  2485 + var getSetMillisecond = makeGetSet('Milliseconds', false);
  2486 +
  2487 + addFormatToken('z', 0, 0, 'zoneAbbr');
  2488 + addFormatToken('zz', 0, 0, 'zoneName');
  2489 +
  2490 + // MOMENTS
  2491 +
  2492 + function getZoneAbbr () {
  2493 + return this._isUTC ? 'UTC' : '';
  2494 + }
  2495 +
  2496 + function getZoneName () {
  2497 + return this._isUTC ? 'Coordinated Universal Time' : '';
  2498 + }
  2499 +
  2500 + var momentPrototype__proto = Moment.prototype;
  2501 +
  2502 + momentPrototype__proto.add = add_subtract__add;
  2503 + momentPrototype__proto.calendar = moment_calendar__calendar;
  2504 + momentPrototype__proto.clone = clone;
  2505 + momentPrototype__proto.diff = diff;
  2506 + momentPrototype__proto.endOf = endOf;
  2507 + momentPrototype__proto.format = format;
  2508 + momentPrototype__proto.from = from;
  2509 + momentPrototype__proto.fromNow = fromNow;
  2510 + momentPrototype__proto.to = to;
  2511 + momentPrototype__proto.toNow = toNow;
  2512 + momentPrototype__proto.get = getSet;
  2513 + momentPrototype__proto.invalidAt = invalidAt;
  2514 + momentPrototype__proto.isAfter = isAfter;
  2515 + momentPrototype__proto.isBefore = isBefore;
  2516 + momentPrototype__proto.isBetween = isBetween;
  2517 + momentPrototype__proto.isSame = isSame;
  2518 + momentPrototype__proto.isValid = moment_valid__isValid;
  2519 + momentPrototype__proto.lang = lang;
  2520 + momentPrototype__proto.locale = locale;
  2521 + momentPrototype__proto.localeData = localeData;
  2522 + momentPrototype__proto.max = prototypeMax;
  2523 + momentPrototype__proto.min = prototypeMin;
  2524 + momentPrototype__proto.parsingFlags = parsingFlags;
  2525 + momentPrototype__proto.set = getSet;
  2526 + momentPrototype__proto.startOf = startOf;
  2527 + momentPrototype__proto.subtract = add_subtract__subtract;
  2528 + momentPrototype__proto.toArray = toArray;
  2529 + momentPrototype__proto.toObject = toObject;
  2530 + momentPrototype__proto.toDate = toDate;
  2531 + momentPrototype__proto.toISOString = moment_format__toISOString;
  2532 + momentPrototype__proto.toJSON = moment_format__toISOString;
  2533 + momentPrototype__proto.toString = toString;
  2534 + momentPrototype__proto.unix = unix;
  2535 + momentPrototype__proto.valueOf = to_type__valueOf;
  2536 +
  2537 + // Year
  2538 + momentPrototype__proto.year = getSetYear;
  2539 + momentPrototype__proto.isLeapYear = getIsLeapYear;
  2540 +
  2541 + // Week Year
  2542 + momentPrototype__proto.weekYear = getSetWeekYear;
  2543 + momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
  2544 +
  2545 + // Quarter
  2546 + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
  2547 +
  2548 + // Month
  2549 + momentPrototype__proto.month = getSetMonth;
  2550 + momentPrototype__proto.daysInMonth = getDaysInMonth;
  2551 +
  2552 + // Week
  2553 + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
  2554 + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
  2555 + momentPrototype__proto.weeksInYear = getWeeksInYear;
  2556 + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
  2557 +
  2558 + // Day
  2559 + momentPrototype__proto.date = getSetDayOfMonth;
  2560 + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
  2561 + momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
  2562 + momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
  2563 + momentPrototype__proto.dayOfYear = getSetDayOfYear;
  2564 +
  2565 + // Hour
  2566 + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
  2567 +
  2568 + // Minute
  2569 + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
  2570 +
  2571 + // Second
  2572 + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
  2573 +
  2574 + // Millisecond
  2575 + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
  2576 +
  2577 + // Offset
  2578 + momentPrototype__proto.utcOffset = getSetOffset;
  2579 + momentPrototype__proto.utc = setOffsetToUTC;
  2580 + momentPrototype__proto.local = setOffsetToLocal;
  2581 + momentPrototype__proto.parseZone = setOffsetToParsedOffset;
  2582 + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
  2583 + momentPrototype__proto.isDST = isDaylightSavingTime;
  2584 + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
  2585 + momentPrototype__proto.isLocal = isLocal;
  2586 + momentPrototype__proto.isUtcOffset = isUtcOffset;
  2587 + momentPrototype__proto.isUtc = isUtc;
  2588 + momentPrototype__proto.isUTC = isUtc;
  2589 +
  2590 + // Timezone
  2591 + momentPrototype__proto.zoneAbbr = getZoneAbbr;
  2592 + momentPrototype__proto.zoneName = getZoneName;
  2593 +
  2594 + // Deprecations
  2595 + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
  2596 + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
  2597 + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
  2598 + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
  2599 +
  2600 + var momentPrototype = momentPrototype__proto;
  2601 +
  2602 + function moment__createUnix (input) {
  2603 + return local__createLocal(input * 1000);
  2604 + }
  2605 +
  2606 + function moment__createInZone () {
  2607 + return local__createLocal.apply(null, arguments).parseZone();
  2608 + }
  2609 +
  2610 + var defaultCalendar = {
  2611 + sameDay : '[Today at] LT',
  2612 + nextDay : '[Tomorrow at] LT',
  2613 + nextWeek : 'dddd [at] LT',
  2614 + lastDay : '[Yesterday at] LT',
  2615 + lastWeek : '[Last] dddd [at] LT',
  2616 + sameElse : 'L'
  2617 + };
  2618 +
  2619 + function locale_calendar__calendar (key, mom, now) {
  2620 + var output = this._calendar[key];
  2621 + return typeof output === 'function' ? output.call(mom, now) : output;
  2622 + }
  2623 +
  2624 + var defaultLongDateFormat = {
  2625 + LTS : 'h:mm:ss A',
  2626 + LT : 'h:mm A',
  2627 + L : 'MM/DD/YYYY',
  2628 + LL : 'MMMM D, YYYY',
  2629 + LLL : 'MMMM D, YYYY h:mm A',
  2630 + LLLL : 'dddd, MMMM D, YYYY h:mm A'
  2631 + };
  2632 +
  2633 + function longDateFormat (key) {
  2634 + var format = this._longDateFormat[key],
  2635 + formatUpper = this._longDateFormat[key.toUpperCase()];
  2636 +
  2637 + if (format || !formatUpper) {
  2638 + return format;
  2639 + }
  2640 +
  2641 + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
  2642 + return val.slice(1);
  2643 + });
  2644 +
  2645 + return this._longDateFormat[key];
  2646 + }
  2647 +
  2648 + var defaultInvalidDate = 'Invalid date';
  2649 +
  2650 + function invalidDate () {
  2651 + return this._invalidDate;
  2652 + }
  2653 +
  2654 + var defaultOrdinal = '%d';
  2655 + var defaultOrdinalParse = /\d{1,2}/;
  2656 +
  2657 + function ordinal (number) {
  2658 + return this._ordinal.replace('%d', number);
  2659 + }
  2660 +
  2661 + function preParsePostFormat (string) {
  2662 + return string;
  2663 + }
  2664 +
  2665 + var defaultRelativeTime = {
  2666 + future : 'in %s',
  2667 + past : '%s ago',
  2668 + s : 'a few seconds',
  2669 + m : 'a minute',
  2670 + mm : '%d minutes',
  2671 + h : 'an hour',
  2672 + hh : '%d hours',
  2673 + d : 'a day',
  2674 + dd : '%d days',
  2675 + M : 'a month',
  2676 + MM : '%d months',
  2677 + y : 'a year',
  2678 + yy : '%d years'
  2679 + };
  2680 +
  2681 + function relative__relativeTime (number, withoutSuffix, string, isFuture) {
  2682 + var output = this._relativeTime[string];
  2683 + return (typeof output === 'function') ?
  2684 + output(number, withoutSuffix, string, isFuture) :
  2685 + output.replace(/%d/i, number);
  2686 + }
  2687 +
  2688 + function pastFuture (diff, output) {
  2689 + var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
  2690 + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
  2691 + }
  2692 +
  2693 + function locale_set__set (config) {
  2694 + var prop, i;
  2695 + for (i in config) {
  2696 + prop = config[i];
  2697 + if (typeof prop === 'function') {
  2698 + this[i] = prop;
  2699 + } else {
  2700 + this['_' + i] = prop;
  2701 + }
  2702 + }
  2703 + // Lenient ordinal parsing accepts just a number in addition to
  2704 + // number + (possibly) stuff coming from _ordinalParseLenient.
  2705 + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
  2706 + }
  2707 +
  2708 + var prototype__proto = Locale.prototype;
  2709 +
  2710 + prototype__proto._calendar = defaultCalendar;
  2711 + prototype__proto.calendar = locale_calendar__calendar;
  2712 + prototype__proto._longDateFormat = defaultLongDateFormat;
  2713 + prototype__proto.longDateFormat = longDateFormat;
  2714 + prototype__proto._invalidDate = defaultInvalidDate;
  2715 + prototype__proto.invalidDate = invalidDate;
  2716 + prototype__proto._ordinal = defaultOrdinal;
  2717 + prototype__proto.ordinal = ordinal;
  2718 + prototype__proto._ordinalParse = defaultOrdinalParse;
  2719 + prototype__proto.preparse = preParsePostFormat;
  2720 + prototype__proto.postformat = preParsePostFormat;
  2721 + prototype__proto._relativeTime = defaultRelativeTime;
  2722 + prototype__proto.relativeTime = relative__relativeTime;
  2723 + prototype__proto.pastFuture = pastFuture;
  2724 + prototype__proto.set = locale_set__set;
  2725 +
  2726 + // Month
  2727 + prototype__proto.months = localeMonths;
  2728 + prototype__proto._months = defaultLocaleMonths;
  2729 + prototype__proto.monthsShort = localeMonthsShort;
  2730 + prototype__proto._monthsShort = defaultLocaleMonthsShort;
  2731 + prototype__proto.monthsParse = localeMonthsParse;
  2732 +
  2733 + // Week
  2734 + prototype__proto.week = localeWeek;
  2735 + prototype__proto._week = defaultLocaleWeek;
  2736 + prototype__proto.firstDayOfYear = localeFirstDayOfYear;
  2737 + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
  2738 +
  2739 + // Day of Week
  2740 + prototype__proto.weekdays = localeWeekdays;
  2741 + prototype__proto._weekdays = defaultLocaleWeekdays;
  2742 + prototype__proto.weekdaysMin = localeWeekdaysMin;
  2743 + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
  2744 + prototype__proto.weekdaysShort = localeWeekdaysShort;
  2745 + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
  2746 + prototype__proto.weekdaysParse = localeWeekdaysParse;
  2747 +
  2748 + // Hours
  2749 + prototype__proto.isPM = localeIsPM;
  2750 + prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
  2751 + prototype__proto.meridiem = localeMeridiem;
  2752 +
  2753 + function lists__get (format, index, field, setter) {
  2754 + var locale = locale_locales__getLocale();
  2755 + var utc = create_utc__createUTC().set(setter, index);
  2756 + return locale[field](utc, format);
  2757 + }
  2758 +
  2759 + function list (format, index, field, count, setter) {
  2760 + if (typeof format === 'number') {
  2761 + index = format;
  2762 + format = undefined;
  2763 + }
  2764 +
  2765 + format = format || '';
  2766 +
  2767 + if (index != null) {
  2768 + return lists__get(format, index, field, setter);
  2769 + }
  2770 +
  2771 + var i;
  2772 + var out = [];
  2773 + for (i = 0; i < count; i++) {
  2774 + out[i] = lists__get(format, i, field, setter);
  2775 + }
  2776 + return out;
  2777 + }
  2778 +
  2779 + function lists__listMonths (format, index) {
  2780 + return list(format, index, 'months', 12, 'month');
  2781 + }
  2782 +
  2783 + function lists__listMonthsShort (format, index) {
  2784 + return list(format, index, 'monthsShort', 12, 'month');
  2785 + }
  2786 +
  2787 + function lists__listWeekdays (format, index) {
  2788 + return list(format, index, 'weekdays', 7, 'day');
  2789 + }
  2790 +
  2791 + function lists__listWeekdaysShort (format, index) {
  2792 + return list(format, index, 'weekdaysShort', 7, 'day');
  2793 + }
  2794 +
  2795 + function lists__listWeekdaysMin (format, index) {
  2796 + return list(format, index, 'weekdaysMin', 7, 'day');
  2797 + }
  2798 +
  2799 + locale_locales__getSetGlobalLocale('en', {
  2800 + ordinalParse: /\d{1,2}(th|st|nd|rd)/,
  2801 + ordinal : function (number) {
  2802 + var b = number % 10,
  2803 + output = (toInt(number % 100 / 10) === 1) ? 'th' :
  2804 + (b === 1) ? 'st' :
  2805 + (b === 2) ? 'nd' :
  2806 + (b === 3) ? 'rd' : 'th';
  2807 + return number + output;
  2808 + }
  2809 + });
  2810 +
  2811 + // Side effect imports
  2812 + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
  2813 + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
  2814 +
  2815 + var mathAbs = Math.abs;
  2816 +
  2817 + function duration_abs__abs () {
  2818 + var data = this._data;
  2819 +
  2820 + this._milliseconds = mathAbs(this._milliseconds);
  2821 + this._days = mathAbs(this._days);
  2822 + this._months = mathAbs(this._months);
  2823 +
  2824 + data.milliseconds = mathAbs(data.milliseconds);
  2825 + data.seconds = mathAbs(data.seconds);
  2826 + data.minutes = mathAbs(data.minutes);
  2827 + data.hours = mathAbs(data.hours);
  2828 + data.months = mathAbs(data.months);
  2829 + data.years = mathAbs(data.years);
  2830 +
  2831 + return this;
  2832 + }
  2833 +
  2834 + function duration_add_subtract__addSubtract (duration, input, value, direction) {
  2835 + var other = create__createDuration(input, value);
  2836 +
  2837 + duration._milliseconds += direction * other._milliseconds;
  2838 + duration._days += direction * other._days;
  2839 + duration._months += direction * other._months;
  2840 +
  2841 + return duration._bubble();
  2842 + }
  2843 +
  2844 + // supports only 2.0-style add(1, 's') or add(duration)
  2845 + function duration_add_subtract__add (input, value) {
  2846 + return duration_add_subtract__addSubtract(this, input, value, 1);
  2847 + }
  2848 +
  2849 + // supports only 2.0-style subtract(1, 's') or subtract(duration)
  2850 + function duration_add_subtract__subtract (input, value) {
  2851 + return duration_add_subtract__addSubtract(this, input, value, -1);
  2852 + }
  2853 +
  2854 + function absCeil (number) {
  2855 + if (number < 0) {
  2856 + return Math.floor(number);
  2857 + } else {
  2858 + return Math.ceil(number);
  2859 + }
  2860 + }
  2861 +
  2862 + function bubble () {
  2863 + var milliseconds = this._milliseconds;
  2864 + var days = this._days;
  2865 + var months = this._months;
  2866 + var data = this._data;
  2867 + var seconds, minutes, hours, years, monthsFromDays;
  2868 +
  2869 + // if we have a mix of positive and negative values, bubble down first
  2870 + // check: https://github.com/moment/moment/issues/2166
  2871 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
  2872 + (milliseconds <= 0 && days <= 0 && months <= 0))) {
  2873 + milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
  2874 + days = 0;
  2875 + months = 0;
  2876 + }
  2877 +
  2878 + // The following code bubbles up values, see the tests for
  2879 + // examples of what that means.
  2880 + data.milliseconds = milliseconds % 1000;
  2881 +
  2882 + seconds = absFloor(milliseconds / 1000);
  2883 + data.seconds = seconds % 60;
  2884 +
  2885 + minutes = absFloor(seconds / 60);
  2886 + data.minutes = minutes % 60;
  2887 +
  2888 + hours = absFloor(minutes / 60);
  2889 + data.hours = hours % 24;
  2890 +
  2891 + days += absFloor(hours / 24);
  2892 +
  2893 + // convert days to months
  2894 + monthsFromDays = absFloor(daysToMonths(days));
  2895 + months += monthsFromDays;
  2896 + days -= absCeil(monthsToDays(monthsFromDays));
  2897 +
  2898 + // 12 months -> 1 year
  2899 + years = absFloor(months / 12);
  2900 + months %= 12;
  2901 +
  2902 + data.days = days;
  2903 + data.months = months;
  2904 + data.years = years;
  2905 +
  2906 + return this;
  2907 + }
  2908 +
  2909 + function daysToMonths (days) {
  2910 + // 400 years have 146097 days (taking into account leap year rules)
  2911 + // 400 years have 12 months === 4800
  2912 + return days * 4800 / 146097;
  2913 + }
  2914 +
  2915 + function monthsToDays (months) {
  2916 + // the reverse of daysToMonths
  2917 + return months * 146097 / 4800;
  2918 + }
  2919 +
  2920 + function as (units) {
  2921 + var days;
  2922 + var months;
  2923 + var milliseconds = this._milliseconds;
  2924 +
  2925 + units = normalizeUnits(units);
  2926 +
  2927 + if (units === 'month' || units === 'year') {
  2928 + days = this._days + milliseconds / 864e5;
  2929 + months = this._months + daysToMonths(days);
  2930 + return units === 'month' ? months : months / 12;
  2931 + } else {
  2932 + // handle milliseconds separately because of floating point math errors (issue #1867)
  2933 + days = this._days + Math.round(monthsToDays(this._months));
  2934 + switch (units) {
  2935 + case 'week' : return days / 7 + milliseconds / 6048e5;
  2936 + case 'day' : return days + milliseconds / 864e5;
  2937 + case 'hour' : return days * 24 + milliseconds / 36e5;
  2938 + case 'minute' : return days * 1440 + milliseconds / 6e4;
  2939 + case 'second' : return days * 86400 + milliseconds / 1000;
  2940 + // Math.floor prevents floating point math errors here
  2941 + case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
  2942 + default: throw new Error('Unknown unit ' + units);
  2943 + }
  2944 + }
  2945 + }
  2946 +
  2947 + // TODO: Use this.as('ms')?
  2948 + function duration_as__valueOf () {
  2949 + return (
  2950 + this._milliseconds +
  2951 + this._days * 864e5 +
  2952 + (this._months % 12) * 2592e6 +
  2953 + toInt(this._months / 12) * 31536e6
  2954 + );
  2955 + }
  2956 +
  2957 + function makeAs (alias) {
  2958 + return function () {
  2959 + return this.as(alias);
  2960 + };
  2961 + }
  2962 +
  2963 + var asMilliseconds = makeAs('ms');
  2964 + var asSeconds = makeAs('s');
  2965 + var asMinutes = makeAs('m');
  2966 + var asHours = makeAs('h');
  2967 + var asDays = makeAs('d');
  2968 + var asWeeks = makeAs('w');
  2969 + var asMonths = makeAs('M');
  2970 + var asYears = makeAs('y');
  2971 +
  2972 + function duration_get__get (units) {
  2973 + units = normalizeUnits(units);
  2974 + return this[units + 's']();
  2975 + }
  2976 +
  2977 + function makeGetter(name) {
  2978 + return function () {
  2979 + return this._data[name];
  2980 + };
  2981 + }
  2982 +
  2983 + var milliseconds = makeGetter('milliseconds');
  2984 + var seconds = makeGetter('seconds');
  2985 + var minutes = makeGetter('minutes');
  2986 + var hours = makeGetter('hours');
  2987 + var days = makeGetter('days');
  2988 + var months = makeGetter('months');
  2989 + var years = makeGetter('years');
  2990 +
  2991 + function weeks () {
  2992 + return absFloor(this.days() / 7);
  2993 + }
  2994 +
  2995 + var round = Math.round;
  2996 + var thresholds = {
  2997 + s: 45, // seconds to minute
  2998 + m: 45, // minutes to hour
  2999 + h: 22, // hours to day
  3000 + d: 26, // days to month
  3001 + M: 11 // months to year
  3002 + };
  3003 +
  3004 + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
  3005 + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
  3006 + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
  3007 + }
  3008 +
  3009 + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
  3010 + var duration = create__createDuration(posNegDuration).abs();
  3011 + var seconds = round(duration.as('s'));
  3012 + var minutes = round(duration.as('m'));
  3013 + var hours = round(duration.as('h'));
  3014 + var days = round(duration.as('d'));
  3015 + var months = round(duration.as('M'));
  3016 + var years = round(duration.as('y'));
  3017 +
  3018 + var a = seconds < thresholds.s && ['s', seconds] ||
  3019 + minutes === 1 && ['m'] ||
  3020 + minutes < thresholds.m && ['mm', minutes] ||
  3021 + hours === 1 && ['h'] ||
  3022 + hours < thresholds.h && ['hh', hours] ||
  3023 + days === 1 && ['d'] ||
  3024 + days < thresholds.d && ['dd', days] ||
  3025 + months === 1 && ['M'] ||
  3026 + months < thresholds.M && ['MM', months] ||
  3027 + years === 1 && ['y'] || ['yy', years];
  3028 +
  3029 + a[2] = withoutSuffix;
  3030 + a[3] = +posNegDuration > 0;
  3031 + a[4] = locale;
  3032 + return substituteTimeAgo.apply(null, a);
  3033 + }
  3034 +
  3035 + // This function allows you to set a threshold for relative time strings
  3036 + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
  3037 + if (thresholds[threshold] === undefined) {
  3038 + return false;
  3039 + }
  3040 + if (limit === undefined) {
  3041 + return thresholds[threshold];
  3042 + }
  3043 + thresholds[threshold] = limit;
  3044 + return true;
  3045 + }
  3046 +
  3047 + function humanize (withSuffix) {
  3048 + var locale = this.localeData();
  3049 + var output = duration_humanize__relativeTime(this, !withSuffix, locale);
  3050 +
  3051 + if (withSuffix) {
  3052 + output = locale.pastFuture(+this, output);
  3053 + }
  3054 +
  3055 + return locale.postformat(output);
  3056 + }
  3057 +
  3058 + var iso_string__abs = Math.abs;
  3059 +
  3060 + function iso_string__toISOString() {
  3061 + // for ISO strings we do not use the normal bubbling rules:
  3062 + // * milliseconds bubble up until they become hours
  3063 + // * days do not bubble at all
  3064 + // * months bubble up until they become years
  3065 + // This is because there is no context-free conversion between hours and days
  3066 + // (think of clock changes)
  3067 + // and also not between days and months (28-31 days per month)
  3068 + var seconds = iso_string__abs(this._milliseconds) / 1000;
  3069 + var days = iso_string__abs(this._days);
  3070 + var months = iso_string__abs(this._months);
  3071 + var minutes, hours, years;
  3072 +
  3073 + // 3600 seconds -> 60 minutes -> 1 hour
  3074 + minutes = absFloor(seconds / 60);
  3075 + hours = absFloor(minutes / 60);
  3076 + seconds %= 60;
  3077 + minutes %= 60;
  3078 +
  3079 + // 12 months -> 1 year
  3080 + years = absFloor(months / 12);
  3081 + months %= 12;
  3082 +
  3083 +
  3084 + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
  3085 + var Y = years;
  3086 + var M = months;
  3087 + var D = days;
  3088 + var h = hours;
  3089 + var m = minutes;
  3090 + var s = seconds;
  3091 + var total = this.asSeconds();
  3092 +
  3093 + if (!total) {
  3094 + // this is the same as C#'s (Noda) and python (isodate)...
  3095 + // but not other JS (goog.date)
  3096 + return 'P0D';
  3097 + }
  3098 +
  3099 + return (total < 0 ? '-' : '') +
  3100 + 'P' +
  3101 + (Y ? Y + 'Y' : '') +
  3102 + (M ? M + 'M' : '') +
  3103 + (D ? D + 'D' : '') +
  3104 + ((h || m || s) ? 'T' : '') +
  3105 + (h ? h + 'H' : '') +
  3106 + (m ? m + 'M' : '') +
  3107 + (s ? s + 'S' : '');
  3108 + }
  3109 +
  3110 + var duration_prototype__proto = Duration.prototype;
  3111 +
  3112 + duration_prototype__proto.abs = duration_abs__abs;
  3113 + duration_prototype__proto.add = duration_add_subtract__add;
  3114 + duration_prototype__proto.subtract = duration_add_subtract__subtract;
  3115 + duration_prototype__proto.as = as;
  3116 + duration_prototype__proto.asMilliseconds = asMilliseconds;
  3117 + duration_prototype__proto.asSeconds = asSeconds;
  3118 + duration_prototype__proto.asMinutes = asMinutes;
  3119 + duration_prototype__proto.asHours = asHours;
  3120 + duration_prototype__proto.asDays = asDays;
  3121 + duration_prototype__proto.asWeeks = asWeeks;
  3122 + duration_prototype__proto.asMonths = asMonths;
  3123 + duration_prototype__proto.asYears = asYears;
  3124 + duration_prototype__proto.valueOf = duration_as__valueOf;
  3125 + duration_prototype__proto._bubble = bubble;
  3126 + duration_prototype__proto.get = duration_get__get;
  3127 + duration_prototype__proto.milliseconds = milliseconds;
  3128 + duration_prototype__proto.seconds = seconds;
  3129 + duration_prototype__proto.minutes = minutes;
  3130 + duration_prototype__proto.hours = hours;
  3131 + duration_prototype__proto.days = days;
  3132 + duration_prototype__proto.weeks = weeks;
  3133 + duration_prototype__proto.months = months;
  3134 + duration_prototype__proto.years = years;
  3135 + duration_prototype__proto.humanize = humanize;
  3136 + duration_prototype__proto.toISOString = iso_string__toISOString;
  3137 + duration_prototype__proto.toString = iso_string__toISOString;
  3138 + duration_prototype__proto.toJSON = iso_string__toISOString;
  3139 + duration_prototype__proto.locale = locale;
  3140 + duration_prototype__proto.localeData = localeData;
  3141 +
  3142 + // Deprecations
  3143 + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
  3144 + duration_prototype__proto.lang = lang;
  3145 +
  3146 + // Side effect imports
  3147 +
  3148 + addFormatToken('X', 0, 0, 'unix');
  3149 + addFormatToken('x', 0, 0, 'valueOf');
  3150 +
  3151 + // PARSING
  3152 +
  3153 + addRegexToken('x', matchSigned);
  3154 + addRegexToken('X', matchTimestamp);
  3155 + addParseToken('X', function (input, array, config) {
  3156 + config._d = new Date(parseFloat(input, 10) * 1000);
  3157 + });
  3158 + addParseToken('x', function (input, array, config) {
  3159 + config._d = new Date(toInt(input));
  3160 + });
  3161 +
  3162 + // Side effect imports
  3163 +
  3164 +
  3165 + utils_hooks__hooks.version = '2.10.6';
  3166 +
  3167 + setHookCallback(local__createLocal);
  3168 +
  3169 + utils_hooks__hooks.fn = momentPrototype;
  3170 + utils_hooks__hooks.min = min;
  3171 + utils_hooks__hooks.max = max;
  3172 + utils_hooks__hooks.utc = create_utc__createUTC;
  3173 + utils_hooks__hooks.unix = moment__createUnix;
  3174 + utils_hooks__hooks.months = lists__listMonths;
  3175 + utils_hooks__hooks.isDate = isDate;
  3176 + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
  3177 + utils_hooks__hooks.invalid = valid__createInvalid;
  3178 + utils_hooks__hooks.duration = create__createDuration;
  3179 + utils_hooks__hooks.isMoment = isMoment;
  3180 + utils_hooks__hooks.weekdays = lists__listWeekdays;
  3181 + utils_hooks__hooks.parseZone = moment__createInZone;
  3182 + utils_hooks__hooks.localeData = locale_locales__getLocale;
  3183 + utils_hooks__hooks.isDuration = isDuration;
  3184 + utils_hooks__hooks.monthsShort = lists__listMonthsShort;
  3185 + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
  3186 + utils_hooks__hooks.defineLocale = defineLocale;
  3187 + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
  3188 + utils_hooks__hooks.normalizeUnits = normalizeUnits;
  3189 + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
  3190 +
  3191 + var _moment = utils_hooks__hooks;
  3192 +
  3193 + return _moment;
  3194 +
  3195 +}));
0 3196 \ No newline at end of file
... ...
resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.css 0 → 100755
  1 +/*!
  2 + * Datetimepicker for Bootstrap
  3 + *
  4 + * Copyright 2012 Stefan Petre
  5 + * Improvements by Andrew Rowls
  6 + * Licensed under the Apache License v2.0
  7 + * http://www.apache.org/licenses/LICENSE-2.0
  8 + *
  9 + */
  10 +.datetimepicker {
  11 + padding: 4px;
  12 + margin-top: 1px;
  13 + -webkit-border-radius: 4px;
  14 + -moz-border-radius: 4px;
  15 + border-radius: 4px;
  16 + direction: ltr;
  17 +}
  18 +
  19 +.datetimepicker-inline {
  20 + width: 220px;
  21 +}
  22 +
  23 +.datetimepicker.datetimepicker-rtl {
  24 + direction: rtl;
  25 +}
  26 +
  27 +.datetimepicker.datetimepicker-rtl table tr td span {
  28 + float: right;
  29 +}
  30 +
  31 +.datetimepicker-dropdown, .datetimepicker-dropdown-left {
  32 + top: 0;
  33 + left: 0;
  34 +}
  35 +
  36 +[class*=" datetimepicker-dropdown"]:before {
  37 + content: '';
  38 + display: inline-block;
  39 + border-left: 7px solid transparent;
  40 + border-right: 7px solid transparent;
  41 + border-bottom: 7px solid #cccccc;
  42 + border-bottom-color: rgba(0, 0, 0, 0.2);
  43 + position: absolute;
  44 +}
  45 +
  46 +[class*=" datetimepicker-dropdown"]:after {
  47 + content: '';
  48 + display: inline-block;
  49 + border-left: 6px solid transparent;
  50 + border-right: 6px solid transparent;
  51 + border-bottom: 6px solid #ffffff;
  52 + position: absolute;
  53 +}
  54 +
  55 +[class*=" datetimepicker-dropdown-top"]:before {
  56 + content: '';
  57 + display: inline-block;
  58 + border-left: 7px solid transparent;
  59 + border-right: 7px solid transparent;
  60 + border-top: 7px solid #cccccc;
  61 + border-top-color: rgba(0, 0, 0, 0.2);
  62 + border-bottom: 0;
  63 +}
  64 +
  65 +[class*=" datetimepicker-dropdown-top"]:after {
  66 + content: '';
  67 + display: inline-block;
  68 + border-left: 6px solid transparent;
  69 + border-right: 6px solid transparent;
  70 + border-top: 6px solid #ffffff;
  71 + border-bottom: 0;
  72 +}
  73 +
  74 +.datetimepicker-dropdown-bottom-left:before {
  75 + top: -7px;
  76 + right: 6px;
  77 +}
  78 +
  79 +.datetimepicker-dropdown-bottom-left:after {
  80 + top: -6px;
  81 + right: 7px;
  82 +}
  83 +
  84 +.datetimepicker-dropdown-bottom-right:before {
  85 + top: -7px;
  86 + left: 6px;
  87 +}
  88 +
  89 +.datetimepicker-dropdown-bottom-right:after {
  90 + top: -6px;
  91 + left: 7px;
  92 +}
  93 +
  94 +.datetimepicker-dropdown-top-left:before {
  95 + bottom: -7px;
  96 + right: 6px;
  97 +}
  98 +
  99 +.datetimepicker-dropdown-top-left:after {
  100 + bottom: -6px;
  101 + right: 7px;
  102 +}
  103 +
  104 +.datetimepicker-dropdown-top-right:before {
  105 + bottom: -7px;
  106 + left: 6px;
  107 +}
  108 +
  109 +.datetimepicker-dropdown-top-right:after {
  110 + bottom: -6px;
  111 + left: 7px;
  112 +}
  113 +
  114 +.datetimepicker > div {
  115 + display: none;
  116 +}
  117 +
  118 +.datetimepicker.minutes div.datetimepicker-minutes {
  119 + display: block;
  120 +}
  121 +
  122 +.datetimepicker.hours div.datetimepicker-hours {
  123 + display: block;
  124 +}
  125 +
  126 +.datetimepicker.days div.datetimepicker-days {
  127 + display: block;
  128 +}
  129 +
  130 +.datetimepicker.months div.datetimepicker-months {
  131 + display: block;
  132 +}
  133 +
  134 +.datetimepicker.years div.datetimepicker-years {
  135 + display: block;
  136 +}
  137 +
  138 +.datetimepicker table {
  139 + margin: 0;
  140 +}
  141 +
  142 +.datetimepicker td,
  143 +.datetimepicker th {
  144 + text-align: center;
  145 + width: 20px;
  146 + height: 20px;
  147 + -webkit-border-radius: 4px;
  148 + -moz-border-radius: 4px;
  149 + border-radius: 4px;
  150 + border: none;
  151 +}
  152 +
  153 +.table-striped .datetimepicker table tr td,
  154 +.table-striped .datetimepicker table tr th {
  155 + background-color: transparent;
  156 +}
  157 +
  158 +.datetimepicker table tr td.minute:hover {
  159 + background: #eeeeee;
  160 + cursor: pointer;
  161 +}
  162 +
  163 +.datetimepicker table tr td.hour:hover {
  164 + background: #eeeeee;
  165 + cursor: pointer;
  166 +}
  167 +
  168 +.datetimepicker table tr td.day:hover {
  169 + background: #eeeeee;
  170 + cursor: pointer;
  171 +}
  172 +
  173 +.datetimepicker table tr td.old,
  174 +.datetimepicker table tr td.new {
  175 + color: #999999;
  176 +}
  177 +
  178 +.datetimepicker table tr td.disabled,
  179 +.datetimepicker table tr td.disabled:hover {
  180 + background: none;
  181 + color: #999999;
  182 + cursor: default;
  183 +}
  184 +
  185 +.datetimepicker table tr td.today,
  186 +.datetimepicker table tr td.today:hover,
  187 +.datetimepicker table tr td.today.disabled,
  188 +.datetimepicker table tr td.today.disabled:hover {
  189 + background-color: #fde19a;
  190 + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
  191 + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
  192 + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
  193 + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
  194 + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
  195 + background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);
  196 + background-repeat: repeat-x;
  197 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
  198 + border-color: #fdf59a #fdf59a #fbed50;
  199 + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  200 + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  201 +}
  202 +
  203 +.datetimepicker table tr td.today:hover,
  204 +.datetimepicker table tr td.today:hover:hover,
  205 +.datetimepicker table tr td.today.disabled:hover,
  206 +.datetimepicker table tr td.today.disabled:hover:hover,
  207 +.datetimepicker table tr td.today:active,
  208 +.datetimepicker table tr td.today:hover:active,
  209 +.datetimepicker table tr td.today.disabled:active,
  210 +.datetimepicker table tr td.today.disabled:hover:active,
  211 +.datetimepicker table tr td.today.active,
  212 +.datetimepicker table tr td.today:hover.active,
  213 +.datetimepicker table tr td.today.disabled.active,
  214 +.datetimepicker table tr td.today.disabled:hover.active,
  215 +.datetimepicker table tr td.today.disabled,
  216 +.datetimepicker table tr td.today:hover.disabled,
  217 +.datetimepicker table tr td.today.disabled.disabled,
  218 +.datetimepicker table tr td.today.disabled:hover.disabled,
  219 +.datetimepicker table tr td.today[disabled],
  220 +.datetimepicker table tr td.today:hover[disabled],
  221 +.datetimepicker table tr td.today.disabled[disabled],
  222 +.datetimepicker table tr td.today.disabled:hover[disabled] {
  223 + background-color: #fdf59a;
  224 +}
  225 +
  226 +.datetimepicker table tr td.today:active,
  227 +.datetimepicker table tr td.today:hover:active,
  228 +.datetimepicker table tr td.today.disabled:active,
  229 +.datetimepicker table tr td.today.disabled:hover:active,
  230 +.datetimepicker table tr td.today.active,
  231 +.datetimepicker table tr td.today:hover.active,
  232 +.datetimepicker table tr td.today.disabled.active,
  233 +.datetimepicker table tr td.today.disabled:hover.active {
  234 + background-color: #fbf069;
  235 +}
  236 +
  237 +.datetimepicker table tr td.active,
  238 +.datetimepicker table tr td.active:hover,
  239 +.datetimepicker table tr td.active.disabled,
  240 +.datetimepicker table tr td.active.disabled:hover {
  241 + background-color: #006dcc;
  242 + background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
  243 + background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
  244 + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
  245 + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
  246 + background-image: -o-linear-gradient(top, #0088cc, #0044cc);
  247 + background-image: linear-gradient(to bottom, #0088cc, #0044cc);
  248 + background-repeat: repeat-x;
  249 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
  250 + border-color: #0044cc #0044cc #002a80;
  251 + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  252 + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  253 + color: #ffffff;
  254 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  255 +}
  256 +
  257 +.datetimepicker table tr td.active:hover,
  258 +.datetimepicker table tr td.active:hover:hover,
  259 +.datetimepicker table tr td.active.disabled:hover,
  260 +.datetimepicker table tr td.active.disabled:hover:hover,
  261 +.datetimepicker table tr td.active:active,
  262 +.datetimepicker table tr td.active:hover:active,
  263 +.datetimepicker table tr td.active.disabled:active,
  264 +.datetimepicker table tr td.active.disabled:hover:active,
  265 +.datetimepicker table tr td.active.active,
  266 +.datetimepicker table tr td.active:hover.active,
  267 +.datetimepicker table tr td.active.disabled.active,
  268 +.datetimepicker table tr td.active.disabled:hover.active,
  269 +.datetimepicker table tr td.active.disabled,
  270 +.datetimepicker table tr td.active:hover.disabled,
  271 +.datetimepicker table tr td.active.disabled.disabled,
  272 +.datetimepicker table tr td.active.disabled:hover.disabled,
  273 +.datetimepicker table tr td.active[disabled],
  274 +.datetimepicker table tr td.active:hover[disabled],
  275 +.datetimepicker table tr td.active.disabled[disabled],
  276 +.datetimepicker table tr td.active.disabled:hover[disabled] {
  277 + background-color: #0044cc;
  278 +}
  279 +
  280 +.datetimepicker table tr td.active:active,
  281 +.datetimepicker table tr td.active:hover:active,
  282 +.datetimepicker table tr td.active.disabled:active,
  283 +.datetimepicker table tr td.active.disabled:hover:active,
  284 +.datetimepicker table tr td.active.active,
  285 +.datetimepicker table tr td.active:hover.active,
  286 +.datetimepicker table tr td.active.disabled.active,
  287 +.datetimepicker table tr td.active.disabled:hover.active {
  288 + background-color: #003399;
  289 +}
  290 +
  291 +.datetimepicker table tr td span {
  292 + display: block;
  293 + width: 23%;
  294 + height: 54px;
  295 + line-height: 54px;
  296 + float: left;
  297 + margin: 1%;
  298 + cursor: pointer;
  299 + -webkit-border-radius: 4px;
  300 + -moz-border-radius: 4px;
  301 + border-radius: 4px;
  302 +}
  303 +
  304 +.datetimepicker .datetimepicker-hours span {
  305 + height: 26px;
  306 + line-height: 26px;
  307 +}
  308 +
  309 +.datetimepicker .datetimepicker-hours table tr td span.hour_am,
  310 +.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
  311 + width: 14.6%;
  312 +}
  313 +
  314 +.datetimepicker .datetimepicker-hours fieldset legend,
  315 +.datetimepicker .datetimepicker-minutes fieldset legend {
  316 + margin-bottom: inherit;
  317 + line-height: 30px;
  318 +}
  319 +
  320 +.datetimepicker .datetimepicker-minutes span {
  321 + height: 26px;
  322 + line-height: 26px;
  323 +}
  324 +
  325 +.datetimepicker table tr td span:hover {
  326 + background: #eeeeee;
  327 +}
  328 +
  329 +.datetimepicker table tr td span.disabled,
  330 +.datetimepicker table tr td span.disabled:hover {
  331 + background: none;
  332 + color: #999999;
  333 + cursor: default;
  334 +}
  335 +
  336 +.datetimepicker table tr td span.active,
  337 +.datetimepicker table tr td span.active:hover,
  338 +.datetimepicker table tr td span.active.disabled,
  339 +.datetimepicker table tr td span.active.disabled:hover {
  340 + background-color: #006dcc;
  341 + background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
  342 + background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
  343 + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
  344 + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
  345 + background-image: -o-linear-gradient(top, #0088cc, #0044cc);
  346 + background-image: linear-gradient(to bottom, #0088cc, #0044cc);
  347 + background-repeat: repeat-x;
  348 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
  349 + border-color: #0044cc #0044cc #002a80;
  350 + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  351 + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  352 + color: #ffffff;
  353 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  354 +}
  355 +
  356 +.datetimepicker table tr td span.active:hover,
  357 +.datetimepicker table tr td span.active:hover:hover,
  358 +.datetimepicker table tr td span.active.disabled:hover,
  359 +.datetimepicker table tr td span.active.disabled:hover:hover,
  360 +.datetimepicker table tr td span.active:active,
  361 +.datetimepicker table tr td span.active:hover:active,
  362 +.datetimepicker table tr td span.active.disabled:active,
  363 +.datetimepicker table tr td span.active.disabled:hover:active,
  364 +.datetimepicker table tr td span.active.active,
  365 +.datetimepicker table tr td span.active:hover.active,
  366 +.datetimepicker table tr td span.active.disabled.active,
  367 +.datetimepicker table tr td span.active.disabled:hover.active,
  368 +.datetimepicker table tr td span.active.disabled,
  369 +.datetimepicker table tr td span.active:hover.disabled,
  370 +.datetimepicker table tr td span.active.disabled.disabled,
  371 +.datetimepicker table tr td span.active.disabled:hover.disabled,
  372 +.datetimepicker table tr td span.active[disabled],
  373 +.datetimepicker table tr td span.active:hover[disabled],
  374 +.datetimepicker table tr td span.active.disabled[disabled],
  375 +.datetimepicker table tr td span.active.disabled:hover[disabled] {
  376 + background-color: #0044cc;
  377 +}
  378 +
  379 +.datetimepicker table tr td span.active:active,
  380 +.datetimepicker table tr td span.active:hover:active,
  381 +.datetimepicker table tr td span.active.disabled:active,
  382 +.datetimepicker table tr td span.active.disabled:hover:active,
  383 +.datetimepicker table tr td span.active.active,
  384 +.datetimepicker table tr td span.active:hover.active,
  385 +.datetimepicker table tr td span.active.disabled.active,
  386 +.datetimepicker table tr td span.active.disabled:hover.active {
  387 + background-color: #003399;
  388 +}
  389 +
  390 +.datetimepicker table tr td span.old {
  391 + color: #999999;
  392 +}
  393 +
  394 +.datetimepicker th.switch {
  395 + width: 145px;
  396 +}
  397 +
  398 +.datetimepicker th span.glyphicon {
  399 + pointer-events: none;
  400 +}
  401 +
  402 +.datetimepicker thead tr:first-child th,
  403 +.datetimepicker tfoot th {
  404 + cursor: pointer;
  405 +}
  406 +
  407 +.datetimepicker thead tr:first-child th:hover,
  408 +.datetimepicker tfoot th:hover {
  409 + background: #eeeeee;
  410 +}
  411 +
  412 +.input-append.date .add-on i,
  413 +.input-prepend.date .add-on i,
  414 +.input-group.date .input-group-addon span {
  415 + cursor: pointer;
  416 + width: 14px;
  417 + height: 14px;
  418 +}
... ...
resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.js 0 → 100755
  1 +/* =========================================================
  2 + * bootstrap-datetimepicker.js
  3 + * =========================================================
  4 + * Copyright 2012 Stefan Petre
  5 + *
  6 + * Improvements by Andrew Rowls
  7 + * Improvements by Sébastien Malot
  8 + * Improvements by Yun Lai
  9 + * Improvements by Kenneth Henderick
  10 + * Improvements by CuGBabyBeaR
  11 + * Improvements by Christian Vaas <auspex@auspex.eu>
  12 + *
  13 + * Project URL : http://www.malot.fr/bootstrap-datetimepicker
  14 + *
  15 + * Licensed under the Apache License, Version 2.0 (the "License");
  16 + * you may not use this file except in compliance with the License.
  17 + * You may obtain a copy of the License at
  18 + *
  19 + * http://www.apache.org/licenses/LICENSE-2.0
  20 + *
  21 + * Unless required by applicable law or agreed to in writing, software
  22 + * distributed under the License is distributed on an "AS IS" BASIS,
  23 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  24 + * See the License for the specific language governing permissions and
  25 + * limitations under the License.
  26 + * ========================================================= */
  27 +
  28 +(function(factory){
  29 + if (typeof define === 'function' && define.amd)
  30 + define(['jquery'], factory);
  31 + else if (typeof exports === 'object')
  32 + factory(require('jquery'));
  33 + else
  34 + factory(jQuery);
  35 +
  36 +}(function($, undefined){
  37 +
  38 + // Add ECMA262-5 Array methods if not supported natively (IE8)
  39 + if (!('indexOf' in Array.prototype)) {
  40 + Array.prototype.indexOf = function (find, i) {
  41 + if (i === undefined) i = 0;
  42 + if (i < 0) i += this.length;
  43 + if (i < 0) i = 0;
  44 + for (var n = this.length; i < n; i++) {
  45 + if (i in this && this[i] === find) {
  46 + return i;
  47 + }
  48 + }
  49 + return -1;
  50 + }
  51 + }
  52 +
  53 + // Add timezone abbreviation support for ie6+, Chrome, Firefox
  54 + function timeZoneAbbreviation() {
  55 + var abbreviation, date, formattedStr, i, len, matchedStrings, ref, str;
  56 + date = (new Date()).toString();
  57 + formattedStr = ((ref = date.split('(')[1]) != null ? ref.slice(0, -1) : 0) || date.split(' ');
  58 + if (formattedStr instanceof Array) {
  59 + matchedStrings = [];
  60 + for (var i = 0, len = formattedStr.length; i < len; i++) {
  61 + str = formattedStr[i];
  62 + if ((abbreviation = (ref = str.match(/\b[A-Z]+\b/)) !== null) ? ref[0] : 0) {
  63 + matchedStrings.push(abbreviation);
  64 + }
  65 + }
  66 + formattedStr = matchedStrings.pop();
  67 + }
  68 + return formattedStr;
  69 + }
  70 +
  71 + function UTCDate() {
  72 + return new Date(Date.UTC.apply(Date, arguments));
  73 + }
  74 +
  75 + // Picker object
  76 + var Datetimepicker = function (element, options) {
  77 + var that = this;
  78 +
  79 + this.element = $(element);
  80 +
  81 + // add container for single page application
  82 + // when page switch the datetimepicker div will be removed also.
  83 + this.container = options.container || 'body';
  84 +
  85 + this.language = options.language || this.element.data('date-language') || 'en';
  86 + this.language = this.language in dates ? this.language : this.language.split('-')[0]; // fr-CA fallback to fr
  87 + this.language = this.language in dates ? this.language : 'en';
  88 + this.isRTL = dates[this.language].rtl || false;
  89 + this.formatType = options.formatType || this.element.data('format-type') || 'standard';
  90 + this.format = DPGlobal.parseFormat(options.format || this.element.data('date-format') || dates[this.language].format || DPGlobal.getDefaultFormat(this.formatType, 'input'), this.formatType);
  91 + this.isInline = false;
  92 + this.isVisible = false;
  93 + this.isInput = this.element.is('input');
  94 + this.fontAwesome = options.fontAwesome || this.element.data('font-awesome') || false;
  95 +
  96 + this.bootcssVer = options.bootcssVer || (this.isInput ? (this.element.is('.form-control') ? 3 : 2) : ( this.bootcssVer = this.element.is('.input-group') ? 3 : 2 ));
  97 +
  98 + this.component = this.element.is('.date') ? ( this.bootcssVer === 3 ? this.element.find('.input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o').parent() : this.element.find('.add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o').parent()) : false;
  99 + this.componentReset = this.element.is('.date') ? ( this.bootcssVer === 3 ? this.element.find('.input-group-addon .glyphicon-remove, .input-group-addon .fa-times').parent():this.element.find('.add-on .icon-remove, .add-on .fa-times').parent()) : false;
  100 + this.hasInput = this.component && this.element.find('input').length;
  101 + if (this.component && this.component.length === 0) {
  102 + this.component = false;
  103 + }
  104 + this.linkField = options.linkField || this.element.data('link-field') || false;
  105 + this.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data('link-format') || DPGlobal.getDefaultFormat(this.formatType, 'link'), this.formatType);
  106 + this.minuteStep = options.minuteStep || this.element.data('minute-step') || 5;
  107 + this.pickerPosition = options.pickerPosition || this.element.data('picker-position') || 'bottom-right';
  108 + this.showMeridian = options.showMeridian || this.element.data('show-meridian') || false;
  109 + this.initialDate = options.initialDate || new Date();
  110 + this.zIndex = options.zIndex || this.element.data('z-index') || undefined;
  111 + this.title = typeof options.title === 'undefined' ? false : options.title;
  112 + this.timezone = options.timezone || timeZoneAbbreviation();
  113 +
  114 + this.icons = {
  115 + leftArrow: this.fontAwesome ? 'fa-arrow-left' : (this.bootcssVer === 3 ? 'glyphicon-arrow-left' : 'icon-arrow-left'),
  116 + rightArrow: this.fontAwesome ? 'fa-arrow-right' : (this.bootcssVer === 3 ? 'glyphicon-arrow-right' : 'icon-arrow-right')
  117 + }
  118 + this.icontype = this.fontAwesome ? 'fa' : 'glyphicon';
  119 +
  120 + this._attachEvents();
  121 +
  122 + this.clickedOutside = function (e) {
  123 + // Clicked outside the datetimepicker, hide it
  124 + if ($(e.target).closest('.datetimepicker').length === 0) {
  125 + that.hide();
  126 + }
  127 + }
  128 +
  129 + this.formatViewType = 'datetime';
  130 + if ('formatViewType' in options) {
  131 + this.formatViewType = options.formatViewType;
  132 + } else if ('formatViewType' in this.element.data()) {
  133 + this.formatViewType = this.element.data('formatViewType');
  134 + }
  135 +
  136 + this.minView = 0;
  137 + if ('minView' in options) {
  138 + this.minView = options.minView;
  139 + } else if ('minView' in this.element.data()) {
  140 + this.minView = this.element.data('min-view');
  141 + }
  142 + this.minView = DPGlobal.convertViewMode(this.minView);
  143 +
  144 + this.maxView = DPGlobal.modes.length - 1;
  145 + if ('maxView' in options) {
  146 + this.maxView = options.maxView;
  147 + } else if ('maxView' in this.element.data()) {
  148 + this.maxView = this.element.data('max-view');
  149 + }
  150 + this.maxView = DPGlobal.convertViewMode(this.maxView);
  151 +
  152 + this.wheelViewModeNavigation = false;
  153 + if ('wheelViewModeNavigation' in options) {
  154 + this.wheelViewModeNavigation = options.wheelViewModeNavigation;
  155 + } else if ('wheelViewModeNavigation' in this.element.data()) {
  156 + this.wheelViewModeNavigation = this.element.data('view-mode-wheel-navigation');
  157 + }
  158 +
  159 + this.wheelViewModeNavigationInverseDirection = false;
  160 +
  161 + if ('wheelViewModeNavigationInverseDirection' in options) {
  162 + this.wheelViewModeNavigationInverseDirection = options.wheelViewModeNavigationInverseDirection;
  163 + } else if ('wheelViewModeNavigationInverseDirection' in this.element.data()) {
  164 + this.wheelViewModeNavigationInverseDirection = this.element.data('view-mode-wheel-navigation-inverse-dir');
  165 + }
  166 +
  167 + this.wheelViewModeNavigationDelay = 100;
  168 + if ('wheelViewModeNavigationDelay' in options) {
  169 + this.wheelViewModeNavigationDelay = options.wheelViewModeNavigationDelay;
  170 + } else if ('wheelViewModeNavigationDelay' in this.element.data()) {
  171 + this.wheelViewModeNavigationDelay = this.element.data('view-mode-wheel-navigation-delay');
  172 + }
  173 +
  174 + this.startViewMode = 2;
  175 + if ('startView' in options) {
  176 + this.startViewMode = options.startView;
  177 + } else if ('startView' in this.element.data()) {
  178 + this.startViewMode = this.element.data('start-view');
  179 + }
  180 + this.startViewMode = DPGlobal.convertViewMode(this.startViewMode);
  181 + this.viewMode = this.startViewMode;
  182 +
  183 + this.viewSelect = this.minView;
  184 + if ('viewSelect' in options) {
  185 + this.viewSelect = options.viewSelect;
  186 + } else if ('viewSelect' in this.element.data()) {
  187 + this.viewSelect = this.element.data('view-select');
  188 + }
  189 + this.viewSelect = DPGlobal.convertViewMode(this.viewSelect);
  190 +
  191 + this.forceParse = true;
  192 + if ('forceParse' in options) {
  193 + this.forceParse = options.forceParse;
  194 + } else if ('dateForceParse' in this.element.data()) {
  195 + this.forceParse = this.element.data('date-force-parse');
  196 + }
  197 + var template = this.bootcssVer === 3 ? DPGlobal.templateV3 : DPGlobal.template;
  198 + while (template.indexOf('{iconType}') !== -1) {
  199 + template = template.replace('{iconType}', this.icontype);
  200 + }
  201 + while (template.indexOf('{leftArrow}') !== -1) {
  202 + template = template.replace('{leftArrow}', this.icons.leftArrow);
  203 + }
  204 + while (template.indexOf('{rightArrow}') !== -1) {
  205 + template = template.replace('{rightArrow}', this.icons.rightArrow);
  206 + }
  207 + this.picker = $(template)
  208 + .appendTo(this.isInline ? this.element : this.container) // 'body')
  209 + .on({
  210 + click: $.proxy(this.click, this),
  211 + mousedown: $.proxy(this.mousedown, this)
  212 + });
  213 +
  214 + if (this.wheelViewModeNavigation) {
  215 + if ($.fn.mousewheel) {
  216 + this.picker.on({mousewheel: $.proxy(this.mousewheel, this)});
  217 + } else {
  218 + console.log('Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option');
  219 + }
  220 + }
  221 +
  222 + if (this.isInline) {
  223 + this.picker.addClass('datetimepicker-inline');
  224 + } else {
  225 + this.picker.addClass('datetimepicker-dropdown-' + this.pickerPosition + ' dropdown-menu');
  226 + }
  227 + if (this.isRTL) {
  228 + this.picker.addClass('datetimepicker-rtl');
  229 + var selector = this.bootcssVer === 3 ? '.prev span, .next span' : '.prev i, .next i';
  230 + this.picker.find(selector).toggleClass(this.icons.leftArrow + ' ' + this.icons.rightArrow);
  231 + }
  232 +
  233 + $(document).on('mousedown touchend', this.clickedOutside);
  234 +
  235 + this.autoclose = false;
  236 + if ('autoclose' in options) {
  237 + this.autoclose = options.autoclose;
  238 + } else if ('dateAutoclose' in this.element.data()) {
  239 + this.autoclose = this.element.data('date-autoclose');
  240 + }
  241 +
  242 + this.keyboardNavigation = true;
  243 + if ('keyboardNavigation' in options) {
  244 + this.keyboardNavigation = options.keyboardNavigation;
  245 + } else if ('dateKeyboardNavigation' in this.element.data()) {
  246 + this.keyboardNavigation = this.element.data('date-keyboard-navigation');
  247 + }
  248 +
  249 + this.todayBtn = (options.todayBtn || this.element.data('date-today-btn') || false);
  250 + this.clearBtn = (options.clearBtn || this.element.data('date-clear-btn') || false);
  251 + this.todayHighlight = (options.todayHighlight || this.element.data('date-today-highlight') || false);
  252 +
  253 + this.weekStart = 0;
  254 + if (typeof options.weekStart !== 'undefined') {
  255 + this.weekStart = options.weekStart;
  256 + } else if (typeof this.element.data('date-weekstart') !== 'undefined') {
  257 + this.weekStart = this.element.data('date-weekstart');
  258 + } else if (typeof dates[this.language].weekStart !== 'undefined') {
  259 + this.weekStart = dates[this.language].weekStart;
  260 + }
  261 + this.weekStart = this.weekStart % 7;
  262 + this.weekEnd = ((this.weekStart + 6) % 7);
  263 + this.onRenderDay = function (date) {
  264 + var render = (options.onRenderDay || function () { return []; })(date);
  265 + if (typeof render === 'string') {
  266 + render = [render];
  267 + }
  268 + var res = ['day'];
  269 + return res.concat((render ? render : []));
  270 + };
  271 + this.onRenderHour = function (date) {
  272 + var render = (options.onRenderHour || function () { return []; })(date);
  273 + var res = ['hour'];
  274 + if (typeof render === 'string') {
  275 + render = [render];
  276 + }
  277 + return res.concat((render ? render : []));
  278 + };
  279 + this.onRenderMinute = function (date) {
  280 + var render = (options.onRenderMinute || function () { return []; })(date);
  281 + var res = ['minute'];
  282 + if (typeof render === 'string') {
  283 + render = [render];
  284 + }
  285 + if (date < this.startDate || date > this.endDate) {
  286 + res.push('disabled');
  287 + } else if (Math.floor(this.date.getUTCMinutes() / this.minuteStep) === Math.floor(date.getUTCMinutes() / this.minuteStep)) {
  288 + res.push('active');
  289 + }
  290 + return res.concat((render ? render : []));
  291 + };
  292 + this.onRenderYear = function (date) {
  293 + var render = (options.onRenderYear || function () { return []; })(date);
  294 + var res = ['year'];
  295 + if (typeof render === 'string') {
  296 + render = [render];
  297 + }
  298 + if (this.date.getUTCFullYear() === date.getUTCFullYear()) {
  299 + res.push('active');
  300 + }
  301 + var currentYear = date.getUTCFullYear();
  302 + var endYear = this.endDate.getUTCFullYear();
  303 + if (date < this.startDate || currentYear > endYear) {
  304 + res.push('disabled');
  305 + }
  306 + return res.concat((render ? render : []));
  307 + }
  308 + this.onRenderMonth = function (date) {
  309 + var render = (options.onRenderMonth || function () { return []; })(date);
  310 + var res = ['month'];
  311 + if (typeof render === 'string') {
  312 + render = [render];
  313 + }
  314 + return res.concat((render ? render : []));
  315 + }
  316 + this.startDate = new Date(-8639968443048000);
  317 + this.endDate = new Date(8639968443048000);
  318 + this.datesDisabled = [];
  319 + this.daysOfWeekDisabled = [];
  320 + this.setStartDate(options.startDate || this.element.data('date-startdate'));
  321 + this.setEndDate(options.endDate || this.element.data('date-enddate'));
  322 + this.setDatesDisabled(options.datesDisabled || this.element.data('date-dates-disabled'));
  323 + this.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data('date-days-of-week-disabled'));
  324 + this.setMinutesDisabled(options.minutesDisabled || this.element.data('date-minute-disabled'));
  325 + this.setHoursDisabled(options.hoursDisabled || this.element.data('date-hour-disabled'));
  326 + this.fillDow();
  327 + this.fillMonths();
  328 + this.update();
  329 + this.showMode();
  330 +
  331 + if (this.isInline) {
  332 + this.show();
  333 + }
  334 + };
  335 +
  336 + Datetimepicker.prototype = {
  337 + constructor: Datetimepicker,
  338 +
  339 + _events: [],
  340 + _attachEvents: function () {
  341 + this._detachEvents();
  342 + if (this.isInput) { // single input
  343 + this._events = [
  344 + [this.element, {
  345 + focus: $.proxy(this.show, this),
  346 + keyup: $.proxy(this.update, this),
  347 + keydown: $.proxy(this.keydown, this)
  348 + }]
  349 + ];
  350 + }
  351 + else if (this.component && this.hasInput) { // component: input + button
  352 + this._events = [
  353 + // For components that are not readonly, allow keyboard nav
  354 + [this.element.find('input'), {
  355 + focus: $.proxy(this.show, this),
  356 + keyup: $.proxy(this.update, this),
  357 + keydown: $.proxy(this.keydown, this)
  358 + }],
  359 + [this.component, {
  360 + click: $.proxy(this.show, this)
  361 + }]
  362 + ];
  363 + if (this.componentReset) {
  364 + this._events.push([
  365 + this.componentReset,
  366 + {click: $.proxy(this.reset, this)}
  367 + ]);
  368 + }
  369 + }
  370 + else if (this.element.is('div')) { // inline datetimepicker
  371 + this.isInline = true;
  372 + }
  373 + else {
  374 + this._events = [
  375 + [this.element, {
  376 + click: $.proxy(this.show, this)
  377 + }]
  378 + ];
  379 + }
  380 + for (var i = 0, el, ev; i < this._events.length; i++) {
  381 + el = this._events[i][0];
  382 + ev = this._events[i][1];
  383 + el.on(ev);
  384 + }
  385 + },
  386 +
  387 + _detachEvents: function () {
  388 + for (var i = 0, el, ev; i < this._events.length; i++) {
  389 + el = this._events[i][0];
  390 + ev = this._events[i][1];
  391 + el.off(ev);
  392 + }
  393 + this._events = [];
  394 + },
  395 +
  396 + show: function (e) {
  397 + this.picker.show();
  398 + this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
  399 + if (this.forceParse) {
  400 + this.update();
  401 + }
  402 + this.place();
  403 + $(window).on('resize', $.proxy(this.place, this));
  404 + if (e) {
  405 + e.stopPropagation();
  406 + e.preventDefault();
  407 + }
  408 + this.isVisible = true;
  409 + this.element.trigger({
  410 + type: 'show',
  411 + date: this.date
  412 + });
  413 + },
  414 +
  415 + hide: function () {
  416 + if (!this.isVisible) return;
  417 + if (this.isInline) return;
  418 + this.picker.hide();
  419 + $(window).off('resize', this.place);
  420 + this.viewMode = this.startViewMode;
  421 + this.showMode();
  422 + if (!this.isInput) {
  423 + $(document).off('mousedown', this.hide);
  424 + }
  425 +
  426 + if (
  427 + this.forceParse &&
  428 + (
  429 + this.isInput && this.element.val() ||
  430 + this.hasInput && this.element.find('input').val()
  431 + )
  432 + )
  433 + this.setValue();
  434 + this.isVisible = false;
  435 + this.element.trigger({
  436 + type: 'hide',
  437 + date: this.date
  438 + });
  439 + },
  440 +
  441 + remove: function () {
  442 + this._detachEvents();
  443 + $(document).off('mousedown', this.clickedOutside);
  444 + this.picker.remove();
  445 + delete this.picker;
  446 + delete this.element.data().datetimepicker;
  447 + },
  448 +
  449 + getDate: function () {
  450 + var d = this.getUTCDate();
  451 + if (d === null) {
  452 + return null;
  453 + }
  454 + return new Date(d.getTime() + (d.getTimezoneOffset() * 60000));
  455 + },
  456 +
  457 + getUTCDate: function () {
  458 + return this.date;
  459 + },
  460 +
  461 + getInitialDate: function () {
  462 + return this.initialDate
  463 + },
  464 +
  465 + setInitialDate: function (initialDate) {
  466 + this.initialDate = initialDate;
  467 + },
  468 +
  469 + setDate: function (d) {
  470 + this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset() * 60000)));
  471 + },
  472 +
  473 + setUTCDate: function (d) {
  474 + if (d >= this.startDate && d <= this.endDate) {
  475 + this.date = d;
  476 + this.setValue();
  477 + this.viewDate = this.date;
  478 + this.fill();
  479 + } else {
  480 + this.element.trigger({
  481 + type: 'outOfRange',
  482 + date: d,
  483 + startDate: this.startDate,
  484 + endDate: this.endDate
  485 + });
  486 + }
  487 + },
  488 +
  489 + setFormat: function (format) {
  490 + this.format = DPGlobal.parseFormat(format, this.formatType);
  491 + var element;
  492 + if (this.isInput) {
  493 + element = this.element;
  494 + } else if (this.component) {
  495 + element = this.element.find('input');
  496 + }
  497 + if (element && element.val()) {
  498 + this.setValue();
  499 + }
  500 + },
  501 +
  502 + setValue: function () {
  503 + var formatted = this.getFormattedDate();
  504 + if (!this.isInput) {
  505 + if (this.component) {
  506 + this.element.find('input').val(formatted);
  507 + }
  508 + this.element.data('date', formatted);
  509 + } else {
  510 + this.element.val(formatted);
  511 + }
  512 + if (this.linkField) {
  513 + $('#' + this.linkField).val(this.getFormattedDate(this.linkFormat));
  514 + }
  515 + },
  516 +
  517 + getFormattedDate: function (format) {
  518 + format = format || this.format;
  519 + return DPGlobal.formatDate(this.date, format, this.language, this.formatType, this.timezone);
  520 + },
  521 +
  522 + setStartDate: function (startDate) {
  523 + this.startDate = startDate || this.startDate;
  524 + if (this.startDate.valueOf() !== 8639968443048000) {
  525 + this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone);
  526 + }
  527 + this.update();
  528 + this.updateNavArrows();
  529 + },
  530 +
  531 + setEndDate: function (endDate) {
  532 + this.endDate = endDate || this.endDate;
  533 + if (this.endDate.valueOf() !== 8639968443048000) {
  534 + this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone);
  535 + }
  536 + this.update();
  537 + this.updateNavArrows();
  538 + },
  539 +
  540 + setDatesDisabled: function (datesDisabled) {
  541 + this.datesDisabled = datesDisabled || [];
  542 + if (!$.isArray(this.datesDisabled)) {
  543 + this.datesDisabled = this.datesDisabled.split(/,\s*/);
  544 + }
  545 + var mThis = this;
  546 + this.datesDisabled = $.map(this.datesDisabled, function (d) {
  547 + return DPGlobal.parseDate(d, mThis.format, mThis.language, mThis.formatType, mThis.timezone).toDateString();
  548 + });
  549 + this.update();
  550 + this.updateNavArrows();
  551 + },
  552 +
  553 + setTitle: function (selector, value) {
  554 + return this.picker.find(selector)
  555 + .find('th:eq(1)')
  556 + .text(this.title === false ? value : this.title);
  557 + },
  558 +
  559 + setDaysOfWeekDisabled: function (daysOfWeekDisabled) {
  560 + this.daysOfWeekDisabled = daysOfWeekDisabled || [];
  561 + if (!$.isArray(this.daysOfWeekDisabled)) {
  562 + this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/);
  563 + }
  564 + this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) {
  565 + return parseInt(d, 10);
  566 + });
  567 + this.update();
  568 + this.updateNavArrows();
  569 + },
  570 +
  571 + setMinutesDisabled: function (minutesDisabled) {
  572 + this.minutesDisabled = minutesDisabled || [];
  573 + if (!$.isArray(this.minutesDisabled)) {
  574 + this.minutesDisabled = this.minutesDisabled.split(/,\s*/);
  575 + }
  576 + this.minutesDisabled = $.map(this.minutesDisabled, function (d) {
  577 + return parseInt(d, 10);
  578 + });
  579 + this.update();
  580 + this.updateNavArrows();
  581 + },
  582 +
  583 + setHoursDisabled: function (hoursDisabled) {
  584 + this.hoursDisabled = hoursDisabled || [];
  585 + if (!$.isArray(this.hoursDisabled)) {
  586 + this.hoursDisabled = this.hoursDisabled.split(/,\s*/);
  587 + }
  588 + this.hoursDisabled = $.map(this.hoursDisabled, function (d) {
  589 + return parseInt(d, 10);
  590 + });
  591 + this.update();
  592 + this.updateNavArrows();
  593 + },
  594 +
  595 + place: function () {
  596 + if (this.isInline) return;
  597 +
  598 + if (!this.zIndex) {
  599 + var index_highest = 0;
  600 + $('div').each(function () {
  601 + var index_current = parseInt($(this).css('zIndex'), 10);
  602 + if (index_current > index_highest) {
  603 + index_highest = index_current;
  604 + }
  605 + });
  606 + this.zIndex = index_highest + 10;
  607 + }
  608 +
  609 + var offset, top, left, containerOffset;
  610 + if (this.container instanceof $) {
  611 + containerOffset = this.container.offset();
  612 + } else {
  613 + containerOffset = $(this.container).offset();
  614 + }
  615 +
  616 + if (this.component) {
  617 + offset = this.component.offset();
  618 + left = offset.left;
  619 + if (this.pickerPosition === 'bottom-left' || this.pickerPosition === 'top-left') {
  620 + left += this.component.outerWidth() - this.picker.outerWidth();
  621 + }
  622 + } else {
  623 + offset = this.element.offset();
  624 + left = offset.left;
  625 + if (this.pickerPosition === 'bottom-left' || this.pickerPosition === 'top-left') {
  626 + left += this.element.outerWidth() - this.picker.outerWidth();
  627 + }
  628 + }
  629 +
  630 + var bodyWidth = document.body.clientWidth || window.innerWidth;
  631 + if (left + 220 > bodyWidth) {
  632 + left = bodyWidth - 220;
  633 + }
  634 +
  635 + if (this.pickerPosition === 'top-left' || this.pickerPosition === 'top-right') {
  636 + top = offset.top - this.picker.outerHeight();
  637 + } else {
  638 + top = offset.top + this.height;
  639 + }
  640 +
  641 + top = top - containerOffset.top;
  642 + left = left - containerOffset.left;
  643 +
  644 + this.picker.css({
  645 + top: top,
  646 + left: left,
  647 + zIndex: this.zIndex
  648 + });
  649 + },
  650 +
  651 + hour_minute: "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]",
  652 +
  653 + update: function () {
  654 + var date, fromArgs = false;
  655 + if (arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {
  656 + date = arguments[0];
  657 + fromArgs = true;
  658 + } else {
  659 + date = (this.isInput ? this.element.val() : this.element.find('input').val()) || this.element.data('date') || this.initialDate;
  660 + if (typeof date === 'string') {
  661 + date = date.replace(/^\s+|\s+$/g,'');
  662 + }
  663 + }
  664 +
  665 + if (!date) {
  666 + date = new Date();
  667 + fromArgs = false;
  668 + }
  669 +
  670 + if (typeof date === "string") {
  671 + if (new RegExp(this.hour_minute).test(date) || new RegExp(this.hour_minute + ":[0-5][0-9]").test(date)) {
  672 + date = this.getDate()
  673 + }
  674 + }
  675 +
  676 + this.date = DPGlobal.parseDate(date, this.format, this.language, this.formatType, this.timezone);
  677 +
  678 + if (fromArgs) this.setValue();
  679 +
  680 + if (this.date < this.startDate) {
  681 + this.viewDate = new Date(this.startDate);
  682 + } else if (this.date > this.endDate) {
  683 + this.viewDate = new Date(this.endDate);
  684 + } else {
  685 + this.viewDate = new Date(this.date);
  686 + }
  687 + this.fill();
  688 + },
  689 +
  690 + fillDow: function () {
  691 + var dowCnt = this.weekStart,
  692 + html = '<tr>';
  693 + while (dowCnt < this.weekStart + 7) {
  694 + html += '<th class="dow">' + dates[this.language].daysMin[(dowCnt++) % 7] + '</th>';
  695 + }
  696 + html += '</tr>';
  697 + this.picker.find('.datetimepicker-days thead').append(html);
  698 + },
  699 +
  700 + fillMonths: function () {
  701 + var html = '';
  702 + var d = new Date(this.viewDate);
  703 + for (var i = 0; i < 12; i++) {
  704 + d.setUTCMonth(i);
  705 + var classes = this.onRenderMonth(d);
  706 + html += '<span class="' + classes.join(' ') + '">' + dates[this.language].monthsShort[i] + '</span>';
  707 + }
  708 + this.picker.find('.datetimepicker-months td').html(html);
  709 + },
  710 +
  711 + fill: function () {
  712 + if (!this.date || !this.viewDate) {
  713 + return;
  714 + }
  715 + var d = new Date(this.viewDate),
  716 + year = d.getUTCFullYear(),
  717 + month = d.getUTCMonth(),
  718 + dayMonth = d.getUTCDate(),
  719 + hours = d.getUTCHours(),
  720 + startYear = this.startDate.getUTCFullYear(),
  721 + startMonth = this.startDate.getUTCMonth(),
  722 + endYear = this.endDate.getUTCFullYear(),
  723 + endMonth = this.endDate.getUTCMonth() + 1,
  724 + currentDate = (new UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(),
  725 + today = new Date();
  726 + this.setTitle('.datetimepicker-days', dates[this.language].months[month] + ' ' + year)
  727 + if (this.formatViewType === 'time') {
  728 + var formatted = this.getFormattedDate();
  729 + this.setTitle('.datetimepicker-hours', formatted);
  730 + this.setTitle('.datetimepicker-minutes', formatted);
  731 + } else {
  732 + this.setTitle('.datetimepicker-hours', dayMonth + ' ' + dates[this.language].months[month] + ' ' + year);
  733 + this.setTitle('.datetimepicker-minutes', dayMonth + ' ' + dates[this.language].months[month] + ' ' + year);
  734 + }
  735 + this.picker.find('tfoot th.today')
  736 + .text(dates[this.language].today || dates['en'].today)
  737 + .toggle(this.todayBtn !== false);
  738 + this.picker.find('tfoot th.clear')
  739 + .text(dates[this.language].clear || dates['en'].clear)
  740 + .toggle(this.clearBtn !== false);
  741 + this.updateNavArrows();
  742 + this.fillMonths();
  743 + var prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0),
  744 + day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
  745 + prevMonth.setUTCDate(day);
  746 + prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7);
  747 + var nextMonth = new Date(prevMonth);
  748 + nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
  749 + nextMonth = nextMonth.valueOf();
  750 + var html = [];
  751 + var classes;
  752 + while (prevMonth.valueOf() < nextMonth) {
  753 + if (prevMonth.getUTCDay() === this.weekStart) {
  754 + html.push('<tr>');
  755 + }
  756 + classes = this.onRenderDay(prevMonth);
  757 + if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() === year && prevMonth.getUTCMonth() < month)) {
  758 + classes.push('old');
  759 + } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() === year && prevMonth.getUTCMonth() > month)) {
  760 + classes.push('new');
  761 + }
  762 + // Compare internal UTC date with local today, not UTC today
  763 + if (this.todayHighlight &&
  764 + prevMonth.getUTCFullYear() === today.getFullYear() &&
  765 + prevMonth.getUTCMonth() === today.getMonth() &&
  766 + prevMonth.getUTCDate() === today.getDate()) {
  767 + classes.push('today');
  768 + }
  769 + if (prevMonth.valueOf() === currentDate) {
  770 + classes.push('active');
  771 + }
  772 + if ((prevMonth.valueOf() + 86400000) <= this.startDate || prevMonth.valueOf() > this.endDate ||
  773 + $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 ||
  774 + $.inArray(prevMonth.toDateString(), this.datesDisabled) !== -1) {
  775 + classes.push('disabled');
  776 + }
  777 + html.push('<td class="' + classes.join(' ') + '">' + prevMonth.getUTCDate() + '</td>');
  778 + if (prevMonth.getUTCDay() === this.weekEnd) {
  779 + html.push('</tr>');
  780 + }
  781 + prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);
  782 + }
  783 + this.picker.find('.datetimepicker-days tbody').empty().append(html.join(''));
  784 +
  785 + html = [];
  786 + var txt = '', meridian = '', meridianOld = '';
  787 + var hoursDisabled = this.hoursDisabled || [];
  788 + d = new Date(this.viewDate)
  789 + for (var i = 0; i < 24; i++) {
  790 + d.setUTCHours(i);
  791 + classes = this.onRenderHour(d);
  792 + if (hoursDisabled.indexOf(i) !== -1) {
  793 + classes.push('disabled');
  794 + }
  795 + var actual = UTCDate(year, month, dayMonth, i);
  796 + // We want the previous hour for the startDate
  797 + if ((actual.valueOf() + 3600000) <= this.startDate || actual.valueOf() > this.endDate) {
  798 + classes.push('disabled');
  799 + } else if (hours === i) {
  800 + classes.push('active');
  801 + }
  802 + if (this.showMeridian && dates[this.language].meridiem.length === 2) {
  803 + meridian = (i < 12 ? dates[this.language].meridiem[0] : dates[this.language].meridiem[1]);
  804 + if (meridian !== meridianOld) {
  805 + if (meridianOld !== '') {
  806 + html.push('</fieldset>');
  807 + }
  808 + html.push('<fieldset class="hour"><legend>' + meridian.toUpperCase() + '</legend>');
  809 + }
  810 + meridianOld = meridian;
  811 + txt = (i % 12 ? i % 12 : 12);
  812 + if (i < 12) {
  813 + classes.push('hour_am');
  814 + } else {
  815 + classes.push('hour_pm');
  816 + }
  817 + html.push('<span class="' + classes.join(' ') + '">' + txt + '</span>');
  818 + if (i === 23) {
  819 + html.push('</fieldset>');
  820 + }
  821 + } else {
  822 + txt = i + ':00';
  823 + html.push('<span class="' + classes.join(' ') + '">' + txt + '</span>');
  824 + }
  825 + }
  826 + this.picker.find('.datetimepicker-hours td').html(html.join(''));
  827 +
  828 + html = [];
  829 + txt = '';
  830 + meridian = '';
  831 + meridianOld = '';
  832 + var minutesDisabled = this.minutesDisabled || [];
  833 + d = new Date(this.viewDate);
  834 + for (var i = 0; i < 60; i += this.minuteStep) {
  835 + if (minutesDisabled.indexOf(i) !== -1) continue;
  836 + d.setUTCMinutes(i);
  837 + d.setUTCSeconds(0);
  838 + classes = this.onRenderMinute(d);
  839 + if (this.showMeridian && dates[this.language].meridiem.length === 2) {
  840 + meridian = (hours < 12 ? dates[this.language].meridiem[0] : dates[this.language].meridiem[1]);
  841 + if (meridian !== meridianOld) {
  842 + if (meridianOld !== '') {
  843 + html.push('</fieldset>');
  844 + }
  845 + html.push('<fieldset class="minute"><legend>' + meridian.toUpperCase() + '</legend>');
  846 + }
  847 + meridianOld = meridian;
  848 + txt = (hours % 12 ? hours % 12 : 12);
  849 + html.push('<span class="' + classes.join(' ') + '">' + txt + ':' + (i < 10 ? '0' + i : i) + '</span>');
  850 + if (i === 59) {
  851 + html.push('</fieldset>');
  852 + }
  853 + } else {
  854 + txt = i + ':00';
  855 + html.push('<span class="' + classes.join(' ') + '">' + hours + ':' + (i < 10 ? '0' + i : i) + '</span>');
  856 + }
  857 + }
  858 + this.picker.find('.datetimepicker-minutes td').html(html.join(''));
  859 +
  860 + var currentYear = this.date.getUTCFullYear();
  861 + var months = this.setTitle('.datetimepicker-months', year)
  862 + .end()
  863 + .find('.month').removeClass('active');
  864 + if (currentYear === year) {
  865 + // getUTCMonths() returns 0 based, and we need to select the next one
  866 + // To cater bootstrap 2 we don't need to select the next one
  867 + months.eq(this.date.getUTCMonth()).addClass('active');
  868 + }
  869 + if (year < startYear || year > endYear) {
  870 + months.addClass('disabled');
  871 + }
  872 + if (year === startYear) {
  873 + months.slice(0, startMonth).addClass('disabled');
  874 + }
  875 + if (year === endYear) {
  876 + months.slice(endMonth).addClass('disabled');
  877 + }
  878 +
  879 + html = '';
  880 + year = parseInt(year / 10, 10) * 10;
  881 + var yearCont = this.setTitle('.datetimepicker-years', year + '-' + (year + 9))
  882 + .end()
  883 + .find('td');
  884 + year -= 1;
  885 + d = new Date(this.viewDate);
  886 + for (var i = -1; i < 11; i++) {
  887 + d.setUTCFullYear(year);
  888 + classes = this.onRenderYear(d);
  889 + if (i === -1 || i === 10) {
  890 + classes.push(old);
  891 + }
  892 + html += '<span class="' + classes.join(' ') + '">' + year + '</span>';
  893 + year += 1;
  894 + }
  895 + yearCont.html(html);
  896 + this.place();
  897 + },
  898 +
  899 + updateNavArrows: function () {
  900 + var d = new Date(this.viewDate),
  901 + year = d.getUTCFullYear(),
  902 + month = d.getUTCMonth(),
  903 + day = d.getUTCDate(),
  904 + hour = d.getUTCHours();
  905 + switch (this.viewMode) {
  906 + case 0:
  907 + if (year <= this.startDate.getUTCFullYear()
  908 + && month <= this.startDate.getUTCMonth()
  909 + && day <= this.startDate.getUTCDate()
  910 + && hour <= this.startDate.getUTCHours()) {
  911 + this.picker.find('.prev').css({visibility: 'hidden'});
  912 + } else {
  913 + this.picker.find('.prev').css({visibility: 'visible'});
  914 + }
  915 + if (year >= this.endDate.getUTCFullYear()
  916 + && month >= this.endDate.getUTCMonth()
  917 + && day >= this.endDate.getUTCDate()
  918 + && hour >= this.endDate.getUTCHours()) {
  919 + this.picker.find('.next').css({visibility: 'hidden'});
  920 + } else {
  921 + this.picker.find('.next').css({visibility: 'visible'});
  922 + }
  923 + break;
  924 + case 1:
  925 + if (year <= this.startDate.getUTCFullYear()
  926 + && month <= this.startDate.getUTCMonth()
  927 + && day <= this.startDate.getUTCDate()) {
  928 + this.picker.find('.prev').css({visibility: 'hidden'});
  929 + } else {
  930 + this.picker.find('.prev').css({visibility: 'visible'});
  931 + }
  932 + if (year >= this.endDate.getUTCFullYear()
  933 + && month >= this.endDate.getUTCMonth()
  934 + && day >= this.endDate.getUTCDate()) {
  935 + this.picker.find('.next').css({visibility: 'hidden'});
  936 + } else {
  937 + this.picker.find('.next').css({visibility: 'visible'});
  938 + }
  939 + break;
  940 + case 2:
  941 + if (year <= this.startDate.getUTCFullYear()
  942 + && month <= this.startDate.getUTCMonth()) {
  943 + this.picker.find('.prev').css({visibility: 'hidden'});
  944 + } else {
  945 + this.picker.find('.prev').css({visibility: 'visible'});
  946 + }
  947 + if (year >= this.endDate.getUTCFullYear()
  948 + && month >= this.endDate.getUTCMonth()) {
  949 + this.picker.find('.next').css({visibility: 'hidden'});
  950 + } else {
  951 + this.picker.find('.next').css({visibility: 'visible'});
  952 + }
  953 + break;
  954 + case 3:
  955 + case 4:
  956 + if (year <= this.startDate.getUTCFullYear()) {
  957 + this.picker.find('.prev').css({visibility: 'hidden'});
  958 + } else {
  959 + this.picker.find('.prev').css({visibility: 'visible'});
  960 + }
  961 + if (year >= this.endDate.getUTCFullYear()) {
  962 + this.picker.find('.next').css({visibility: 'hidden'});
  963 + } else {
  964 + this.picker.find('.next').css({visibility: 'visible'});
  965 + }
  966 + break;
  967 + }
  968 + },
  969 +
  970 + mousewheel: function (e) {
  971 +
  972 + e.preventDefault();
  973 + e.stopPropagation();
  974 +
  975 + if (this.wheelPause) {
  976 + return;
  977 + }
  978 +
  979 + this.wheelPause = true;
  980 +
  981 + var originalEvent = e.originalEvent;
  982 +
  983 + var delta = originalEvent.wheelDelta;
  984 +
  985 + var mode = delta > 0 ? 1 : (delta === 0) ? 0 : -1;
  986 +
  987 + if (this.wheelViewModeNavigationInverseDirection) {
  988 + mode = -mode;
  989 + }
  990 +
  991 + this.showMode(mode);
  992 +
  993 + setTimeout($.proxy(function () {
  994 +
  995 + this.wheelPause = false
  996 +
  997 + }, this), this.wheelViewModeNavigationDelay);
  998 +
  999 + },
  1000 +
  1001 + click: function (e) {
  1002 + e.stopPropagation();
  1003 + e.preventDefault();
  1004 + var target = $(e.target).closest('span, td, th, legend');
  1005 + if (target.is('.' + this.icontype)) {
  1006 + target = $(target).parent().closest('span, td, th, legend');
  1007 + }
  1008 + if (target.length === 1) {
  1009 + if (target.is('.disabled')) {
  1010 + this.element.trigger({
  1011 + type: 'outOfRange',
  1012 + date: this.viewDate,
  1013 + startDate: this.startDate,
  1014 + endDate: this.endDate
  1015 + });
  1016 + return;
  1017 + }
  1018 + switch (target[0].nodeName.toLowerCase()) {
  1019 + case 'th':
  1020 + switch (target[0].className) {
  1021 + case 'switch':
  1022 + this.showMode(1);
  1023 + break;
  1024 + case 'prev':
  1025 + case 'next':
  1026 + var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
  1027 + switch (this.viewMode) {
  1028 + case 0:
  1029 + this.viewDate = this.moveHour(this.viewDate, dir);
  1030 + break;
  1031 + case 1:
  1032 + this.viewDate = this.moveDate(this.viewDate, dir);
  1033 + break;
  1034 + case 2:
  1035 + this.viewDate = this.moveMonth(this.viewDate, dir);
  1036 + break;
  1037 + case 3:
  1038 + case 4:
  1039 + this.viewDate = this.moveYear(this.viewDate, dir);
  1040 + break;
  1041 + }
  1042 + this.fill();
  1043 + this.element.trigger({
  1044 + type: target[0].className + ':' + this.convertViewModeText(this.viewMode),
  1045 + date: this.viewDate,
  1046 + startDate: this.startDate,
  1047 + endDate: this.endDate
  1048 + });
  1049 + break;
  1050 + case 'clear':
  1051 + this.reset();
  1052 + if (this.autoclose) {
  1053 + this.hide();
  1054 + }
  1055 + break;
  1056 + case 'today':
  1057 + var date = new Date();
  1058 + date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);
  1059 +
  1060 + // Respect startDate and endDate.
  1061 + if (date < this.startDate) date = this.startDate;
  1062 + else if (date > this.endDate) date = this.endDate;
  1063 +
  1064 + this.viewMode = this.startViewMode;
  1065 + this.showMode(0);
  1066 + this._setDate(date);
  1067 + this.fill();
  1068 + if (this.autoclose) {
  1069 + this.hide();
  1070 + }
  1071 + break;
  1072 + }
  1073 + break;
  1074 + case 'span':
  1075 + if (!target.is('.disabled')) {
  1076 + var year = this.viewDate.getUTCFullYear(),
  1077 + month = this.viewDate.getUTCMonth(),
  1078 + day = this.viewDate.getUTCDate(),
  1079 + hours = this.viewDate.getUTCHours(),
  1080 + minutes = this.viewDate.getUTCMinutes(),
  1081 + seconds = this.viewDate.getUTCSeconds();
  1082 +
  1083 + if (target.is('.month')) {
  1084 + this.viewDate.setUTCDate(1);
  1085 + month = target.parent().find('span').index(target);
  1086 + day = this.viewDate.getUTCDate();
  1087 + this.viewDate.setUTCMonth(month);
  1088 + this.element.trigger({
  1089 + type: 'changeMonth',
  1090 + date: this.viewDate
  1091 + });
  1092 + if (this.viewSelect >= 3) {
  1093 + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
  1094 + }
  1095 + } else if (target.is('.year')) {
  1096 + this.viewDate.setUTCDate(1);
  1097 + year = parseInt(target.text(), 10) || 0;
  1098 + this.viewDate.setUTCFullYear(year);
  1099 + this.element.trigger({
  1100 + type: 'changeYear',
  1101 + date: this.viewDate
  1102 + });
  1103 + if (this.viewSelect >= 4) {
  1104 + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
  1105 + }
  1106 + } else if (target.is('.hour')) {
  1107 + hours = parseInt(target.text(), 10) || 0;
  1108 + if (target.hasClass('hour_am') || target.hasClass('hour_pm')) {
  1109 + if (hours === 12 && target.hasClass('hour_am')) {
  1110 + hours = 0;
  1111 + } else if (hours !== 12 && target.hasClass('hour_pm')) {
  1112 + hours += 12;
  1113 + }
  1114 + }
  1115 + this.viewDate.setUTCHours(hours);
  1116 + this.element.trigger({
  1117 + type: 'changeHour',
  1118 + date: this.viewDate
  1119 + });
  1120 + if (this.viewSelect >= 1) {
  1121 + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
  1122 + }
  1123 + } else if (target.is('.minute')) {
  1124 + minutes = parseInt(target.text().substr(target.text().indexOf(':') + 1), 10) || 0;
  1125 + this.viewDate.setUTCMinutes(minutes);
  1126 + this.element.trigger({
  1127 + type: 'changeMinute',
  1128 + date: this.viewDate
  1129 + });
  1130 + if (this.viewSelect >= 0) {
  1131 + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
  1132 + }
  1133 + }
  1134 + if (this.viewMode !== 0) {
  1135 + var oldViewMode = this.viewMode;
  1136 + this.showMode(-1);
  1137 + this.fill();
  1138 + if (oldViewMode === this.viewMode && this.autoclose) {
  1139 + this.hide();
  1140 + }
  1141 + } else {
  1142 + this.fill();
  1143 + if (this.autoclose) {
  1144 + this.hide();
  1145 + }
  1146 + }
  1147 + }
  1148 + break;
  1149 + case 'td':
  1150 + if (target.is('.day') && !target.is('.disabled')) {
  1151 + var day = parseInt(target.text(), 10) || 1;
  1152 + var year = this.viewDate.getUTCFullYear(),
  1153 + month = this.viewDate.getUTCMonth(),
  1154 + hours = this.viewDate.getUTCHours(),
  1155 + minutes = this.viewDate.getUTCMinutes(),
  1156 + seconds = this.viewDate.getUTCSeconds();
  1157 + if (target.is('.old')) {
  1158 + if (month === 0) {
  1159 + month = 11;
  1160 + year -= 1;
  1161 + } else {
  1162 + month -= 1;
  1163 + }
  1164 + } else if (target.is('.new')) {
  1165 + if (month === 11) {
  1166 + month = 0;
  1167 + year += 1;
  1168 + } else {
  1169 + month += 1;
  1170 + }
  1171 + }
  1172 + this.viewDate.setUTCFullYear(year);
  1173 + this.viewDate.setUTCMonth(month, day);
  1174 + this.element.trigger({
  1175 + type: 'changeDay',
  1176 + date: this.viewDate
  1177 + });
  1178 + if (this.viewSelect >= 2) {
  1179 + this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));
  1180 + }
  1181 + }
  1182 + var oldViewMode = this.viewMode;
  1183 + this.showMode(-1);
  1184 + this.fill();
  1185 + if (oldViewMode === this.viewMode && this.autoclose) {
  1186 + this.hide();
  1187 + }
  1188 + break;
  1189 + }
  1190 + }
  1191 + },
  1192 +
  1193 + _setDate: function (date, which) {
  1194 + if (!which || which === 'date')
  1195 + this.date = date;
  1196 + if (!which || which === 'view')
  1197 + this.viewDate = date;
  1198 + this.fill();
  1199 + this.setValue();
  1200 + var element;
  1201 + if (this.isInput) {
  1202 + element = this.element;
  1203 + } else if (this.component) {
  1204 + element = this.element.find('input');
  1205 + }
  1206 + if (element) {
  1207 + element.change();
  1208 + }
  1209 + this.element.trigger({
  1210 + type: 'changeDate',
  1211 + date: this.getDate()
  1212 + });
  1213 + if(date === null)
  1214 + this.date = this.viewDate;
  1215 + },
  1216 +
  1217 + moveMinute: function (date, dir) {
  1218 + if (!dir) return date;
  1219 + var new_date = new Date(date.valueOf());
  1220 + //dir = dir > 0 ? 1 : -1;
  1221 + new_date.setUTCMinutes(new_date.getUTCMinutes() + (dir * this.minuteStep));
  1222 + return new_date;
  1223 + },
  1224 +
  1225 + moveHour: function (date, dir) {
  1226 + if (!dir) return date;
  1227 + var new_date = new Date(date.valueOf());
  1228 + //dir = dir > 0 ? 1 : -1;
  1229 + new_date.setUTCHours(new_date.getUTCHours() + dir);
  1230 + return new_date;
  1231 + },
  1232 +
  1233 + moveDate: function (date, dir) {
  1234 + if (!dir) return date;
  1235 + var new_date = new Date(date.valueOf());
  1236 + //dir = dir > 0 ? 1 : -1;
  1237 + new_date.setUTCDate(new_date.getUTCDate() + dir);
  1238 + return new_date;
  1239 + },
  1240 +
  1241 + moveMonth: function (date, dir) {
  1242 + if (!dir) return date;
  1243 + var new_date = new Date(date.valueOf()),
  1244 + day = new_date.getUTCDate(),
  1245 + month = new_date.getUTCMonth(),
  1246 + mag = Math.abs(dir),
  1247 + new_month, test;
  1248 + dir = dir > 0 ? 1 : -1;
  1249 + if (mag === 1) {
  1250 + test = dir === -1
  1251 + // If going back one month, make sure month is not current month
  1252 + // (eg, Mar 31 -> Feb 31 === Feb 28, not Mar 02)
  1253 + ? function () {
  1254 + return new_date.getUTCMonth() === month;
  1255 + }
  1256 + // If going forward one month, make sure month is as expected
  1257 + // (eg, Jan 31 -> Feb 31 === Feb 28, not Mar 02)
  1258 + : function () {
  1259 + return new_date.getUTCMonth() !== new_month;
  1260 + };
  1261 + new_month = month + dir;
  1262 + new_date.setUTCMonth(new_month);
  1263 + // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
  1264 + if (new_month < 0 || new_month > 11)
  1265 + new_month = (new_month + 12) % 12;
  1266 + } else {
  1267 + // For magnitudes >1, move one month at a time...
  1268 + for (var i = 0; i < mag; i++)
  1269 + // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
  1270 + new_date = this.moveMonth(new_date, dir);
  1271 + // ...then reset the day, keeping it in the new month
  1272 + new_month = new_date.getUTCMonth();
  1273 + new_date.setUTCDate(day);
  1274 + test = function () {
  1275 + return new_month !== new_date.getUTCMonth();
  1276 + };
  1277 + }
  1278 + // Common date-resetting loop -- if date is beyond end of month, make it
  1279 + // end of month
  1280 + while (test()) {
  1281 + new_date.setUTCDate(--day);
  1282 + new_date.setUTCMonth(new_month);
  1283 + }
  1284 + return new_date;
  1285 + },
  1286 +
  1287 + moveYear: function (date, dir) {
  1288 + return this.moveMonth(date, dir * 12);
  1289 + },
  1290 +
  1291 + dateWithinRange: function (date) {
  1292 + return date >= this.startDate && date <= this.endDate;
  1293 + },
  1294 +
  1295 + keydown: function (e) {
  1296 + if (this.picker.is(':not(:visible)')) {
  1297 + if (e.keyCode === 27) // allow escape to hide and re-show picker
  1298 + this.show();
  1299 + return;
  1300 + }
  1301 + var dateChanged = false,
  1302 + dir, newDate, newViewDate;
  1303 + switch (e.keyCode) {
  1304 + case 27: // escape
  1305 + this.hide();
  1306 + e.preventDefault();
  1307 + break;
  1308 + case 37: // left
  1309 + case 39: // right
  1310 + if (!this.keyboardNavigation) break;
  1311 + dir = e.keyCode === 37 ? -1 : 1;
  1312 + var viewMode = this.viewMode;
  1313 + if (e.ctrlKey) {
  1314 + viewMode += 2;
  1315 + } else if (e.shiftKey) {
  1316 + viewMode += 1;
  1317 + }
  1318 + if (viewMode === 4) {
  1319 + newDate = this.moveYear(this.date, dir);
  1320 + newViewDate = this.moveYear(this.viewDate, dir);
  1321 + } else if (viewMode === 3) {
  1322 + newDate = this.moveMonth(this.date, dir);
  1323 + newViewDate = this.moveMonth(this.viewDate, dir);
  1324 + } else if (viewMode === 2) {
  1325 + newDate = this.moveDate(this.date, dir);
  1326 + newViewDate = this.moveDate(this.viewDate, dir);
  1327 + } else if (viewMode === 1) {
  1328 + newDate = this.moveHour(this.date, dir);
  1329 + newViewDate = this.moveHour(this.viewDate, dir);
  1330 + } else if (viewMode === 0) {
  1331 + newDate = this.moveMinute(this.date, dir);
  1332 + newViewDate = this.moveMinute(this.viewDate, dir);
  1333 + }
  1334 + if (this.dateWithinRange(newDate)) {
  1335 + this.date = newDate;
  1336 + this.viewDate = newViewDate;
  1337 + this.setValue();
  1338 + this.update();
  1339 + e.preventDefault();
  1340 + dateChanged = true;
  1341 + }
  1342 + break;
  1343 + case 38: // up
  1344 + case 40: // down
  1345 + if (!this.keyboardNavigation) break;
  1346 + dir = e.keyCode === 38 ? -1 : 1;
  1347 + viewMode = this.viewMode;
  1348 + if (e.ctrlKey) {
  1349 + viewMode += 2;
  1350 + } else if (e.shiftKey) {
  1351 + viewMode += 1;
  1352 + }
  1353 + if (viewMode === 4) {
  1354 + newDate = this.moveYear(this.date, dir);
  1355 + newViewDate = this.moveYear(this.viewDate, dir);
  1356 + } else if (viewMode === 3) {
  1357 + newDate = this.moveMonth(this.date, dir);
  1358 + newViewDate = this.moveMonth(this.viewDate, dir);
  1359 + } else if (viewMode === 2) {
  1360 + newDate = this.moveDate(this.date, dir * 7);
  1361 + newViewDate = this.moveDate(this.viewDate, dir * 7);
  1362 + } else if (viewMode === 1) {
  1363 + if (this.showMeridian) {
  1364 + newDate = this.moveHour(this.date, dir * 6);
  1365 + newViewDate = this.moveHour(this.viewDate, dir * 6);
  1366 + } else {
  1367 + newDate = this.moveHour(this.date, dir * 4);
  1368 + newViewDate = this.moveHour(this.viewDate, dir * 4);
  1369 + }
  1370 + } else if (viewMode === 0) {
  1371 + newDate = this.moveMinute(this.date, dir * 4);
  1372 + newViewDate = this.moveMinute(this.viewDate, dir * 4);
  1373 + }
  1374 + if (this.dateWithinRange(newDate)) {
  1375 + this.date = newDate;
  1376 + this.viewDate = newViewDate;
  1377 + this.setValue();
  1378 + this.update();
  1379 + e.preventDefault();
  1380 + dateChanged = true;
  1381 + }
  1382 + break;
  1383 + case 13: // enter
  1384 + if (this.viewMode !== 0) {
  1385 + var oldViewMode = this.viewMode;
  1386 + this.showMode(-1);
  1387 + this.fill();
  1388 + if (oldViewMode === this.viewMode && this.autoclose) {
  1389 + this.hide();
  1390 + }
  1391 + } else {
  1392 + this.fill();
  1393 + if (this.autoclose) {
  1394 + this.hide();
  1395 + }
  1396 + }
  1397 + e.preventDefault();
  1398 + break;
  1399 + case 9: // tab
  1400 + this.hide();
  1401 + break;
  1402 + }
  1403 + if (dateChanged) {
  1404 + var element;
  1405 + if (this.isInput) {
  1406 + element = this.element;
  1407 + } else if (this.component) {
  1408 + element = this.element.find('input');
  1409 + }
  1410 + if (element) {
  1411 + element.change();
  1412 + }
  1413 + this.element.trigger({
  1414 + type: 'changeDate',
  1415 + date: this.getDate()
  1416 + });
  1417 + }
  1418 + },
  1419 +
  1420 + showMode: function (dir) {
  1421 + if (dir) {
  1422 + var newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir));
  1423 + if (newViewMode >= this.minView && newViewMode <= this.maxView) {
  1424 + this.element.trigger({
  1425 + type: 'changeMode',
  1426 + date: this.viewDate,
  1427 + oldViewMode: this.viewMode,
  1428 + newViewMode: newViewMode
  1429 + });
  1430 +
  1431 + this.viewMode = newViewMode;
  1432 + }
  1433 + }
  1434 + /*
  1435 + vitalets: fixing bug of very special conditions:
  1436 + jquery 1.7.1 + webkit + show inline datetimepicker in bootstrap popover.
  1437 + Method show() does not set display css correctly and datetimepicker is not shown.
  1438 + Changed to .css('display', 'block') solve the problem.
  1439 + See https://github.com/vitalets/x-editable/issues/37
  1440 +
  1441 + In jquery 1.7.2+ everything works fine.
  1442 + */
  1443 + //this.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
  1444 + this.picker.find('>div').hide().filter('.datetimepicker-' + DPGlobal.modes[this.viewMode].clsName).css('display', 'block');
  1445 + this.updateNavArrows();
  1446 + },
  1447 +
  1448 + reset: function () {
  1449 + this._setDate(null, 'date');
  1450 + },
  1451 +
  1452 + convertViewModeText: function (viewMode) {
  1453 + switch (viewMode) {
  1454 + case 4:
  1455 + return 'decade';
  1456 + case 3:
  1457 + return 'year';
  1458 + case 2:
  1459 + return 'month';
  1460 + case 1:
  1461 + return 'day';
  1462 + case 0:
  1463 + return 'hour';
  1464 + }
  1465 + }
  1466 + };
  1467 +
  1468 + var old = $.fn.datetimepicker;
  1469 + $.fn.datetimepicker = function (option) {
  1470 + var args = Array.apply(null, arguments);
  1471 + args.shift();
  1472 + var internal_return;
  1473 + this.each(function () {
  1474 + var $this = $(this),
  1475 + data = $this.data('datetimepicker'),
  1476 + options = typeof option === 'object' && option;
  1477 + if (!data) {
  1478 + $this.data('datetimepicker', (data = new Datetimepicker(this, $.extend({}, $.fn.datetimepicker.defaults, options))));
  1479 + }
  1480 + if (typeof option === 'string' && typeof data[option] === 'function') {
  1481 + internal_return = data[option].apply(data, args);
  1482 + if (internal_return !== undefined) {
  1483 + return false;
  1484 + }
  1485 + }
  1486 + });
  1487 + if (internal_return !== undefined)
  1488 + return internal_return;
  1489 + else
  1490 + return this;
  1491 + };
  1492 +
  1493 + $.fn.datetimepicker.defaults = {
  1494 + };
  1495 + $.fn.datetimepicker.Constructor = Datetimepicker;
  1496 + var dates = $.fn.datetimepicker.dates = {
  1497 + en: {
  1498 + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
  1499 + daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  1500 + daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],
  1501 + months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
  1502 + monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
  1503 + meridiem: ['am', 'pm'],
  1504 + suffix: ['st', 'nd', 'rd', 'th'],
  1505 + today: 'Today',
  1506 + clear: 'Clear'
  1507 + }
  1508 + };
  1509 +
  1510 + var DPGlobal = {
  1511 + modes: [
  1512 + {
  1513 + clsName: 'minutes',
  1514 + navFnc: 'Hours',
  1515 + navStep: 1
  1516 + },
  1517 + {
  1518 + clsName: 'hours',
  1519 + navFnc: 'Date',
  1520 + navStep: 1
  1521 + },
  1522 + {
  1523 + clsName: 'days',
  1524 + navFnc: 'Month',
  1525 + navStep: 1
  1526 + },
  1527 + {
  1528 + clsName: 'months',
  1529 + navFnc: 'FullYear',
  1530 + navStep: 1
  1531 + },
  1532 + {
  1533 + clsName: 'years',
  1534 + navFnc: 'FullYear',
  1535 + navStep: 10
  1536 + }
  1537 + ],
  1538 + isLeapYear: function (year) {
  1539 + return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))
  1540 + },
  1541 + getDaysInMonth: function (year, month) {
  1542 + return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]
  1543 + },
  1544 + getDefaultFormat: function (type, field) {
  1545 + if (type === 'standard') {
  1546 + if (field === 'input')
  1547 + return 'yyyy-mm-dd hh:ii';
  1548 + else
  1549 + return 'yyyy-mm-dd hh:ii:ss';
  1550 + } else if (type === 'php') {
  1551 + if (field === 'input')
  1552 + return 'Y-m-d H:i';
  1553 + else
  1554 + return 'Y-m-d H:i:s';
  1555 + } else {
  1556 + throw new Error('Invalid format type.');
  1557 + }
  1558 + },
  1559 + validParts: function (type) {
  1560 + if (type === 'standard') {
  1561 + return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;
  1562 + } else if (type === 'php') {
  1563 + return /[dDjlNwzFmMnStyYaABgGhHis]/g;
  1564 + } else {
  1565 + throw new Error('Invalid format type.');
  1566 + }
  1567 + },
  1568 + nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,
  1569 + parseFormat: function (format, type) {
  1570 + // IE treats \0 as a string end in inputs (truncating the value),
  1571 + // so it's a bad format delimiter, anyway
  1572 + var separators = format.replace(this.validParts(type), '\0').split('\0'),
  1573 + parts = format.match(this.validParts(type));
  1574 + if (!separators || !separators.length || !parts || parts.length === 0) {
  1575 + throw new Error('Invalid date format.');
  1576 + }
  1577 + return {separators: separators, parts: parts};
  1578 + },
  1579 + parseDate: function (date, format, language, type, timezone) {
  1580 + if (date instanceof Date) {
  1581 + var dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);
  1582 + dateUTC.setMilliseconds(0);
  1583 + return dateUTC;
  1584 + }
  1585 + if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(date)) {
  1586 + format = this.parseFormat('yyyy-mm-dd', type);
  1587 + }
  1588 + if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(date)) {
  1589 + format = this.parseFormat('yyyy-mm-dd hh:ii', type);
  1590 + }
  1591 + if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(date)) {
  1592 + format = this.parseFormat('yyyy-mm-dd hh:ii:ss', type);
  1593 + }
  1594 + if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(date)) {
  1595 + var part_re = /([-+]\d+)([dmwy])/,
  1596 + parts = date.match(/([-+]\d+)([dmwy])/g),
  1597 + part, dir;
  1598 + date = new Date();
  1599 + for (var i = 0; i < parts.length; i++) {
  1600 + part = part_re.exec(parts[i]);
  1601 + dir = parseInt(part[1]);
  1602 + switch (part[2]) {
  1603 + case 'd':
  1604 + date.setUTCDate(date.getUTCDate() + dir);
  1605 + break;
  1606 + case 'm':
  1607 + date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);
  1608 + break;
  1609 + case 'w':
  1610 + date.setUTCDate(date.getUTCDate() + dir * 7);
  1611 + break;
  1612 + case 'y':
  1613 + date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);
  1614 + break;
  1615 + }
  1616 + }
  1617 + return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 0);
  1618 + }
  1619 + var parts = date && date.toString().match(this.nonpunctuation) || [],
  1620 + date = new Date(0, 0, 0, 0, 0, 0, 0),
  1621 + parsed = {},
  1622 + setters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P', 'z', 'Z'],
  1623 + setters_map = {
  1624 + hh: function (d, v) {
  1625 + return d.setUTCHours(v);
  1626 + },
  1627 + h: function (d, v) {
  1628 + return d.setUTCHours(v);
  1629 + },
  1630 + HH: function (d, v) {
  1631 + return d.setUTCHours(v === 12 ? 0 : v);
  1632 + },
  1633 + H: function (d, v) {
  1634 + return d.setUTCHours(v === 12 ? 0 : v);
  1635 + },
  1636 + ii: function (d, v) {
  1637 + return d.setUTCMinutes(v);
  1638 + },
  1639 + i: function (d, v) {
  1640 + return d.setUTCMinutes(v);
  1641 + },
  1642 + ss: function (d, v) {
  1643 + return d.setUTCSeconds(v);
  1644 + },
  1645 + s: function (d, v) {
  1646 + return d.setUTCSeconds(v);
  1647 + },
  1648 + yyyy: function (d, v) {
  1649 + return d.setUTCFullYear(v);
  1650 + },
  1651 + yy: function (d, v) {
  1652 + return d.setUTCFullYear(2000 + v);
  1653 + },
  1654 + m: function (d, v) {
  1655 + v -= 1;
  1656 + while (v < 0) v += 12;
  1657 + v %= 12;
  1658 + d.setUTCMonth(v);
  1659 + while (d.getUTCMonth() !== v)
  1660 + if (isNaN(d.getUTCMonth()))
  1661 + return d;
  1662 + else
  1663 + d.setUTCDate(d.getUTCDate() - 1);
  1664 + return d;
  1665 + },
  1666 + d: function (d, v) {
  1667 + return d.setUTCDate(v);
  1668 + },
  1669 + p: function (d, v) {
  1670 + return d.setUTCHours(v === 1 ? d.getUTCHours() + 12 : d.getUTCHours());
  1671 + },
  1672 + z: function () {
  1673 + return timezone
  1674 + }
  1675 + },
  1676 + val, filtered, part;
  1677 + setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
  1678 + setters_map['dd'] = setters_map['d'];
  1679 + setters_map['P'] = setters_map['p'];
  1680 + setters_map['Z'] = setters_map['z'];
  1681 + date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
  1682 + if (parts.length === format.parts.length) {
  1683 + for (var i = 0, cnt = format.parts.length; i < cnt; i++) {
  1684 + val = parseInt(parts[i], 10);
  1685 + part = format.parts[i];
  1686 + if (isNaN(val)) {
  1687 + switch (part) {
  1688 + case 'MM':
  1689 + filtered = $(dates[language].months).filter(function () {
  1690 + var m = this.slice(0, parts[i].length),
  1691 + p = parts[i].slice(0, m.length);
  1692 + return m === p;
  1693 + });
  1694 + val = $.inArray(filtered[0], dates[language].months) + 1;
  1695 + break;
  1696 + case 'M':
  1697 + filtered = $(dates[language].monthsShort).filter(function () {
  1698 + var m = this.slice(0, parts[i].length),
  1699 + p = parts[i].slice(0, m.length);
  1700 + return m.toLowerCase() === p.toLowerCase();
  1701 + });
  1702 + val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
  1703 + break;
  1704 + case 'p':
  1705 + case 'P':
  1706 + val = $.inArray(parts[i].toLowerCase(), dates[language].meridiem);
  1707 + break;
  1708 + case 'z':
  1709 + case 'Z':
  1710 + timezone;
  1711 + break;
  1712 +
  1713 + }
  1714 + }
  1715 + parsed[part] = val;
  1716 + }
  1717 + for (var i = 0, s; i < setters_order.length; i++) {
  1718 + s = setters_order[i];
  1719 + if (s in parsed && !isNaN(parsed[s]))
  1720 + setters_map[s](date, parsed[s])
  1721 + }
  1722 + }
  1723 + return date;
  1724 + },
  1725 + formatDate: function (date, format, language, type, timezone) {
  1726 + if (date === null) {
  1727 + return '';
  1728 + }
  1729 + var val;
  1730 + if (type === 'standard') {
  1731 + val = {
  1732 + t: date.getTime(),
  1733 + // year
  1734 + yy: date.getUTCFullYear().toString().substring(2),
  1735 + yyyy: date.getUTCFullYear(),
  1736 + // month
  1737 + m: date.getUTCMonth() + 1,
  1738 + M: dates[language].monthsShort[date.getUTCMonth()],
  1739 + MM: dates[language].months[date.getUTCMonth()],
  1740 + // day
  1741 + d: date.getUTCDate(),
  1742 + D: dates[language].daysShort[date.getUTCDay()],
  1743 + DD: dates[language].days[date.getUTCDay()],
  1744 + p: (dates[language].meridiem.length === 2 ? dates[language].meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''),
  1745 + // hour
  1746 + h: date.getUTCHours(),
  1747 + // minute
  1748 + i: date.getUTCMinutes(),
  1749 + // second
  1750 + s: date.getUTCSeconds(),
  1751 + // timezone
  1752 + z: timezone
  1753 + };
  1754 +
  1755 + if (dates[language].meridiem.length === 2) {
  1756 + val.H = (val.h % 12 === 0 ? 12 : val.h % 12);
  1757 + }
  1758 + else {
  1759 + val.H = val.h;
  1760 + }
  1761 + val.HH = (val.H < 10 ? '0' : '') + val.H;
  1762 + val.P = val.p.toUpperCase();
  1763 + val.Z = val.z;
  1764 + val.hh = (val.h < 10 ? '0' : '') + val.h;
  1765 + val.ii = (val.i < 10 ? '0' : '') + val.i;
  1766 + val.ss = (val.s < 10 ? '0' : '') + val.s;
  1767 + val.dd = (val.d < 10 ? '0' : '') + val.d;
  1768 + val.mm = (val.m < 10 ? '0' : '') + val.m;
  1769 + } else if (type === 'php') {
  1770 + // php format
  1771 + val = {
  1772 + // year
  1773 + y: date.getUTCFullYear().toString().substring(2),
  1774 + Y: date.getUTCFullYear(),
  1775 + // month
  1776 + F: dates[language].months[date.getUTCMonth()],
  1777 + M: dates[language].monthsShort[date.getUTCMonth()],
  1778 + n: date.getUTCMonth() + 1,
  1779 + t: DPGlobal.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()),
  1780 + // day
  1781 + j: date.getUTCDate(),
  1782 + l: dates[language].days[date.getUTCDay()],
  1783 + D: dates[language].daysShort[date.getUTCDay()],
  1784 + w: date.getUTCDay(), // 0 -> 6
  1785 + N: (date.getUTCDay() === 0 ? 7 : date.getUTCDay()), // 1 -> 7
  1786 + S: (date.getUTCDate() % 10 <= dates[language].suffix.length ? dates[language].suffix[date.getUTCDate() % 10 - 1] : ''),
  1787 + // hour
  1788 + a: (dates[language].meridiem.length === 2 ? dates[language].meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''),
  1789 + g: (date.getUTCHours() % 12 === 0 ? 12 : date.getUTCHours() % 12),
  1790 + G: date.getUTCHours(),
  1791 + // minute
  1792 + i: date.getUTCMinutes(),
  1793 + // second
  1794 + s: date.getUTCSeconds()
  1795 + };
  1796 + val.m = (val.n < 10 ? '0' : '') + val.n;
  1797 + val.d = (val.j < 10 ? '0' : '') + val.j;
  1798 + val.A = val.a.toString().toUpperCase();
  1799 + val.h = (val.g < 10 ? '0' : '') + val.g;
  1800 + val.H = (val.G < 10 ? '0' : '') + val.G;
  1801 + val.i = (val.i < 10 ? '0' : '') + val.i;
  1802 + val.s = (val.s < 10 ? '0' : '') + val.s;
  1803 + } else {
  1804 + throw new Error('Invalid format type.');
  1805 + }
  1806 + var date = [],
  1807 + seps = $.extend([], format.separators);
  1808 + for (var i = 0, cnt = format.parts.length; i < cnt; i++) {
  1809 + if (seps.length) {
  1810 + date.push(seps.shift());
  1811 + }
  1812 + date.push(val[format.parts[i]]);
  1813 + }
  1814 + if (seps.length) {
  1815 + date.push(seps.shift());
  1816 + }
  1817 + return date.join('');
  1818 + },
  1819 + convertViewMode: function (viewMode) {
  1820 + switch (viewMode) {
  1821 + case 4:
  1822 + case 'decade':
  1823 + viewMode = 4;
  1824 + break;
  1825 + case 3:
  1826 + case 'year':
  1827 + viewMode = 3;
  1828 + break;
  1829 + case 2:
  1830 + case 'month':
  1831 + viewMode = 2;
  1832 + break;
  1833 + case 1:
  1834 + case 'day':
  1835 + viewMode = 1;
  1836 + break;
  1837 + case 0:
  1838 + case 'hour':
  1839 + viewMode = 0;
  1840 + break;
  1841 + }
  1842 +
  1843 + return viewMode;
  1844 + },
  1845 + headTemplate: '<thead>' +
  1846 + '<tr>' +
  1847 + '<th class="prev"><i class="{iconType} {leftArrow}"/></th>' +
  1848 + '<th colspan="5" class="switch"></th>' +
  1849 + '<th class="next"><i class="{iconType} {rightArrow}"/></th>' +
  1850 + '</tr>' +
  1851 + '</thead>',
  1852 + headTemplateV3: '<thead>' +
  1853 + '<tr>' +
  1854 + '<th class="prev"><span class="{iconType} {leftArrow}"></span> </th>' +
  1855 + '<th colspan="5" class="switch"></th>' +
  1856 + '<th class="next"><span class="{iconType} {rightArrow}"></span> </th>' +
  1857 + '</tr>' +
  1858 + '</thead>',
  1859 + contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
  1860 + footTemplate: '<tfoot>' +
  1861 + '<tr><th colspan="7" class="today"></th></tr>' +
  1862 + '<tr><th colspan="7" class="clear"></th></tr>' +
  1863 + '</tfoot>'
  1864 + };
  1865 + DPGlobal.template = '<div class="datetimepicker">' +
  1866 + '<div class="datetimepicker-minutes">' +
  1867 + '<table class=" table-condensed">' +
  1868 + DPGlobal.headTemplate +
  1869 + DPGlobal.contTemplate +
  1870 + DPGlobal.footTemplate +
  1871 + '</table>' +
  1872 + '</div>' +
  1873 + '<div class="datetimepicker-hours">' +
  1874 + '<table class=" table-condensed">' +
  1875 + DPGlobal.headTemplate +
  1876 + DPGlobal.contTemplate +
  1877 + DPGlobal.footTemplate +
  1878 + '</table>' +
  1879 + '</div>' +
  1880 + '<div class="datetimepicker-days">' +
  1881 + '<table class=" table-condensed">' +
  1882 + DPGlobal.headTemplate +
  1883 + '<tbody></tbody>' +
  1884 + DPGlobal.footTemplate +
  1885 + '</table>' +
  1886 + '</div>' +
  1887 + '<div class="datetimepicker-months">' +
  1888 + '<table class="table-condensed">' +
  1889 + DPGlobal.headTemplate +
  1890 + DPGlobal.contTemplate +
  1891 + DPGlobal.footTemplate +
  1892 + '</table>' +
  1893 + '</div>' +
  1894 + '<div class="datetimepicker-years">' +
  1895 + '<table class="table-condensed">' +
  1896 + DPGlobal.headTemplate +
  1897 + DPGlobal.contTemplate +
  1898 + DPGlobal.footTemplate +
  1899 + '</table>' +
  1900 + '</div>' +
  1901 + '</div>';
  1902 + DPGlobal.templateV3 = '<div class="datetimepicker">' +
  1903 + '<div class="datetimepicker-minutes">' +
  1904 + '<table class=" table-condensed">' +
  1905 + DPGlobal.headTemplateV3 +
  1906 + DPGlobal.contTemplate +
  1907 + DPGlobal.footTemplate +
  1908 + '</table>' +
  1909 + '</div>' +
  1910 + '<div class="datetimepicker-hours">' +
  1911 + '<table class=" table-condensed">' +
  1912 + DPGlobal.headTemplateV3 +
  1913 + DPGlobal.contTemplate +
  1914 + DPGlobal.footTemplate +
  1915 + '</table>' +
  1916 + '</div>' +
  1917 + '<div class="datetimepicker-days">' +
  1918 + '<table class=" table-condensed">' +
  1919 + DPGlobal.headTemplateV3 +
  1920 + '<tbody></tbody>' +
  1921 + DPGlobal.footTemplate +
  1922 + '</table>' +
  1923 + '</div>' +
  1924 + '<div class="datetimepicker-months">' +
  1925 + '<table class="table-condensed">' +
  1926 + DPGlobal.headTemplateV3 +
  1927 + DPGlobal.contTemplate +
  1928 + DPGlobal.footTemplate +
  1929 + '</table>' +
  1930 + '</div>' +
  1931 + '<div class="datetimepicker-years">' +
  1932 + '<table class="table-condensed">' +
  1933 + DPGlobal.headTemplateV3 +
  1934 + DPGlobal.contTemplate +
  1935 + DPGlobal.footTemplate +
  1936 + '</table>' +
  1937 + '</div>' +
  1938 + '</div>';
  1939 + $.fn.datetimepicker.DPGlobal = DPGlobal;
  1940 +
  1941 + /* DATETIMEPICKER NO CONFLICT
  1942 + * =================== */
  1943 +
  1944 + $.fn.datetimepicker.noConflict = function () {
  1945 + $.fn.datetimepicker = old;
  1946 + return this;
  1947 + };
  1948 +
  1949 + /* DATETIMEPICKER DATA-API
  1950 + * ================== */
  1951 +
  1952 + $(document).on(
  1953 + 'focus.datetimepicker.data-api click.datetimepicker.data-api',
  1954 + '[data-provide="datetimepicker"]',
  1955 + function (e) {
  1956 + var $this = $(this);
  1957 + if ($this.data('datetimepicker')) return;
  1958 + e.preventDefault();
  1959 + // component click requires us to explicitly show it
  1960 + $this.datetimepicker('show');
  1961 + }
  1962 + );
  1963 + $(function () {
  1964 + $('[data-provide="datetimepicker-inline"]').datetimepicker();
  1965 + });
  1966 +
  1967 +}));
... ...
resource/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.zh-CN.js 0 → 100755
  1 +/**
  2 + * Simplified Chinese translation for bootstrap-datetimepicker
  3 + * Yuan Cheung <advanimal@gmail.com>
  4 + */
  5 +;(function($){
  6 + $.fn.datetimepicker.dates['zh-CN'] = {
  7 + days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
  8 + daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
  9 + daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
  10 + months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
  11 + monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
  12 + today: "今天",
  13 + suffix: [],
  14 + clear:"清空",
  15 + meridiem: ["上午", "下午"]
  16 + };
  17 +}(jQuery));
... ...
resource/lib/bootstrap-select/LICENSE 0 → 100644
  1 +The MIT License (MIT)
  2 +
  3 +Copyright (c) 2013-2015 bootstrap-select
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in all
  13 +copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21 +SOFTWARE.
... ...
resource/lib/bootstrap-select/README.md 0 → 100644
  1 +bootstrap-select
  2 +================
  3 +
  4 +[![Latest release](https://img.shields.io/github/release/silviomoreto/bootstrap-select.svg?style=flat)](https://github.com/silviomoreto/bootstrap-select/releases/latest)
  5 +[![Bower](https://img.shields.io/bower/v/bootstrap-select.svg)]()
  6 +[![npm](https://img.shields.io/npm/v/bootstrap-select.svg)]()
  7 +[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat)](LICENSE)
  8 +[![Dependency Status](https://david-dm.org/silviomoreto/bootstrap-select.svg)](https://david-dm.org/silviomoreto/bootstrap-select)
  9 +[![devDependency Status](https://david-dm.org/silviomoreto/bootstrap-select/dev-status.svg)](https://david-dm.org/silviomoreto/bootstrap-select#info=devDependencies)
  10 +
  11 +A custom select / multiselect for Bootstrap using button dropdown, designed to behave like regular Bootstrap selects.
  12 +
  13 +## Demo and Documentation
  14 +
  15 +See a Bootstrap 3 example [here](http://silviomoreto.github.io/bootstrap-select).
  16 +
  17 +## Authors
  18 +
  19 +[Silvio Moreto](https://github.com/silviomoreto),
  20 +[Ana Carolina](https://github.com/anacarolinats),
  21 +[caseyjhol](https://github.com/caseyjhol),
  22 +[Matt Bryson](https://github.com/mattbryson), and
  23 +[t0xicCode](https://github.com/t0xicCode).
  24 +
  25 +## Usage
  26 +
  27 +Create your `<select>` with the `.selectpicker` class.
  28 +```html
  29 +<select class="selectpicker">
  30 + <option>Mustard</option>
  31 + <option>Ketchup</option>
  32 + <option>Barbecue</option>
  33 +</select>
  34 +```
  35 +
  36 +If you use a 1.6.3 or newer, you don't need to do anything else, as the data-api automatically picks up the `<select>`s with the `selectpicker` class.
  37 +
  38 +If you use an older version, you need to add the following either at the bottom of the page (after the last selectpicker), or in a [`$(document).ready()`](http://api.jquery.com/ready/) block.
  39 +```js
  40 +// To style only <select>s with the selectpicker class
  41 +$('.selectpicker').selectpicker();
  42 +```
  43 +Or
  44 +```js
  45 +// To style all <select>s
  46 +$('select').selectpicker();
  47 +```
  48 +
  49 +Checkout the [documentation](http://silviomoreto.github.io/bootstrap-select) for further information.
  50 +
  51 +## CDN
  52 +
  53 +**N.B.**: The CDN is updated after the release is made public, which means that there is a delay between the publishing of a release and its availability on the CDN. Check [the GitHub page](https://github.com/silviomoreto/bootstrap-select/releases) for the latest release.
  54 +
  55 +* [//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/css/bootstrap-select.min.css](//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/css/bootstrap-select.min.css)
  56 +* [//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/js/bootstrap-select.min.js](//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/js/bootstrap-select.min.js)
  57 +* //cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.5/js/i18n/defaults-*.min.js (The translation files)
  58 +
  59 +## Bugs and feature requests
  60 +
  61 +Anyone and everyone is welcome to contribute. **Please take a moment to
  62 +review the [guidelines for contributing](CONTRIBUTING.md)**. Make sure you're using the latest version of bootstrap-select before submitting an issue.
  63 +
  64 +* [Bug reports](CONTRIBUTING.md#bug-reports)
  65 +* [Feature requests](CONTRIBUTING.md#feature-requests)
  66 +
  67 +## Copyright and license
  68 +
  69 +Copyright (C) 2013-2015 bootstrap-select
  70 +
  71 +Licensed under [the MIT license](LICENSE).
... ...
resource/lib/bootstrap-select/css/bootstrap-select.css 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +.bootstrap-select {
  9 + width: 220px \0;
  10 + /*IE9 and below*/
  11 +}
  12 +.bootstrap-select > .dropdown-toggle {
  13 + width: 100%;
  14 + padding-left: 25px;
  15 +}
  16 +.has-error .bootstrap-select .dropdown-toggle,
  17 +.error .bootstrap-select .dropdown-toggle {
  18 + border-color: #b94a48;
  19 +}
  20 +.bootstrap-select.fit-width {
  21 + width: auto !important;
  22 +}
  23 +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
  24 + width: 220px;
  25 +}
  26 +.bootstrap-select .dropdown-toggle:focus {
  27 + outline: thin dotted #333333 !important;
  28 + outline: 5px auto -webkit-focus-ring-color !important;
  29 + outline-offset: -2px;
  30 +}
  31 +.bootstrap-select.form-control {
  32 + margin-bottom: 0;
  33 + padding: 0;
  34 + border: none;
  35 +}
  36 +.bootstrap-select.form-control:not([class*="col-"]) {
  37 + width: 100%;
  38 +}
  39 +.bootstrap-select.form-control.input-group-btn {
  40 + z-index: auto;
  41 +}
  42 +.bootstrap-select.btn-group:not(.input-group-btn),
  43 +.bootstrap-select.btn-group[class*="col-"] {
  44 + float: none;
  45 + display: inline-block;
  46 + margin-right: 0;
  47 +}
  48 +.bootstrap-select.btn-group.dropdown-menu-left,
  49 +.bootstrap-select.btn-group[class*="col-"].dropdown-menu-left,
  50 +.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right {
  51 + float: left;
  52 +}
  53 +.form-inline .bootstrap-select.btn-group,
  54 +.form-horizontal .bootstrap-select.btn-group,
  55 +.form-group .bootstrap-select.btn-group {
  56 + margin-bottom: 0;
  57 +}
  58 +.form-group-lg .bootstrap-select.btn-group.form-control,
  59 +.form-group-sm .bootstrap-select.btn-group.form-control {
  60 + padding: 0;
  61 +}
  62 +.form-inline .bootstrap-select.btn-group .form-control {
  63 + width: 100%;
  64 +}
  65 +.bootstrap-select.btn-group.disabled,
  66 +.bootstrap-select.btn-group > .disabled {
  67 + cursor: not-allowed;
  68 +}
  69 +.bootstrap-select.btn-group.disabled:focus,
  70 +.bootstrap-select.btn-group > .disabled:focus {
  71 + outline: none !important;
  72 +}
  73 +.bootstrap-select.btn-group .dropdown-toggle .filter-option {
  74 + display: inline-block;
  75 + overflow: hidden;
  76 + width: 100%;
  77 + text-align: right;
  78 +}
  79 +.bootstrap-select.btn-group .dropdown-toggle .caret {
  80 + position: absolute;
  81 + top: 50%;
  82 + left: 12px;
  83 + margin-top: -2px;
  84 + vertical-align: middle;
  85 +}
  86 +.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle {
  87 + width: 100%;
  88 +}
  89 +.bootstrap-select.btn-group .dropdown-menu {
  90 + min-width: 100%;
  91 + z-index: 1035;
  92 + -webkit-box-sizing: border-box;
  93 + -moz-box-sizing: border-box;
  94 + box-sizing: border-box;
  95 +}
  96 +.bootstrap-select.btn-group .dropdown-menu.inner {
  97 + position: static;
  98 + float: none;
  99 + border: 0;
  100 + padding: 0;
  101 + margin: 0;
  102 + border-radius: 0;
  103 + -webkit-box-shadow: none;
  104 + box-shadow: none;
  105 +}
  106 +.bootstrap-select.btn-group .dropdown-menu li {
  107 + position: relative;
  108 +}
  109 +.bootstrap-select.btn-group .dropdown-menu li.active small {
  110 + color: #fff;
  111 +}
  112 +.bootstrap-select.btn-group .dropdown-menu li.disabled a {
  113 + cursor: not-allowed;
  114 +}
  115 +.bootstrap-select.btn-group .dropdown-menu li a {
  116 + cursor: pointer;
  117 +}
  118 +.bootstrap-select.btn-group .dropdown-menu li a.opt {
  119 + position: relative;
  120 + padding-right: 2.25em;
  121 +}
  122 +.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {
  123 + display: none;
  124 +}
  125 +.bootstrap-select.btn-group .dropdown-menu li a span.text {
  126 + display: inline-block;
  127 +}
  128 +.bootstrap-select.btn-group .dropdown-menu li small {
  129 + padding-right: 0.5em;
  130 +}
  131 +.bootstrap-select.btn-group .dropdown-menu .notify {
  132 + position: absolute;
  133 + bottom: 5px;
  134 + width: 96%;
  135 + margin: 0 2%;
  136 + min-height: 26px;
  137 + padding: 3px 5px;
  138 + background: #f5f5f5;
  139 + border: 1px solid #e3e3e3;
  140 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  141 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  142 + pointer-events: none;
  143 + opacity: 0.9;
  144 + -webkit-box-sizing: border-box;
  145 + -moz-box-sizing: border-box;
  146 + box-sizing: border-box;
  147 +}
  148 +.bootstrap-select.btn-group .no-results {
  149 + padding: 3px;
  150 + background: #f5f5f5;
  151 + margin: 0 5px;
  152 + white-space: nowrap;
  153 +}
  154 +.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {
  155 + position: static;
  156 +}
  157 +.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {
  158 + position: static;
  159 + top: auto;
  160 + margin-top: -1px;
  161 +}
  162 +.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {
  163 + position: absolute;
  164 + display: inline-block;
  165 + left: 15px;
  166 + margin-top: 5px;
  167 +}
  168 +.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
  169 + margin-left: 34px;
  170 +}
  171 +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {
  172 + z-index: 1036;
  173 +}
  174 +.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
  175 + content: '';
  176 + border-right: 7px solid transparent;
  177 + border-left: 7px solid transparent;
  178 + border-bottom: 7px solid rgba(204, 204, 204, 0.2);
  179 + position: absolute;
  180 + bottom: -4px;
  181 + right: 9px;
  182 + display: none;
  183 +}
  184 +.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
  185 + content: '';
  186 + border-right: 6px solid transparent;
  187 + border-left: 6px solid transparent;
  188 + border-bottom: 6px solid white;
  189 + position: absolute;
  190 + bottom: -4px;
  191 + right: 10px;
  192 + display: none;
  193 +}
  194 +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
  195 + bottom: auto;
  196 + top: -3px;
  197 + border-top: 7px solid rgba(204, 204, 204, 0.2);
  198 + border-bottom: 0;
  199 +}
  200 +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
  201 + bottom: auto;
  202 + top: -3px;
  203 + border-top: 6px solid white;
  204 + border-bottom: 0;
  205 +}
  206 +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
  207 + left: 12px;
  208 + right: auto;
  209 +}
  210 +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
  211 + left: 13px;
  212 + right: auto;
  213 +}
  214 +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
  215 +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
  216 + display: block;
  217 +}
  218 +.bs-searchbox,
  219 +.bs-actionsbox,
  220 +.bs-donebutton {
  221 + padding: 4px 8px;
  222 +}
  223 +.bs-actionsbox {
  224 + float: right;
  225 + width: 100%;
  226 + -webkit-box-sizing: border-box;
  227 + -moz-box-sizing: border-box;
  228 + box-sizing: border-box;
  229 +}
  230 +.bs-actionsbox .btn-group button {
  231 + width: 50%;
  232 +}
  233 +.bs-donebutton {
  234 + float: right;
  235 + width: 100%;
  236 + -webkit-box-sizing: border-box;
  237 + -moz-box-sizing: border-box;
  238 + box-sizing: border-box;
  239 +}
  240 +.bs-donebutton .btn-group button {
  241 + width: 100%;
  242 +}
  243 +.bs-searchbox + .bs-actionsbox {
  244 + padding: 0 8px 4px;
  245 +}
  246 +.bs-searchbox .form-control {
  247 + margin-bottom: 0;
  248 + width: 100%;
  249 +}
  250 +select.bs-select-hidden,
  251 +select.selectpicker {
  252 + display: none !important;
  253 +}
  254 +select.mobile-device {
  255 + position: absolute !important;
  256 + top: 0;
  257 + right: 0;
  258 + display: block !important;
  259 + width: 100%;
  260 + height: 100% !important;
  261 + opacity: 0;
  262 +}
  263 +/*# sourceMappingURL=bootstrap-select.css.map */
0 264 \ No newline at end of file
... ...
resource/lib/bootstrap-select/css/bootstrap-select.css.map 0 → 100644
  1 +{"version":3,"sources":["less/bootstrap-select.less","bootstrap-select.css"],"names":[],"mappings":"AAQA;EACE,iBAAA;ECPA,kBAAiB;EAClB;ADKD;EAKI,aAAA;EACA,qBAAA;ECPH;ADWC;;EAEE,uBAAA;ECTH;ADYC;EACE,wBAAA;ECVH;ADaC;EACE,cAAA;ECXH;ADTD;EAwBI,yCAAA;EACA,uDAAA;EACA,sBAAA;ECZH;ADgBD;EACE,kBAAA;EACA,YAAA;EACA,cAAA;ECdD;ADgBC;EACE,aAAA;ECdH;ADiBC;EACE,eAAA;ECfH;ADqBC;;EAEE,aAAA;EACA,uBAAA;EACA,gBAAA;ECnBH;AD0BG;;;EACE,cAAA;ECtBL;AD0BC;;;EAGE,kBAAA;ECxBH;AD2BC;;EAEE,YAAA;ECzBH;AD8BC;EACE,aAAA;EC5BH;AD+BC;;EAnFA,qBAAA;ECwDD;AD+BG;;EACE,0BAAA;EC5BL;ADXD;EA8CM,uBAAA;EACA,kBAAA;EACA,aAAA;EACA,kBAAA;EChCL;ADjBD;EAqDM,oBAAA;EACA,UAAA;EACA,aAAA;EACA,kBAAA;EACA,wBAAA;ECjCL;ADqCC;EACE,aAAA;ECnCH;AD3BD;EAmEI,iBAAA;EACA,eAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;ECrCH;ADuCG;EACE,kBAAA;EACA,aAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,0BAAA;UAAA,kBAAA;ECrCL;ADzCD;EAkFM,oBAAA;ECtCL;ADwCK;EACE,aAAA;ECtCP;ADyCK;EAzIJ,qBAAA;ECmGD;ADlDD;EA6FQ,iBAAA;ECxCP;AD0CO;EACE,oBAAA;EACA,sBAAA;ECxCT;ADzDD;EAqGU,eAAA;ECzCT;AD5DD;EAyGU,uBAAA;EC1CT;AD/DD;EA8GQ,qBAAA;EC5CP;ADlED;EAmHM,oBAAA;EACA,aAAA;EACA,YAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,qBAAA;EACA,2BAAA;EACA,yDAAA;UAAA,iDAAA;EACA,sBAAA;EACA,cAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EC9CL;ADhFD;EAmII,cAAA;EACA,qBAAA;EACA,eAAA;EACA,qBAAA;EChDH;ADmDC;EAEI,kBAAA;EClDL;ADgDC;EAMI,kBAAA;EACA,WAAA;EACA,kBAAA;ECnDL;ADwDG;EACE,oBAAA;EACA,uBAAA;EACA,aAAA;EACA,iBAAA;ECtDL;ADiDC;EASI,oBAAA;ECvDL;AD6DC;EACE,eAAA;EC3DH;AD+DG;EACE,aAAA;EACA,oCAAA;EACA,qCAAA;EACA,mDAAA;EACA,oBAAA;EACA,cAAA;EACA,WAAA;EACA,eAAA;EC7DL;ADgEG;EACE,aAAA;EACA,oCAAA;EACA,qCAAA;EACA,gCAAA;EACA,oBAAA;EACA,cAAA;EACA,YAAA;EACA,eAAA;EC9DL;ADmEG;EACE,cAAA;EACA,WAAA;EACA,gDAAA;EACA,kBAAA;ECjEL;ADoEG;EACE,cAAA;EACA,WAAA;EACA,6BAAA;EACA,kBAAA;EClEL;ADuEG;EACE,aAAA;EACA,YAAA;ECrEL;ADwEG;EACE,aAAA;EACA,YAAA;ECtEL;AD2EG;;EAEE,gBAAA;ECzEL;AD8ED;;;EAGE,kBAAA;EC5ED;AD+ED;EACE,aAAA;EACA,aAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EC7ED;AD+EC;EACE,YAAA;EC7EH;ADiFD;EACE,aAAA;EACA,aAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EC/ED;ADiFC;EACE,aAAA;EC/EH;ADoFC;EACE,oBAAA;EClFH;ADqFC;EACE,kBAAA;EACA,aAAA;ECnFH;ADuFD;;EAEE,0BAAA;ECrFD;ADwFD;EACE,+BAAA;EACA,QAAA;EACA,SAAA;EACA,2BAAA;EACA,aAAA;EACA,yBAAA;EACA,YAAA;ECtFD","file":"bootstrap-select.css","sourcesContent":["@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n }\n}\n\n// The selectpicker components\n.bootstrap-select.btn-group {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[class*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n z-index: @zindex-select-dropdown;\n box-sizing: border-box;\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu li {\n &.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n }\n\n a span.text {\n margin-right: 34px;\n }\n }\n}\n\n.bootstrap-select.show-menu-arrow {\n &.open > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle {\n &:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-toggle {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n }\n}\n\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\n\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n",".bootstrap-select {\n width: 220px \\0;\n /*IE9 and below*/\n}\n.bootstrap-select > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n}\n.bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n z-index: auto;\n}\n.bootstrap-select.btn-group:not(.input-group-btn),\n.bootstrap-select.btn-group[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n}\n.bootstrap-select.btn-group.dropdown-menu-right,\n.bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right,\n.row .bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n.form-inline .bootstrap-select.btn-group,\n.form-horizontal .bootstrap-select.btn-group,\n.form-group .bootstrap-select.btn-group {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.btn-group.form-control,\n.form-group-sm .bootstrap-select.btn-group.form-control {\n padding: 0;\n}\n.form-inline .bootstrap-select.btn-group .form-control {\n width: 100%;\n}\n.bootstrap-select.btn-group.disabled,\n.bootstrap-select.btn-group > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group.disabled:focus,\n.bootstrap-select.btn-group > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.btn-group .dropdown-toggle .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n}\n.bootstrap-select.btn-group .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n}\n.bootstrap-select.btn-group[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select.btn-group .dropdown-menu {\n min-width: 100%;\n z-index: 1035;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select.btn-group .dropdown-menu li.active small {\n color: #fff;\n}\n.bootstrap-select.btn-group .dropdown-menu li.disabled a {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group .dropdown-menu li a {\n cursor: pointer;\n}\n.bootstrap-select.btn-group .dropdown-menu li a.opt {\n position: relative;\n padding-left: 2.25em;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.text {\n display: inline-block;\n}\n.bootstrap-select.btn-group .dropdown-menu li small {\n padding-left: 0.5em;\n}\n.bootstrap-select.btn-group .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {\n position: static;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {\n z-index: 1036;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {\n right: 12px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {\n right: 13px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n}\nselect.bs-select-hidden,\nselect.selectpicker {\n display: none !important;\n}\nselect.mobile-device {\n position: absolute !important;\n top: 0;\n left: 0;\n display: block !important;\n width: 100%;\n height: 100% !important;\n opacity: 0;\n}\n/*# sourceMappingURL=bootstrap-select.css.map */"]}
0 2 \ No newline at end of file
... ...
resource/lib/bootstrap-select/css/bootstrap-select.min.css 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */.bootstrap-select{width:220px \0}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;border-radius: 4px!important;}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1036}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%}select.bs-select-hidden,select.selectpicker{display:none!important}select.mobile-device{position:absolute!important;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}
0 7 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/bootstrap-select.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + 'use strict';
  26 +
  27 + //<editor-fold desc="Shims">
  28 + if (!String.prototype.includes) {
  29 + (function () {
  30 + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
  31 + var toString = {}.toString;
  32 + var defineProperty = (function () {
  33 + // IE 8 only supports `Object.defineProperty` on DOM elements
  34 + try {
  35 + var object = {};
  36 + var $defineProperty = Object.defineProperty;
  37 + var result = $defineProperty(object, object, object) && $defineProperty;
  38 + } catch (error) {
  39 + }
  40 + return result;
  41 + }());
  42 + var indexOf = ''.indexOf;
  43 + var includes = function (search) {
  44 + if (this == null) {
  45 + throw TypeError();
  46 + }
  47 + var string = String(this);
  48 + if (search && toString.call(search) == '[object RegExp]') {
  49 + throw TypeError();
  50 + }
  51 + var stringLength = string.length;
  52 + var searchString = String(search);
  53 + var searchLength = searchString.length;
  54 + var position = arguments.length > 1 ? arguments[1] : undefined;
  55 + // `ToInteger`
  56 + var pos = position ? Number(position) : 0;
  57 + if (pos != pos) { // better `isNaN`
  58 + pos = 0;
  59 + }
  60 + var start = Math.min(Math.max(pos, 0), stringLength);
  61 + // Avoid the `indexOf` call if no match is possible
  62 + if (searchLength + start > stringLength) {
  63 + return false;
  64 + }
  65 + return indexOf.call(string, searchString, pos) != -1;
  66 + };
  67 + if (defineProperty) {
  68 + defineProperty(String.prototype, 'includes', {
  69 + 'value': includes,
  70 + 'configurable': true,
  71 + 'writable': true
  72 + });
  73 + } else {
  74 + String.prototype.includes = includes;
  75 + }
  76 + }());
  77 + }
  78 +
  79 + if (!String.prototype.startsWith) {
  80 + (function () {
  81 + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
  82 + var defineProperty = (function () {
  83 + // IE 8 only supports `Object.defineProperty` on DOM elements
  84 + try {
  85 + var object = {};
  86 + var $defineProperty = Object.defineProperty;
  87 + var result = $defineProperty(object, object, object) && $defineProperty;
  88 + } catch (error) {
  89 + }
  90 + return result;
  91 + }());
  92 + var toString = {}.toString;
  93 + var startsWith = function (search) {
  94 + if (this == null) {
  95 + throw TypeError();
  96 + }
  97 + var string = String(this);
  98 + if (search && toString.call(search) == '[object RegExp]') {
  99 + throw TypeError();
  100 + }
  101 + var stringLength = string.length;
  102 + var searchString = String(search);
  103 + var searchLength = searchString.length;
  104 + var position = arguments.length > 1 ? arguments[1] : undefined;
  105 + // `ToInteger`
  106 + var pos = position ? Number(position) : 0;
  107 + if (pos != pos) { // better `isNaN`
  108 + pos = 0;
  109 + }
  110 + var start = Math.min(Math.max(pos, 0), stringLength);
  111 + // Avoid the `indexOf` call if no match is possible
  112 + if (searchLength + start > stringLength) {
  113 + return false;
  114 + }
  115 + var index = -1;
  116 + while (++index < searchLength) {
  117 + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
  118 + return false;
  119 + }
  120 + }
  121 + return true;
  122 + };
  123 + if (defineProperty) {
  124 + defineProperty(String.prototype, 'startsWith', {
  125 + 'value': startsWith,
  126 + 'configurable': true,
  127 + 'writable': true
  128 + });
  129 + } else {
  130 + String.prototype.startsWith = startsWith;
  131 + }
  132 + }());
  133 + }
  134 +
  135 + if (!Object.keys) {
  136 + Object.keys = function (
  137 + o, // object
  138 + k, // key
  139 + r // result array
  140 + ){
  141 + // initialize object and result
  142 + r=[];
  143 + // iterate over object keys
  144 + for (k in o)
  145 + // fill result array with non-prototypical keys
  146 + r.hasOwnProperty.call(o, k) && r.push(k);
  147 + // return result
  148 + return r
  149 + };
  150 + }
  151 + //</editor-fold>
  152 +
  153 + // Case insensitive contains search
  154 + $.expr[':'].icontains = function (obj, index, meta) {
  155 + var $obj = $(obj);
  156 + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
  157 + return haystack.includes(meta[3].toUpperCase());
  158 + };
  159 +
  160 + // Case insensitive begins search
  161 + $.expr[':'].ibegins = function (obj, index, meta) {
  162 + var $obj = $(obj);
  163 + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
  164 + return haystack.startsWith(meta[3].toUpperCase());
  165 + };
  166 +
  167 + // Case and accent insensitive contains search
  168 + $.expr[':'].aicontains = function (obj, index, meta) {
  169 + var $obj = $(obj);
  170 + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
  171 + return haystack.includes(meta[3].toUpperCase());
  172 + };
  173 +
  174 + // Case and accent insensitive begins search
  175 + $.expr[':'].aibegins = function (obj, index, meta) {
  176 + var $obj = $(obj);
  177 + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
  178 + return haystack.startsWith(meta[3].toUpperCase());
  179 + };
  180 +
  181 + /**
  182 + * Remove all diatrics from the given text.
  183 + * @access private
  184 + * @param {String} text
  185 + * @returns {String}
  186 + */
  187 + function normalizeToBase(text) {
  188 + var rExps = [
  189 + {re: /[\xC0-\xC6]/g, ch: "A"},
  190 + {re: /[\xE0-\xE6]/g, ch: "a"},
  191 + {re: /[\xC8-\xCB]/g, ch: "E"},
  192 + {re: /[\xE8-\xEB]/g, ch: "e"},
  193 + {re: /[\xCC-\xCF]/g, ch: "I"},
  194 + {re: /[\xEC-\xEF]/g, ch: "i"},
  195 + {re: /[\xD2-\xD6]/g, ch: "O"},
  196 + {re: /[\xF2-\xF6]/g, ch: "o"},
  197 + {re: /[\xD9-\xDC]/g, ch: "U"},
  198 + {re: /[\xF9-\xFC]/g, ch: "u"},
  199 + {re: /[\xC7-\xE7]/g, ch: "c"},
  200 + {re: /[\xD1]/g, ch: "N"},
  201 + {re: /[\xF1]/g, ch: "n"}
  202 + ];
  203 + $.each(rExps, function () {
  204 + text = text.replace(this.re, this.ch);
  205 + });
  206 + return text;
  207 + }
  208 +
  209 +
  210 + function htmlEscape(html) {
  211 + var escapeMap = {
  212 + '&': '&amp;',
  213 + '<': '&lt;',
  214 + '>': '&gt;',
  215 + '"': '&quot;',
  216 + "'": '&#x27;',
  217 + '`': '&#x60;'
  218 + };
  219 + var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
  220 + testRegexp = new RegExp(source),
  221 + replaceRegexp = new RegExp(source, 'g'),
  222 + string = html == null ? '' : '' + html;
  223 + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
  224 + return escapeMap[match];
  225 + }) : string;
  226 + }
  227 +
  228 + var Selectpicker = function (element, options, e) {
  229 + if (e) {
  230 + e.stopPropagation();
  231 + e.preventDefault();
  232 + }
  233 +
  234 + this.$element = $(element);
  235 + this.$newElement = null;
  236 + this.$button = null;
  237 + this.$menu = null;
  238 + this.$lis = null;
  239 + this.options = options;
  240 +
  241 + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
  242 + // data-attribute)
  243 + if (this.options.title === null) {
  244 + this.options.title = this.$element.attr('title');
  245 + }
  246 +
  247 + //Expose public methods
  248 + this.val = Selectpicker.prototype.val;
  249 + this.render = Selectpicker.prototype.render;
  250 + this.refresh = Selectpicker.prototype.refresh;
  251 + this.setStyle = Selectpicker.prototype.setStyle;
  252 + this.selectAll = Selectpicker.prototype.selectAll;
  253 + this.deselectAll = Selectpicker.prototype.deselectAll;
  254 + this.destroy = Selectpicker.prototype.remove;
  255 + this.remove = Selectpicker.prototype.remove;
  256 + this.show = Selectpicker.prototype.show;
  257 + this.hide = Selectpicker.prototype.hide;
  258 +
  259 + this.init();
  260 + };
  261 +
  262 + Selectpicker.VERSION = '1.7.2';
  263 +
  264 + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
  265 + Selectpicker.DEFAULTS = {
  266 + noneSelectedText: 'Nothing selected',
  267 + noneResultsText: '没有搜索到{0}',
  268 + countSelectedText: function (numSelected, numTotal) {
  269 + return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
  270 + },
  271 + maxOptionsText: function (numAll, numGroup) {
  272 + return [
  273 + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
  274 + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
  275 + ];
  276 + },
  277 + selectAllText: 'Select All',
  278 + deselectAllText: 'Deselect All',
  279 + doneButton: false,
  280 + doneButtonText: 'Close',
  281 + multipleSeparator: ', ',
  282 + styleBase: 'btn',
  283 + style: 'btn-default',
  284 + size: 'auto',
  285 + title: null,
  286 + selectedTextFormat: 'values',
  287 + width: false,
  288 + container: false,
  289 + hideDisabled: false,
  290 + showSubtext: false,
  291 + showIcon: true,
  292 + showContent: true,
  293 + dropupAuto: true,
  294 + header: false,
  295 + liveSearch: false,
  296 + liveSearchPlaceholder: null,
  297 + liveSearchNormalize: false,
  298 + liveSearchStyle: 'contains',
  299 + actionsBox: false,
  300 + iconBase: 'glyphicon',
  301 + tickIcon: 'glyphicon-ok',
  302 + maxOptions: false,
  303 + mobile: false,
  304 + selectOnTab: false,
  305 + dropdownAlignRight: false
  306 + };
  307 +
  308 + Selectpicker.prototype = {
  309 +
  310 + constructor: Selectpicker,
  311 +
  312 + init: function () {
  313 + var that = this,
  314 + id = this.$element.attr('id');
  315 +
  316 + this.$element.addClass('bs-select-hidden');
  317 + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
  318 + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
  319 + this.liObj = {};
  320 + this.multiple = this.$element.prop('multiple');
  321 + this.autofocus = this.$element.prop('autofocus');
  322 + this.$newElement = this.createView();
  323 + this.$element.after(this.$newElement);
  324 + this.$button = this.$newElement.children('button');
  325 + this.$menu = this.$newElement.children('.dropdown-menu');
  326 + this.$menuInner = this.$menu.children('.inner');
  327 + this.$searchbox = this.$menu.find('input');
  328 +
  329 + if (this.options.dropdownAlignRight)
  330 + this.$menu.addClass('dropdown-menu-right');
  331 +
  332 + if (typeof id !== 'undefined') {
  333 + this.$button.attr('data-id', id);
  334 + $('label[for="' + id + '"]').click(function (e) {
  335 + e.preventDefault();
  336 + that.$button.focus();
  337 + });
  338 + }
  339 +
  340 + this.checkDisabled();
  341 + this.clickListener();
  342 + if (this.options.liveSearch) this.liveSearchListener();
  343 + this.render();
  344 + this.setStyle();
  345 + this.setWidth();
  346 + if (this.options.container) this.selectPosition();
  347 + this.$menu.data('this', this);
  348 + this.$newElement.data('this', this);
  349 + if (this.options.mobile) this.mobile();
  350 +
  351 + this.$newElement.on('hide.bs.dropdown', function (e) {
  352 + that.$element.trigger('hide.bs.select', e);
  353 + });
  354 +
  355 + this.$newElement.on('hidden.bs.dropdown', function (e) {
  356 + that.$element.trigger('hidden.bs.select', e);
  357 + });
  358 +
  359 + this.$newElement.on('show.bs.dropdown', function (e) {
  360 + that.$element.trigger('show.bs.select', e);
  361 + });
  362 +
  363 + this.$newElement.on('shown.bs.dropdown', function (e) {
  364 + that.$element.trigger('shown.bs.select', e);
  365 + });
  366 +
  367 + setTimeout(function () {
  368 + that.$element.trigger('loaded.bs.select');
  369 + });
  370 + },
  371 +
  372 + createDropdown: function () {
  373 + // Options
  374 + // If we are multiple, then add the show-tick class by default
  375 + var multiple = this.multiple ? ' show-tick' : '',
  376 + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
  377 + autofocus = this.autofocus ? ' autofocus' : '';
  378 + // Elements
  379 + var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + '</div>' : '';
  380 + var searchbox = this.options.liveSearch ?
  381 + '<div class="bs-searchbox">' +
  382 + '<input type="text" class="form-control" autocomplete="off"' +
  383 + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' +
  384 + '</div>'
  385 + : '';
  386 + var actionsbox = this.multiple && this.options.actionsBox ?
  387 + '<div class="bs-actionsbox">' +
  388 + '<div class="btn-group btn-group-sm btn-block">' +
  389 + '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
  390 + this.options.selectAllText +
  391 + '</button>' +
  392 + '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
  393 + this.options.deselectAllText +
  394 + '</button>' +
  395 + '</div>' +
  396 + '</div>'
  397 + : '';
  398 + var donebutton = this.multiple && this.options.doneButton ?
  399 + '<div class="bs-donebutton">' +
  400 + '<div class="btn-group btn-block">' +
  401 + '<button type="button" class="btn btn-sm btn-default">' +
  402 + this.options.doneButtonText +
  403 + '</button>' +
  404 + '</div>' +
  405 + '</div>'
  406 + : '';
  407 + var drop =
  408 + '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
  409 + '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
  410 + '<span class="filter-option pull-left"></span>&nbsp;' +
  411 + '<span class="caret"></span>' +
  412 + '</button>' +
  413 + '<div class="dropdown-menu open">' +
  414 + header +
  415 + searchbox +
  416 + actionsbox +
  417 + '<ul class="dropdown-menu inner" role="menu">' +
  418 + '</ul>' +
  419 + donebutton +
  420 + '</div>' +
  421 + '</div>';
  422 +
  423 + return $(drop);
  424 + },
  425 +
  426 + createView: function () {
  427 + var $drop = this.createDropdown(),
  428 + li = this.createLi();
  429 +
  430 + $drop.find('ul')[0].innerHTML = li;
  431 + return $drop;
  432 + },
  433 +
  434 + reloadLi: function () {
  435 + //Remove all children.
  436 + this.destroyLi();
  437 + //Re build
  438 + var li = this.createLi();
  439 + this.$menuInner[0].innerHTML = li;
  440 + },
  441 +
  442 + destroyLi: function () {
  443 + this.$menu.find('li').remove();
  444 + },
  445 +
  446 + createLi: function () {
  447 + var that = this,
  448 + _li = [],
  449 + optID = 0,
  450 + titleOption = document.createElement('option'),
  451 + liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
  452 +
  453 + // Helper functions
  454 + /**
  455 + * @param content
  456 + * @param [index]
  457 + * @param [classes]
  458 + * @param [optgroup]
  459 + * @returns {string}
  460 + */
  461 + var generateLI = function (content, index, classes, optgroup) {
  462 + return '<li' +
  463 + ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
  464 + ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
  465 + ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
  466 + '>' + content + '</li>';
  467 + };
  468 +
  469 + /**
  470 + * @param text
  471 + * @param [classes]
  472 + * @param [inline]
  473 + * @param [tokens]
  474 + * @returns {string}
  475 + */
  476 + var generateA = function (text, classes, inline, tokens) {
  477 + return '<a tabindex="0"' +
  478 + (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
  479 + (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
  480 + (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
  481 + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
  482 + '>' + text +
  483 + '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
  484 + '</a>';
  485 + };
  486 +
  487 + if (this.options.title && !this.multiple) {
  488 + // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
  489 + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
  490 + liIndex--;
  491 +
  492 + if (!this.$element.find('.bs-title-option').length) {
  493 + // Use native JS to prepend option (faster)
  494 + var element = this.$element[0];
  495 + titleOption.className = 'bs-title-option';
  496 + titleOption.appendChild(document.createTextNode(this.options.title));
  497 + titleOption.value = '';
  498 + element.insertBefore(titleOption, element.firstChild);
  499 + // Check if selected attribute is already set on an option. If not, select the titleOption option.
  500 + if (element.options[element.selectedIndex].getAttribute('selected') === null) titleOption.selected = true;
  501 + }
  502 + }
  503 +
  504 + this.$element.find('option').each(function (index) {
  505 + var $this = $(this);
  506 +
  507 + liIndex++;
  508 +
  509 + if ($this.hasClass('bs-title-option')) return;
  510 +
  511 + // Get the class and text for the option
  512 + var optionClass = this.className || '',
  513 + inline = this.style.cssText,
  514 + text = $this.data('content') ? $this.data('content') : $this.html(),
  515 + tokens = $this.data('tokens') ? $this.data('tokens') : null,
  516 + subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
  517 + icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
  518 + isDisabled = this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled;
  519 +
  520 + if (icon !== '' && isDisabled) {
  521 + icon = '<span>' + icon + '</span>';
  522 + }
  523 +
  524 + if (that.options.hideDisabled && isDisabled) {
  525 + liIndex--;
  526 + return;
  527 + }
  528 +
  529 + if (!$this.data('content')) {
  530 + // Prepend any icon and append any subtext to the main text.
  531 + text = icon + '<span class="text">' + text + subtext + '</span>';
  532 + }
  533 +
  534 + if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
  535 + if ($this.index() === 0) { // Is it the first option of the optgroup?
  536 + optID += 1;
  537 +
  538 + // Get the opt group label
  539 + var label = this.parentElement.label,
  540 + labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
  541 + labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '',
  542 + optGroupClass = ' ' + this.parentElement.className || '';
  543 +
  544 + label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
  545 +
  546 + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
  547 + liIndex++;
  548 + _li.push(generateLI('', null, 'divider', optID + 'div'));
  549 + }
  550 + liIndex++;
  551 + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
  552 + }
  553 + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
  554 + } else if ($this.data('divider') === true) {
  555 + _li.push(generateLI('', index, 'divider'));
  556 + } else if ($this.data('hidden') === true) {
  557 + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
  558 + } else {
  559 + if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
  560 + liIndex++;
  561 + _li.push(generateLI('', null, 'divider', optID + 'div'));
  562 + }
  563 + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
  564 + }
  565 +
  566 + that.liObj[index] = liIndex;
  567 + });
  568 +
  569 + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
  570 + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
  571 + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
  572 + }
  573 +
  574 + return _li.join('');
  575 + },
  576 +
  577 + findLis: function () {
  578 + if (this.$lis == null) this.$lis = this.$menu.find('li');
  579 + return this.$lis;
  580 + },
  581 +
  582 + /**
  583 + * @param [updateLi] defaults to true
  584 + */
  585 + render: function (updateLi) {
  586 + var that = this,
  587 + notDisabled;
  588 +
  589 + //Update the LI to match the SELECT
  590 + if (updateLi !== false) {
  591 + this.$element.find('option').each(function (index) {
  592 + var $lis = that.findLis().eq(that.liObj[index]);
  593 +
  594 + that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis);
  595 + that.setSelected(index, this.selected, $lis);
  596 + });
  597 + }
  598 +
  599 + this.tabIndex();
  600 +
  601 + var selectedItems = this.$element.find('option').map(function () {
  602 + if (this.selected) {
  603 + if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false;
  604 +
  605 + var $this = $(this),
  606 + icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
  607 + subtext;
  608 +
  609 + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
  610 + subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
  611 + } else {
  612 + subtext = '';
  613 + }
  614 + if (typeof $this.attr('title') !== 'undefined') {
  615 + return $this.attr('title');
  616 + } else if ($this.data('content') && that.options.showContent) {
  617 + return $this.data('content');
  618 + } else {
  619 + return icon + $this.html() + subtext;
  620 + }
  621 + }
  622 + }).toArray();
  623 +
  624 + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
  625 + //Convert all the values into a comma delimited string
  626 + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
  627 +
  628 + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
  629 + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
  630 + var max = this.options.selectedTextFormat.split('>');
  631 + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
  632 + notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
  633 + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
  634 + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
  635 + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
  636 + }
  637 + }
  638 +
  639 + if (this.options.title == undefined) {
  640 + this.options.title = this.$element.attr('title');
  641 + }
  642 +
  643 + if (this.options.selectedTextFormat == 'static') {
  644 + title = this.options.title;
  645 + }
  646 +
  647 + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
  648 + if (!title) {
  649 + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
  650 + }
  651 +
  652 + //strip all html-tags and trim the result
  653 + this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
  654 + this.$button.children('.filter-option').html(title);
  655 +
  656 + this.$element.trigger('rendered.bs.select');
  657 + },
  658 +
  659 + /**
  660 + * @param [style]
  661 + * @param [status]
  662 + */
  663 + setStyle: function (style, status) {
  664 + if (this.$element.attr('class')) {
  665 + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
  666 + }
  667 +
  668 + var buttonClass = style ? style : this.options.style;
  669 +
  670 + if (status == 'add') {
  671 + this.$button.addClass(buttonClass);
  672 + } else if (status == 'remove') {
  673 + this.$button.removeClass(buttonClass);
  674 + } else {
  675 + this.$button.removeClass(this.options.style);
  676 + this.$button.addClass(buttonClass);
  677 + }
  678 + },
  679 +
  680 + liHeight: function (refresh) {
  681 + if (!refresh && (this.options.size === false || this.sizeInfo)) return;
  682 +
  683 + var newElement = document.createElement('div'),
  684 + menu = document.createElement('div'),
  685 + menuInner = document.createElement('ul'),
  686 + divider = document.createElement('li'),
  687 + li = document.createElement('li'),
  688 + a = document.createElement('a'),
  689 + text = document.createElement('span'),
  690 + header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
  691 + search = this.options.liveSearch ? document.createElement('div') : null,
  692 + actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
  693 + doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
  694 +
  695 + text.className = 'text';
  696 + newElement.className = this.$menu[0].parentNode.className + ' open';
  697 + menu.className = 'dropdown-menu open';
  698 + menuInner.className = 'dropdown-menu inner';
  699 + divider.className = 'divider';
  700 +
  701 + text.appendChild(document.createTextNode('Inner text'));
  702 + a.appendChild(text);
  703 + li.appendChild(a);
  704 + menuInner.appendChild(li);
  705 + menuInner.appendChild(divider);
  706 + if (header) menu.appendChild(header);
  707 + if (search) {
  708 + // create a span instead of input as creating an input element is slower
  709 + var input = document.createElement('span');
  710 + search.className = 'bs-searchbox';
  711 + input.className = 'form-control';
  712 + search.appendChild(input);
  713 + menu.appendChild(search);
  714 + }
  715 + if (actions) menu.appendChild(actions);
  716 + menu.appendChild(menuInner);
  717 + if (doneButton) menu.appendChild(doneButton);
  718 + newElement.appendChild(menu);
  719 +
  720 + document.body.appendChild(newElement);
  721 +
  722 + var liHeight = a.offsetHeight,
  723 + headerHeight = header ? header.offsetHeight : 0,
  724 + searchHeight = search ? search.offsetHeight : 0,
  725 + actionsHeight = actions ? actions.offsetHeight : 0,
  726 + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
  727 + dividerHeight = $(divider).outerHeight(true),
  728 + // fall back to jQuery if getComputedStyle is not supported
  729 + menuStyle = getComputedStyle ? getComputedStyle(menu) : false,
  730 + $menu = menuStyle ? $(menu) : null,
  731 + menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
  732 + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
  733 + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
  734 + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
  735 + menuExtras = menuPadding +
  736 + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
  737 + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
  738 +
  739 + document.body.removeChild(newElement);
  740 +
  741 + this.sizeInfo = {
  742 + liHeight: liHeight,
  743 + headerHeight: headerHeight,
  744 + searchHeight: searchHeight,
  745 + actionsHeight: actionsHeight,
  746 + doneButtonHeight: doneButtonHeight,
  747 + dividerHeight: dividerHeight,
  748 + menuPadding: menuPadding,
  749 + menuExtras: menuExtras
  750 + };
  751 + },
  752 +
  753 + setSize: function () {
  754 + this.findLis();
  755 + this.liHeight();
  756 + var that = this,
  757 + $menu = this.$menu,
  758 + $menuInner = this.$menuInner,
  759 + $window = $(window),
  760 + selectHeight = this.$newElement[0].offsetHeight,
  761 + liHeight = this.sizeInfo['liHeight'],
  762 + headerHeight = this.sizeInfo['headerHeight'],
  763 + searchHeight = this.sizeInfo['searchHeight'],
  764 + actionsHeight = this.sizeInfo['actionsHeight'],
  765 + doneButtonHeight = this.sizeInfo['doneButtonHeight'],
  766 + divHeight = this.sizeInfo['dividerHeight'],
  767 + menuPadding = this.sizeInfo['menuPadding'],
  768 + menuExtras = this.sizeInfo['menuExtras'],
  769 + notDisabled = this.options.hideDisabled ? '.disabled' : '',
  770 + menuHeight,
  771 + getHeight,
  772 + selectOffsetTop,
  773 + selectOffsetBot,
  774 + posVert = function () {
  775 + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
  776 + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
  777 + };
  778 +
  779 + posVert();
  780 +
  781 + if (this.options.header) $menu.css('padding-top', 0);
  782 +
  783 + if (this.options.size === 'auto') {
  784 + var getSize = function () {
  785 + var minHeight,
  786 + hasClass = function (className, include) {
  787 + return function (element) {
  788 + if (include) {
  789 + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
  790 + } else {
  791 + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
  792 + }
  793 + };
  794 + },
  795 + lis = that.$menuInner[0].getElementsByTagName('li'),
  796 + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
  797 + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
  798 +
  799 + posVert();
  800 + menuHeight = selectOffsetBot - menuExtras;
  801 +
  802 + if (that.options.container) {
  803 + if (!$menu.data('height')) $menu.data('height', $menu.height());
  804 + getHeight = $menu.data('height');
  805 + } else {
  806 + getHeight = $menu.height();
  807 + }
  808 +
  809 + if (that.options.dropupAuto) {
  810 + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
  811 + }
  812 + if (that.$newElement.hasClass('dropup')) {
  813 + menuHeight = selectOffsetTop - menuExtras;
  814 + }
  815 +
  816 + if ((lisVisible.length + optGroup.length) > 3) {
  817 + minHeight = liHeight * 3 + menuExtras - 2;
  818 + } else {
  819 + minHeight = 0;
  820 + }
  821 +
  822 + $menu.css({
  823 + 'max-height': menuHeight + 'px',
  824 + 'overflow': 'hidden',
  825 + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
  826 + });
  827 + $menuInner.css({
  828 + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
  829 + 'overflow-y': 'auto',
  830 + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
  831 + });
  832 + };
  833 + getSize();
  834 + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
  835 + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
  836 + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
  837 + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
  838 + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
  839 + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
  840 +
  841 + if (that.options.container) {
  842 + if (!$menu.data('height')) $menu.data('height', $menu.height());
  843 + getHeight = $menu.data('height');
  844 + } else {
  845 + getHeight = $menu.height();
  846 + }
  847 +
  848 + if (that.options.dropupAuto) {
  849 + //noinspection JSUnusedAssignment
  850 + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
  851 + }
  852 + $menu.css({
  853 + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
  854 + 'overflow': 'hidden',
  855 + 'min-height': ''
  856 + });
  857 + $menuInner.css({
  858 + 'max-height': menuHeight - menuPadding + 'px',
  859 + 'overflow-y': 'auto',
  860 + 'min-height': ''
  861 + });
  862 + }
  863 + },
  864 +
  865 + setWidth: function () {
  866 + if (this.options.width === 'auto') {
  867 + this.$menu.css('min-width', '0');
  868 +
  869 + // Get correct width if element is hidden
  870 + var $selectClone = this.$menu.parent().clone().appendTo('body'),
  871 + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
  872 + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
  873 + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
  874 +
  875 + $selectClone.remove();
  876 + $selectClone2.remove();
  877 +
  878 + // Set width to whatever's larger, button title or longest option
  879 + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
  880 + } else if (this.options.width === 'fit') {
  881 + // Remove inline min-width so width can be changed from 'auto'
  882 + this.$menu.css('min-width', '');
  883 + this.$newElement.css('width', '').addClass('fit-width');
  884 + } else if (this.options.width) {
  885 + // Remove inline min-width so width can be changed from 'auto'
  886 + this.$menu.css('min-width', '');
  887 + this.$newElement.css('width', this.options.width);
  888 + } else {
  889 + // Remove inline min-width/width so width can be changed
  890 + this.$menu.css('min-width', '');
  891 + this.$newElement.css('width', '');
  892 + }
  893 + // Remove fit-width class if width is changed programmatically
  894 + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
  895 + this.$newElement.removeClass('fit-width');
  896 + }
  897 + },
  898 +
  899 + selectPosition: function () {
  900 + var that = this,
  901 + drop = '<div />',
  902 + $drop = $(drop),
  903 + pos,
  904 + actualHeight,
  905 + getPlacement = function ($element) {
  906 + $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
  907 + pos = $element.offset();
  908 + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
  909 + $drop.css({
  910 + 'top': pos.top + actualHeight,
  911 + 'left': pos.left,
  912 + 'width': $element[0].offsetWidth,
  913 + 'position': 'absolute'
  914 + });
  915 + };
  916 +
  917 + this.$newElement.on('click', function () {
  918 + if (that.isDisabled()) {
  919 + return;
  920 + }
  921 + getPlacement($(this));
  922 + $drop.appendTo(that.options.container);
  923 + $drop.toggleClass('open', !$(this).hasClass('open'));
  924 + $drop.append(that.$menu);
  925 + });
  926 +
  927 + $(window).on('resize scroll', function () {
  928 + getPlacement(that.$newElement);
  929 + });
  930 +
  931 + this.$element.on('hide.bs.select', function () {
  932 + that.$menu.data('height', that.$menu.height());
  933 + $drop.detach();
  934 + });
  935 + },
  936 +
  937 + setSelected: function (index, selected, $lis) {
  938 + if (!$lis) {
  939 + var $lis = this.findLis().eq(this.liObj[index]);
  940 + }
  941 +
  942 + $lis.toggleClass('selected', selected);
  943 + },
  944 +
  945 + setDisabled: function (index, disabled, $lis) {
  946 + if (!$lis) {
  947 + var $lis = this.findLis().eq(this.liObj[index]);
  948 + }
  949 +
  950 + if (disabled) {
  951 + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
  952 + } else {
  953 + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
  954 + }
  955 + },
  956 +
  957 + isDisabled: function () {
  958 + return this.$element[0].disabled;
  959 + },
  960 +
  961 + checkDisabled: function () {
  962 + var that = this;
  963 +
  964 + if (this.isDisabled()) {
  965 + this.$newElement.addClass('disabled');
  966 + this.$button.addClass('disabled').attr('tabindex', -1);
  967 + } else {
  968 + if (this.$button.hasClass('disabled')) {
  969 + this.$newElement.removeClass('disabled');
  970 + this.$button.removeClass('disabled');
  971 + }
  972 +
  973 + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
  974 + this.$button.removeAttr('tabindex');
  975 + }
  976 + }
  977 +
  978 + this.$button.click(function () {
  979 + return !that.isDisabled();
  980 + });
  981 + },
  982 +
  983 + tabIndex: function () {
  984 + if (this.$element.is('[tabindex]')) {
  985 + this.$element.data('tabindex', this.$element.attr('tabindex'));
  986 + this.$button.attr('tabindex', this.$element.data('tabindex'));
  987 + }
  988 + },
  989 +
  990 + clickListener: function () {
  991 + var that = this,
  992 + $document = $(document);
  993 +
  994 + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
  995 + e.stopPropagation();
  996 + });
  997 +
  998 + $document.data('spaceSelect', false);
  999 +
  1000 + this.$button.on('keyup', function (e) {
  1001 + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
  1002 + e.preventDefault();
  1003 + $document.data('spaceSelect', false);
  1004 + }
  1005 + });
  1006 +
  1007 + this.$newElement.on('click', function () {
  1008 + that.setSize();
  1009 + that.$element.on('shown.bs.select', function () {
  1010 + if (!that.options.liveSearch && !that.multiple) {
  1011 + that.$menu.find('.selected a').focus();
  1012 + } else if (!that.multiple) {
  1013 + var selectedIndex = that.liObj[that.$element[0].selectedIndex];
  1014 +
  1015 + if (typeof selectedIndex !== 'number') return;
  1016 +
  1017 + // scroll to selected option
  1018 + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
  1019 + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;
  1020 + that.$menuInner[0].scrollTop = offset;
  1021 + }
  1022 + });
  1023 + });
  1024 +
  1025 + this.$menu.on('click', 'li a', function (e) {
  1026 + var $this = $(this),
  1027 + clickedIndex = $this.parent().data('originalIndex'),
  1028 + prevValue = that.$element.val(),
  1029 + prevIndex = that.$element.prop('selectedIndex');
  1030 +
  1031 + // Don't close on multi choice menu
  1032 + if (that.multiple) {
  1033 + e.stopPropagation();
  1034 + }
  1035 +
  1036 + e.preventDefault();
  1037 +
  1038 + //Don't run if we have been disabled
  1039 + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
  1040 + var $options = that.$element.find('option'),
  1041 + $option = $options.eq(clickedIndex),
  1042 + state = $option.prop('selected'),
  1043 + $optgroup = $option.parent('optgroup'),
  1044 + maxOptions = that.options.maxOptions,
  1045 + maxOptionsGrp = $optgroup.data('maxOptions') || false;
  1046 +
  1047 + if (!that.multiple) { // Deselect all others if not multi select box
  1048 + $options.prop('selected', false);
  1049 + $option.prop('selected', true);
  1050 + that.$menu.find('.selected').removeClass('selected');
  1051 + that.setSelected(clickedIndex, true);
  1052 + } else { // Toggle the one we have chosen if we are multi select.
  1053 + $option.prop('selected', !state);
  1054 + that.setSelected(clickedIndex, !state);
  1055 + $this.blur();
  1056 +
  1057 + if (maxOptions !== false || maxOptionsGrp !== false) {
  1058 + var maxReached = maxOptions < $options.filter(':selected').length,
  1059 + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
  1060 +
  1061 + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
  1062 + if (maxOptions && maxOptions == 1) {
  1063 + $options.prop('selected', false);
  1064 + $option.prop('selected', true);
  1065 + that.$menu.find('.selected').removeClass('selected');
  1066 + that.setSelected(clickedIndex, true);
  1067 + } else if (maxOptionsGrp && maxOptionsGrp == 1) {
  1068 + $optgroup.find('option:selected').prop('selected', false);
  1069 + $option.prop('selected', true);
  1070 + var optgroupID = $this.parent().data('optgroup');
  1071 + that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
  1072 + that.setSelected(clickedIndex, true);
  1073 + } else {
  1074 + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
  1075 + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
  1076 + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
  1077 + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
  1078 + $notify = $('<div class="notify"></div>');
  1079 + // If {var} is set in array, replace it
  1080 + /** @deprecated */
  1081 + if (maxOptionsArr[2]) {
  1082 + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
  1083 + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
  1084 + }
  1085 +
  1086 + $option.prop('selected', false);
  1087 +
  1088 + that.$menu.append($notify);
  1089 +
  1090 + if (maxOptions && maxReached) {
  1091 + $notify.append($('<div>' + maxTxt + '</div>'));
  1092 + that.$element.trigger('maxReached.bs.select');
  1093 + }
  1094 +
  1095 + if (maxOptionsGrp && maxReachedGrp) {
  1096 + $notify.append($('<div>' + maxTxtGrp + '</div>'));
  1097 + that.$element.trigger('maxReachedGrp.bs.select');
  1098 + }
  1099 +
  1100 + setTimeout(function () {
  1101 + that.setSelected(clickedIndex, false);
  1102 + }, 10);
  1103 +
  1104 + $notify.delay(750).fadeOut(300, function () {
  1105 + $(this).remove();
  1106 + });
  1107 + }
  1108 + }
  1109 + }
  1110 + }
  1111 +
  1112 + if (!that.multiple) {
  1113 + that.$button.focus();
  1114 + } else if (that.options.liveSearch) {
  1115 + that.$searchbox.focus();
  1116 + }
  1117 +
  1118 + // Trigger select 'change'
  1119 + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
  1120 + that.$element.change();
  1121 + // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
  1122 + that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
  1123 + }
  1124 + }
  1125 + });
  1126 +
  1127 + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
  1128 + if (e.currentTarget == this) {
  1129 + e.preventDefault();
  1130 + e.stopPropagation();
  1131 + if (that.options.liveSearch && !$(e.target).hasClass('close')) {
  1132 + that.$searchbox.focus();
  1133 + } else {
  1134 + that.$button.focus();
  1135 + }
  1136 + }
  1137 + });
  1138 +
  1139 + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {
  1140 + e.preventDefault();
  1141 + e.stopPropagation();
  1142 + if (that.options.liveSearch) {
  1143 + that.$searchbox.focus();
  1144 + } else {
  1145 + that.$button.focus();
  1146 + }
  1147 + });
  1148 +
  1149 + this.$menu.on('click', '.popover-title .close', function () {
  1150 + that.$button.click();
  1151 + });
  1152 +
  1153 + this.$searchbox.on('click', function (e) {
  1154 + e.stopPropagation();
  1155 + });
  1156 +
  1157 + this.$menu.on('click', '.actions-btn', function (e) {
  1158 + if (that.options.liveSearch) {
  1159 + that.$searchbox.focus();
  1160 + } else {
  1161 + that.$button.focus();
  1162 + }
  1163 +
  1164 + e.preventDefault();
  1165 + e.stopPropagation();
  1166 +
  1167 + if ($(this).hasClass('bs-select-all')) {
  1168 + that.selectAll();
  1169 + } else {
  1170 + that.deselectAll();
  1171 + }
  1172 + that.$element.change();
  1173 + });
  1174 +
  1175 + this.$element.change(function () {
  1176 + that.render(false);
  1177 + });
  1178 + },
  1179 +
  1180 + liveSearchListener: function () {
  1181 + var that = this,
  1182 + $no_results = $('<li class="no-results"></li>');
  1183 +
  1184 + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
  1185 + that.$menuInner.find('.active').removeClass('active');
  1186 + if (!!that.$searchbox.val()) {
  1187 + that.$searchbox.val('');
  1188 + that.$lis.not('.is-hidden').removeClass('hidden');
  1189 + if (!!$no_results.parent().length) $no_results.remove();
  1190 + }
  1191 + if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
  1192 + setTimeout(function () {
  1193 + that.$searchbox.focus();
  1194 + }, 10);
  1195 + });
  1196 +
  1197 + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
  1198 + e.stopPropagation();
  1199 + });
  1200 +
  1201 + this.$searchbox.on('input propertychange', function () {
  1202 + if (that.$searchbox.val()) {
  1203 + var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
  1204 + if (that.options.liveSearchNormalize) {
  1205 + $searchBase = $searchBase.not(':a' + that._searchStyle() + '(' + normalizeToBase(that.$searchbox.val()) + ')');
  1206 + } else {
  1207 + $searchBase = $searchBase.not(':' + that._searchStyle() + '(' + that.$searchbox.val() + ')');
  1208 + }
  1209 + $searchBase.parent().addClass('hidden');
  1210 +
  1211 + that.$lis.filter('.dropdown-header').each(function () {
  1212 + var $this = $(this),
  1213 + optgroup = $this.data('optgroup');
  1214 +
  1215 + if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
  1216 + $this.addClass('hidden');
  1217 + that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
  1218 + }
  1219 + });
  1220 +
  1221 + var $lisVisible = that.$lis.not('.hidden');
  1222 +
  1223 + // hide divider if first or last visible, or if followed by another divider
  1224 + $lisVisible.each(function (index) {
  1225 + var $this = $(this);
  1226 +
  1227 + if ($this.hasClass('divider') && (
  1228 + $this.index() === $lisVisible.eq(0).index() ||
  1229 + $this.index() === $lisVisible.last().index() ||
  1230 + $lisVisible.eq(index + 1).hasClass('divider'))) {
  1231 + $this.addClass('hidden');
  1232 + }
  1233 + });
  1234 +
  1235 + if (!that.$lis.not('.hidden, .no-results').length) {
  1236 + if (!!$no_results.parent().length) {
  1237 + $no_results.remove();
  1238 + }
  1239 + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
  1240 + that.$menuInner.append($no_results);
  1241 + } else if (!!$no_results.parent().length) {
  1242 + $no_results.remove();
  1243 + }
  1244 +
  1245 + } else {
  1246 + that.$lis.not('.is-hidden').removeClass('hidden');
  1247 + if (!!$no_results.parent().length) {
  1248 + $no_results.remove();
  1249 + }
  1250 + }
  1251 +
  1252 + that.$lis.filter('.active').removeClass('active');
  1253 + that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus();
  1254 + $(this).focus();
  1255 + });
  1256 + },
  1257 +
  1258 + _searchStyle: function () {
  1259 + var style = 'icontains';
  1260 + switch (this.options.liveSearchStyle) {
  1261 + case 'begins':
  1262 + case 'startsWith':
  1263 + style = 'ibegins';
  1264 + break;
  1265 + case 'contains':
  1266 + default:
  1267 + break; //no need to change the default
  1268 + }
  1269 +
  1270 + return style;
  1271 + },
  1272 +
  1273 + val: function (value) {
  1274 + if (typeof value !== 'undefined') {
  1275 + this.$element.val(value);
  1276 + this.render();
  1277 +
  1278 + return this.$element;
  1279 + } else {
  1280 + return this.$element.val();
  1281 + }
  1282 + },
  1283 +
  1284 + selectAll: function () {
  1285 + this.findLis();
  1286 + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true);
  1287 + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected');
  1288 + this.render(false);
  1289 + },
  1290 +
  1291 + deselectAll: function () {
  1292 + this.findLis();
  1293 + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false);
  1294 + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected');
  1295 + this.render(false);
  1296 + },
  1297 +
  1298 + keydown: function (e) {
  1299 + var $this = $(this),
  1300 + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
  1301 + $items,
  1302 + that = $parent.data('this'),
  1303 + index,
  1304 + next,
  1305 + first,
  1306 + last,
  1307 + prev,
  1308 + nextPrev,
  1309 + prevIndex,
  1310 + isActive,
  1311 + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
  1312 + keyCodeMap = {
  1313 + 32: ' ',
  1314 + 48: '0',
  1315 + 49: '1',
  1316 + 50: '2',
  1317 + 51: '3',
  1318 + 52: '4',
  1319 + 53: '5',
  1320 + 54: '6',
  1321 + 55: '7',
  1322 + 56: '8',
  1323 + 57: '9',
  1324 + 59: ';',
  1325 + 65: 'a',
  1326 + 66: 'b',
  1327 + 67: 'c',
  1328 + 68: 'd',
  1329 + 69: 'e',
  1330 + 70: 'f',
  1331 + 71: 'g',
  1332 + 72: 'h',
  1333 + 73: 'i',
  1334 + 74: 'j',
  1335 + 75: 'k',
  1336 + 76: 'l',
  1337 + 77: 'm',
  1338 + 78: 'n',
  1339 + 79: 'o',
  1340 + 80: 'p',
  1341 + 81: 'q',
  1342 + 82: 'r',
  1343 + 83: 's',
  1344 + 84: 't',
  1345 + 85: 'u',
  1346 + 86: 'v',
  1347 + 87: 'w',
  1348 + 88: 'x',
  1349 + 89: 'y',
  1350 + 90: 'z',
  1351 + 96: '0',
  1352 + 97: '1',
  1353 + 98: '2',
  1354 + 99: '3',
  1355 + 100: '4',
  1356 + 101: '5',
  1357 + 102: '6',
  1358 + 103: '7',
  1359 + 104: '8',
  1360 + 105: '9'
  1361 + };
  1362 +
  1363 + if (that.options.liveSearch) $parent = $this.parent().parent();
  1364 +
  1365 + if (that.options.container) $parent = that.$menu;
  1366 +
  1367 + $items = $('[role=menu] li a', $parent);
  1368 +
  1369 + isActive = that.$menu.parent().hasClass('open');
  1370 +
  1371 + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90)) {
  1372 + if (!that.options.container) {
  1373 + that.setSize();
  1374 + that.$menu.parent().addClass('open');
  1375 + isActive = true;
  1376 + } else {
  1377 + that.$newElement.trigger('click');
  1378 + }
  1379 + that.$searchbox.focus();
  1380 + }
  1381 +
  1382 + if (that.options.liveSearch) {
  1383 + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
  1384 + e.preventDefault();
  1385 + that.$menu.parent().removeClass('open');
  1386 + if (that.options.container) that.$newElement.removeClass('open');
  1387 + that.$button.focus();
  1388 + }
  1389 + // $items contains li elements when liveSearch is enabled
  1390 + $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent);
  1391 + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
  1392 + if ($items.filter('.active').length === 0) {
  1393 + $items = that.$newElement.find('li');
  1394 + if (that.options.liveSearchNormalize) {
  1395 + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
  1396 + } else {
  1397 + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
  1398 + }
  1399 + }
  1400 + }
  1401 + }
  1402 +
  1403 + if (!$items.length) return;
  1404 +
  1405 + if (/(38|40)/.test(e.keyCode.toString(10))) {
  1406 + index = $items.index($items.filter(':focus'));
  1407 + first = $items.parent(selector).first().data('originalIndex');
  1408 + last = $items.parent(selector).last().data('originalIndex');
  1409 + next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex');
  1410 + prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex');
  1411 + nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex');
  1412 +
  1413 + if (that.options.liveSearch) {
  1414 + $items.each(function (i) {
  1415 + if (!$(this).hasClass('disabled')) {
  1416 + $(this).data('index', i);
  1417 + }
  1418 + });
  1419 + index = $items.index($items.filter('.active'));
  1420 + first = $items.first().data('index');
  1421 + last = $items.last().data('index');
  1422 + next = $items.eq(index).nextAll().eq(0).data('index');
  1423 + prev = $items.eq(index).prevAll().eq(0).data('index');
  1424 + nextPrev = $items.eq(next).prevAll().eq(0).data('index');
  1425 + }
  1426 +
  1427 + prevIndex = $this.data('prevIndex');
  1428 +
  1429 + if (e.keyCode == 38) {
  1430 + if (that.options.liveSearch) index -= 1;
  1431 + if (index != nextPrev && index > prev) index = prev;
  1432 + if (index < first) index = first;
  1433 + if (index == prevIndex) index = last;
  1434 + } else if (e.keyCode == 40) {
  1435 + if (that.options.liveSearch) index += 1;
  1436 + if (index == -1) index = 0;
  1437 + if (index != nextPrev && index < next) index = next;
  1438 + if (index > last) index = last;
  1439 + if (index == prevIndex) index = first;
  1440 + }
  1441 +
  1442 + $this.data('prevIndex', index);
  1443 +
  1444 + if (!that.options.liveSearch) {
  1445 + $items.eq(index).focus();
  1446 + } else {
  1447 + e.preventDefault();
  1448 + if (!$this.hasClass('dropdown-toggle')) {
  1449 + $items.removeClass('active').eq(index).addClass('active').children('a').focus();
  1450 + $this.focus();
  1451 + }
  1452 + }
  1453 +
  1454 + } else if (!$this.is('input')) {
  1455 + var keyIndex = [],
  1456 + count,
  1457 + prevKey;
  1458 +
  1459 + $items.each(function () {
  1460 + if (!$(this).parent().hasClass('disabled')) {
  1461 + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
  1462 + keyIndex.push($(this).parent().index());
  1463 + }
  1464 + }
  1465 + });
  1466 +
  1467 + count = $(document).data('keycount');
  1468 + count++;
  1469 + $(document).data('keycount', count);
  1470 +
  1471 + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
  1472 +
  1473 + if (prevKey != keyCodeMap[e.keyCode]) {
  1474 + count = 1;
  1475 + $(document).data('keycount', count);
  1476 + } else if (count >= keyIndex.length) {
  1477 + $(document).data('keycount', 0);
  1478 + if (count > keyIndex.length) count = 1;
  1479 + }
  1480 +
  1481 + $items.eq(keyIndex[count - 1]).focus();
  1482 + }
  1483 +
  1484 + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
  1485 + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
  1486 + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
  1487 + if (!that.options.liveSearch) {
  1488 + var elem = $(':focus');
  1489 + elem.click();
  1490 + // Bring back focus for multiselects
  1491 + elem.focus();
  1492 + // Prevent screen from scrolling if the user hit the spacebar
  1493 + e.preventDefault();
  1494 + // Fixes spacebar selection of dropdown items in FF & IE
  1495 + $(document).data('spaceSelect', true);
  1496 + } else if (!/(32)/.test(e.keyCode.toString(10))) {
  1497 + that.$menu.find('.active a').click();
  1498 + $this.focus();
  1499 + }
  1500 + $(document).data('keycount', 0);
  1501 + }
  1502 +
  1503 + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
  1504 + that.$menu.parent().removeClass('open');
  1505 + if (that.options.container) that.$newElement.removeClass('open');
  1506 + that.$button.focus();
  1507 + }
  1508 + },
  1509 +
  1510 + mobile: function () {
  1511 + this.$element.addClass('mobile-device').appendTo(this.$newElement);
  1512 + if (this.options.container) this.$menu.hide();
  1513 + },
  1514 +
  1515 + refresh: function () {
  1516 + this.$lis = null;
  1517 + this.reloadLi();
  1518 + this.render();
  1519 + this.checkDisabled();
  1520 + this.liHeight(true);
  1521 + this.setStyle();
  1522 + this.setWidth();
  1523 + if (this.$lis) this.$searchbox.trigger('propertychange');
  1524 +
  1525 + this.$element.trigger('refreshed.bs.select');
  1526 + },
  1527 +
  1528 + hide: function () {
  1529 + this.$newElement.hide();
  1530 + },
  1531 +
  1532 + show: function () {
  1533 + this.$newElement.show();
  1534 + },
  1535 +
  1536 + remove: function () {
  1537 + this.$newElement.remove();
  1538 + this.$element.remove();
  1539 + }
  1540 + };
  1541 +
  1542 + // SELECTPICKER PLUGIN DEFINITION
  1543 + // ==============================
  1544 + function Plugin(option, event) {
  1545 + // get the args of the outer function..
  1546 + var args = arguments;
  1547 + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
  1548 + // to get lost/corrupted in android 2.3 and IE9 #715 #775
  1549 + var _option = option,
  1550 + _event = event;
  1551 + [].shift.apply(args);
  1552 +
  1553 + var value;
  1554 + var chain = this.each(function () {
  1555 + var $this = $(this);
  1556 + if ($this.is('select')) {
  1557 + var data = $this.data('selectpicker'),
  1558 + options = typeof _option == 'object' && _option;
  1559 +
  1560 + if (!data) {
  1561 + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
  1562 + $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
  1563 + } else if (options) {
  1564 + for (var i in options) {
  1565 + if (options.hasOwnProperty(i)) {
  1566 + data.options[i] = options[i];
  1567 + }
  1568 + }
  1569 + }
  1570 +
  1571 + if (typeof _option == 'string') {
  1572 + if (data[_option] instanceof Function) {
  1573 + value = data[_option].apply(data, args);
  1574 + } else {
  1575 + value = data.options[_option];
  1576 + }
  1577 + }
  1578 + }
  1579 + });
  1580 +
  1581 + if (typeof value !== 'undefined') {
  1582 + //noinspection JSUnusedAssignment
  1583 + return value;
  1584 + } else {
  1585 + return chain;
  1586 + }
  1587 + }
  1588 +
  1589 + var old = $.fn.selectpicker;
  1590 + $.fn.selectpicker = Plugin;
  1591 + $.fn.selectpicker.Constructor = Selectpicker;
  1592 +
  1593 + // SELECTPICKER NO CONFLICT
  1594 + // ========================
  1595 + $.fn.selectpicker.noConflict = function () {
  1596 + $.fn.selectpicker = old;
  1597 + return this;
  1598 + };
  1599 +
  1600 + $(document)
  1601 + .data('keycount', 0)
  1602 + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
  1603 + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
  1604 + e.stopPropagation();
  1605 + });
  1606 +
  1607 + // SELECTPICKER DATA-API
  1608 + // =====================
  1609 + $(window).on('load.bs.select.data-api', function () {
  1610 + $('.selectpicker').each(function () {
  1611 + var $selectpicker = $(this);
  1612 + Plugin.call($selectpicker, $selectpicker.data());
  1613 + })
  1614 + });
  1615 +})(jQuery);
  1616 +
  1617 +
  1618 +}));
... ...
resource/lib/bootstrap-select/js/bootstrap-select.js.map 0 → 100644
  1 +{"version":3,"file":"bootstrap-select.min.js","sources":["bootstrap-select.js"],"names":["root","factory","define","amd","a0","exports","module","require","jQuery","this","$","normalizeToBase","text","rExps","re","ch","each","replace","htmlEscape","html","escapeMap","&","<",">","\"","'","`","source","Object","keys","join","testRegexp","RegExp","replaceRegexp","string","test","match","Plugin","option","event","args","arguments","_option","_event","shift","apply","value","chain","$this","is","data","options","i","hasOwnProperty","config","extend","Selectpicker","DEFAULTS","fn","selectpicker","defaults","Function","String","prototype","includes","toString","defineProperty","object","$defineProperty","result","error","indexOf","search","TypeError","call","stringLength","length","searchString","searchLength","position","undefined","pos","Number","start","Math","min","max","configurable","writable","startsWith","index","charCodeAt","o","k","r","push","expr","icontains","obj","meta","$obj","haystack","toUpperCase","ibegins","aicontains","aibegins","element","e","stopPropagation","preventDefault","$element","$newElement","$button","$menu","$lis","title","attr","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","children","$menuInner","$searchbox","find","click","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","trigger","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","destroyLi","_li","optID","titleOption","document","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","className","appendChild","createTextNode","insertBefore","firstChild","selectedIndex","getAttribute","selected","optionClass","cssText","subtext","icon","isDisabled","disabled","parentElement","tagName","label","labelSubtext","labelIcon","optGroupClass","previousElementSibling","eq","findLis","updateLi","notDisabled","setDisabled","setSelected","tabIndex","selectedItems","map","toArray","split","totalCount","not","tr8nText","trim","status","buttonClass","removeClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","parentNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","menuExtras","marginTop","marginBottom","removeChild","setSize","menuHeight","getHeight","selectOffsetTop","selectOffsetBot","$window","window","selectHeight","divHeight","posVert","offset","top","scrollTop","height","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","filter","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","off","optIndex","slice","last","divLength","$selectClone","clone","appendTo","$selectClone2","ulWidth","outerWidth","btnWidth","actualHeight","getPlacement","left","offsetWidth","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","$options","$option","state","$optgroup","maxOptionsGrp","blur","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","change","currentTarget","target","$no_results","$searchBase","_searchStyle","$lisVisible","keydown","$items","next","first","prev","nextPrev","isActive","$parent","selector","keyCodeMap",32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,"nextAll","prevAll","count","prevKey","keyIndex","toLowerCase","substring","elem","old","Constructor","noConflict","$selectpicker"],"mappings":";;;;;;CAOC,SAAUA,EAAMC,GACO,kBAAXC,SAAyBA,OAAOC,IAEzCD,QAAQ,UAAW,SAAUE,GAC3B,MAAQH,GAAQG,KAEU,gBAAZC,SAIhBC,OAAOD,QAAUJ,EAAQM,QAAQ,WAEjCN,EAAQO,SAEVC,KAAM,YAER,SAAWC,GACT,YAkKA,SAASC,GAAgBC,GACvB,GAAIC,KACDC,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,UAAWC,GAAI,MACnBD,GAAI,UAAWC,GAAI,KAKtB,OAHAL,GAAEM,KAAKH,EAAO,WACZD,EAAOA,EAAKK,QAAQR,KAAKK,GAAIL,KAAKM,MAE7BH,EAIT,QAASM,GAAWC,GAClB,GAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAS,MAAQC,OAAOC,KAAKT,GAAWU,KAAK,KAAO,IACpDC,EAAa,GAAIC,QAAOL,GACxBM,EAAgB,GAAID,QAAOL,EAAQ,KACnCO,EAAiB,MAARf,EAAe,GAAK,GAAKA,CACtC,OAAOY,GAAWI,KAAKD,GAAUA,EAAOjB,QAAQgB,EAAe,SAAUG,GACvE,MAAOhB,GAAUgB,KACdF,EAuyCP,QAASG,GAAOC,EAAQC,GAEtB,GAAIC,GAAOC,UAGPC,EAAUJ,EACVK,EAASJ,KACVK,MAAMC,MAAML,EAEf,IAAIM,GACAC,EAAQtC,KAAKO,KAAK,WACpB,GAAIgC,GAAQtC,EAAED,KACd,IAAIuC,EAAMC,GAAG,UAAW,CACtB,GAAIC,GAAOF,EAAME,KAAK,gBAClBC,EAA4B,gBAAXT,IAAuBA,CAE5C,IAAKQ,GAGE,GAAIC,EACT,IAAK,GAAIC,KAAKD,GACRA,EAAQE,eAAeD,KACzBF,EAAKC,QAAQC,GAAKD,EAAQC,QANrB,CACT,GAAIE,GAAS5C,EAAE6C,UAAWC,EAAaC,SAAU/C,EAAEgD,GAAGC,aAAaC,aAAgBZ,EAAME,OAAQC,EACjGH,GAAME,KAAK,eAAiBA,EAAO,GAAIM,GAAa/C,KAAM6C,EAAQX,IAS9C,gBAAXD,KAEPI,EADEI,EAAKR,YAAoBmB,UACnBX,EAAKR,GAASG,MAAMK,EAAMV,GAE1BU,EAAKC,QAAQT,MAM7B,OAAqB,mBAAVI,GAEFA,EAEAC,EArhDNe,OAAOC,UAAUC,WACnB,WAEC,GAAIC,MAAcA,SACdC,EAAkB,WAEpB,IACE,GAAIC,MACAC,EAAkBxC,OAAOsC,eACzBG,EAASD,EAAgBD,EAAQA,EAAQA,IAAWC,EACxD,MAAOE,IAET,MAAOD,MAELE,EAAU,GAAGA,QACbP,EAAW,SAAUQ,GACvB,GAAY,MAAR/D,KACF,KAAMgE,YAER,IAAIvC,GAAS4B,OAAOrD,KACpB,IAAI+D,GAAmC,mBAAzBP,EAASS,KAAKF,GAC1B,KAAMC,YAER,IAAIE,GAAezC,EAAO0C,OACtBC,EAAef,OAAOU,GACtBM,EAAeD,EAAaD,OAC5BG,EAAWtC,UAAUmC,OAAS,EAAInC,UAAU,GAAKuC,OAEjDC,EAAMF,EAAWG,OAAOH,GAAY,CACpCE,IAAOA,IACTA,EAAM,EAER,IAAIE,GAAQC,KAAKC,IAAID,KAAKE,IAAIL,EAAK,GAAIN,EAEvC,OAAIG,GAAeK,EAAQR,GAClB,EAEyC,IAA3CJ,EAAQG,KAAKxC,EAAQ2C,EAAcI,GAExCf,GACFA,EAAeJ,OAAOC,UAAW,YAC/BjB,MAASkB,EACTuB,cAAgB,EAChBC,UAAY,IAGd1B,OAAOC,UAAUC,SAAWA,KAK7BF,OAAOC,UAAU0B,aACnB,WAEC,GAAIvB,GAAkB,WAEpB,IACE,GAAIC,MACAC,EAAkBxC,OAAOsC,eACzBG,EAASD,EAAgBD,EAAQA,EAAQA,IAAWC,EACxD,MAAOE,IAET,MAAOD,MAELJ,KAAcA,SACdwB,EAAa,SAAUjB,GACzB,GAAY,MAAR/D,KACF,KAAMgE,YAER,IAAIvC,GAAS4B,OAAOrD,KACpB,IAAI+D,GAAmC,mBAAzBP,EAASS,KAAKF,GAC1B,KAAMC,YAER,IAAIE,GAAezC,EAAO0C,OACtBC,EAAef,OAAOU,GACtBM,EAAeD,EAAaD,OAC5BG,EAAWtC,UAAUmC,OAAS,EAAInC,UAAU,GAAKuC,OAEjDC,EAAMF,EAAWG,OAAOH,GAAY,CACpCE,IAAOA,IACTA,EAAM,EAER,IAAIE,GAAQC,KAAKC,IAAID,KAAKE,IAAIL,EAAK,GAAIN,EAEvC,IAAIG,EAAeK,EAAQR,EACzB,OAAO,CAGT,KADA,GAAIe,GAAQ,KACHA,EAAQZ,GACf,GAAI5C,EAAOyD,WAAWR,EAAQO,IAAUb,EAAac,WAAWD,GAC9D,OAAO,CAGX,QAAO,EAELxB,GACFA,EAAeJ,OAAOC,UAAW,cAC/BjB,MAAS2C,EACTF,cAAgB,EAChBC,UAAY,IAGd1B,OAAOC,UAAU0B,WAAaA,KAK/B7D,OAAOC,OACVD,OAAOC,KAAO,SACZ+D,EACAC,EACAC,GAGAA,IAEA,KAAKD,IAAKD,GAERE,EAAEzC,eAAeqB,KAAKkB,EAAGC,IAAMC,EAAEC,KAAKF,EAExC,OAAOC,KAMXpF,EAAEsF,KAAK,KAAKC,UAAY,SAAUC,EAAKR,EAAOS,GAC5C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKxF,QAAQ0F,aACpD,OAAOD,GAASrC,SAASmC,EAAK,GAAGG,gBAInC5F,EAAEsF,KAAK,KAAKO,QAAU,SAAUL,EAAKR,EAAOS,GAC1C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKxF,QAAQ0F,aACpD,OAAOD,GAASZ,WAAWU,EAAK,GAAGG,gBAIrC5F,EAAEsF,KAAK,KAAKQ,WAAa,SAAUN,EAAKR,EAAOS,GAC7C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKlD,KAAK,mBAAqBkD,EAAKxF,QAAQ0F,aACnF,OAAOD,GAASrC,SAASmC,EAAK,GAAGG,gBAInC5F,EAAEsF,KAAK,KAAKS,SAAW,SAAUP,EAAKR,EAAOS,GAC3C,GAAIC,GAAO1F,EAAEwF,GACTG,GAAYD,EAAKlD,KAAK,WAAakD,EAAKlD,KAAK,mBAAqBkD,EAAKxF,QAAQ0F,aACnF,OAAOD,GAASZ,WAAWU,EAAK,GAAGG,eAkDrC,IAAI9C,GAAe,SAAUkD,EAASvD,EAASwD,GACzCA,IACFA,EAAEC,kBACFD,EAAEE,kBAGJpG,KAAKqG,SAAWpG,EAAEgG,GAClBjG,KAAKsG,YAAc,KACnBtG,KAAKuG,QAAU,KACfvG,KAAKwG,MAAQ,KACbxG,KAAKyG,KAAO,KACZzG,KAAK0C,QAAUA,EAIY,OAAvB1C,KAAK0C,QAAQgE,QACf1G,KAAK0C,QAAQgE,MAAQ1G,KAAKqG,SAASM,KAAK,UAI1C3G,KAAK4G,IAAM7D,EAAaO,UAAUsD,IAClC5G,KAAK6G,OAAS9D,EAAaO,UAAUuD,OACrC7G,KAAK8G,QAAU/D,EAAaO,UAAUwD,QACtC9G,KAAK+G,SAAWhE,EAAaO,UAAUyD,SACvC/G,KAAKgH,UAAYjE,EAAaO,UAAU0D,UACxChH,KAAKiH,YAAclE,EAAaO,UAAU2D,YAC1CjH,KAAKkH,QAAUnE,EAAaO,UAAU6D,OACtCnH,KAAKmH,OAASpE,EAAaO,UAAU6D,OACrCnH,KAAKoH,KAAOrE,EAAaO,UAAU8D,KACnCpH,KAAKqH,KAAOtE,EAAaO,UAAU+D,KAEnCrH,KAAKsH,OAGPvE,GAAawE,QAAU,QAGvBxE,EAAaC,UACXwE,iBAAkB,mBAClBC,gBAAiB,yBACjBC,kBAAmB,SAAUC,EAAaC,GACxC,MAAuB,IAAfD,EAAoB,oBAAsB,sBAEpDE,eAAgB,SAAUC,EAAQC,GAChC,OACa,GAAVD,EAAe,+BAAiC,gCACpC,GAAZC,EAAiB,qCAAuC,wCAG7DC,cAAe,aACfC,gBAAiB,eACjBC,YAAY,EACZC,eAAgB,QAChBC,kBAAmB,KACnBC,UAAW,MACXC,MAAO,cACPC,KAAM,OACN7B,MAAO,KACP8B,mBAAoB,SACpBC,OAAO,EACPC,WAAW,EACXC,cAAc,EACdC,aAAa,EACbC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,QAAQ,EACRC,YAAY,EACZC,sBAAuB,KACvBC,qBAAqB,EACrBC,gBAAiB,WACjBC,YAAY,EACZC,SAAU,YACVC,SAAU,eACVC,YAAY,EACZC,QAAQ,EACRC,aAAa,EACbC,oBAAoB,GAGtB5G,EAAaO,WAEXsG,YAAa7G,EAEbuE,KAAM,WACJ,GAAIuC,GAAO7J,KACP8J,EAAK9J,KAAKqG,SAASM,KAAK,KAE5B3G,MAAKqG,SAAS0D,SAAS,oBAGvB/J,KAAKgK,SACLhK,KAAKiK,SAAWjK,KAAKqG,SAAS6D,KAAK,YACnClK,KAAKmK,UAAYnK,KAAKqG,SAAS6D,KAAK,aACpClK,KAAKsG,YAActG,KAAKoK,aACxBpK,KAAKqG,SAASgE,MAAMrK,KAAKsG,aACzBtG,KAAKuG,QAAUvG,KAAKsG,YAAYgE,SAAS,UACzCtK,KAAKwG,MAAQxG,KAAKsG,YAAYgE,SAAS,kBACvCtK,KAAKuK,WAAavK,KAAKwG,MAAM8D,SAAS,UACtCtK,KAAKwK,WAAaxK,KAAKwG,MAAMiE,KAAK,SAE9BzK,KAAK0C,QAAQiH,oBACf3J,KAAKwG,MAAMuD,SAAS,uBAEJ,mBAAPD,KACT9J,KAAKuG,QAAQI,KAAK,UAAWmD,GAC7B7J,EAAE,cAAgB6J,EAAK,MAAMY,MAAM,SAAUxE,GAC3CA,EAAEE,iBACFyD,EAAKtD,QAAQoE,WAIjB3K,KAAK4K,gBACL5K,KAAK6K,gBACD7K,KAAK0C,QAAQuG,YAAYjJ,KAAK8K,qBAClC9K,KAAK6G,SACL7G,KAAK+G,WACL/G,KAAK+K,WACD/K,KAAK0C,QAAQgG,WAAW1I,KAAKgL,iBACjChL,KAAKwG,MAAM/D,KAAK,OAAQzC,MACxBA,KAAKsG,YAAY7D,KAAK,OAAQzC,MAC1BA,KAAK0C,QAAQ+G,QAAQzJ,KAAKyJ,SAE9BzJ,KAAKsG,YAAY2E,GAAG,mBAAoB,SAAU/E,GAChD2D,EAAKxD,SAAS6E,QAAQ,iBAAkBhF,KAG1ClG,KAAKsG,YAAY2E,GAAG,qBAAsB,SAAU/E,GAClD2D,EAAKxD,SAAS6E,QAAQ,mBAAoBhF,KAG5ClG,KAAKsG,YAAY2E,GAAG,mBAAoB,SAAU/E,GAChD2D,EAAKxD,SAAS6E,QAAQ,iBAAkBhF,KAG1ClG,KAAKsG,YAAY2E,GAAG,oBAAqB,SAAU/E,GACjD2D,EAAKxD,SAAS6E,QAAQ,kBAAmBhF,KAG3CiF,WAAW,WACTtB,EAAKxD,SAAS6E,QAAQ,uBAI1BE,eAAgB,WAGd,GAAInB,GAAWjK,KAAKiK,SAAW,aAAe,GAC1CoB,EAAarL,KAAKqG,SAASiF,SAASC,SAAS,eAAiB,mBAAqB,GACnFpB,EAAYnK,KAAKmK,UAAY,aAAe,GAE5CnB,EAAShJ,KAAK0C,QAAQsG,OAAS,qGAAuGhJ,KAAK0C,QAAQsG,OAAS,SAAW,GACvKwC,EAAYxL,KAAK0C,QAAQuG,WAC7B,wFAEC,OAASjJ,KAAK0C,QAAQwG,sBAAwB,GAAK,iBAAmBzI,EAAWT,KAAK0C,QAAQwG,uBAAyB,KAAO,UAEzH,GACFuC,EAAazL,KAAKiK,UAAYjK,KAAK0C,QAAQ2G,WAC/C,oJAGArJ,KAAK0C,QAAQsF,cACb,sFAEAhI,KAAK0C,QAAQuF,gBACb,wBAGM,GACFyD,EAAa1L,KAAKiK,UAAYjK,KAAK0C,QAAQwF,WAC/C,oHAGAlI,KAAK0C,QAAQyF,eACb,wBAGM,GACFwD,EACA,yCAA2C1B,EAAWoB,EAAa,kCACjCrL,KAAK0C,QAAQ2F,UAAY,2CAA6C8B,EAAY,2HAKpHnB,EACAwC,EACAC,EACA,oDAEAC,EACA,cAGJ,OAAOzL,GAAE0L,IAGXvB,WAAY,WACV,GAAIwB,GAAQ5L,KAAKoL,iBACbS,EAAK7L,KAAK8L,UAGd,OADAF,GAAMnB,KAAK,MAAM,GAAGsB,UAAYF,EACzBD,GAGTI,SAAU,WAERhM,KAAKiM,WAEL,IAAIJ,GAAK7L,KAAK8L,UACd9L,MAAKuK,WAAW,GAAGwB,UAAYF,GAGjCI,UAAW,WACTjM,KAAKwG,MAAMiE,KAAK,MAAMtD,UAGxB2E,SAAU,WACR,GAAIjC,GAAO7J,KACPkM,KACAC,EAAQ,EACRC,EAAcC,SAASC,cAAc,UACrCC,EAAU,GAUVC,EAAa,SAAUC,EAASxH,EAAOyH,EAASC,GAClD,MAAO,OACkB,mBAAZD,GAA0B,KAAOA,EAAW,WAAaA,EAAU,IAAM,KAC/D,mBAAVzH,GAAwB,OAASA,EAAS,yBAA2BA,EAAQ,IAAM,KACtE,mBAAb0H,GAA2B,OAASA,EAAY,kBAAoBA,EAAW,IAAM,IAC9F,IAAMF,EAAU,SAUlBG,EAAY,SAAUzM,EAAMuM,EAASG,EAAQC,GAC/C,MAAO,mBACiB,mBAAZJ,GAA0B,WAAaA,EAAU,IAAM,KAC5C,mBAAXG,GAAyB,WAAaA,EAAS,IAAM,KAC5DhD,EAAKnH,QAAQyG,oBAAsB,0BAA4BjJ,EAAgBO,EAAWN,IAAS,IAAM,KACvF,mBAAX2M,IAAqC,OAAXA,EAAkB,iBAAmBA,EAAS,IAAM,IACtF,IAAM3M,EACN,gBAAkB0J,EAAKnH,QAAQ4G,SAAW,IAAMO,EAAKnH,QAAQ6G,SAAW,2BAI9E,IAAIvJ,KAAK0C,QAAQgE,QAAU1G,KAAKiK,WAG9BsC,KAEKvM,KAAKqG,SAASoE,KAAK,oBAAoBtG,QAAQ,CAElD,GAAI8B,GAAUjG,KAAKqG,SAAS,EAC5B+F,GAAYW,UAAY,kBACxBX,EAAYY,YAAYX,SAASY,eAAejN,KAAK0C,QAAQgE,QAC7D0F,EAAY/J,MAAQ,GACpB4D,EAAQiH,aAAad,EAAanG,EAAQkH,YAE8B,OAApElH,EAAQvD,QAAQuD,EAAQmH,eAAeC,aAAa,cAAsBjB,EAAYkB,UAAW,GA0EzG,MAtEAtN,MAAKqG,SAASoE,KAAK,UAAUlK,KAAK,SAAU0E,GAC1C,GAAI1C,GAAQtC,EAAED,KAId,IAFAuM,KAEIhK,EAAMgJ,SAAS,mBAAnB,CAGA,GAAIgC,GAAcvN,KAAK+M,WAAa,GAChCF,EAAS7M,KAAKsI,MAAMkF,QACpBrN,EAAOoC,EAAME,KAAK,WAAaF,EAAME,KAAK,WAAaF,EAAM7B,OAC7DoM,EAASvK,EAAME,KAAK,UAAYF,EAAME,KAAK,UAAY,KACvDgL,EAA2C,mBAA1BlL,GAAME,KAAK,WAA6B,6BAA+BF,EAAME,KAAK,WAAa,WAAa,GAC7HiL,EAAqC,mBAAvBnL,GAAME,KAAK,QAA0B,gBAAkBoH,EAAKnH,QAAQ4G,SAAW,IAAM/G,EAAME,KAAK,QAAU,aAAe,GACvIkL,EAAa3N,KAAK4N,UAA2C,aAA/B5N,KAAK6N,cAAcC,SAA0B9N,KAAK6N,cAAcD,QAMlG,IAJa,KAATF,GAAeC,IACjBD,EAAO,SAAWA,EAAO,WAGvB7D,EAAKnH,QAAQiG,cAAgBgF,EAE/B,WADApB,IASF,IALKhK,EAAME,KAAK,aAEdtC,EAAOuN,EAAO,sBAAwBvN,EAAOsN,EAAU,WAGtB,aAA/BzN,KAAK6N,cAAcC,SAA0BvL,EAAME,KAAK,cAAe,EAAM,CAC/E,GAAsB,IAAlBF,EAAM0C,QAAe,CACvBkH,GAAS,CAGT,IAAI4B,GAAQ/N,KAAK6N,cAAcE,MAC3BC,EAAyD,mBAAnCzL,GAAM+I,SAAS7I,KAAK,WAA6B,6BAA+BF,EAAM+I,SAAS7I,KAAK,WAAa,WAAa,GACpJwL,EAAY1L,EAAM+I,SAAS7I,KAAK,QAAU,gBAAkBoH,EAAKnH,QAAQ4G,SAAW,IAAM/G,EAAM+I,SAAS7I,KAAK,QAAU,aAAe,GACvIyL,EAAgB,IAAMlO,KAAK6N,cAAcd,WAAa,EAE1DgB,GAAQE,EAAY,sBAAwBF,EAAQC,EAAe,UAErD,IAAV/I,GAAeiH,EAAI/H,OAAS,IAC9BoI,IACAL,EAAI5G,KAAKkH,EAAW,GAAI,KAAM,UAAWL,EAAQ,SAEnDI,IACAL,EAAI5G,KAAKkH,EAAWuB,EAAO,KAAM,kBAAoBG,EAAe/B,IAEtED,EAAI5G,KAAKkH,EAAWI,EAAUzM,EAAM,OAASoN,EAAcW,EAAerB,EAAQC,GAAS7H,EAAO,GAAIkH,QAC7F5J,GAAME,KAAK,cAAe,EACnCyJ,EAAI5G,KAAKkH,EAAW,GAAIvH,EAAO,YACtB1C,EAAME,KAAK,aAAc,EAClCyJ,EAAI5G,KAAKkH,EAAWI,EAAUzM,EAAMoN,EAAaV,EAAQC,GAAS7H,EAAO,sBAErEjF,KAAKmO,wBAAkE,aAAxCnO,KAAKmO,uBAAuBL,UAC7DvB,IACAL,EAAI5G,KAAKkH,EAAW,GAAI,KAAM,UAAWL,EAAQ,SAEnDD,EAAI5G,KAAKkH,EAAWI,EAAUzM,EAAMoN,EAAaV,EAAQC,GAAS7H,IAGpE4E,GAAKG,MAAM/E,GAASsH,KAIjBvM,KAAKiK,UAA6D,IAAjDjK,KAAKqG,SAASoE,KAAK,mBAAmBtG,QAAiBnE,KAAK0C,QAAQgE,OACxF1G,KAAKqG,SAASoE,KAAK,UAAU2D,GAAG,GAAGlE,KAAK,YAAY,GAAMvD,KAAK,WAAY,YAGtEuF,EAAI7K,KAAK,KAGlBgN,QAAS,WAEP,MADiB,OAAbrO,KAAKyG,OAAczG,KAAKyG,KAAOzG,KAAKwG,MAAMiE,KAAK,OAC5CzK,KAAKyG,MAMdI,OAAQ,SAAUyH,GAChB,GACIC,GADA1E,EAAO7J,IAIPsO,MAAa,GACftO,KAAKqG,SAASoE,KAAK,UAAUlK,KAAK,SAAU0E,GAC1C,GAAIwB,GAAOoD,EAAKwE,UAAUD,GAAGvE,EAAKG,MAAM/E,GAExC4E,GAAK2E,YAAYvJ,EAAOjF,KAAK4N,UAA2C,aAA/B5N,KAAK6N,cAAcC,SAA0B9N,KAAK6N,cAAcD,SAAUnH,GACnHoD,EAAK4E,YAAYxJ,EAAOjF,KAAKsN,SAAU7G,KAI3CzG,KAAK0O,UAEL,IAAIC,GAAgB3O,KAAKqG,SAASoE,KAAK,UAAUmE,IAAI,WACnD,GAAI5O,KAAKsN,SAAU,CACjB,GAAIzD,EAAKnH,QAAQiG,eAAiB3I,KAAK4N,UAA2C,aAA/B5N,KAAK6N,cAAcC,SAA0B9N,KAAK6N,cAAcD,UAAW,OAAO,CAErI,IAEIH,GAFAlL,EAAQtC,EAAED,MACV0N,EAAOnL,EAAME,KAAK,SAAWoH,EAAKnH,QAAQmG,SAAW,aAAegB,EAAKnH,QAAQ4G,SAAW,IAAM/G,EAAME,KAAK,QAAU,UAAY,EAQvI,OAJEgL,GADE5D,EAAKnH,QAAQkG,aAAerG,EAAME,KAAK,aAAeoH,EAAKI,SACnD,8BAAgC1H,EAAME,KAAK,WAAa,WAExD,GAEuB,mBAAxBF,GAAMoE,KAAK,SACbpE,EAAMoE,KAAK,SACTpE,EAAME,KAAK,YAAcoH,EAAKnH,QAAQoG,YACxCvG,EAAME,KAAK,WAEXiL,EAAOnL,EAAM7B,OAAS+M,KAGhCoB,UAICnI,EAAS1G,KAAKiK,SAA8B0E,EAActN,KAAKrB,KAAK0C,QAAQ0F,mBAAnDuG,EAAc,EAG3C,IAAI3O,KAAKiK,UAAYjK,KAAK0C,QAAQ8F,mBAAmB1E,QAAQ,SAAW,GAAI,CAC1E,GAAIe,GAAM7E,KAAK0C,QAAQ8F,mBAAmBsG,MAAM,IAChD,IAAKjK,EAAIV,OAAS,GAAKwK,EAAcxK,OAASU,EAAI,IAAsB,GAAdA,EAAIV,QAAewK,EAAcxK,QAAU,EAAI,CACvGoK,EAAcvO,KAAK0C,QAAQiG,aAAe,eAAiB,EAC3D,IAAIoG,GAAa/O,KAAKqG,SAASoE,KAAK,UAAUuE,IAAI,8CAAgDT,GAAapK,OAC3G8K,EAAsD,kBAAnCjP,MAAK0C,QAAQgF,kBAAoC1H,KAAK0C,QAAQgF,kBAAkBiH,EAAcxK,OAAQ4K,GAAc/O,KAAK0C,QAAQgF,iBACxJhB,GAAQuI,EAASzO,QAAQ,MAAOmO,EAAcxK,OAAOX,YAAYhD,QAAQ,MAAOuO,EAAWvL,aAIrEe,QAAtBvE,KAAK0C,QAAQgE,QACf1G,KAAK0C,QAAQgE,MAAQ1G,KAAKqG,SAASM,KAAK,UAGH,UAAnC3G,KAAK0C,QAAQ8F,qBACf9B,EAAQ1G,KAAK0C,QAAQgE,OAIlBA,IACHA,EAAsC,mBAAvB1G,MAAK0C,QAAQgE,MAAwB1G,KAAK0C,QAAQgE,MAAQ1G,KAAK0C,QAAQ8E,kBAIxFxH,KAAKuG,QAAQI,KAAK,QAAS1G,EAAEiP,KAAKxI,EAAMlG,QAAQ,YAAa,MAC7DR,KAAKuG,QAAQ+D,SAAS,kBAAkB5J,KAAKgG,GAE7C1G,KAAKqG,SAAS6E,QAAQ,uBAOxBnE,SAAU,SAAUuB,EAAO6G,GACrBnP,KAAKqG,SAASM,KAAK,UACrB3G,KAAKsG,YAAYyD,SAAS/J,KAAKqG,SAASM,KAAK,SAASnG,QAAQ,+DAAgE,IAGhI,IAAI4O,GAAc9G,EAAQA,EAAQtI,KAAK0C,QAAQ4F,KAEjC,QAAV6G,EACFnP,KAAKuG,QAAQwD,SAASqF,GACH,UAAVD,EACTnP,KAAKuG,QAAQ8I,YAAYD,IAEzBpP,KAAKuG,QAAQ8I,YAAYrP,KAAK0C,QAAQ4F,OACtCtI,KAAKuG,QAAQwD,SAASqF,KAI1BE,SAAU,SAAUxI,GAClB,GAAKA,GAAY9G,KAAK0C,QAAQ6F,QAAS,IAASvI,KAAKuP,SAArD,CAEA,GAAIC,GAAanD,SAASC,cAAc,OACpCmD,EAAOpD,SAASC,cAAc,OAC9BoD,EAAYrD,SAASC,cAAc,MACnCqD,EAAUtD,SAASC,cAAc,MACjCT,EAAKQ,SAASC,cAAc,MAC5BsD,EAAIvD,SAASC,cAAc,KAC3BnM,EAAOkM,SAASC,cAAc,QAC9BtD,EAAShJ,KAAK0C,QAAQsG,OAAShJ,KAAKwG,MAAMiE,KAAK,kBAAkB,GAAGoF,WAAU,GAAQ,KACtF9L,EAAS/D,KAAK0C,QAAQuG,WAAaoD,SAASC,cAAc,OAAS,KACnEwD,EAAU9P,KAAK0C,QAAQ2G,YAAcrJ,KAAKiK,SAAWjK,KAAKwG,MAAMiE,KAAK,kBAAkB,GAAGoF,WAAU,GAAQ,KAC5G3H,EAAalI,KAAK0C,QAAQwF,YAAclI,KAAKiK,SAAWjK,KAAKwG,MAAMiE,KAAK,kBAAkB,GAAGoF,WAAU,GAAQ,IAcnH,IAZA1P,EAAK4M,UAAY,OACjByC,EAAWzC,UAAY/M,KAAKwG,MAAM,GAAGuJ,WAAWhD,UAAY,QAC5D0C,EAAK1C,UAAY,qBACjB2C,EAAU3C,UAAY,sBACtB4C,EAAQ5C,UAAY,UAEpB5M,EAAK6M,YAAYX,SAASY,eAAe,eACzC2C,EAAE5C,YAAY7M,GACd0L,EAAGmB,YAAY4C,GACfF,EAAU1C,YAAYnB,GACtB6D,EAAU1C,YAAY2C,GAClB3G,GAAQyG,EAAKzC,YAAYhE,GACzBjF,EAAQ,CAEV,GAAIiM,GAAQ3D,SAASC,cAAc,OACnCvI,GAAOgJ,UAAY,eACnBiD,EAAMjD,UAAY,eAClBhJ,EAAOiJ,YAAYgD,GACnBP,EAAKzC,YAAYjJ,GAEf+L,GAASL,EAAKzC,YAAY8C,GAC9BL,EAAKzC,YAAY0C,GACbxH,GAAYuH,EAAKzC,YAAY9E,GACjCsH,EAAWxC,YAAYyC,GAEvBpD,SAAS4D,KAAKjD,YAAYwC,EAE1B,IAAIF,GAAWM,EAAEM,aACbC,EAAenH,EAASA,EAAOkH,aAAe,EAC9CE,EAAerM,EAASA,EAAOmM,aAAe,EAC9CG,EAAgBP,EAAUA,EAAQI,aAAe,EACjDI,EAAmBpI,EAAaA,EAAWgI,aAAe,EAC1DK,EAAgBtQ,EAAE0P,GAASa,aAAY,GAEvCC,EAAYC,iBAAmBA,iBAAiBjB,IAAQ,EACxDjJ,EAAQiK,EAAYxQ,EAAEwP,GAAQ,KAC9BkB,EAAcC,SAASH,EAAYA,EAAUI,WAAarK,EAAMsK,IAAI,eACtDF,SAASH,EAAYA,EAAUM,cAAgBvK,EAAMsK,IAAI,kBACzDF,SAASH,EAAYA,EAAUO,eAAiBxK,EAAMsK,IAAI,mBAC1DF,SAASH,EAAYA,EAAUQ,kBAAoBzK,EAAMsK,IAAI,sBAC3EI,EAAcP,EACAC,SAASH,EAAYA,EAAUU,UAAY3K,EAAMsK,IAAI,cACrDF,SAASH,EAAYA,EAAUW,aAAe5K,EAAMsK,IAAI,iBAAmB,CAE7FzE,UAAS4D,KAAKoB,YAAY7B,GAE1BxP,KAAKuP,UACHD,SAAUA,EACVa,aAAcA,EACdC,aAAcA,EACdC,cAAeA,EACfC,iBAAkBA,EAClBC,cAAeA,EACfI,YAAaA,EACbO,WAAYA,KAIhBI,QAAS,WACPtR,KAAKqO,UACLrO,KAAKsP,UACL,IAcIiC,GACAC,EACAC,EACAC,EAjBA7H,EAAO7J,KACPwG,EAAQxG,KAAKwG,MACb+D,EAAavK,KAAKuK,WAClBoH,EAAU1R,EAAE2R,QACZC,EAAe7R,KAAKsG,YAAY,GAAG4J,aACnCZ,EAAWtP,KAAKuP,SAAmB,SACnCY,EAAenQ,KAAKuP,SAAuB,aAC3Ca,EAAepQ,KAAKuP,SAAuB,aAC3Cc,EAAgBrQ,KAAKuP,SAAwB,cAC7Ce,EAAmBtQ,KAAKuP,SAA2B,iBACnDuC,EAAY9R,KAAKuP,SAAwB,cACzCoB,EAAc3Q,KAAKuP,SAAsB,YACzC2B,EAAalR,KAAKuP,SAAqB,WACvChB,EAAcvO,KAAK0C,QAAQiG,aAAe,YAAc,GAKxDoJ,EAAU,WACRN,EAAkB5H,EAAKvD,YAAY0L,SAASC,IAAMN,EAAQO,YAC1DR,EAAkBC,EAAQQ,SAAWV,EAAkBI,EAO7D,IAJAE,IAEI/R,KAAK0C,QAAQsG,QAAQxC,EAAMsK,IAAI,cAAe,GAExB,SAAtB9Q,KAAK0C,QAAQ6F,KAAiB,CAChC,GAAI6J,GAAU,WACZ,GAAIC,GACA9G,EAAW,SAAUwB,EAAWuF,GAC9B,MAAO,UAAUrM,GACb,MAAIqM,GACQrM,EAAQsM,UAAYtM,EAAQsM,UAAUC,SAASzF,GAAa9M,EAAEgG,GAASsF,SAASwB,KAE/E9G,EAAQsM,UAAYtM,EAAQsM,UAAUC,SAASzF,GAAa9M,EAAEgG,GAASsF,SAASwB,MAInG0F,EAAM5I,EAAKU,WAAW,GAAGmI,qBAAqB,MAC9CC,EAAaC,MAAMtP,UAAUuP,OAASD,MAAMtP,UAAUuP,OAAO5O,KAAKwO,EAAKlH,EAAS,UAAU,IAAU1B,EAAKpD,KAAKuI,IAAI,WAClH8D,EAAWF,MAAMtP,UAAUuP,OAASD,MAAMtP,UAAUuP,OAAO5O,KAAK0O,EAAYpH,EAAS,mBAAmB,IAASoH,EAAWE,OAAO,mBAEvId,KACAR,EAAaG,EAAkBR,EAE3BrH,EAAKnH,QAAQgG,WACVlC,EAAM/D,KAAK,WAAW+D,EAAM/D,KAAK,SAAU+D,EAAM2L,UACtDX,EAAYhL,EAAM/D,KAAK,WAEvB+O,EAAYhL,EAAM2L,SAGhBtI,EAAKnH,QAAQqG,YACfc,EAAKvD,YAAYyM,YAAY,SAAUtB,EAAkBC,GAA+CF,EAA3BD,EAAaL,GAExFrH,EAAKvD,YAAYiF,SAAS,YAC5BgG,EAAaE,EAAkBP,GAI/BmB,EADGM,EAAWxO,OAAS2O,EAAS3O,OAAU,EACnB,EAAXmL,EAAe4B,EAAa,EAE5B,EAGd1K,EAAMsK,KACJkC,aAAczB,EAAa,KAC3B0B,SAAY,SACZC,aAAcb,EAAYlC,EAAeC,EAAeC,EAAgBC,EAAmB,OAE7F/F,EAAWuG,KACTkC,aAAczB,EAAapB,EAAeC,EAAeC,EAAgBC,EAAmBK,EAAc,KAC1GwC,aAAc,OACdD,aAAcvO,KAAKE,IAAIwN,EAAY1B,EAAa,GAAK,OAGzDyB,KACApS,KAAKwK,WAAW4I,IAAI,wCAAwCnI,GAAG,uCAAwCmH,GACvGT,EAAQyB,IAAI,iCAAiCnI,GAAG,gCAAiCmH,OAC5E,IAAIpS,KAAK0C,QAAQ6F,MAA6B,QAArBvI,KAAK0C,QAAQ6F,MAAkBvI,KAAKyG,KAAKuI,IAAIT,GAAapK,OAASnE,KAAK0C,QAAQ6F,KAAM,CACpH,GAAI8K,GAAWrT,KAAKyG,KAAKuI,IAAI,YAAYA,IAAIT,GAAajE,WAAWgJ,MAAM,EAAGtT,KAAK0C,QAAQ6F,MAAMgL,OAAOjI,SAASrG,QAC7GuO,EAAYxT,KAAKyG,KAAK6M,MAAM,EAAGD,EAAW,GAAGR,OAAO,YAAY1O,MACpEoN,GAAajC,EAAWtP,KAAK0C,QAAQ6F,KAAOiL,EAAY1B,EAAYnB,EAEhE9G,EAAKnH,QAAQgG,WACVlC,EAAM/D,KAAK,WAAW+D,EAAM/D,KAAK,SAAU+D,EAAM2L,UACtDX,EAAYhL,EAAM/D,KAAK,WAEvB+O,EAAYhL,EAAM2L,SAGhBtI,EAAKnH,QAAQqG,YAEf/I,KAAKsG,YAAYyM,YAAY,SAAUtB,EAAkBC,GAA+CF,EAA3BD,EAAaL,GAE5F1K,EAAMsK,KACJkC,aAAczB,EAAapB,EAAeC,EAAeC,EAAgBC,EAAmB,KAC5F2C,SAAY,SACZC,aAAc,KAEhB3I,EAAWuG,KACTkC,aAAczB,EAAaZ,EAAc,KACzCwC,aAAc,OACdD,aAAc,OAKpBnI,SAAU,WACR,GAA2B,SAAvB/K,KAAK0C,QAAQ+F,MAAkB,CACjCzI,KAAKwG,MAAMsK,IAAI,YAAa,IAG5B,IAAI2C,GAAezT,KAAKwG,MAAM8E,SAASoI,QAAQC,SAAS,QACpDC,EAAgB5T,KAAK0C,QAAQgG,UAAY1I,KAAKsG,YAAYoN,QAAQC,SAAS,QAAUF,EACrFI,EAAUJ,EAAanJ,SAAS,kBAAkBwJ,aAClDC,EAAWH,EAAc9C,IAAI,QAAS,QAAQxG,SAAS,UAAUwJ,YAErEL,GAAatM,SACbyM,EAAczM,SAGdnH,KAAKsG,YAAYwK,IAAI,QAASnM,KAAKE,IAAIgP,EAASE,GAAY,UAC5B,QAAvB/T,KAAK0C,QAAQ+F,OAEtBzI,KAAKwG,MAAMsK,IAAI,YAAa,IAC5B9Q,KAAKsG,YAAYwK,IAAI,QAAS,IAAI/G,SAAS,cAClC/J,KAAK0C,QAAQ+F,OAEtBzI,KAAKwG,MAAMsK,IAAI,YAAa,IAC5B9Q,KAAKsG,YAAYwK,IAAI,QAAS9Q,KAAK0C,QAAQ+F,SAG3CzI,KAAKwG,MAAMsK,IAAI,YAAa,IAC5B9Q,KAAKsG,YAAYwK,IAAI,QAAS,IAG5B9Q,MAAKsG,YAAYiF,SAAS,cAAuC,QAAvBvL,KAAK0C,QAAQ+F,OACzDzI,KAAKsG,YAAY+I,YAAY,cAIjCrE,eAAgB,WACd,GAGIxG,GACAwP,EAJAnK,EAAO7J,KACP2L,EAAO,UACPC,EAAQ3L,EAAE0L,GAGVsI,EAAe,SAAU5N,GACvBuF,EAAM7B,SAAS1D,EAASM,KAAK,SAASnG,QAAQ,2BAA4B,KAAKuS,YAAY,SAAU1M,EAASkF,SAAS,WACvH/G,EAAM6B,EAAS2L,SACfgC,EAAe3N,EAASkF,SAAS,UAAY,EAAIlF,EAAS,GAAG6J,aAC7DtE,EAAMkF,KACJmB,IAAOzN,EAAIyN,IAAM+B,EACjBE,KAAQ1P,EAAI0P,KACZzL,MAASpC,EAAS,GAAG8N,YACrB7P,SAAY,aAIpBtE,MAAKsG,YAAY2E,GAAG,QAAS,WACvBpB,EAAK8D,eAGTsG,EAAahU,EAAED,OACf4L,EAAM+H,SAAS9J,EAAKnH,QAAQgG,WAC5BkD,EAAMmH,YAAY,QAAS9S,EAAED,MAAMuL,SAAS,SAC5CK,EAAMwI,OAAOvK,EAAKrD,UAGpBvG,EAAE2R,QAAQ3G,GAAG,gBAAiB,WAC5BgJ,EAAapK,EAAKvD,eAGpBtG,KAAKqG,SAAS4E,GAAG,iBAAkB,WACjCpB,EAAKrD,MAAM/D,KAAK,SAAUoH,EAAKrD,MAAM2L,UACrCvG,EAAMyI,YAIV5F,YAAa,SAAUxJ,EAAOqI,EAAU7G,GACtC,IAAKA,EACH,GAAIA,GAAOzG,KAAKqO,UAAUD,GAAGpO,KAAKgK,MAAM/E,GAG1CwB,GAAKsM,YAAY,WAAYzF,IAG/BkB,YAAa,SAAUvJ,EAAO2I,EAAUnH,GACtC,IAAKA,EACH,GAAIA,GAAOzG,KAAKqO,UAAUD,GAAGpO,KAAKgK,MAAM/E,GAGtC2I,GACFnH,EAAKsD,SAAS,YAAYO,SAAS,KAAK3D,KAAK,OAAQ,KAAKA,KAAK,WAAY,IAE3EF,EAAK4I,YAAY,YAAY/E,SAAS,KAAKgK,WAAW,QAAQ3N,KAAK,WAAY,IAInFgH,WAAY,WACV,MAAO3N,MAAKqG,SAAS,GAAGuH,UAG1BhD,cAAe,WACb,GAAIf,GAAO7J,IAEPA,MAAK2N,cACP3N,KAAKsG,YAAYyD,SAAS,YAC1B/J,KAAKuG,QAAQwD,SAAS,YAAYpD,KAAK,WAAY,MAE/C3G,KAAKuG,QAAQgF,SAAS,cACxBvL,KAAKsG,YAAY+I,YAAY,YAC7BrP,KAAKuG,QAAQ8I,YAAY,aAGU,IAAjCrP,KAAKuG,QAAQI,KAAK,aAAsB3G,KAAKqG,SAAS5D,KAAK,aAC7DzC,KAAKuG,QAAQ+N,WAAW,aAI5BtU,KAAKuG,QAAQmE,MAAM,WACjB,OAAQb,EAAK8D,gBAIjBe,SAAU,WACJ1O,KAAKqG,SAAS7D,GAAG,gBACnBxC,KAAKqG,SAAS5D,KAAK,WAAYzC,KAAKqG,SAASM,KAAK,aAClD3G,KAAKuG,QAAQI,KAAK,WAAY3G,KAAKqG,SAAS5D,KAAK,eAIrDoI,cAAe,WACb,GAAIhB,GAAO7J,KACPuU,EAAYtU,EAAEoM,SAElBrM,MAAKsG,YAAY2E,GAAG,sBAAuB,iBAAkB,SAAU/E,GACrEA,EAAEC,oBAGJoO,EAAU9R,KAAK,eAAe,GAE9BzC,KAAKuG,QAAQ0E,GAAG,QAAS,SAAU/E,GAC7B,OAAOxE,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQ+Q,EAAU9R,KAAK,iBACtDyD,EAAEE,iBACFmO,EAAU9R,KAAK,eAAe,MAIpCzC,KAAKsG,YAAY2E,GAAG,QAAS,WAC3BpB,EAAKyH,UACLzH,EAAKxD,SAAS4E,GAAG,kBAAmB,WAClC,GAAKpB,EAAKnH,QAAQuG,YAAeY,EAAKI,UAE/B,IAAKJ,EAAKI,SAAU,CACzB,GAAImD,GAAgBvD,EAAKG,MAAMH,EAAKxD,SAAS,GAAG+G,cAEhD,IAA6B,gBAAlBA,GAA4B,MAGvC,IAAI4E,GAASnI,EAAKpD,KAAK2H,GAAGhB,GAAe,GAAGqH,UAAY5K,EAAKU,WAAW,GAAGkK,SAC3EzC,GAASA,EAASnI,EAAKU,WAAW,GAAG2F,aAAa,EAAIrG,EAAK0F,SAASD,SAAS,EAC7EzF,EAAKU,WAAW,GAAG2H,UAAYF,OAT/BnI,GAAKrD,MAAMiE,KAAK,eAAeE,YAcrC3K,KAAKwG,MAAMyE,GAAG,QAAS,OAAQ,SAAU/E,GACvC,GAAI3D,GAAQtC,EAAED,MACV0U,EAAenS,EAAM+I,SAAS7I,KAAK,iBACnCkS,EAAY9K,EAAKxD,SAASO,MAC1BgO,EAAY/K,EAAKxD,SAAS6D,KAAK,gBAUnC,IAPIL,EAAKI,UACP/D,EAAEC,kBAGJD,EAAEE,kBAGGyD,EAAK8D,eAAiBpL,EAAM+I,SAASC,SAAS,YAAa,CAC9D,GAAIsJ,GAAWhL,EAAKxD,SAASoE,KAAK,UAC9BqK,EAAUD,EAASzG,GAAGsG,GACtBK,EAAQD,EAAQ5K,KAAK,YACrB8K,EAAYF,EAAQxJ,OAAO,YAC3B9B,EAAaK,EAAKnH,QAAQ8G,WAC1ByL,EAAgBD,EAAUvS,KAAK,gBAAiB,CAEpD,IAAKoH,EAAKI,UAUR,GAJA6K,EAAQ5K,KAAK,YAAa6K,GAC1BlL,EAAK4E,YAAYiG,GAAeK,GAChCxS,EAAM2S,OAEF1L,KAAe,GAASyL,KAAkB,EAAO,CACnD,GAAIE,GAAa3L,EAAaqL,EAAShC,OAAO,aAAa1O,OACvDiR,EAAgBH,EAAgBD,EAAUvK,KAAK,mBAAmBtG,MAEtE,IAAKqF,GAAc2L,GAAgBF,GAAiBG,EAClD,GAAI5L,GAA4B,GAAdA,EAChBqL,EAAS3K,KAAK,YAAY,GAC1B4K,EAAQ5K,KAAK,YAAY,GACzBL,EAAKrD,MAAMiE,KAAK,aAAa4E,YAAY,YACzCxF,EAAK4E,YAAYiG,GAAc,OAC1B,IAAIO,GAAkC,GAAjBA,EAAoB,CAC9CD,EAAUvK,KAAK,mBAAmBP,KAAK,YAAY,GACnD4K,EAAQ5K,KAAK,YAAY,EACzB,IAAImL,GAAa9S,EAAM+I,SAAS7I,KAAK,WACrCoH,GAAKrD,MAAMiE,KAAK,mBAAqB4K,EAAa,MAAMhG,YAAY,YACpExF,EAAK4E,YAAYiG,GAAc,OAC1B,CACL,GAAIY,GAAwD,kBAAhCzL,GAAKnH,QAAQmF,eACjCgC,EAAKnH,QAAQmF,eAAe2B,EAAYyL,GAAiBpL,EAAKnH,QAAQmF,eAC1E0N,EAASD,EAAc,GAAG9U,QAAQ,MAAOgJ,GACzCgM,EAAYF,EAAc,GAAG9U,QAAQ,MAAOyU,GAC5CQ,EAAUxV,EAAE,6BAGZqV,GAAc,KAChBC,EAASA,EAAO/U,QAAQ,QAAS8U,EAAc,GAAG9L,EAAa,EAAI,EAAI,IACvEgM,EAAYA,EAAUhV,QAAQ,QAAS8U,EAAc,GAAGL,EAAgB,EAAI,EAAI,KAGlFH,EAAQ5K,KAAK,YAAY,GAEzBL,EAAKrD,MAAM4N,OAAOqB,GAEdjM,GAAc2L,IAChBM,EAAQrB,OAAOnU,EAAE,QAAUsV,EAAS,WACpC1L,EAAKxD,SAAS6E,QAAQ,yBAGpB+J,GAAiBG,IACnBK,EAAQrB,OAAOnU,EAAE,QAAUuV,EAAY,WACvC3L,EAAKxD,SAAS6E,QAAQ,4BAGxBC,WAAW,WACTtB,EAAK4E,YAAYiG,GAAc,IAC9B,IAEHe,EAAQC,MAAM,KAAKC,QAAQ,IAAK,WAC9B1V,EAAED,MAAMmH,iBAzDhB0N,GAAS3K,KAAK,YAAY,GAC1B4K,EAAQ5K,KAAK,YAAY,GACzBL,EAAKrD,MAAMiE,KAAK,aAAa4E,YAAY,YACzCxF,EAAK4E,YAAYiG,GAAc,EA6D5B7K,GAAKI,SAECJ,EAAKnH,QAAQuG,YACtBY,EAAKW,WAAWG,QAFhBd,EAAKtD,QAAQoE,SAMVgK,GAAa9K,EAAKxD,SAASO,OAASiD,EAAKI,UAAc2K,GAAa/K,EAAKxD,SAAS6D,KAAK,mBAAqBL,EAAKI,YACpHJ,EAAKxD,SAASuP,SAEd/L,EAAKxD,SAAS6E,QAAQ,qBAAsBwJ,EAAcI,EAAQ5K,KAAK,YAAa6K,QAK1F/U,KAAKwG,MAAMyE,GAAG,QAAS,6DAA8D,SAAU/E,GACzFA,EAAE2P,eAAiB7V,OACrBkG,EAAEE,iBACFF,EAAEC,kBACE0D,EAAKnH,QAAQuG,aAAehJ,EAAEiG,EAAE4P,QAAQvK,SAAS,SACnD1B,EAAKW,WAAWG,QAEhBd,EAAKtD,QAAQoE,WAKnB3K,KAAKwG,MAAMyE,GAAG,QAAS,iCAAkC,SAAU/E,GACjEA,EAAEE,iBACFF,EAAEC,kBACE0D,EAAKnH,QAAQuG,WACfY,EAAKW,WAAWG,QAEhBd,EAAKtD,QAAQoE,UAIjB3K,KAAKwG,MAAMyE,GAAG,QAAS,wBAAyB,WAC9CpB,EAAKtD,QAAQmE,UAGf1K,KAAKwK,WAAWS,GAAG,QAAS,SAAU/E,GACpCA,EAAEC,oBAGJnG,KAAKwG,MAAMyE,GAAG,QAAS,eAAgB,SAAU/E,GAC3C2D,EAAKnH,QAAQuG,WACfY,EAAKW,WAAWG,QAEhBd,EAAKtD,QAAQoE,QAGfzE,EAAEE,iBACFF,EAAEC,kBAEElG,EAAED,MAAMuL,SAAS,iBACnB1B,EAAK7C,YAEL6C,EAAK5C,cAEP4C,EAAKxD,SAASuP,WAGhB5V,KAAKqG,SAASuP,OAAO,WACnB/L,EAAKhD,QAAO,MAIhBiE,mBAAoB,WAClB,GAAIjB,GAAO7J,KACP+V,EAAc9V,EAAE,+BAEpBD,MAAKsG,YAAY2E,GAAG,uDAAwD,WAC1EpB,EAAKU,WAAWE,KAAK,WAAW4E,YAAY,UACtCxF,EAAKW,WAAW5D,QACpBiD,EAAKW,WAAW5D,IAAI,IACpBiD,EAAKpD,KAAKuI,IAAI,cAAcK,YAAY,UAClC0G,EAAYzK,SAASnH,QAAQ4R,EAAY5O,UAE5C0C,EAAKI,UAAUJ,EAAKU,WAAWE,KAAK,aAAaV,SAAS,UAC/DoB,WAAW,WACTtB,EAAKW,WAAWG,SACf,MAGL3K,KAAKwK,WAAWS,GAAG,6EAA8E,SAAU/E,GACzGA,EAAEC,oBAGJnG,KAAKwK,WAAWS,GAAG,uBAAwB,WACzC,GAAIpB,EAAKW,WAAW5D,MAAO,CACzB,GAAIoP,GAAcnM,EAAKpD,KAAKuI,IAAI,cAAcK,YAAY,UAAU/E,SAAS,IAE3E0L,GADEnM,EAAKnH,QAAQyG,oBACD6M,EAAYhH,IAAI,KAAOnF,EAAKoM,eAAiB,IAAM/V,EAAgB2J,EAAKW,WAAW5D,OAAS,KAE5FoP,EAAYhH,IAAI,IAAMnF,EAAKoM,eAAiB,IAAMpM,EAAKW,WAAW5D,MAAQ,KAE1FoP,EAAY1K,SAASvB,SAAS,UAE9BF,EAAKpD,KAAKoM,OAAO,oBAAoBtS,KAAK,WACxC,GAAIgC,GAAQtC,EAAED,MACV2M,EAAWpK,EAAME,KAAK,WAEoE,KAA1FoH,EAAKpD,KAAKoM,OAAO,kBAAoBlG,EAAW,KAAKqC,IAAIzM,GAAOyM,IAAI,WAAW7K,SACjF5B,EAAMwH,SAAS,UACfF,EAAKpD,KAAKoM,OAAO,kBAAoBlG,EAAW,QAAQ5C,SAAS,YAIrE,IAAImM,GAAcrM,EAAKpD,KAAKuI,IAAI,UAGhCkH,GAAY3V,KAAK,SAAU0E,GACzB,GAAI1C,GAAQtC,EAAED,KAEVuC,GAAMgJ,SAAS,aACjBhJ,EAAM0C,UAAYiR,EAAY9H,GAAG,GAAGnJ,SACpC1C,EAAM0C,UAAYiR,EAAY3C,OAAOtO,SACrCiR,EAAY9H,GAAGnJ,EAAQ,GAAGsG,SAAS,aACnChJ,EAAMwH,SAAS,YAIdF,EAAKpD,KAAKuI,IAAI,wBAAwB7K,OAM9B4R,EAAYzK,SAASnH,QAChC4R,EAAY5O,UANN4O,EAAYzK,SAASnH,QACzB4R,EAAY5O,SAEd4O,EAAYrV,KAAKmJ,EAAKnH,QAAQ+E,gBAAgBjH,QAAQ,MAAO,IAAMC,EAAWoJ,EAAKW,WAAW5D,OAAS,MAAMQ,OAC7GyC,EAAKU,WAAW6J,OAAO2B,QAMzBlM,GAAKpD,KAAKuI,IAAI,cAAcK,YAAY,UAClC0G,EAAYzK,SAASnH,QACzB4R,EAAY5O,QAIhB0C,GAAKpD,KAAKoM,OAAO,WAAWxD,YAAY,UACxCxF,EAAKpD,KAAKuI,IAAI,uCAAuCZ,GAAG,GAAGrE,SAAS,UAAUO,SAAS,KAAKK,QAC5F1K,EAAED,MAAM2K,WAIZsL,aAAc,WACZ,GAAI3N,GAAQ,WACZ,QAAQtI,KAAK0C,QAAQ0G,iBACnB,IAAK,SACL,IAAK,aACHd,EAAQ,SACR,MACF,KAAK,YAKP,MAAOA,IAGT1B,IAAK,SAAUvE,GACb,MAAqB,mBAAVA,IACTrC,KAAKqG,SAASO,IAAIvE,GAClBrC,KAAK6G,SAEE7G,KAAKqG,UAELrG,KAAKqG,SAASO,OAIzBI,UAAW,WACThH,KAAKqO,UACLrO,KAAKqG,SAASoE,KAAK,kBAAkBuE,IAAI,iCAAiC9E,KAAK,YAAY,GAC3FlK,KAAKyG,KAAKuI,IAAI,kDAAkDjF,SAAS,YACzE/J,KAAK6G,QAAO,IAGdI,YAAa,WACXjH,KAAKqO,UACLrO,KAAKqG,SAASoE,KAAK,kBAAkBuE,IAAI,iCAAiC9E,KAAK,YAAY,GAC3FlK,KAAKyG,KAAKuI,IAAI,kDAAkDK,YAAY,YAC5ErP,KAAK6G,QAAO,IAGdsP,QAAS,SAAUjQ,GACjB,GAEIkQ,GAEAnR,EACAoR,EACAC,EACA/C,EACAgD,EACAC,EACA5B,EACA6B,EAXAlU,EAAQtC,EAAED,MACV0W,EAAUnU,EAAMC,GAAG,SAAWD,EAAM+I,SAASA,SAAW/I,EAAM+I,SAE9DzB,EAAO6M,EAAQjU,KAAK,QASpBkU,EAAW,uDACXC,GACEC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IA2CX,IAxCI/P,EAAKnH,QAAQuG,aAAYyN,EAAUnU,EAAM+I,SAASA,UAElDzB,EAAKnH,QAAQgG,YAAWgO,EAAU7M,EAAKrD,OAE3C4P,EAASnW,EAAE,mBAAoByW,GAE/BD,EAAW5M,EAAKrD,MAAM8E,SAASC,SAAS,SAEnCkL,IAAavQ,EAAEsO,SAAW,IAAMtO,EAAEsO,SAAW,IAAM1S,MAAM0S,SAAW,IAAM1S,MAAM0S,SAAW,MACzF3K,EAAKnH,QAAQgG,UAKhBmB,EAAKvD,YAAY4E,QAAQ,UAJzBrB,EAAKyH,UACLzH,EAAKrD,MAAM8E,SAASvB,SAAS,QAC7B0M,GAAW,GAIb5M,EAAKW,WAAWG,SAGdd,EAAKnH,QAAQuG,aACX,WAAWvH,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQiT,GAAkD,IAAtC5M,EAAKrD,MAAMiE,KAAK,WAAWtG,SACpF+B,EAAEE,iBACFyD,EAAKrD,MAAM8E,SAAS+D,YAAY,QAC5BxF,EAAKnH,QAAQgG,WAAWmB,EAAKvD,YAAY+I,YAAY,QACzDxF,EAAKtD,QAAQoE,SAGfyL,EAASnW,EAAE,qEAAsEyW,GAC5EnU,EAAMqE,OAAU,UAAUlF,KAAKwE,EAAEsO,QAAQhR,SAAS,MACb,IAApC4S,EAAOvD,OAAO,WAAW1O,SAC3BiS,EAASvM,EAAKvD,YAAYmE,KAAK,MAE7B2L,EADEvM,EAAKnH,QAAQyG,oBACNiN,EAAOvD,OAAO,KAAOhJ,EAAKoM,eAAiB,IAAM/V,EAAgB0W,EAAW1Q,EAAEsO,UAAY,KAE1F4B,EAAOvD,OAAO,IAAMhJ,EAAKoM,eAAiB,IAAMW,EAAW1Q,EAAEsO,SAAW,OAMpF4B,EAAOjS,OAAZ,CAEA,GAAI,UAAUzC,KAAKwE,EAAEsO,QAAQhR,SAAS,KACpCyB,EAAQmR,EAAOnR,MAAMmR,EAAOvD,OAAO,WACnCyD,EAAQF,EAAO9K,OAAOqL,GAAUL,QAAQ7T,KAAK,iBAC7C8Q,EAAO6C,EAAO9K,OAAOqL,GAAUpD,OAAO9Q,KAAK,iBAC3C4T,EAAOD,EAAOhI,GAAGnJ,GAAOqG,SAASuO,QAAQlD,GAAUvI,GAAG,GAAG3L,KAAK,iBAC9D8T,EAAOH,EAAOhI,GAAGnJ,GAAOqG,SAASwO,QAAQnD,GAAUvI,GAAG,GAAG3L,KAAK,iBAC9D+T,EAAWJ,EAAOhI,GAAGiI,GAAM/K,SAASwO,QAAQnD,GAAUvI,GAAG,GAAG3L,KAAK,iBAE7DoH,EAAKnH,QAAQuG,aACfmN,EAAO7V,KAAK,SAAUoC,GACf1C,EAAED,MAAMuL,SAAS,aACpBtL,EAAED,MAAMyC,KAAK,QAASE,KAG1BsC,EAAQmR,EAAOnR,MAAMmR,EAAOvD,OAAO,YACnCyD,EAAQF,EAAOE,QAAQ7T,KAAK,SAC5B8Q,EAAO6C,EAAO7C,OAAO9Q,KAAK,SAC1B4T,EAAOD,EAAOhI,GAAGnJ,GAAO4U,UAAUzL,GAAG,GAAG3L,KAAK,SAC7C8T,EAAOH,EAAOhI,GAAGnJ,GAAO6U,UAAU1L,GAAG,GAAG3L,KAAK,SAC7C+T,EAAWJ,EAAOhI,GAAGiI,GAAMyD,UAAU1L,GAAG,GAAG3L,KAAK,UAGlDmS,EAAYrS,EAAME,KAAK,aAEN,IAAbyD,EAAEsO,SACA3K,EAAKnH,QAAQuG,aAAYhE,GAAS,GAClCA,GAASuR,GAAYvR,EAAQsR,IAAMtR,EAAQsR,GACnCD,EAARrR,IAAeA,EAAQqR,GACvBrR,GAAS2P,IAAW3P,EAAQsO,IACV,IAAbrN,EAAEsO,UACP3K,EAAKnH,QAAQuG,aAAYhE,GAAS,GACzB,IAATA,IAAaA,EAAQ,GACrBA,GAASuR,GAAoBH,EAARpR,IAAcA,EAAQoR,GAC3CpR,EAAQsO,IAAMtO,EAAQsO,GACtBtO,GAAS2P,IAAW3P,EAAQqR,IAGlC/T,EAAME,KAAK,YAAawC,GAEnB4E,EAAKnH,QAAQuG,YAGhB/C,EAAEE,iBACG7D,EAAMgJ,SAAS,qBAClB6K,EAAO/G,YAAY,UAAUjB,GAAGnJ,GAAO8E,SAAS,UAAUO,SAAS,KAAKK,QACxEpI,EAAMoI,UALRyL,EAAOhI,GAAGnJ,GAAO0F,YASd,KAAKpI,EAAMC,GAAG,SAAU,CAC7B,GACIuX,GACAC,EAFAC,IAIJ7D,GAAO7V,KAAK,WACLN,EAAED,MAAMsL,SAASC,SAAS,aACzBtL,EAAEiP,KAAKjP,EAAED,MAAMG,OAAO+Z,eAAeC,UAAU,EAAG,IAAMvD,EAAW1Q,EAAEsO,UACvEyF,EAAS3U,KAAKrF,EAAED,MAAMsL,SAASrG,WAKrC8U,EAAQ9Z,EAAEoM,UAAU5J,KAAK,YACzBsX,IACA9Z,EAAEoM,UAAU5J,KAAK,WAAYsX,GAE7BC,EAAU/Z,EAAEiP,KAAKjP,EAAE,UAAUE,OAAO+Z,eAAeC,UAAU,EAAG,GAE5DH,GAAWpD,EAAW1Q,EAAEsO,UAC1BuF,EAAQ,EACR9Z,EAAEoM,UAAU5J,KAAK,WAAYsX,IACpBA,GAASE,EAAS9V,SAC3BlE,EAAEoM,UAAU5J,KAAK,WAAY,GACzBsX,EAAQE,EAAS9V,SAAQ4V,EAAQ,IAGvC3D,EAAOhI,GAAG6L,EAASF,EAAQ,IAAIpP,QAIjC,IAAK,UAAUjJ,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAS,QAAQ9B,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQqG,EAAKnH,QAAQgH,cAAiB+M,EAAU,CAE9H,GADK,OAAO/U,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAM0C,EAAEE,iBACvCyD,EAAKnH,QAAQuG,WASN,OAAOvH,KAAKwE,EAAEsO,QAAQhR,SAAS,OACzCqG,EAAKrD,MAAMiE,KAAK,aAAaC,QAC7BnI,EAAMoI,aAXsB,CAC5B,GAAIyP,GAAOna,EAAE,SACbma,GAAK1P,QAEL0P,EAAKzP,QAELzE,EAAEE,iBAEFnG,EAAEoM,UAAU5J,KAAK,eAAe,GAKlCxC,EAAEoM,UAAU5J,KAAK,WAAY,IAG1B,WAAWf,KAAKwE,EAAEsO,QAAQhR,SAAS,MAAQiT,IAAa5M,EAAKI,UAAYJ,EAAKnH,QAAQuG,aAAiB,OAAOvH,KAAKwE,EAAEsO,QAAQhR,SAAS,OAASiT,KAClJ5M,EAAKrD,MAAM8E,SAAS+D,YAAY,QAC5BxF,EAAKnH,QAAQgG,WAAWmB,EAAKvD,YAAY+I,YAAY,QACzDxF,EAAKtD,QAAQoE,WAIjBlB,OAAQ,WACNzJ,KAAKqG,SAAS0D,SAAS,iBAAiB4J,SAAS3T,KAAKsG,aAClDtG,KAAK0C,QAAQgG,WAAW1I,KAAKwG,MAAMa,QAGzCP,QAAS,WACP9G,KAAKyG,KAAO,KACZzG,KAAKgM,WACLhM,KAAK6G,SACL7G,KAAK4K,gBACL5K,KAAKsP,UAAS,GACdtP,KAAK+G,WACL/G,KAAK+K,WACD/K,KAAKyG,MAAMzG,KAAKwK,WAAWU,QAAQ,kBAEvClL,KAAKqG,SAAS6E,QAAQ,wBAGxB7D,KAAM,WACJrH,KAAKsG,YAAYe,QAGnBD,KAAM,WACJpH,KAAKsG,YAAYc,QAGnBD,OAAQ,WACNnH,KAAKsG,YAAYa,SACjBnH,KAAKqG,SAASc,UAmDlB,IAAIkT,GAAMpa,EAAEgD,GAAGC,YACfjD,GAAEgD,GAAGC,aAAetB,EACpB3B,EAAEgD,GAAGC,aAAaoX,YAAcvX,EAIhC9C,EAAEgD,GAAGC,aAAaqX,WAAa,WAE7B,MADAta,GAAEgD,GAAGC,aAAemX,EACbra,MAGTC,EAAEoM,UACG5J,KAAK,WAAY,GACjBwI,GAAG,UAAW,iGAAkGlI,EAAaO,UAAU6S,SACvIlL,GAAG,gBAAiB,iGAAkG,SAAU/E,GAC/HA,EAAEC,oBAKRlG,EAAE2R,QAAQ3G,GAAG,0BAA2B,WACtChL,EAAE,iBAAiBM,KAAK,WACtB,GAAIia,GAAgBva,EAAED,KACtB4B,GAAOqC,KAAKuW,EAAeA,EAAc/X,aAG5C1C"}
0 2 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/bootstrap-select.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 + (function ($) {
  25 + 'use strict';
  26 +
  27 + //<editor-fold desc="Shims">
  28 + if (!String.prototype.includes) {
  29 + (function () {
  30 + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
  31 + var toString = {}.toString;
  32 + var defineProperty = (function () {
  33 + // IE 8 only supports `Object.defineProperty` on DOM elements
  34 + try {
  35 + var object = {};
  36 + var $defineProperty = Object.defineProperty;
  37 + var result = $defineProperty(object, object, object) && $defineProperty;
  38 + } catch (error) {
  39 + }
  40 + return result;
  41 + }());
  42 + var indexOf = ''.indexOf;
  43 + var includes = function (search) {
  44 + if (this == null) {
  45 + throw TypeError();
  46 + }
  47 + var string = String(this);
  48 + if (search && toString.call(search) == '[object RegExp]') {
  49 + throw TypeError();
  50 + }
  51 + var stringLength = string.length;
  52 + var searchString = String(search);
  53 + var searchLength = searchString.length;
  54 + var position = arguments.length > 1 ? arguments[1] : undefined;
  55 + // `ToInteger`
  56 + var pos = position ? Number(position) : 0;
  57 + if (pos != pos) { // better `isNaN`
  58 + pos = 0;
  59 + }
  60 + var start = Math.min(Math.max(pos, 0), stringLength);
  61 + // Avoid the `indexOf` call if no match is possible
  62 + if (searchLength + start > stringLength) {
  63 + return false;
  64 + }
  65 + return indexOf.call(string, searchString, pos) != -1;
  66 + };
  67 + if (defineProperty) {
  68 + defineProperty(String.prototype, 'includes', {
  69 + 'value': includes,
  70 + 'configurable': true,
  71 + 'writable': true
  72 + });
  73 + } else {
  74 + String.prototype.includes = includes;
  75 + }
  76 + }());
  77 + }
  78 +
  79 + if (!String.prototype.startsWith) {
  80 + (function () {
  81 + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
  82 + var defineProperty = (function () {
  83 + // IE 8 only supports `Object.defineProperty` on DOM elements
  84 + try {
  85 + var object = {};
  86 + var $defineProperty = Object.defineProperty;
  87 + var result = $defineProperty(object, object, object) && $defineProperty;
  88 + } catch (error) {
  89 + }
  90 + return result;
  91 + }());
  92 + var toString = {}.toString;
  93 + var startsWith = function (search) {
  94 + if (this == null) {
  95 + throw TypeError();
  96 + }
  97 + var string = String(this);
  98 + if (search && toString.call(search) == '[object RegExp]') {
  99 + throw TypeError();
  100 + }
  101 + var stringLength = string.length;
  102 + var searchString = String(search);
  103 + var searchLength = searchString.length;
  104 + var position = arguments.length > 1 ? arguments[1] : undefined;
  105 + // `ToInteger`
  106 + var pos = position ? Number(position) : 0;
  107 + if (pos != pos) { // better `isNaN`
  108 + pos = 0;
  109 + }
  110 + var start = Math.min(Math.max(pos, 0), stringLength);
  111 + // Avoid the `indexOf` call if no match is possible
  112 + if (searchLength + start > stringLength) {
  113 + return false;
  114 + }
  115 + var index = -1;
  116 + while (++index < searchLength) {
  117 + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
  118 + return false;
  119 + }
  120 + }
  121 + return true;
  122 + };
  123 + if (defineProperty) {
  124 + defineProperty(String.prototype, 'startsWith', {
  125 + 'value': startsWith,
  126 + 'configurable': true,
  127 + 'writable': true
  128 + });
  129 + } else {
  130 + String.prototype.startsWith = startsWith;
  131 + }
  132 + }());
  133 + }
  134 +
  135 + if (!Object.keys) {
  136 + Object.keys = function (
  137 + o, // object
  138 + k, // key
  139 + r // result array
  140 + ){
  141 + // initialize object and result
  142 + r=[];
  143 + // iterate over object keys
  144 + for (k in o)
  145 + // fill result array with non-prototypical keys
  146 + r.hasOwnProperty.call(o, k) && r.push(k);
  147 + // return result
  148 + return r
  149 + };
  150 + }
  151 + //</editor-fold>
  152 +
  153 + // Case insensitive contains search
  154 + $.expr[':'].icontains = function (obj, index, meta) {
  155 + var $obj = $(obj);
  156 + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
  157 + return haystack.includes(meta[3].toUpperCase());
  158 + };
  159 +
  160 + // Case insensitive begins search
  161 + $.expr[':'].ibegins = function (obj, index, meta) {
  162 + var $obj = $(obj);
  163 + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
  164 + return haystack.startsWith(meta[3].toUpperCase());
  165 + };
  166 +
  167 + // Case and accent insensitive contains search
  168 + $.expr[':'].aicontains = function (obj, index, meta) {
  169 + var $obj = $(obj);
  170 + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
  171 + return haystack.includes(meta[3].toUpperCase());
  172 + };
  173 +
  174 + // Case and accent insensitive begins search
  175 + $.expr[':'].aibegins = function (obj, index, meta) {
  176 + var $obj = $(obj);
  177 + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
  178 + return haystack.startsWith(meta[3].toUpperCase());
  179 + };
  180 +
  181 + /**
  182 + * Remove all diatrics from the given text.
  183 + * @access private
  184 + * @param {String} text
  185 + * @returns {String}
  186 + */
  187 + function normalizeToBase(text) {
  188 + var rExps = [
  189 + {re: /[\xC0-\xC6]/g, ch: "A"},
  190 + {re: /[\xE0-\xE6]/g, ch: "a"},
  191 + {re: /[\xC8-\xCB]/g, ch: "E"},
  192 + {re: /[\xE8-\xEB]/g, ch: "e"},
  193 + {re: /[\xCC-\xCF]/g, ch: "I"},
  194 + {re: /[\xEC-\xEF]/g, ch: "i"},
  195 + {re: /[\xD2-\xD6]/g, ch: "O"},
  196 + {re: /[\xF2-\xF6]/g, ch: "o"},
  197 + {re: /[\xD9-\xDC]/g, ch: "U"},
  198 + {re: /[\xF9-\xFC]/g, ch: "u"},
  199 + {re: /[\xC7-\xE7]/g, ch: "c"},
  200 + {re: /[\xD1]/g, ch: "N"},
  201 + {re: /[\xF1]/g, ch: "n"}
  202 + ];
  203 + $.each(rExps, function () {
  204 + text = text.replace(this.re, this.ch);
  205 + });
  206 + return text;
  207 + }
  208 +
  209 +
  210 + function htmlEscape(html) {
  211 + var escapeMap = {
  212 + '&': '&amp;',
  213 + '<': '&lt;',
  214 + '>': '&gt;',
  215 + '"': '&quot;',
  216 + "'": '&#x27;',
  217 + '`': '&#x60;'
  218 + };
  219 + var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
  220 + testRegexp = new RegExp(source),
  221 + replaceRegexp = new RegExp(source, 'g'),
  222 + string = html == null ? '' : '' + html;
  223 + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
  224 + return escapeMap[match];
  225 + }) : string;
  226 + }
  227 +
  228 + var Selectpicker = function (element, options, e) {
  229 + if (e) {
  230 + e.stopPropagation();
  231 + e.preventDefault();
  232 + }
  233 +
  234 + this.$element = $(element);
  235 + this.$newElement = null;
  236 + this.$button = null;
  237 + this.$menu = null;
  238 + this.$lis = null;
  239 + this.options = options;
  240 +
  241 + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
  242 + // data-attribute)
  243 + if (this.options.title === null) {
  244 + this.options.title = this.$element.attr('title');
  245 + }
  246 +
  247 + //Expose public methods
  248 + this.val = Selectpicker.prototype.val;
  249 + this.render = Selectpicker.prototype.render;
  250 + this.refresh = Selectpicker.prototype.refresh;
  251 + this.setStyle = Selectpicker.prototype.setStyle;
  252 + this.selectAll = Selectpicker.prototype.selectAll;
  253 + this.deselectAll = Selectpicker.prototype.deselectAll;
  254 + this.destroy = Selectpicker.prototype.remove;
  255 + this.remove = Selectpicker.prototype.remove;
  256 + this.show = Selectpicker.prototype.show;
  257 + this.hide = Selectpicker.prototype.hide;
  258 +
  259 + this.init();
  260 + };
  261 +
  262 + Selectpicker.VERSION = '1.7.2';
  263 +
  264 + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
  265 + Selectpicker.DEFAULTS = {
  266 + noneSelectedText: ' ',
  267 + noneResultsText: '没有搜索到{0}',
  268 + countSelectedText: function (numSelected, numTotal) {
  269 + return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
  270 + },
  271 + maxOptionsText: function (numAll, numGroup) {
  272 + return [
  273 + (numAll == 1) ? '最多可以选择{n}项' : '最多可以选择{n}项',
  274 + (numGroup == 1) ? '最多可以选择{n}项' : '最多可以选择{n}项'
  275 + ];
  276 + },
  277 + selectAllText: 'Select All',
  278 + deselectAllText: 'Deselect All',
  279 + doneButton: false,
  280 + doneButtonText: 'Close',
  281 + multipleSeparator: ', ',
  282 + styleBase: 'btn',
  283 + style: 'btn-default',
  284 + size: 'auto',
  285 + title: null,
  286 + selectedTextFormat: 'values',
  287 + width: false,
  288 + container: false,
  289 + hideDisabled: false,
  290 + showSubtext: false,
  291 + showIcon: true,
  292 + showContent: true,
  293 + dropupAuto: true,
  294 + header: false,
  295 + liveSearch: false,
  296 + liveSearchPlaceholder: null,
  297 + liveSearchNormalize: false,
  298 + liveSearchStyle: 'contains',
  299 + actionsBox: false,
  300 + iconBase: 'glyphicon',
  301 + tickIcon: 'glyphicon-ok',
  302 + maxOptions: false,
  303 + mobile: false,
  304 + selectOnTab: false,
  305 + dropdownAlignRight: false
  306 + };
  307 +
  308 + Selectpicker.prototype = {
  309 +
  310 + constructor: Selectpicker,
  311 +
  312 + init: function () {
  313 + var that = this,
  314 + id = this.$element.attr('id');
  315 +
  316 + this.$element.addClass('bs-select-hidden');
  317 + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
  318 + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
  319 + this.liObj = {};
  320 + this.multiple = this.$element.prop('multiple');
  321 + this.autofocus = this.$element.prop('autofocus');
  322 + this.$newElement = this.createView();
  323 + this.$element.after(this.$newElement);
  324 + this.$button = this.$newElement.children('button');
  325 + this.$menu = this.$newElement.children('.dropdown-menu');
  326 + this.$menuInner = this.$menu.children('.inner');
  327 + this.$searchbox = this.$menu.find('input');
  328 +
  329 + if (this.options.dropdownAlignRight)
  330 + this.$menu.addClass('dropdown-menu-right');
  331 +
  332 + if (typeof id !== 'undefined') {
  333 + this.$button.attr('data-id', id);
  334 + $('label[for="' + id + '"]').click(function (e) {
  335 + e.preventDefault();
  336 + that.$button.focus();
  337 + });
  338 + }
  339 +
  340 + this.checkDisabled();
  341 + this.clickListener();
  342 + if (this.options.liveSearch) this.liveSearchListener();
  343 + this.render();
  344 + this.setStyle();
  345 + this.setWidth();
  346 + if (this.options.container) this.selectPosition();
  347 + this.$menu.data('this', this);
  348 + this.$newElement.data('this', this);
  349 + if (this.options.mobile) this.mobile();
  350 +
  351 + this.$newElement.on('hide.bs.dropdown', function (e) {
  352 + that.$element.trigger('hide.bs.select', e);
  353 + });
  354 +
  355 + this.$newElement.on('hidden.bs.dropdown', function (e) {
  356 + that.$element.trigger('hidden.bs.select', e);
  357 + });
  358 +
  359 + this.$newElement.on('show.bs.dropdown', function (e) {
  360 + that.$element.trigger('show.bs.select', e);
  361 + });
  362 +
  363 + this.$newElement.on('shown.bs.dropdown', function (e) {
  364 + that.$element.trigger('shown.bs.select', e);
  365 + });
  366 +
  367 + setTimeout(function () {
  368 + that.$element.trigger('loaded.bs.select');
  369 + });
  370 + },
  371 +
  372 + createDropdown: function () {
  373 + // Options
  374 + // If we are multiple, then add the show-tick class by default
  375 + var multiple = this.multiple ? ' show-tick' : '',
  376 + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
  377 + autofocus = this.autofocus ? ' autofocus' : '';
  378 + // Elements
  379 + var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + '</div>' : '';
  380 + var searchbox = this.options.liveSearch ?
  381 + '<div class="bs-searchbox">' +
  382 + '<input type="text" class="form-control" autocomplete="off"' +
  383 + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' +
  384 + '</div>'
  385 + : '';
  386 + var actionsbox = this.multiple && this.options.actionsBox ?
  387 + '<div class="bs-actionsbox">' +
  388 + '<div class="btn-group btn-group-sm btn-block">' +
  389 + '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
  390 + this.options.selectAllText +
  391 + '</button>' +
  392 + '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
  393 + this.options.deselectAllText +
  394 + '</button>' +
  395 + '</div>' +
  396 + '</div>'
  397 + : '';
  398 + var donebutton = this.multiple && this.options.doneButton ?
  399 + '<div class="bs-donebutton">' +
  400 + '<div class="btn-group btn-block">' +
  401 + '<button type="button" class="btn btn-sm btn-default">' +
  402 + this.options.doneButtonText +
  403 + '</button>' +
  404 + '</div>' +
  405 + '</div>'
  406 + : '';
  407 + var drop =
  408 + '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
  409 + '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
  410 + '<span class="filter-option pull-left"></span>&nbsp;' +
  411 + '<span class="caret"></span>' +
  412 + '</button>' +
  413 + '<div class="dropdown-menu open">' +
  414 + header +
  415 + searchbox +
  416 + actionsbox +
  417 + '<ul class="dropdown-menu inner" role="menu">' +
  418 + '</ul>' +
  419 + donebutton +
  420 + '</div>' +
  421 + '</div>';
  422 +
  423 + return $(drop);
  424 + },
  425 +
  426 + createView: function () {
  427 + var $drop = this.createDropdown(),
  428 + li = this.createLi();
  429 +
  430 + $drop.find('ul')[0].innerHTML = li;
  431 + return $drop;
  432 + },
  433 +
  434 + reloadLi: function () {
  435 + //Remove all children.
  436 + this.destroyLi();
  437 + //Re build
  438 + var li = this.createLi();
  439 + this.$menuInner[0].innerHTML = li;
  440 + },
  441 +
  442 + destroyLi: function () {
  443 + this.$menu.find('li').remove();
  444 + },
  445 +
  446 + createLi: function () {
  447 + var that = this,
  448 + _li = [],
  449 + optID = 0,
  450 + titleOption = document.createElement('option'),
  451 + liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
  452 +
  453 + // Helper functions
  454 + /**
  455 + * @param content
  456 + * @param [index]
  457 + * @param [classes]
  458 + * @param [optgroup]
  459 + * @returns {string}
  460 + */
  461 + var generateLI = function (content, index, classes, optgroup) {
  462 + return '<li' +
  463 + ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
  464 + ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
  465 + ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
  466 + '>' + content + '</li>';
  467 + };
  468 +
  469 + /**
  470 + * @param text
  471 + * @param [classes]
  472 + * @param [inline]
  473 + * @param [tokens]
  474 + * @returns {string}
  475 + */
  476 + var generateA = function (text, classes, inline, tokens) {
  477 + return '<a tabindex="0"' +
  478 + (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
  479 + (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
  480 + (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
  481 + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
  482 + '>' + text +
  483 + '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
  484 + '</a>';
  485 + };
  486 +
  487 + if (this.options.title && !this.multiple) {
  488 + // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
  489 + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
  490 + liIndex--;
  491 +
  492 + if (!this.$element.find('.bs-title-option').length) {
  493 + // Use native JS to prepend option (faster)
  494 + var element = this.$element[0];
  495 + titleOption.className = 'bs-title-option';
  496 + titleOption.appendChild(document.createTextNode(this.options.title));
  497 + titleOption.value = '';
  498 + element.insertBefore(titleOption, element.firstChild);
  499 + // Check if selected attribute is already set on an option. If not, select the titleOption option.
  500 + if (element.options[element.selectedIndex].getAttribute('selected') === null) titleOption.selected = true;
  501 + }
  502 + }
  503 +
  504 + this.$element.find('option').each(function (index) {
  505 + var $this = $(this);
  506 +
  507 + liIndex++;
  508 +
  509 + if ($this.hasClass('bs-title-option')) return;
  510 +
  511 + // Get the class and text for the option
  512 + var optionClass = this.className || '',
  513 + inline = this.style.cssText,
  514 + text = $this.data('content') ? $this.data('content') : $this.html(),
  515 + tokens = $this.data('tokens') ? $this.data('tokens') : null,
  516 + subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
  517 + icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
  518 + isDisabled = this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled;
  519 +
  520 + if (icon !== '' && isDisabled) {
  521 + icon = '<span>' + icon + '</span>';
  522 + }
  523 +
  524 + if (that.options.hideDisabled && isDisabled) {
  525 + liIndex--;
  526 + return;
  527 + }
  528 +
  529 + if (!$this.data('content')) {
  530 + // Prepend any icon and append any subtext to the main text.
  531 + text = icon + '<span class="text">' + text + subtext + '</span>';
  532 + }
  533 +
  534 + if (this.parentElement.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
  535 + if ($this.index() === 0) { // Is it the first option of the optgroup?
  536 + optID += 1;
  537 +
  538 + // Get the opt group label
  539 + var label = this.parentElement.label,
  540 + labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
  541 + labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '',
  542 + optGroupClass = ' ' + this.parentElement.className || '';
  543 +
  544 + label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
  545 +
  546 + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
  547 + liIndex++;
  548 + _li.push(generateLI('', null, 'divider', optID + 'div'));
  549 + }
  550 + liIndex++;
  551 + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
  552 + }
  553 + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
  554 + } else if ($this.data('divider') === true) {
  555 + _li.push(generateLI('', index, 'divider'));
  556 + } else if ($this.data('hidden') === true) {
  557 + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
  558 + } else {
  559 + if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
  560 + liIndex++;
  561 + _li.push(generateLI('', null, 'divider', optID + 'div'));
  562 + }
  563 + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
  564 + }
  565 +
  566 + that.liObj[index] = liIndex;
  567 + });
  568 +
  569 + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
  570 + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
  571 + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
  572 + }
  573 +
  574 + return _li.join('');
  575 + },
  576 +
  577 + findLis: function () {
  578 + if (this.$lis == null) this.$lis = this.$menu.find('li');
  579 + return this.$lis;
  580 + },
  581 +
  582 + /**
  583 + * @param [updateLi] defaults to true
  584 + */
  585 + render: function (updateLi) {
  586 + var that = this,
  587 + notDisabled;
  588 +
  589 + //Update the LI to match the SELECT
  590 + if (updateLi !== false) {
  591 + this.$element.find('option').each(function (index) {
  592 + var $lis = that.findLis().eq(that.liObj[index]);
  593 +
  594 + that.setDisabled(index, this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled, $lis);
  595 + that.setSelected(index, this.selected, $lis);
  596 + });
  597 + }
  598 +
  599 + this.tabIndex();
  600 +
  601 + var selectedItems = this.$element.find('option').map(function () {
  602 + if (this.selected) {
  603 + if (that.options.hideDisabled && (this.disabled || this.parentElement.tagName === 'OPTGROUP' && this.parentElement.disabled)) return false;
  604 +
  605 + var $this = $(this),
  606 + icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
  607 + subtext;
  608 +
  609 + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
  610 + subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
  611 + } else {
  612 + subtext = '';
  613 + }
  614 + if (typeof $this.attr('title') !== 'undefined') {
  615 + return $this.attr('title');
  616 + } else if ($this.data('content') && that.options.showContent) {
  617 + return $this.data('content');
  618 + } else {
  619 + return icon + $this.html() + subtext;
  620 + }
  621 + }
  622 + }).toArray();
  623 +
  624 + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
  625 + //Convert all the values into a comma delimited string
  626 + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
  627 +
  628 + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
  629 + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
  630 + var max = this.options.selectedTextFormat.split('>');
  631 + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
  632 + notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
  633 + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
  634 + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
  635 + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
  636 + }
  637 + }
  638 +
  639 + if (this.options.title == undefined) {
  640 + this.options.title = this.$element.attr('title');
  641 + }
  642 +
  643 + if (this.options.selectedTextFormat == 'static') {
  644 + title = this.options.title;
  645 + }
  646 +
  647 + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
  648 + if (!title) {
  649 + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
  650 + }
  651 +
  652 + //strip all html-tags and trim the result
  653 + this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
  654 + this.$button.children('.filter-option').html(title);
  655 +
  656 + this.$element.trigger('rendered.bs.select');
  657 + },
  658 +
  659 + /**
  660 + * @param [style]
  661 + * @param [status]
  662 + */
  663 + setStyle: function (style, status) {
  664 + if (this.$element.attr('class')) {
  665 + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
  666 + }
  667 +
  668 + var buttonClass = style ? style : this.options.style;
  669 +
  670 + if (status == 'add') {
  671 + this.$button.addClass(buttonClass);
  672 + } else if (status == 'remove') {
  673 + this.$button.removeClass(buttonClass);
  674 + } else {
  675 + this.$button.removeClass(this.options.style);
  676 + this.$button.addClass(buttonClass);
  677 + }
  678 + },
  679 +
  680 + liHeight: function (refresh) {
  681 + if (!refresh && (this.options.size === false || this.sizeInfo)) return;
  682 +
  683 + var newElement = document.createElement('div'),
  684 + menu = document.createElement('div'),
  685 + menuInner = document.createElement('ul'),
  686 + divider = document.createElement('li'),
  687 + li = document.createElement('li'),
  688 + a = document.createElement('a'),
  689 + text = document.createElement('span'),
  690 + header = this.options.header ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
  691 + search = this.options.liveSearch ? document.createElement('div') : null,
  692 + actions = this.options.actionsBox && this.multiple ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
  693 + doneButton = this.options.doneButton && this.multiple ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
  694 +
  695 + text.className = 'text';
  696 + newElement.className = this.$menu[0].parentNode.className + ' open';
  697 + menu.className = 'dropdown-menu open';
  698 + menuInner.className = 'dropdown-menu inner';
  699 + divider.className = 'divider';
  700 +
  701 + text.appendChild(document.createTextNode('Inner text'));
  702 + a.appendChild(text);
  703 + li.appendChild(a);
  704 + menuInner.appendChild(li);
  705 + menuInner.appendChild(divider);
  706 + if (header) menu.appendChild(header);
  707 + if (search) {
  708 + // create a span instead of input as creating an input element is slower
  709 + var input = document.createElement('span');
  710 + search.className = 'bs-searchbox';
  711 + input.className = 'form-control';
  712 + search.appendChild(input);
  713 + menu.appendChild(search);
  714 + }
  715 + if (actions) menu.appendChild(actions);
  716 + menu.appendChild(menuInner);
  717 + if (doneButton) menu.appendChild(doneButton);
  718 + newElement.appendChild(menu);
  719 +
  720 + document.body.appendChild(newElement);
  721 +
  722 + var liHeight = a.offsetHeight,
  723 + headerHeight = header ? header.offsetHeight : 0,
  724 + searchHeight = search ? search.offsetHeight : 0,
  725 + actionsHeight = actions ? actions.offsetHeight : 0,
  726 + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
  727 + dividerHeight = $(divider).outerHeight(true),
  728 + // fall back to jQuery if getComputedStyle is not supported
  729 + menuStyle = getComputedStyle ? getComputedStyle(menu) : false,
  730 + $menu = menuStyle ? $(menu) : null,
  731 + menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
  732 + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
  733 + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
  734 + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
  735 + menuExtras = menuPadding +
  736 + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
  737 + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
  738 +
  739 + document.body.removeChild(newElement);
  740 +
  741 + this.sizeInfo = {
  742 + liHeight: liHeight,
  743 + headerHeight: headerHeight,
  744 + searchHeight: searchHeight,
  745 + actionsHeight: actionsHeight,
  746 + doneButtonHeight: doneButtonHeight,
  747 + dividerHeight: dividerHeight,
  748 + menuPadding: menuPadding,
  749 + menuExtras: menuExtras
  750 + };
  751 + },
  752 +
  753 + setSize: function () {
  754 + this.findLis();
  755 + this.liHeight();
  756 + var that = this,
  757 + $menu = this.$menu,
  758 + $menuInner = this.$menuInner,
  759 + $window = $(window),
  760 + selectHeight = this.$newElement[0].offsetHeight,
  761 + liHeight = this.sizeInfo['liHeight'],
  762 + headerHeight = this.sizeInfo['headerHeight'],
  763 + searchHeight = this.sizeInfo['searchHeight'],
  764 + actionsHeight = this.sizeInfo['actionsHeight'],
  765 + doneButtonHeight = this.sizeInfo['doneButtonHeight'],
  766 + divHeight = this.sizeInfo['dividerHeight'],
  767 + menuPadding = this.sizeInfo['menuPadding'],
  768 + menuExtras = this.sizeInfo['menuExtras'],
  769 + notDisabled = this.options.hideDisabled ? '.disabled' : '',
  770 + menuHeight,
  771 + getHeight,
  772 + selectOffsetTop,
  773 + selectOffsetBot,
  774 + posVert = function () {
  775 + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
  776 + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
  777 + };
  778 +
  779 + posVert();
  780 +
  781 + if (this.options.header) $menu.css('padding-top', 0);
  782 +
  783 + if (this.options.size === 'auto') {
  784 + var getSize = function () {
  785 + var minHeight,
  786 + hasClass = function (className, include) {
  787 + return function (element) {
  788 + if (include) {
  789 + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
  790 + } else {
  791 + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
  792 + }
  793 + };
  794 + },
  795 + lis = that.$menuInner[0].getElementsByTagName('li'),
  796 + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
  797 + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
  798 +
  799 + posVert();
  800 + menuHeight = selectOffsetBot - menuExtras;
  801 +
  802 + if (that.options.container) {
  803 + if (!$menu.data('height')) $menu.data('height', $menu.height());
  804 + getHeight = $menu.data('height');
  805 + } else {
  806 + getHeight = $menu.height();
  807 + }
  808 +
  809 + if (that.options.dropupAuto) {
  810 + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
  811 + }
  812 + if (that.$newElement.hasClass('dropup')) {
  813 + menuHeight = selectOffsetTop - menuExtras;
  814 + }
  815 +
  816 + if ((lisVisible.length + optGroup.length) > 3) {
  817 + minHeight = liHeight * 3 + menuExtras - 2;
  818 + } else {
  819 + minHeight = 0;
  820 + }
  821 +
  822 + $menu.css({
  823 + 'max-height': menuHeight + 'px',
  824 + 'overflow': 'hidden',
  825 + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
  826 + });
  827 + $menuInner.css({
  828 + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
  829 + 'overflow-y': 'auto',
  830 + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
  831 + });
  832 + };
  833 + getSize();
  834 + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
  835 + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
  836 + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
  837 + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
  838 + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
  839 + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
  840 +
  841 + if (that.options.container) {
  842 + if (!$menu.data('height')) $menu.data('height', $menu.height());
  843 + getHeight = $menu.data('height');
  844 + } else {
  845 + getHeight = $menu.height();
  846 + }
  847 +
  848 + if (that.options.dropupAuto) {
  849 + //noinspection JSUnusedAssignment
  850 + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
  851 + }
  852 + $menu.css({
  853 + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
  854 + 'overflow': 'hidden',
  855 + 'min-height': ''
  856 + });
  857 + $menuInner.css({
  858 + 'max-height': menuHeight - menuPadding + 'px',
  859 + 'overflow-y': 'auto',
  860 + 'min-height': ''
  861 + });
  862 + }
  863 + },
  864 +
  865 + setWidth: function () {
  866 + if (this.options.width === 'auto') {
  867 + this.$menu.css('min-width', '0');
  868 +
  869 + // Get correct width if element is hidden
  870 + var $selectClone = this.$menu.parent().clone().appendTo('body'),
  871 + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
  872 + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
  873 + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
  874 +
  875 + $selectClone.remove();
  876 + $selectClone2.remove();
  877 +
  878 + // Set width to whatever's larger, button title or longest option
  879 + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
  880 + } else if (this.options.width === 'fit') {
  881 + // Remove inline min-width so width can be changed from 'auto'
  882 + this.$menu.css('min-width', '');
  883 + this.$newElement.css('width', '').addClass('fit-width');
  884 + } else if (this.options.width) {
  885 + // Remove inline min-width so width can be changed from 'auto'
  886 + this.$menu.css('min-width', '');
  887 + this.$newElement.css('width', this.options.width);
  888 + } else {
  889 + // Remove inline min-width/width so width can be changed
  890 + this.$menu.css('min-width', '');
  891 + this.$newElement.css('width', '');
  892 + }
  893 + // Remove fit-width class if width is changed programmatically
  894 + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
  895 + this.$newElement.removeClass('fit-width');
  896 + }
  897 + },
  898 +
  899 + selectPosition: function () {
  900 + var that = this,
  901 + drop = '<div />',
  902 + $drop = $(drop),
  903 + pos,
  904 + actualHeight,
  905 + getPlacement = function ($element) {
  906 + $drop.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
  907 + pos = $element.offset();
  908 + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
  909 + $drop.css({
  910 + 'top': pos.top + actualHeight,
  911 + 'left': pos.left,
  912 + 'width': $element[0].offsetWidth,
  913 + 'position': 'absolute'
  914 + });
  915 + };
  916 +
  917 + this.$newElement.on('click', function () {
  918 + if (that.isDisabled()) {
  919 + return;
  920 + }
  921 + getPlacement($(this));
  922 + $drop.appendTo(that.options.container);
  923 + $drop.toggleClass('open', !$(this).hasClass('open'));
  924 + $drop.append(that.$menu);
  925 + });
  926 +
  927 + $(window).on('resize scroll', function () {
  928 + getPlacement(that.$newElement);
  929 + });
  930 +
  931 + this.$element.on('hide.bs.select', function () {
  932 + that.$menu.data('height', that.$menu.height());
  933 + $drop.detach();
  934 + });
  935 + },
  936 +
  937 + setSelected: function (index, selected, $lis) {
  938 + if (!$lis) {
  939 + var $lis = this.findLis().eq(this.liObj[index]);
  940 + }
  941 +
  942 + $lis.toggleClass('selected', selected);
  943 + },
  944 +
  945 + setDisabled: function (index, disabled, $lis) {
  946 + if (!$lis) {
  947 + var $lis = this.findLis().eq(this.liObj[index]);
  948 + }
  949 +
  950 + if (disabled) {
  951 + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
  952 + } else {
  953 + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
  954 + }
  955 + },
  956 +
  957 + isDisabled: function () {
  958 + return this.$element[0].disabled;
  959 + },
  960 +
  961 + checkDisabled: function () {
  962 + var that = this;
  963 +
  964 + if (this.isDisabled()) {
  965 + this.$newElement.addClass('disabled');
  966 + this.$button.addClass('disabled').attr('tabindex', -1);
  967 + } else {
  968 + if (this.$button.hasClass('disabled')) {
  969 + this.$newElement.removeClass('disabled');
  970 + this.$button.removeClass('disabled');
  971 + }
  972 +
  973 + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
  974 + this.$button.removeAttr('tabindex');
  975 + }
  976 + }
  977 +
  978 + this.$button.click(function () {
  979 + return !that.isDisabled();
  980 + });
  981 + },
  982 +
  983 + tabIndex: function () {
  984 + if (this.$element.is('[tabindex]')) {
  985 + this.$element.data('tabindex', this.$element.attr('tabindex'));
  986 + this.$button.attr('tabindex', this.$element.data('tabindex'));
  987 + }
  988 + },
  989 +
  990 + clickListener: function () {
  991 + var that = this,
  992 + $document = $(document);
  993 +
  994 + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
  995 + e.stopPropagation();
  996 + });
  997 +
  998 + $document.data('spaceSelect', false);
  999 +
  1000 + this.$button.on('keyup', function (e) {
  1001 + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
  1002 + e.preventDefault();
  1003 + $document.data('spaceSelect', false);
  1004 + }
  1005 + });
  1006 +
  1007 + this.$newElement.on('click', function () {
  1008 + that.setSize();
  1009 + that.$element.on('shown.bs.select', function () {
  1010 + if (!that.options.liveSearch && !that.multiple) {
  1011 + that.$menu.find('.selected a').focus();
  1012 + } else if (!that.multiple) {
  1013 + var selectedIndex = that.liObj[that.$element[0].selectedIndex];
  1014 +
  1015 + if (typeof selectedIndex !== 'number') return;
  1016 +
  1017 + // scroll to selected option
  1018 + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
  1019 + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;
  1020 + that.$menuInner[0].scrollTop = offset;
  1021 + }
  1022 + });
  1023 + });
  1024 +
  1025 + this.$menu.on('click', 'li a', function (e) {
  1026 + var $this = $(this),
  1027 + clickedIndex = $this.parent().data('originalIndex'),
  1028 + prevValue = that.$element.val(),
  1029 + prevIndex = that.$element.prop('selectedIndex');
  1030 +
  1031 + // Don't close on multi choice menu
  1032 + if (that.multiple) {
  1033 + e.stopPropagation();
  1034 + }
  1035 +
  1036 + e.preventDefault();
  1037 +
  1038 + //Don't run if we have been disabled
  1039 + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
  1040 + var $options = that.$element.find('option'),
  1041 + $option = $options.eq(clickedIndex),
  1042 + state = $option.prop('selected'),
  1043 + $optgroup = $option.parent('optgroup'),
  1044 + maxOptions = that.options.maxOptions,
  1045 + maxOptionsGrp = $optgroup.data('maxOptions') || false;
  1046 +
  1047 + if (!that.multiple) { // Deselect all others if not multi select box
  1048 + $options.prop('selected', false);
  1049 + $option.prop('selected', true);
  1050 + that.$menu.find('.selected').removeClass('selected');
  1051 + that.setSelected(clickedIndex, true);
  1052 + } else { // Toggle the one we have chosen if we are multi select.
  1053 + $option.prop('selected', !state);
  1054 + that.setSelected(clickedIndex, !state);
  1055 + $this.blur();
  1056 +
  1057 + if (maxOptions !== false || maxOptionsGrp !== false) {
  1058 + var maxReached = maxOptions < $options.filter(':selected').length,
  1059 + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
  1060 +
  1061 + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
  1062 + if (maxOptions && maxOptions == 1) {
  1063 + $options.prop('selected', false);
  1064 + $option.prop('selected', true);
  1065 + that.$menu.find('.selected').removeClass('selected');
  1066 + that.setSelected(clickedIndex, true);
  1067 + } else if (maxOptionsGrp && maxOptionsGrp == 1) {
  1068 + $optgroup.find('option:selected').prop('selected', false);
  1069 + $option.prop('selected', true);
  1070 + var optgroupID = $this.parent().data('optgroup');
  1071 + that.$menu.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
  1072 + that.setSelected(clickedIndex, true);
  1073 + } else {
  1074 + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
  1075 + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
  1076 + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
  1077 + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
  1078 + $notify = $('<div class="notify"></div>');
  1079 + // If {var} is set in array, replace it
  1080 + /** @deprecated */
  1081 + if (maxOptionsArr[2]) {
  1082 + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
  1083 + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
  1084 + }
  1085 +
  1086 + $option.prop('selected', false);
  1087 +
  1088 + that.$menu.append($notify);
  1089 +
  1090 + if (maxOptions && maxReached) {
  1091 + $notify.append($('<div>' + maxTxt + '</div>'));
  1092 + that.$element.trigger('maxReached.bs.select');
  1093 + }
  1094 +
  1095 + if (maxOptionsGrp && maxReachedGrp) {
  1096 + $notify.append($('<div>' + maxTxtGrp + '</div>'));
  1097 + that.$element.trigger('maxReachedGrp.bs.select');
  1098 + }
  1099 +
  1100 + setTimeout(function () {
  1101 + that.setSelected(clickedIndex, false);
  1102 + }, 10);
  1103 +
  1104 + $notify.delay(750).fadeOut(300, function () {
  1105 + $(this).remove();
  1106 + });
  1107 + }
  1108 + }
  1109 + }
  1110 + }
  1111 +
  1112 + if (!that.multiple) {
  1113 + that.$button.focus();
  1114 + } else if (that.options.liveSearch) {
  1115 + that.$searchbox.focus();
  1116 + }
  1117 +
  1118 + // Trigger select 'change'
  1119 + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
  1120 + that.$element.change();
  1121 + // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
  1122 + that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
  1123 + }
  1124 + }
  1125 + });
  1126 +
  1127 + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
  1128 + if (e.currentTarget == this) {
  1129 + e.preventDefault();
  1130 + e.stopPropagation();
  1131 + if (that.options.liveSearch && !$(e.target).hasClass('close')) {
  1132 + that.$searchbox.focus();
  1133 + } else {
  1134 + that.$button.focus();
  1135 + }
  1136 + }
  1137 + });
  1138 +
  1139 + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {
  1140 + e.preventDefault();
  1141 + e.stopPropagation();
  1142 + if (that.options.liveSearch) {
  1143 + that.$searchbox.focus();
  1144 + } else {
  1145 + that.$button.focus();
  1146 + }
  1147 + });
  1148 +
  1149 + this.$menu.on('click', '.popover-title .close', function () {
  1150 + that.$button.click();
  1151 + });
  1152 +
  1153 + this.$searchbox.on('click', function (e) {
  1154 + e.stopPropagation();
  1155 + });
  1156 +
  1157 + this.$menu.on('click', '.actions-btn', function (e) {
  1158 + if (that.options.liveSearch) {
  1159 + that.$searchbox.focus();
  1160 + } else {
  1161 + that.$button.focus();
  1162 + }
  1163 +
  1164 + e.preventDefault();
  1165 + e.stopPropagation();
  1166 +
  1167 + if ($(this).hasClass('bs-select-all')) {
  1168 + that.selectAll();
  1169 + } else {
  1170 + that.deselectAll();
  1171 + }
  1172 + that.$element.change();
  1173 + });
  1174 +
  1175 + this.$element.change(function () {
  1176 + that.render(false);
  1177 + });
  1178 + },
  1179 +
  1180 + liveSearchListener: function () {
  1181 + var that = this,
  1182 + $no_results = $('<li class="no-results"></li>');
  1183 +
  1184 + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
  1185 + that.$menuInner.find('.active').removeClass('active');
  1186 + if (!!that.$searchbox.val()) {
  1187 + that.$searchbox.val('');
  1188 + that.$lis.not('.is-hidden').removeClass('hidden');
  1189 + if (!!$no_results.parent().length) $no_results.remove();
  1190 + }
  1191 + if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
  1192 + setTimeout(function () {
  1193 + that.$searchbox.focus();
  1194 + }, 10);
  1195 + });
  1196 +
  1197 + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
  1198 + e.stopPropagation();
  1199 + });
  1200 +
  1201 + this.$searchbox.on('input propertychange', function () {
  1202 + if (that.$searchbox.val()) {
  1203 + var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
  1204 + if (that.options.liveSearchNormalize) {
  1205 + $searchBase = $searchBase.not(':a' + that._searchStyle() + '(' + normalizeToBase(that.$searchbox.val()) + ')');
  1206 + } else {
  1207 + $searchBase = $searchBase.not(':' + that._searchStyle() + '(' + that.$searchbox.val() + ')');
  1208 + }
  1209 + $searchBase.parent().addClass('hidden');
  1210 +
  1211 + that.$lis.filter('.dropdown-header').each(function () {
  1212 + var $this = $(this),
  1213 + optgroup = $this.data('optgroup');
  1214 +
  1215 + if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
  1216 + $this.addClass('hidden');
  1217 + that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
  1218 + }
  1219 + });
  1220 +
  1221 + var $lisVisible = that.$lis.not('.hidden');
  1222 +
  1223 + // hide divider if first or last visible, or if followed by another divider
  1224 + $lisVisible.each(function (index) {
  1225 + var $this = $(this);
  1226 +
  1227 + if ($this.hasClass('divider') && (
  1228 + $this.index() === $lisVisible.eq(0).index() ||
  1229 + $this.index() === $lisVisible.last().index() ||
  1230 + $lisVisible.eq(index + 1).hasClass('divider'))) {
  1231 + $this.addClass('hidden');
  1232 + }
  1233 + });
  1234 +
  1235 + if (!that.$lis.not('.hidden, .no-results').length) {
  1236 + if (!!$no_results.parent().length) {
  1237 + $no_results.remove();
  1238 + }
  1239 + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
  1240 + that.$menuInner.append($no_results);
  1241 + } else if (!!$no_results.parent().length) {
  1242 + $no_results.remove();
  1243 + }
  1244 +
  1245 + } else {
  1246 + that.$lis.not('.is-hidden').removeClass('hidden');
  1247 + if (!!$no_results.parent().length) {
  1248 + $no_results.remove();
  1249 + }
  1250 + }
  1251 +
  1252 + that.$lis.filter('.active').removeClass('active');
  1253 + that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus();
  1254 + $(this).focus();
  1255 + });
  1256 + },
  1257 +
  1258 + _searchStyle: function () {
  1259 + var style = 'icontains';
  1260 + switch (this.options.liveSearchStyle) {
  1261 + case 'begins':
  1262 + case 'startsWith':
  1263 + style = 'ibegins';
  1264 + break;
  1265 + case 'contains':
  1266 + default:
  1267 + break; //no need to change the default
  1268 + }
  1269 +
  1270 + return style;
  1271 + },
  1272 +
  1273 + val: function (value) {
  1274 + if (typeof value !== 'undefined') {
  1275 + this.$element.val(value);
  1276 + this.render();
  1277 +
  1278 + return this.$element;
  1279 + } else {
  1280 + return this.$element.val();
  1281 + }
  1282 + },
  1283 +
  1284 + selectAll: function () {
  1285 + this.findLis();
  1286 + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', true);
  1287 + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').addClass('selected');
  1288 + this.render(false);
  1289 + },
  1290 +
  1291 + deselectAll: function () {
  1292 + this.findLis();
  1293 + this.$element.find('option:enabled').not('[data-divider], [data-hidden]').prop('selected', false);
  1294 + this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').removeClass('selected');
  1295 + this.render(false);
  1296 + },
  1297 +
  1298 + keydown: function (e) {
  1299 + var $this = $(this),
  1300 + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
  1301 + $items,
  1302 + that = $parent.data('this'),
  1303 + index,
  1304 + next,
  1305 + first,
  1306 + last,
  1307 + prev,
  1308 + nextPrev,
  1309 + prevIndex,
  1310 + isActive,
  1311 + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
  1312 + keyCodeMap = {
  1313 + 32: ' ',
  1314 + 48: '0',
  1315 + 49: '1',
  1316 + 50: '2',
  1317 + 51: '3',
  1318 + 52: '4',
  1319 + 53: '5',
  1320 + 54: '6',
  1321 + 55: '7',
  1322 + 56: '8',
  1323 + 57: '9',
  1324 + 59: ';',
  1325 + 65: 'a',
  1326 + 66: 'b',
  1327 + 67: 'c',
  1328 + 68: 'd',
  1329 + 69: 'e',
  1330 + 70: 'f',
  1331 + 71: 'g',
  1332 + 72: 'h',
  1333 + 73: 'i',
  1334 + 74: 'j',
  1335 + 75: 'k',
  1336 + 76: 'l',
  1337 + 77: 'm',
  1338 + 78: 'n',
  1339 + 79: 'o',
  1340 + 80: 'p',
  1341 + 81: 'q',
  1342 + 82: 'r',
  1343 + 83: 's',
  1344 + 84: 't',
  1345 + 85: 'u',
  1346 + 86: 'v',
  1347 + 87: 'w',
  1348 + 88: 'x',
  1349 + 89: 'y',
  1350 + 90: 'z',
  1351 + 96: '0',
  1352 + 97: '1',
  1353 + 98: '2',
  1354 + 99: '3',
  1355 + 100: '4',
  1356 + 101: '5',
  1357 + 102: '6',
  1358 + 103: '7',
  1359 + 104: '8',
  1360 + 105: '9'
  1361 + };
  1362 +
  1363 + if (that.options.liveSearch) $parent = $this.parent().parent();
  1364 +
  1365 + if (that.options.container) $parent = that.$menu;
  1366 +
  1367 + $items = $('[role=menu] li a', $parent);
  1368 +
  1369 + isActive = that.$menu.parent().hasClass('open');
  1370 +
  1371 + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90)) {
  1372 + if (!that.options.container) {
  1373 + that.setSize();
  1374 + that.$menu.parent().addClass('open');
  1375 + isActive = true;
  1376 + } else {
  1377 + that.$newElement.trigger('click');
  1378 + }
  1379 + that.$searchbox.focus();
  1380 + }
  1381 +
  1382 + if (that.options.liveSearch) {
  1383 + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
  1384 + e.preventDefault();
  1385 + that.$menu.parent().removeClass('open');
  1386 + if (that.options.container) that.$newElement.removeClass('open');
  1387 + that.$button.focus();
  1388 + }
  1389 + // $items contains li elements when liveSearch is enabled
  1390 + $items = $('[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)', $parent);
  1391 + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
  1392 + if ($items.filter('.active').length === 0) {
  1393 + $items = that.$newElement.find('li');
  1394 + if (that.options.liveSearchNormalize) {
  1395 + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
  1396 + } else {
  1397 + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
  1398 + }
  1399 + }
  1400 + }
  1401 + }
  1402 +
  1403 + if (!$items.length) return;
  1404 +
  1405 + if (/(38|40)/.test(e.keyCode.toString(10))) {
  1406 + index = $items.index($items.filter(':focus'));
  1407 + first = $items.parent(selector).first().data('originalIndex');
  1408 + last = $items.parent(selector).last().data('originalIndex');
  1409 + next = $items.eq(index).parent().nextAll(selector).eq(0).data('originalIndex');
  1410 + prev = $items.eq(index).parent().prevAll(selector).eq(0).data('originalIndex');
  1411 + nextPrev = $items.eq(next).parent().prevAll(selector).eq(0).data('originalIndex');
  1412 +
  1413 + if (that.options.liveSearch) {
  1414 + $items.each(function (i) {
  1415 + if (!$(this).hasClass('disabled')) {
  1416 + $(this).data('index', i);
  1417 + }
  1418 + });
  1419 + index = $items.index($items.filter('.active'));
  1420 + first = $items.first().data('index');
  1421 + last = $items.last().data('index');
  1422 + next = $items.eq(index).nextAll().eq(0).data('index');
  1423 + prev = $items.eq(index).prevAll().eq(0).data('index');
  1424 + nextPrev = $items.eq(next).prevAll().eq(0).data('index');
  1425 + }
  1426 +
  1427 + prevIndex = $this.data('prevIndex');
  1428 +
  1429 + if (e.keyCode == 38) {
  1430 + if (that.options.liveSearch) index -= 1;
  1431 + if (index != nextPrev && index > prev) index = prev;
  1432 + if (index < first) index = first;
  1433 + if (index == prevIndex) index = last;
  1434 + } else if (e.keyCode == 40) {
  1435 + if (that.options.liveSearch) index += 1;
  1436 + if (index == -1) index = 0;
  1437 + if (index != nextPrev && index < next) index = next;
  1438 + if (index > last) index = last;
  1439 + if (index == prevIndex) index = first;
  1440 + }
  1441 +
  1442 + $this.data('prevIndex', index);
  1443 +
  1444 + if (!that.options.liveSearch) {
  1445 + $items.eq(index).focus();
  1446 + } else {
  1447 + e.preventDefault();
  1448 + if (!$this.hasClass('dropdown-toggle')) {
  1449 + $items.removeClass('active').eq(index).addClass('active').children('a').focus();
  1450 + $this.focus();
  1451 + }
  1452 + }
  1453 +
  1454 + } else if (!$this.is('input')) {
  1455 + var keyIndex = [],
  1456 + count,
  1457 + prevKey;
  1458 +
  1459 + $items.each(function () {
  1460 + if (!$(this).parent().hasClass('disabled')) {
  1461 + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
  1462 + keyIndex.push($(this).parent().index());
  1463 + }
  1464 + }
  1465 + });
  1466 +
  1467 + count = $(document).data('keycount');
  1468 + count++;
  1469 + $(document).data('keycount', count);
  1470 +
  1471 + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
  1472 +
  1473 + if (prevKey != keyCodeMap[e.keyCode]) {
  1474 + count = 1;
  1475 + $(document).data('keycount', count);
  1476 + } else if (count >= keyIndex.length) {
  1477 + $(document).data('keycount', 0);
  1478 + if (count > keyIndex.length) count = 1;
  1479 + }
  1480 +
  1481 + $items.eq(keyIndex[count - 1]).focus();
  1482 + }
  1483 +
  1484 + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
  1485 + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
  1486 + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
  1487 + if (!that.options.liveSearch) {
  1488 + var elem = $(':focus');
  1489 + elem.click();
  1490 + // Bring back focus for multiselects
  1491 + elem.focus();
  1492 + // Prevent screen from scrolling if the user hit the spacebar
  1493 + e.preventDefault();
  1494 + // Fixes spacebar selection of dropdown items in FF & IE
  1495 + $(document).data('spaceSelect', true);
  1496 + } else if (!/(32)/.test(e.keyCode.toString(10))) {
  1497 + that.$menu.find('.active a').click();
  1498 + $this.focus();
  1499 + }
  1500 + $(document).data('keycount', 0);
  1501 + }
  1502 +
  1503 + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
  1504 + that.$menu.parent().removeClass('open');
  1505 + if (that.options.container) that.$newElement.removeClass('open');
  1506 + that.$button.focus();
  1507 + }
  1508 + },
  1509 +
  1510 + mobile: function () {
  1511 + this.$element.addClass('mobile-device').appendTo(this.$newElement);
  1512 + if (this.options.container) this.$menu.hide();
  1513 + },
  1514 +
  1515 + refresh: function () {
  1516 + this.$lis = null;
  1517 + this.reloadLi();
  1518 + this.render();
  1519 + this.checkDisabled();
  1520 + this.liHeight(true);
  1521 + this.setStyle();
  1522 + this.setWidth();
  1523 + if (this.$lis) this.$searchbox.trigger('propertychange');
  1524 +
  1525 + this.$element.trigger('refreshed.bs.select');
  1526 + },
  1527 +
  1528 + hide: function () {
  1529 + this.$newElement.hide();
  1530 + },
  1531 +
  1532 + show: function () {
  1533 + this.$newElement.show();
  1534 + },
  1535 +
  1536 + remove: function () {
  1537 + this.$newElement.remove();
  1538 + this.$element.remove();
  1539 + }
  1540 + };
  1541 +
  1542 + // SELECTPICKER PLUGIN DEFINITION
  1543 + // ==============================
  1544 + function Plugin(option, event) {
  1545 + // get the args of the outer function..
  1546 + var args = arguments;
  1547 + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
  1548 + // to get lost/corrupted in android 2.3 and IE9 #715 #775
  1549 + var _option = option,
  1550 + _event = event;
  1551 + [].shift.apply(args);
  1552 +
  1553 + var value;
  1554 + var chain = this.each(function () {
  1555 + var $this = $(this);
  1556 + if ($this.is('select')) {
  1557 + var data = $this.data('selectpicker'),
  1558 + options = typeof _option == 'object' && _option;
  1559 +
  1560 + if (!data) {
  1561 + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
  1562 + $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
  1563 + } else if (options) {
  1564 + for (var i in options) {
  1565 + if (options.hasOwnProperty(i)) {
  1566 + data.options[i] = options[i];
  1567 + }
  1568 + }
  1569 + }
  1570 +
  1571 + if (typeof _option == 'string') {
  1572 + if (data[_option] instanceof Function) {
  1573 + value = data[_option].apply(data, args);
  1574 + } else {
  1575 + value = data.options[_option];
  1576 + }
  1577 + }
  1578 + }
  1579 + });
  1580 +
  1581 + if (typeof value !== 'undefined') {
  1582 + //noinspection JSUnusedAssignment
  1583 + return value;
  1584 + } else {
  1585 + return chain;
  1586 + }
  1587 + }
  1588 +
  1589 + var old = $.fn.selectpicker;
  1590 + $.fn.selectpicker = Plugin;
  1591 + $.fn.selectpicker.Constructor = Selectpicker;
  1592 +
  1593 + // SELECTPICKER NO CONFLICT
  1594 + // ========================
  1595 + $.fn.selectpicker.noConflict = function () {
  1596 + $.fn.selectpicker = old;
  1597 + return this;
  1598 + };
  1599 +
  1600 + $(document)
  1601 + .data('keycount', 0)
  1602 + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
  1603 + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
  1604 + e.stopPropagation();
  1605 + });
  1606 +
  1607 + // SELECTPICKER DATA-API
  1608 + // =====================
  1609 + $(window).on('load.bs.select.data-api', function () {
  1610 + $('.selectpicker').each(function () {
  1611 + var $selectpicker = $(this);
  1612 + Plugin.call($selectpicker, $selectpicker.data());
  1613 + })
  1614 + });
  1615 + })(jQuery);
  1616 +
  1617 +
  1618 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-bg_BG.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Нищо избрано',
  27 + noneResultsText: 'Няма резултат за {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)',
  34 + (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)'
  35 + ];
  36 + },
  37 + selectAllText: 'Избери всички',
  38 + deselectAllText: 'Размаркирай всички',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-bg_BG.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нищо избрано",noneResultsText:"Няма резултат за {0}",countSelectedText:function(a,b){return 1==a?"{0} избран елемент":"{0} избрани елемента"},maxOptionsText:function(a,b){return[1==a?"Лимита е достигнат ({n} елемент максимум)":"Лимита е достигнат ({n} елемента максимум)",1==b?"Груповия лимит е достигнат ({n} елемент максимум)":"Груповия лимит е достигнат ({n} елемента максимум)"]},selectAllText:"Избери всички",deselectAllText:"Размаркирай всички",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-cs_CZ.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nic není vybráno',
  27 + noneResultsText: 'Žádné výsledky {0}',
  28 + countSelectedText: 'Označeno {0} z {1}',
  29 + maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-cs_CZ.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky {0}",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-da_DK.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Intet valgt',
  27 + noneResultsText: 'Ingen resultater fundet {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return (numSelected == 1) ? "{0} valgt" : "{0} valgt";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)',
  34 + (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)'
  35 + ];
  36 + },
  37 + selectAllText: 'Markér alle',
  38 + deselectAllText: 'Afmarkér alle',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-da_DK.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Intet valgt",noneResultsText:"Ingen resultater fundet {0}",countSelectedText:function(a,b){return"{0} valgt"},maxOptionsText:function(a,b){return[1==a?"Begrænsning nået (max {n} valgt)":"Begrænsning nået (max {n} valgte)",1==b?"Gruppe-begrænsning nået (max {n} valgt)":"Gruppe-begrænsning nået (max {n} valgte)"]},selectAllText:"Markér alle",deselectAllText:"Afmarkér alle",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-de_DE.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Bitte wählen...',
  27 + noneResultsText: 'Keine Ergebnisse für {0}',
  28 + countSelectedText: '{0} von {1} ausgewählt',
  29 + maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-de_DE.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für {0}",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-en_US.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nothing selected',
  27 + noneResultsText: 'No results match {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
  34 + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
  35 + ];
  36 + },
  37 + selectAllText: 'Select All',
  38 + deselectAllText: 'Deselect All',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-en_US.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-es_CL.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'No hay selección',
  27 + noneResultsText: 'No hay resultados {0}',
  28 + countSelectedText: 'Seleccionados {0} de {1}',
  29 + maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-es_CL.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-eu.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Hautapenik ez',
  27 + noneResultsText: 'Emaitzarik ez {0}',
  28 + countSelectedText: '{1}(e)tik {0} hautatuta',
  29 + maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-eu.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez {0}",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-fa_IR.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'چیزی انتخاب نشده است',
  27 + noneResultsText: 'هیج مشابهی برای {0} پیدا نشد',
  28 + countSelectedText: "{0} از {1} مورد انتخاب شده",
  29 + maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'],
  30 + selectAllText: 'انتخاب همه',
  31 + deselectAllText: 'انتخاب هیچ کدام',
  32 + multipleSeparator: ', '
  33 + };
  34 +})(jQuery);
  35 +
  36 +
  37 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-fa_IR.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"چیزی انتخاب نشده است",noneResultsText:"هیج مشابهی برای {0} پیدا نشد",countSelectedText:"{0} از {1} مورد انتخاب شده",maxOptionsText:["بیشتر ممکن نیست {حداکثر {n} عدد}","بیشتر ممکن نیست {حداکثر {n} عدد}"],selectAllText:"انتخاب همه",deselectAllText:"انتخاب هیچ کدام",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-fr_FR.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Aucune s&eacute;lection',
  27 + noneResultsText: 'Aucun r&eacute;sultat pour {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return (numSelected > 1) ? "{0} &eacute;l&eacute;ments s&eacute;lectionn&eacute;s" : "{0} &eacute;l&eacute;ment s&eacute;lectionn&eacute;";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + (numAll > 1) ? 'Limite atteinte ({n} &eacute;l&eacute;ments max)' : 'Limite atteinte ({n} &eacute;l&eacute;ment max)',
  34 + (numGroup > 1) ? 'Limite du groupe atteinte ({n} &eacute;l&eacute;ments max)' : 'Limite du groupe atteinte ({n} &eacute;l&eacute;ment max)'
  35 + ];
  36 + },
  37 + multipleSeparator: ', '
  38 + };
  39 +})(jQuery);
  40 +
  41 +
  42 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-fr_FR.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune s&eacute;lection",noneResultsText:"Aucun r&eacute;sultat pour {0}",countSelectedText:function(a,b){return a>1?"{0} &eacute;l&eacute;ments s&eacute;lectionn&eacute;s":"{0} &eacute;l&eacute;ment s&eacute;lectionn&eacute;"},maxOptionsText:function(a,b){return[a>1?"Limite atteinte ({n} &eacute;l&eacute;ments max)":"Limite atteinte ({n} &eacute;l&eacute;ment max)",b>1?"Limite du groupe atteinte ({n} &eacute;l&eacute;ments max)":"Limite du groupe atteinte ({n} &eacute;l&eacute;ment max)"]},multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-hu_HU.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Válasszon!',
  27 + noneResultsText: 'Nincs találat {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return '{n} elem kiválasztva';
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + 'Legfeljebb {n} elem választható',
  34 + 'A csoportban legfeljebb {n} elem választható'
  35 + ];
  36 + },
  37 + selectAllText: 'Mind',
  38 + deselectAllText: 'Egyik sem',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-hu_HU.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Válasszon!",noneResultsText:"Nincs találat {0}",countSelectedText:function(a,b){return"{n} elem kiválasztva"},maxOptionsText:function(a,b){return["Legfeljebb {n} elem választható","A csoportban legfeljebb {n} elem választható"]},selectAllText:"Mind",deselectAllText:"Egyik sem",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-it_IT.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nessuna selezione',
  27 + noneResultsText: 'Nessun risultato per {0}',
  28 + countSelectedText: 'Selezionati {0} di {1}',
  29 + maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-it_IT.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato per {0}",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ko_KR.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: '항목을 선택해주세요',
  27 + noneResultsText: '{0} 검색 결과가 없습니다',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return "{0}개를 선택하였습니다";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + '{n}개까지 선택 가능합니다',
  34 + '해당 그룹은 {n}개까지 선택 가능합니다'
  35 + ];
  36 + },
  37 + selectAllText: '전체선택',
  38 + deselectAllText: '전체해제',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ko_KR.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"항목을 선택해주세요",noneResultsText:"{0} 검색 결과가 없습니다",countSelectedText:function(a,b){return"{0}개를 선택하였습니다"},maxOptionsText:function(a,b){return["{n}개까지 선택 가능합니다","해당 그룹은 {n}개까지 선택 가능합니다"]},selectAllText:"전체선택",deselectAllText:"전체해제",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-nl_NL.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Niets geselecteerd',
  27 + noneResultsText: 'Geen resultaten gevonden voor {0}',
  28 + countSelectedText: '{0} van {1} geselecteerd',
  29 + maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-nl_NL.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor {0}",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-pl_PL.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nic nie zaznaczono',
  27 + noneResultsText: 'Brak wyników wyszukiwania {0}',
  28 + countSelectedText: 'Zaznaczono {0} z {1}',
  29 + maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']],
  30 + selectAll: 'Zaznacz wszystkie',
  31 + deselectAll: 'Odznacz wszystkie',
  32 + multipleSeparator: ', '
  33 + };
  34 +})(jQuery);
  35 +
  36 +
  37 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-pl_PL.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania {0}",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-pt_BR.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nada selecionado',
  27 + noneResultsText: 'Nada encontrado contendo {0}',
  28 + countSelectedText: 'Selecionado {0} de {1}',
  29 + maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-pt_BR.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-pt_PT.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 +$.fn.selectpicker.defaults = {
  26 +noneSelectedText: 'Nenhum seleccionado',
  27 +noneResultsText: 'Sem resultados contendo {0}',
  28 +countSelectedText: 'Selecionado {0} de {1}',
  29 +maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']],
  30 +multipleSeparator: ', '
  31 +};
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-pt_PT.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nenhum seleccionado",noneResultsText:"Sem resultados contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite ultrapassado (máx. {n} {var})","Limite de seleções ultrapassado (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ro_RO.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nu a fost selectat nimic',
  27 + noneResultsText: 'Nu exista niciun rezultat {0}',
  28 + countSelectedText: '{0} din {1} selectat(e)',
  29 + maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ro_RO.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat {0}",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ru_RU.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Ничего не выбрано',
  27 + noneResultsText: 'Совпадений не найдено {0}',
  28 + countSelectedText: 'Выбрано {0} из {1}',
  29 + maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']],
  30 + doneButtonText: 'Закрыть',
  31 + multipleSeparator: ', '
  32 + };
  33 +})(jQuery);
  34 +
  35 +
  36 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ru_RU.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено {0}",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],doneButtonText:"Закрыть",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-sk_SK.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Vyberte zo zoznamu',
  27 + noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky',
  28 + countSelectedText: 'Vybrané {0} z {1}',
  29 + maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']],
  30 + selectAllText: 'Vybrať všetky',
  31 + deselectAllText: 'Zrušiť výber',
  32 + multipleSeparator: ', '
  33 + };
  34 +})(jQuery);
  35 +
  36 +
  37 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-sk_SK.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Vyberte zo zoznamu",noneResultsText:"Pre výraz {0} neboli nájdené žiadne výsledky",countSelectedText:"Vybrané {0} z {1}",maxOptionsText:["Limit prekročený ({n} {var} max)","Limit skupiny prekročený ({n} {var} max)",["položiek","položka"]],selectAllText:"Vybrať všetky",deselectAllText:"Zrušiť výber",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-sl_SI.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Nič izbranega',
  27 + noneResultsText: 'Ni zadetkov za {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + "Število izbranih: {0}";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + 'Omejitev dosežena (max. izbranih: {n})',
  34 + 'Omejitev skupine dosežena (max. izbranih: {n})'
  35 + ];
  36 + },
  37 + selectAllText: 'Izberi vse',
  38 + deselectAllText: 'Počisti izbor',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-sl_SI.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nič izbranega",noneResultsText:"Ni zadetkov za {0}",countSelectedText:function(a,b){"Število izbranih: {0}"},maxOptionsText:function(a,b){return["Omejitev dosežena (max. izbranih: {n})","Omejitev skupine dosežena (max. izbranih: {n})"]},selectAllText:"Izberi vse",deselectAllText:"Počisti izbor",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-sv_SE.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Inget valt',
  27 + noneResultsText: 'Inget sökresultat matchar {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + 'Gräns uppnåd (max {n} alternativ)',
  34 + 'Gräns uppnåd (max {n} gruppalternativ)'
  35 + ];
  36 + },
  37 + selectAllText: 'Markera alla',
  38 + deselectAllText: 'Avmarkera alla',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-sv_SE.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Inget valt",noneResultsText:"Inget sökresultat matchar {0}",countSelectedText:function(a,b){return 1===a?"{0} alternativ valt":"{0} alternativ valda"},maxOptionsText:function(a,b){return["Gräns uppnåd (max {n} alternativ)","Gräns uppnåd (max {n} gruppalternativ)"]},selectAllText:"Markera alla",deselectAllText:"Avmarkera alla",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-tr_TR.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Hiçbiri seçilmedi',
  27 + noneResultsText: 'Hiçbir sonuç bulunamadı {0}',
  28 + countSelectedText: function (numSelected, numTotal) {
  29 + return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi";
  30 + },
  31 + maxOptionsText: function (numAll, numGroup) {
  32 + return [
  33 + (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)',
  34 + (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)'
  35 + ];
  36 + },
  37 + selectAllText: 'Tümünü Seç',
  38 + deselectAllText: 'Seçiniz',
  39 + multipleSeparator: ', '
  40 + };
  41 +})(jQuery);
  42 +
  43 +
  44 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-tr_TR.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hiçbiri seçilmedi",noneResultsText:"Hiçbir sonuç bulunamadı {0}",countSelectedText:function(a,b){return"{0} öğe seçildi"},maxOptionsText:function(a,b){return[1==a?"Limit aşıldı (maksimum {n} sayıda öğe )":"Limit aşıldı (maksimum {n} sayıda öğe)","Grup limiti aşıldı (maksimum {n} sayıda öğe)"]},selectAllText:"Tümünü Seç",deselectAllText:"Seçiniz",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ua_UA.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: 'Нічого не вибрано',
  27 + noneResultsText: 'Збігів не знайдено {0}',
  28 + countSelectedText: 'Вибрано {0} із {1}',
  29 + maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-ua_UA.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено {0}",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-zh_CN.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: '没有选中任何项',
  27 + noneResultsText: '没有找到匹配项',
  28 + countSelectedText: '选中{1}中的{0}项',
  29 + maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'],
  30 + multipleSeparator: ', '
  31 + };
  32 +})(jQuery);
  33 +
  34 +
  35 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-zh_CN.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-select/js/i18n/defaults-zh_TW.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +
  8 +(function (root, factory) {
  9 + if (typeof define === 'function' && define.amd) {
  10 + // AMD. Register as an anonymous module unless amdModuleId is set
  11 + define(["jquery"], function (a0) {
  12 + return (factory(a0));
  13 + });
  14 + } else if (typeof exports === 'object') {
  15 + // Node. Does not work with strict CommonJS, but
  16 + // only CommonJS-like environments that support module.exports,
  17 + // like Node.
  18 + module.exports = factory(require("jquery"));
  19 + } else {
  20 + factory(jQuery);
  21 + }
  22 +}(this, function () {
  23 +
  24 +(function ($) {
  25 + $.fn.selectpicker.defaults = {
  26 + noneSelectedText: '沒有選取任何項目',
  27 + noneResultsText: '沒有找到符合的結果',
  28 + countSelectedText: '已經選取{0}個項目',
  29 + maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'],
  30 + selectAllText: '選取全部',
  31 + deselectAllText: '全部取消',
  32 + multipleSeparator: ', '
  33 + };
  34 +})(jQuery);
  35 +
  36 +
  37 +}));
... ...
resource/lib/bootstrap-select/js/i18n/defaults-zh_TW.min.js 0 → 100644
  1 +/*!
  2 + * Bootstrap-select v1.7.2 (http://silviomoreto.github.io/bootstrap-select)
  3 + *
  4 + * Copyright 2013-2015 bootstrap-select
  5 + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
  6 + */
  7 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(jQuery)});
0 8 \ No newline at end of file
... ...
resource/lib/bootstrap-table/bootstrap-table-fixed-columns.css 0 → 100644
  1 +.fixed-table-header-columns,
  2 +.fixed-table-body-columns {
  3 + position: absolute;
  4 + background-color: #fff;
  5 + display: none;
  6 + box-sizing: border-box;
  7 + overflow: hidden;
  8 +}
  9 +
  10 +.fixed-table-header-columns .table,
  11 +.fixed-table-body-columns .table {
  12 + border-right: 1px solid #ddd;
  13 +}
  14 +
  15 +.fixed-table-header-columns .table.table-no-bordered,
  16 +.fixed-table-body-columns .table.table-no-bordered {
  17 + border-right: 1px solid transparent;
  18 +}
  19 +
  20 +.fixed-table-body-columns table {
  21 + position: absolute;
  22 + animation: none;
  23 +}
  24 +
  25 +.bootstrap-table .table-hover > tbody > tr.hover > td{
  26 + background-color: #f5f5f5;
  27 +}
0 28 \ No newline at end of file
... ...
resource/lib/bootstrap-table/bootstrap-table-fixed-columns.js 0 → 100755
  1 +(function ($) {
  2 + 'use strict';
  3 +
  4 + $.extend($.fn.bootstrapTable.defaults, {
  5 + leftFixedColumns: false,
  6 + leftFixedNumber: 1,
  7 + rightFixedColumns: false,
  8 + rightFixedNumber: 1
  9 + });
  10 +
  11 + var BootstrapTable = $.fn.bootstrapTable.Constructor,
  12 + _initHeader = BootstrapTable.prototype.initHeader,
  13 + _initBody = BootstrapTable.prototype.initBody,
  14 + _resetView = BootstrapTable.prototype.resetView;
  15 +
  16 + BootstrapTable.prototype.initFixedColumns = function () {
  17 + this.timeoutHeaderColumns_ = 0;
  18 + this.timeoutBodyColumns_ = 0;
  19 + if (this.options.leftFixedColumns) {
  20 + this.$fixedBody = $([
  21 + '<div class="fixed-table-column" style="position: absolute; background-color: #fff;">',
  22 + '<table>',
  23 + '<thead></thead>',
  24 + '<tbody></tbody>',
  25 + '</table>',
  26 + '</div>'].join(''));
  27 +
  28 +
  29 + this.$fixedBody.find('table').attr('class', this.$el.attr('class'));
  30 + this.$fixedHeaderColumns = this.$fixedBody.find('thead');
  31 + this.$fixedBodyColumns = this.$fixedBody.find('tbody');
  32 + this.$tableBody.before(this.$fixedBody);
  33 + }
  34 + if (this.options.rightFixedColumns) {
  35 + this.$rightfixedBody = $([
  36 + '<div class="fixed-table-column" style="position: absolute;right:0px; background-color: #fff; ">',
  37 + '<table>',
  38 + '<thead></thead>',
  39 + '<tbody></tbody>',
  40 + '</table>',
  41 + '</div>'].join(''));
  42 +
  43 + this.$rightfixedBody.find('table').attr('class', this.$el.attr('class'));
  44 + this.$rightfixedHeaderColumns = this.$rightfixedBody.find('thead');
  45 + this.$rightfixedBodyColumns = this.$rightfixedBody.find('tbody');
  46 + this.$tableBody.before(this.$rightfixedBody);
  47 + }
  48 + };
  49 +
  50 + BootstrapTable.prototype.initHeader = function () {
  51 + _initHeader.apply(this, Array.prototype.slice.apply(arguments));
  52 +
  53 + if (!this.options.leftFixedColumns && !this.options.rightFixedColumns){
  54 + return;
  55 + }
  56 + this.initFixedColumns();
  57 +
  58 + var $tr = this.$header.find('tr:eq(0)').clone(),
  59 + $ths = $tr.clone().find('th');
  60 +
  61 + $tr.html('');
  62 + //左边列冻结
  63 + if (this.options.leftFixedColumns) {
  64 + for (var i = 0; i < this.options.leftFixedNumber; i++) {
  65 + $tr.append($ths.eq(i).clone());
  66 + }
  67 + this.$fixedHeaderColumns.html('').append($tr);
  68 + }
  69 +
  70 + //右边列冻结
  71 + if (this.options.rightFixedColumns) {
  72 + for (var i = 0; i < this.options.rightFixedNumber; i++) {
  73 + $tr.append($ths.eq($ths.length - this.options.rightFixedNumber + i).clone());
  74 + }
  75 + this.$rightfixedHeaderColumns.html('').append($tr);
  76 + }
  77 + };
  78 +
  79 + BootstrapTable.prototype.initBody = function () {
  80 + _initBody.apply(this, Array.prototype.slice.apply(arguments));
  81 +
  82 + if (!this.options.leftFixedColumns && !this.options.rightFixedColumns) {
  83 + return;
  84 + }
  85 +
  86 + var that = this;
  87 + if (this.options.leftFixedColumns) {
  88 + this.$fixedBodyColumns.html('');
  89 + this.$body.find('> tr[data-index]').each(function () {
  90 + var $tr = $(this).clone(),
  91 + $tds = $tr.clone().find('td');
  92 +
  93 + $tr.html('');
  94 + for (var i = 0; i < that.options.leftFixedNumber; i++) {
  95 + $tr.append($tds.eq(i).clone());
  96 + }
  97 + that.$fixedBodyColumns.append($tr);
  98 + });
  99 + }
  100 + if (this.options.rightFixedColumns) {
  101 + this.$rightfixedBodyColumns.html('');
  102 + this.$body.find('> tr[data-index]').each(function () {
  103 + var $tr = $(this).clone(),
  104 + $tds = $tr.clone().find('td');
  105 +
  106 + $tr.html('');
  107 + for (var i = 0; i < that.options.rightFixedNumber; i++) {
  108 + var indexTd = $tds.length - that.options.rightFixedNumber + i;
  109 + var oldTd = $tds.eq(indexTd);
  110 + var fixTd = oldTd.clone();
  111 + var buttons = fixTd.find('button');
  112 + //事件转移:冻结列里面的事件转移到实际按钮的事件
  113 + buttons.each(function (key, item) {
  114 + $(item).click(function () {
  115 + that.$body.find("tr[data-index=" + $tr.attr('data-index') + "] td:eq(" + indexTd + ") button:eq(" + key + ")").click();
  116 + });
  117 + });
  118 + $tr.append(fixTd);
  119 + }
  120 + that.$rightfixedBodyColumns.append($tr);
  121 + });
  122 + }
  123 + };
  124 +
  125 + BootstrapTable.prototype.resetView = function () {
  126 + _resetView.apply(this, Array.prototype.slice.apply(arguments));
  127 +
  128 + if (!this.options.leftFixedColumns && !this.options.rightFixedColumns) {
  129 + return;
  130 + }
  131 +
  132 + clearTimeout(this.timeoutHeaderColumns_);
  133 + this.timeoutHeaderColumns_ = setTimeout($.proxy(this.fitHeaderColumns, this), this.$el.is(':hidden') ? 100 : 0);
  134 +
  135 + clearTimeout(this.timeoutBodyColumns_);
  136 + this.timeoutBodyColumns_ = setTimeout($.proxy(this.fitBodyColumns, this), this.$el.is(':hidden') ? 100 : 0);
  137 + };
  138 +
  139 + BootstrapTable.prototype.fitHeaderColumns = function () {
  140 + var that = this,
  141 + visibleFields = this.getVisibleFields(),
  142 + headerWidth = 0;
  143 + if (that.options.leftFixedColumns) {
  144 + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) {
  145 + var $this = $(this),
  146 + index = i;
  147 +
  148 + if (i >= that.options.leftFixedNumber) {
  149 + return false;
  150 + }
  151 +
  152 + if (that.options.detailView && !that.options.cardView) {
  153 + index = i - 1;
  154 + }
  155 +
  156 + that.$fixedBody.find('thead th[data-field="' + visibleFields[index] + '"]')
  157 + .find('.fht-cell').width($this.innerWidth() - 1);
  158 + headerWidth += $this.outerWidth();
  159 + });
  160 + this.$fixedBody.width(headerWidth - 1).show();
  161 + }
  162 + if (that.options.rightFixedColumns) {
  163 + this.$body.find('tr:first-child:not(.no-records-found) > *').each(function (i) {
  164 + var $this = $(this),
  165 + index = i;
  166 +
  167 + if (i >= visibleFields.length - that.options.rightFixedNumber) {
  168 + //return false;
  169 +
  170 +
  171 + //if (that.options.detailView && !that.options.cardView) {
  172 + // index = i - 1;
  173 + //}
  174 + // debugger;
  175 + that.$rightfixedBody.find('thead th[data-field="' + visibleFields[index] + '"]')
  176 + .find('.fht-cell').width($this.innerWidth() - 1);
  177 + headerWidth += $this.outerWidth();
  178 + }
  179 + });
  180 + this.$rightfixedBody.width(headerWidth - 1).show();
  181 + }
  182 + };
  183 +
  184 + BootstrapTable.prototype.fitBodyColumns = function () {
  185 + var that = this,
  186 + top = -(parseInt(this.$el.css('margin-top')) - 2),
  187 + height = this.$tableBody.height() - 2;
  188 +
  189 + if (that.options.leftFixedColumns) {
  190 + if (!this.$body.find('> tr[data-index]').length) {
  191 + this.$fixedBody.hide();
  192 + return;
  193 + }
  194 +
  195 + this.$body.find('> tr').each(function (i) {
  196 + that.$fixedBody.find('tbody tr:eq(' + i + ')').height($(this).height());
  197 + });
  198 +
  199 + //// events
  200 + this.$tableBody.on('scroll', function () {
  201 + that.$fixedBody.find('table').css('top', -$(this).scrollTop());
  202 + });
  203 + this.$body.find('> tr[data-index]').off('hover').hover(function () {
  204 + var index = $(this).data('index');
  205 + that.$fixedBody.find('tr[data-index="' + index + '"]').addClass('hover');
  206 + }, function () {
  207 + var index = $(this).data('index');
  208 + that.$fixedBody.find('tr[data-index="' + index + '"]').removeClass('hover');
  209 + });
  210 + this.$fixedBody.find('tr[data-index]').off('hover').hover(function () {
  211 + var index = $(this).data('index');
  212 + that.$body.find('tr[data-index="' + index + '"]').addClass('hover');
  213 + }, function () {
  214 + var index = $(this).data('index');
  215 + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover');
  216 + });
  217 + }
  218 + if (that.options.rightFixedColumns) {
  219 + if (!this.$body.find('> tr[data-index]').length) {
  220 + this.$rightfixedBody.hide();
  221 + return;
  222 + }
  223 +
  224 + this.$body.find('> tr').each(function (i) {
  225 + that.$rightfixedBody.find('tbody tr:eq(' + i + ')').height($(this).height());
  226 + });
  227 +
  228 + //// events
  229 + this.$tableBody.on('scroll', function () {
  230 + that.$rightfixedBody.find('table').css('top', -$(this).scrollTop());
  231 + });
  232 + this.$body.find('> tr[data-index]').off('hover').hover(function () {
  233 + var index = $(this).data('index');
  234 + that.$rightfixedBody.find('tr[data-index="' + index + '"]').addClass('hover');
  235 + }, function () {
  236 + var index = $(this).data('index');
  237 + that.$rightfixedBody.find('tr[data-index="' + index + '"]').removeClass('hover');
  238 + });
  239 + this.$rightfixedBody.find('tr[data-index]').off('hover').hover(function () {
  240 + var index = $(this).data('index');
  241 + that.$body.find('tr[data-index="' + index + '"]').addClass('hover');
  242 + }, function () {
  243 + var index = $(this).data('index');
  244 + that.$body.find('> tr[data-index="' + index + '"]').removeClass('hover');
  245 + });
  246 + }
  247 + };
  248 +
  249 +})(jQuery);
0 250 \ No newline at end of file
... ...
resource/lib/bootstrap-table/bootstrap-table-zh-CN.js 0 → 100644
  1 +/**
  2 + * Bootstrap Table Chinese translation
  3 + * Author: Zhixin Wen<wenzhixin2010@gmail.com>
  4 + */
  5 +(function ($) {
  6 + 'use strict';
  7 +
  8 + $.fn.bootstrapTable.locales['zh-CN'] = {
  9 + formatLoadingMessage: function () {
  10 + return '<div class="spinner">'+
  11 + '<div class="spinner-container container1">'+
  12 + '<div class="circle1"></div>'+
  13 + '<div class="circle2"></div>'+
  14 + '<div class="circle3"></div>'+
  15 + '<div class="circle4"></div>'+
  16 + '</div>'+
  17 + '<div class="spinner-container container2">'+
  18 + '<div class="circle1"></div>'+
  19 + '<div class="circle2"></div>'+
  20 + '<div class="circle3"></div>'+
  21 + '<div class="circle4"></div>'+
  22 + '</div>'+
  23 + '<div class="spinner-container container3">'+
  24 + '<div class="circle1"></div>'+
  25 + '<div class="circle2"></div>'+
  26 + '<div class="circle3"></div>'+
  27 + '<div class="circle4"></div>'+
  28 + '</div>'+
  29 + '</div>';
  30 + },
  31 + formatRecordsPerPage: function (pageNumber) {
  32 + return '每页 ' + pageNumber + ' 条';
  33 + },
  34 + formatShowingRows: function (pageFrom, pageTo, totalRows) {
  35 + return '总共 ' + totalRows + ' 条 ';
  36 + },
  37 + formatSearch: function () {
  38 + return '搜索';
  39 + },
  40 + formatNoMatches: function () {
  41 + return '<div class="formatNoMatches"></div>暂无数据';
  42 + },
  43 + formatPaginationSwitch: function () {
  44 + return '隐藏/显示分页';
  45 + },
  46 + formatRefresh: function () {
  47 + return '刷新';
  48 + },
  49 + formatToggle: function () {
  50 + return '切换';
  51 + },
  52 + formatColumns: function () {
  53 + return '列';
  54 + },
  55 + formatExport: function () {
  56 + return '导出数据';
  57 + },
  58 + formatClearFilters: function () {
  59 + return '清空过滤';
  60 + }
  61 + };
  62 +
  63 + $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);
  64 +
  65 +})(jQuery);
0 66 \ No newline at end of file
... ...
resource/lib/bootstrap-table/bootstrap-table.min.css 0 → 100644
  1 +.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:6px 10px 6px 24px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{color:rgba(0,0,0,.45);display:none;position:absolute;top:62px!important;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #d8e2e5;border-top:1px solid #d8e2e5!important;}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}
0 2 \ No newline at end of file
... ...
resource/lib/bootstrap-table/bootstrap-table.min.js 0 → 100644
  1 +/*
  2 + * bootstrap-table - v1.11.0 - 2016-07-02
  3 + * https://github.com/wenzhixin/bootstrap-table
  4 + * Copyright (c) 2016 zhixin wen
  5 + * Licensed MIT License
  6 + */
  7 +!function(a){"use strict";var b=null,c=function(a){var b=arguments,c=!0,d=1;return a=a.replace(/%s/g,function(){var a=b[d++];return"undefined"==typeof a?(c=!1,""):a}),c?a:""},d=function(b,c,d,e){var f="";return a.each(b,function(a,b){return b[c]===e?(f=b[d],!1):!0}),f},e=function(b,c){var d=-1;return a.each(b,function(a,b){return b.field===c?(d=a,!1):!0}),d},f=function(b){var c,d,e,f=0,g=[];for(c=0;c<b[0].length;c++)f+=b[0][c].colspan||1;for(c=0;c<b.length;c++)for(g[c]=[],d=0;f>d;d++)g[c][d]=!1;for(c=0;c<b.length;c++)for(d=0;d<b[c].length;d++){var h=b[c][d],i=h.rowspan||1,j=h.colspan||1,k=a.inArray(!1,g[c]);for(1===j&&(h.fieldIndex=k,"undefined"==typeof h.field&&(h.field=k)),e=0;i>e;e++)g[c+e][k]=!0;for(e=0;j>e;e++)g[c][k+e]=!0}},g=function(){if(null===b){var c,d,e=a("<p/>").addClass("fixed-table-scroll-inner"),f=a("<div/>").addClass("fixed-table-scroll-outer");f.append(e),a("body").append(f),c=e[0].offsetWidth,f.css("overflow","scroll"),d=e[0].offsetWidth,c===d&&(d=f[0].clientWidth),f.remove(),b=c-d}return b},h=function(b,d,e,f){var g=d;if("string"==typeof d){var h=d.split(".");h.length>1?(g=window,a.each(h,function(a,b){g=g[b]})):g=window[d]}return"object"==typeof g?g:"function"==typeof g?g.apply(b,e):!g&&"string"==typeof d&&c.apply(this,[d].concat(e))?c.apply(this,[d].concat(e)):f},i=function(b,c,d){var e=Object.getOwnPropertyNames(b),f=Object.getOwnPropertyNames(c),g="";if(d&&e.length!==f.length)return!1;for(var h=0;h<e.length;h++)if(g=e[h],a.inArray(g,f)>-1&&b[g]!==c[g])return!1;return!0},j=function(a){return"string"==typeof a?a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/`/g,"&#x60;"):a},k=function(b){var c=0;return b.children().each(function(){c<a(this).outerHeight(!0)&&(c=a(this).outerHeight(!0))}),c},l=function(a){for(var b in a){var c=b.split(/(?=[A-Z])/).join("-").toLowerCase();c!==b&&(a[c]=a[b],delete a[b])}return a},m=function(a,b,c){var d=a;if("string"!=typeof b||a.hasOwnProperty(b))return c?j(a[b]):a[b];var e=b.split(".");for(var f in e)d=d&&d[e[f]];return c?j(d):d},n=function(){return!!(navigator.userAgent.indexOf("MSIE ")>0||navigator.userAgent.match(/Trident.*rv\:11\./))},o=function(){Object.keys||(Object.keys=function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],d=c.length;return function(e){if("object"!=typeof e&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var f,g,h=[];for(f in e)a.call(e,f)&&h.push(f);if(b)for(g=0;d>g;g++)a.call(e,c[g])&&h.push(c[g]);return h}}())},p=function(b,c){this.options=c,this.$el=a(b),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0,this.init()};p.DEFAULTS={classes:"table table-hover",locale:void 0,height:void 0,undefinedText:"-",sortName:void 0,sortOrder:"asc",sortStable:!1,striped:!1,columns:[[]],data:[],dataField:"rows",method:"get",url:void 0,ajax:void 0,cache:!0,contentType:"application/json",dataType:"json",ajaxOptions:{},queryParams:function(a){return a},queryParamsType:"limit",responseHandler:function(a){return a},pagination:!1,onlyInfoPagination:!1,sidePagination:"client",totalRows:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationPreText:"&lsaquo;",paginationNextText:"&rsaquo;",search:!1,searchOnEnterKey:!1,strictSearch:!1,searchAlign:"right",selectItemName:"btSelectItem",showHeader:!0,showFooter:!1,showColumns:!1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,buttonsAlign:"right",smartDisplay:!0,escape:!1,minimumCountColumns:1,idField:void 0,uniqueId:void 0,cardView:!1,detailView:!1,detailFormatter:function(){return""},trimOnSearch:!0,clickToSelect:!1,singleSelect:!1,toolbar:void 0,toolbarAlign:"left",checkboxHeader:!0,sortable:!0,silentSort:!0,maintainSelected:!1,searchTimeOut:500,searchText:"",iconSize:void 0,buttonsClass:"default",iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggle:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus"},customSearch:a.noop,customSort:a.noop,rowStyle:function(){return{}},rowAttributes:function(){return{}},footerStyle:function(){return{}},onAll:function(){return!1},onClickCell:function(){return!1},onDblClickCell:function(){return!1},onClickRow:function(){return!1},onDblClickRow:function(){return!1},onSort:function(){return!1},onCheck:function(){return!1},onUncheck:function(){return!1},onCheckAll:function(){return!1},onUncheckAll:function(){return!1},onCheckSome:function(){return!1},onUncheckSome:function(){return!1},onLoadSuccess:function(){return!1},onLoadError:function(){return!1},onColumnSwitch:function(){return!1},onPageChange:function(){return!1},onSearch:function(){return!1},onToggle:function(){return!1},onPreBody:function(){return!1},onPostBody:function(){return!1},onPostHeader:function(){return!1},onExpandRow:function(){return!1},onCollapseRow:function(){return!1},onRefreshOptions:function(){return!1},onRefresh:function(){return!1},onResetView:function(){return!1}},p.LOCALES={},p.LOCALES["en-US"]=p.LOCALES.en={formatLoadingMessage:function(){return"Loading, please wait..."},formatRecordsPerPage:function(a){return c("%s rows per page",a)},formatShowingRows:function(a,b,d){return c("Showing %s to %s of %s rows",a,b,d)},formatDetailPagination:function(a){return c("Showing %s rows",a)},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatColumns:function(){return"Columns"},formatAllRows:function(){return"All"}},a.extend(p.DEFAULTS,p.LOCALES["en-US"]),p.COLUMN_DEFAULTS={radio:!1,checkbox:!1,checkboxEnabled:!0,field:void 0,title:void 0,titleTooltip:void 0,"class":void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,width:void 0,sortable:!1,order:"asc",visible:!0,switchable:!0,clickToSelect:!0,formatter:void 0,footerFormatter:void 0,events:void 0,sorter:void 0,sortName:void 0,cellStyle:void 0,searchable:!0,searchFormatter:!0,cardVisible:!0},p.EVENTS={"all.bs.table":"onAll","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView","refresh.bs.table":"onRefresh"},p.prototype.init=function(){this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initFooter(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()},p.prototype.initLocale=function(){if(this.options.locale){var b=this.options.locale.split(/-|_/);b[0].toLowerCase(),b[1]&&b[1].toUpperCase(),a.fn.bootstrapTable.locales[this.options.locale]?a.extend(this.options,a.fn.bootstrapTable.locales[this.options.locale]):a.fn.bootstrapTable.locales[b.join("-")]?a.extend(this.options,a.fn.bootstrapTable.locales[b.join("-")]):a.fn.bootstrapTable.locales[b[0]]&&a.extend(this.options,a.fn.bootstrapTable.locales[b[0]])}},p.prototype.initContainer=function(){this.$container=a(['<div class="bootstrap-table">','<div class="fixed-table-toolbar"></div>',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'<div class="fixed-table-pagination" style="clear: both;"></div>':"",'<div class="fixed-table-container">','<div class="fixed-table-header"><table></table></div>','<div class="fixed-table-body">','<div class="fixed-table-loading">',this.options.formatLoadingMessage(),"</div>","</div>",'<div class="fixed-table-footer"><table><tr></tr></table></div>',"bottom"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'<div class="fixed-table-pagination"></div>':"","</div>","</div>"].join("")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$container.find(".fixed-table-footer"),this.$toolbar=this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('<div class="clearfix"></div>'),this.$el.addClass(this.options.classes),this.options.striped&&this.$el.addClass("table-striped"),-1!==a.inArray("table-no-bordered",this.options.classes.split(" "))&&this.$tableContainer.addClass("table-no-bordered")},p.prototype.initTable=function(){var b=this,c=[],d=[];if(this.$header=this.$el.find(">thead"),this.$header.length||(this.$header=a("<thead></thead>").appendTo(this.$el)),this.$header.find("tr").each(function(){var b=[];a(this).find("th").each(function(){"undefined"!=typeof a(this).data("field")&&a(this).data("field",a(this).data("field")+""),b.push(a.extend({},{title:a(this).html(),"class":a(this).attr("class"),titleTooltip:a(this).attr("title"),rowspan:a(this).attr("rowspan")?+a(this).attr("rowspan"):void 0,colspan:a(this).attr("colspan")?+a(this).attr("colspan"):void 0},a(this).data()))}),c.push(b)}),a.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=a.extend(!0,[],c,this.options.columns),this.columns=[],f(this.options.columns),a.each(this.options.columns,function(c,d){a.each(d,function(d,e){e=a.extend({},p.COLUMN_DEFAULTS,e),"undefined"!=typeof e.fieldIndex&&(b.columns[e.fieldIndex]=e),b.options.columns[c][d]=e})}),!this.options.data.length){var e=[];this.$el.find(">tbody>tr").each(function(c){var f={};f._id=a(this).attr("id"),f._class=a(this).attr("class"),f._data=l(a(this).data()),a(this).find(">td").each(function(d){for(var g,h,i=a(this),j=+i.attr("colspan")||1,k=+i.attr("rowspan")||1;e[c]&&e[c][d];d++);for(g=d;d+j>g;g++)for(h=c;c+k>h;h++)e[h]||(e[h]=[]),e[h][g]=!0;var m=b.columns[d].field;f[m]=a(this).html(),f["_"+m+"_id"]=a(this).attr("id"),f["_"+m+"_class"]=a(this).attr("class"),f["_"+m+"_rowspan"]=a(this).attr("rowspan"),f["_"+m+"_colspan"]=a(this).attr("colspan"),f["_"+m+"_title"]=a(this).attr("title"),f["_"+m+"_data"]=l(a(this).data())}),d.push(f)}),this.options.data=d,d.length&&(this.fromHtml=!0)}},p.prototype.initHeader=function(){var b=this,d={},e=[];this.header={fields:[],styles:[],classes:[],formatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},a.each(this.options.columns,function(f,g){e.push("<tr>"),0===f&&!b.options.cardView&&b.options.detailView&&e.push(c('<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>',b.options.columns.length)),a.each(g,function(a,f){var g="",h="",i="",j="",k=c(' class="%s"',f["class"]),l=(b.options.sortOrder||f.order,"px"),m=f.width;if(void 0===f.width||b.options.cardView||"string"==typeof f.width&&-1!==f.width.indexOf("%")&&(l="%"),f.width&&"string"==typeof f.width&&(m=f.width.replace("%","").replace("px","")),h=c("text-align: %s; ",f.halign?f.halign:f.align),i=c("text-align: %s; ",f.align),j=c("vertical-align: %s; ",f.valign),j+=c("width: %s; ",!f.checkbox&&!f.radio||m?m?m+l:void 0:"36px"),"undefined"!=typeof f.fieldIndex){if(b.header.fields[f.fieldIndex]=f.field,b.header.styles[f.fieldIndex]=i+j,b.header.classes[f.fieldIndex]=k,b.header.formatters[f.fieldIndex]=f.formatter,b.header.events[f.fieldIndex]=f.events,b.header.sorters[f.fieldIndex]=f.sorter,b.header.sortNames[f.fieldIndex]=f.sortName,b.header.cellStyles[f.fieldIndex]=f.cellStyle,b.header.searchables[f.fieldIndex]=f.searchable,!f.visible)return;if(b.options.cardView&&!f.cardVisible)return;d[f.field]=f}e.push("<th"+c(' title="%s"',f.titleTooltip),f.checkbox||f.radio?c(' class="bs-checkbox %s"',f["class"]||""):k,c(' style="%s"',h+j),c(' rowspan="%s"',f.rowspan),c(' colspan="%s"',f.colspan),c(' data-field="%s"',f.field),"tabindex='0'",">"),e.push(c('<div class="th-inner %s">',b.options.sortable&&f.sortable?"sortable both":"")),g=f.title,f.checkbox&&(!b.options.singleSelect&&b.options.checkboxHeader&&(g='<input name="btSelectAll" type="checkbox" />'),b.header.stateField=f.field),f.radio&&(g="",b.header.stateField=f.field,b.options.singleSelect=!0),e.push(g),e.push("</div>"),e.push('<div class="fht-cell"></div>'),e.push("</div>"),e.push("</th>")}),e.push("</tr>")}),this.$header.html(e.join("")),this.$header.find("th[data-field]").each(function(){a(this).data(d[a(this).data("field")])}),this.$container.off("click",".th-inner").on("click",".th-inner",function(c){var d=a(this);return b.options.detailView&&d.closest(".bootstrap-table")[0]!==b.$container[0]?!1:void(b.options.sortable&&d.parent().data().sortable&&b.onSort(c))}),this.$header.children().children().off("keypress").on("keypress",function(c){if(b.options.sortable&&a(this).data().sortable){var d=c.keyCode||c.which;13==d&&b.onSort(c)}}),a(window).off("resize.bootstrap-table"),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),a(window).on("resize.bootstrap-table",a.proxy(this.resetWidth,this))),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$selectAll.off("click").on("click",function(){var c=a(this).prop("checked");b[c?"checkAll":"uncheckAll"](),b.updateSelected()})},p.prototype.initFooter=function(){!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()},p.prototype.initData=function(a,b){this.data="append"===b?this.data.concat(a):"prepend"===b?[].concat(a).concat(this.data):a||this.options.data,this.options.data="append"===b?this.options.data.concat(a):"prepend"===b?[].concat(a).concat(this.options.data):this.data,"server"!==this.options.sidePagination&&this.initSort()},p.prototype.initSort=function(){var b=this,c=this.options.sortName,d="desc"===this.options.sortOrder?-1:1,e=a.inArray(this.options.sortName,this.header.fields);return this.options.customSort!==a.noop?void this.options.customSort.apply(this,[this.options.sortName,this.options.sortOrder]):void(-1!==e&&(this.options.sortStable&&a.each(this.data,function(a,b){b.hasOwnProperty("_position")||(b._position=a)}),this.data.sort(function(f,g){b.header.sortNames[e]&&(c=b.header.sortNames[e]);var i=m(f,c,b.options.escape),j=m(g,c,b.options.escape),k=h(b.header,b.header.sorters[e],[i,j]);return void 0!==k?d*k:((void 0===i||null===i)&&(i=""),(void 0===j||null===j)&&(j=""),b.options.sortStable&&i===j&&(i=f._position,j=g._position),a.isNumeric(i)&&a.isNumeric(j)?(i=parseFloat(i),j=parseFloat(j),j>i?-1*d:d):i===j?0:("string"!=typeof i&&(i=i.toString()),-1===i.localeCompare(j)?-1*d:d))})))},p.prototype.onSort=function(b){var c="keypress"===b.type?a(b.currentTarget):a(b.currentTarget).parent(),d=this.$header.find("th").eq(c.index());return this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===c.data("field")?this.options.sortOrder="asc"===this.options.sortOrder?"desc":"asc":(this.options.sortName=c.data("field"),this.options.sortOrder="asc"===c.data("order")?"desc":"asc"),this.trigger("sort",this.options.sortName,this.options.sortOrder),c.add(d).data("order",this.options.sortOrder),this.getCaret(),"server"===this.options.sidePagination?void this.initServer(this.options.silentSort):(this.initSort(),void this.initBody())},p.prototype.initToolbar=function(){var b,d,e=this,f=[],g=0,i=0;this.$toolbar.find(".bs-bars").children().length&&a("body").append(a(this.options.toolbar)),this.$toolbar.html(""),("string"==typeof this.options.toolbar||"object"==typeof this.options.toolbar)&&a(c('<div class="bs-bars pull-%s"></div>',this.options.toolbarAlign)).appendTo(this.$toolbar).append(a(this.options.toolbar)),f=[c('<div class="columns columns-%s btn-group pull-%s">',this.options.buttonsAlign,this.options.buttonsAlign)],"string"==typeof this.options.icons&&(this.options.icons=h(null,this.options.icons)),this.options.showPaginationSwitch&&f.push(c('<button class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+'" type="button" name="paginationSwitch" title="%s">',this.options.formatPaginationSwitch()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.paginationSwitchDown),"</button>"),this.options.showRefresh&&f.push(c('<button class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+'" type="button" name="refresh" title="%s">',this.options.formatRefresh()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.refresh),"</button>"),this.options.showToggle&&f.push(c('<button class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+'" type="button" name="toggle" title="%s">',this.options.formatToggle()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.toggle),"</button>"),this.options.showColumns&&(f.push(c('<div class="keep-open btn-group" title="%s">',this.options.formatColumns()),'<button type="button" class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+' dropdown-toggle" data-toggle="dropdown">',c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.columns),' <span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">'),a.each(this.columns,function(a,b){if(!(b.radio||b.checkbox||e.options.cardView&&!b.cardVisible)){var d=b.visible?' checked="checked"':"";b.switchable&&(f.push(c('<li><label><input type="checkbox" data-field="%s" value="%s"%s> %s</label></li>',b.field,a,d,b.title)),i++)}}),f.push("</ul>","</div>")),f.push("</div>"),(this.showToolbar||f.length>2)&&this.$toolbar.append(f.join("")),this.options.showPaginationSwitch&&this.$toolbar.find('button[name="paginationSwitch"]').off("click").on("click",a.proxy(this.togglePagination,this)),this.options.showRefresh&&this.$toolbar.find('button[name="refresh"]').off("click").on("click",a.proxy(this.refresh,this)),this.options.showToggle&&this.$toolbar.find('button[name="toggle"]').off("click").on("click",function(){e.toggleView()}),this.options.showColumns&&(b=this.$toolbar.find(".keep-open"),i<=this.options.minimumCountColumns&&b.find("input").prop("disabled",!0),b.find("li").off("click").on("click",function(a){a.stopImmediatePropagation()}),b.find("input").off("click").on("click",function(){var b=a(this);e.toggleColumn(a(this).val(),b.prop("checked"),!1),e.trigger("column-switch",a(this).data("field"),b.prop("checked"))})),this.options.search&&(f=[],f.push('<div class="pull-'+this.options.searchAlign+' search">',c('<input class="form-control'+c(" input-%s",this.options.iconSize)+'" type="text" placeholder="%s">',this.options.formatSearch()),"</div>"),this.$toolbar.append(f.join("")),d=this.$toolbar.find(".search input"),d.off("keyup drop").on("keyup drop",function(b){e.options.searchOnEnterKey&&13!==b.keyCode||a.inArray(b.keyCode,[37,38,39,40])>-1||(clearTimeout(g),g=setTimeout(function(){e.onSearch(b)},e.options.searchTimeOut))}),n()&&d.off("mouseup").on("mouseup",function(a){clearTimeout(g),g=setTimeout(function(){e.onSearch(a)},e.options.searchTimeOut)}))},p.prototype.onSearch=function(b){var c=a.trim(a(b.currentTarget).val());this.options.trimOnSearch&&a(b.currentTarget).val()!==c&&a(b.currentTarget).val(c),c!==this.searchText&&(this.searchText=c,this.options.searchText=c,this.options.pageNumber=1,this.initSearch(),this.updatePagination(),this.trigger("search",c))},p.prototype.initSearch=function(){var b=this;if("server"!==this.options.sidePagination){if(this.options.customSearch!==a.noop)return void this.options.customSearch.apply(this,[this.searchText]);var c=this.searchText&&(this.options.escape?j(this.searchText):this.searchText).toLowerCase(),d=a.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.data=d?a.grep(this.options.data,function(b){for(var c in d)if(a.isArray(d[c])&&-1===a.inArray(b[c],d[c])||b[c]!==d[c])return!1;return!0}):this.options.data,this.data=c?a.grep(this.data,function(d,f){for(var g=0;g<b.header.fields.length;g++)if(b.header.searchables[g]){var i,j=a.isNumeric(b.header.fields[g])?parseInt(b.header.fields[g],10):b.header.fields[g],k=b.columns[e(b.columns,j)];if("string"==typeof j){i=d;for(var l=j.split("."),m=0;m<l.length;m++)i=i[l[m]];k&&k.searchFormatter&&(i=h(k,b.header.formatters[g],[i,d,f],i))}else i=d[j];if("string"==typeof i||"number"==typeof i)if(b.options.strictSearch){if((i+"").toLowerCase()===c)return!0}else if(-1!==(i+"").toLowerCase().indexOf(c))return!0}return!1}):this.data}},p.prototype.initPagination=function(){if(!this.options.pagination)return void this.$pagination.hide();this.$pagination.show();var b,d,e,f,g,h,i,j,k,l=this,m=[],n=!1,o=this.getData(),p=this.options.pageList;if("server"!==this.options.sidePagination&&(this.options.totalRows=o.length),this.totalPages=0,this.options.totalRows){if(this.options.pageSize===this.options.formatAllRows())this.options.pageSize=this.options.totalRows,n=!0;else if(this.options.pageSize===this.options.totalRows){var q="string"==typeof this.options.pageList?this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").toLowerCase().split(","):this.options.pageList;a.inArray(this.options.formatAllRows().toLowerCase(),q)>-1&&(n=!0)}this.totalPages=~~((this.options.totalRows-1)/this.options.pageSize)+1,this.options.totalPages=this.totalPages}if(this.totalPages>0&&this.options.pageNumber>this.totalPages&&(this.options.pageNumber=this.totalPages),this.pageFrom=(this.options.pageNumber-1)*this.options.pageSize+1,this.pageTo=this.options.pageNumber*this.options.pageSize,this.pageTo>this.options.totalRows&&(this.pageTo=this.options.totalRows),m.push('<div class="pull-'+this.options.paginationDetailHAlign+' pagination-detail">','<span class="pagination-info">',this.options.onlyInfoPagination?this.options.formatDetailPagination(this.options.totalRows):this.options.formatShowingRows(this.pageFrom,this.pageTo,this.options.totalRows),"</span>"),!this.options.onlyInfoPagination){m.push('<span class="page-list">');var r=[c('<span class="btn-group %s">',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?"dropdown":"dropup"),'<button type="button" class="btn'+c(" btn-%s",this.options.buttonsClass)+c(" btn-%s",this.options.iconSize)+' dropdown-toggle" data-toggle="dropdown">','<span class="page-size">',n?this.options.formatAllRows():this.options.pageSize,"</span>",' <span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">'];if("string"==typeof this.options.pageList){var s=this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").split(",");p=[],a.each(s,function(a,b){p.push(b.toUpperCase()===l.options.formatAllRows().toUpperCase()?l.options.formatAllRows():+b)})}for(a.each(p,function(a,b){if(!l.options.smartDisplay||0===a||p[a-1]<=l.options.totalRows){var d;d=n?b===l.options.formatAllRows()?' class="active"':"":b===l.options.pageSize?' class="active"':"",r.push(c('<li%s><a href="javascript:void(0)">%s</a></li>',d,b))}}),r.push("</ul></span>"),m.push(this.options.formatRecordsPerPage(r.join(""))),m.push("</span>"),m.push("</div>",'<div class="pull-'+this.options.paginationHAlign+' pagination">','<ul class="pagination'+c(" pagination-%s",this.options.iconSize)+'">','<li class="page-pre"><a href="javascript:void(0)">'+this.options.paginationPreText+"</a></li>"),this.totalPages<5?(d=1,e=this.totalPages):(d=this.options.pageNumber-2,e=d+4,1>d&&(d=1,e=5),e>this.totalPages&&(e=this.totalPages,d=e-4)),this.totalPages>=6&&(this.options.pageNumber>=3&&(m.push('<li class="page-first'+(1===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',1,"</a>","</li>"),d++),this.options.pageNumber>=4&&(4==this.options.pageNumber||6==this.totalPages||7==this.totalPages?d--:m.push('<li class="page-first-separator disabled">','<a href="javascript:void(0)">...</a>',"</li>"),e--)),this.totalPages>=7&&this.options.pageNumber>=this.totalPages-2&&d--,6==this.totalPages?this.options.pageNumber>=this.totalPages-2&&e++:this.totalPages>=7&&(7==this.totalPages||this.options.pageNumber>=this.totalPages-3)&&e++,b=d;e>=b;b++)m.push('<li class="page-number'+(b===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',b,"</a>","</li>");this.totalPages>=8&&this.options.pageNumber<=this.totalPages-4&&m.push('<li class="page-last-separator disabled">','<a href="javascript:void(0)">...</a>',"</li>"),this.totalPages>=6&&this.options.pageNumber<=this.totalPages-3&&m.push('<li class="page-last'+(this.totalPages===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',this.totalPages,"</a>","</li>"),m.push('<li class="page-next"><a href="javascript:void(0)">'+this.options.paginationNextText+"</a></li>","</ul>","</div>")}this.$pagination.html(m.join("")),this.options.onlyInfoPagination||(f=this.$pagination.find(".page-list a"),g=this.$pagination.find(".page-first"),h=this.$pagination.find(".page-pre"),i=this.$pagination.find(".page-next"),j=this.$pagination.find(".page-last"),k=this.$pagination.find(".page-number"),this.options.smartDisplay&&(this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),(p.length<2||this.options.totalRows<=p[0])&&this.$pagination.find("span.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"]()),n&&(this.options.pageSize=this.options.formatAllRows()),f.off("click").on("click",a.proxy(this.onPageListChange,this)),g.off("click").on("click",a.proxy(this.onPageFirst,this)),h.off("click").on("click",a.proxy(this.onPagePre,this)),i.off("click").on("click",a.proxy(this.onPageNext,this)),j.off("click").on("click",a.proxy(this.onPageLast,this)),k.off("click").on("click",a.proxy(this.onPageNumber,this)))},p.prototype.updatePagination=function(b){b&&a(b.currentTarget).hasClass("disabled")||(this.options.maintainSelected||this.resetRows(),this.initPagination(),"server"===this.options.sidePagination?this.initServer():this.initBody(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize))},p.prototype.onPageListChange=function(b){var c=a(b.currentTarget);c.parent().addClass("active").siblings().removeClass("active"),this.options.pageSize=c.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+c.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(b)},p.prototype.onPageFirst=function(a){this.options.pageNumber=1,this.updatePagination(a)},p.prototype.onPagePre=function(a){this.options.pageNumber-1===0?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(a)},p.prototype.onPageNext=function(a){this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(a)},p.prototype.onPageLast=function(a){this.options.pageNumber=this.totalPages,this.updatePagination(a)},p.prototype.onPageNumber=function(b){this.options.pageNumber!==+a(b.currentTarget).text()&&(this.options.pageNumber=+a(b.currentTarget).text(),this.updatePagination(b))},p.prototype.initBody=function(b){var f=this,g=[],i=this.getData();this.trigger("pre-body",i),this.$body=this.$el.find(">tbody"),this.$body.length||(this.$body=a("<tbody></tbody>").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=i.length);for(var k=this.pageFrom-1;k<this.pageTo;k++){var l,n=i[k],o={},p=[],q="",r={},s=[];if(o=h(this.options,this.options.rowStyle,[n,k],o),o&&o.css)for(l in o.css)p.push(l+": "+o.css[l]);if(r=h(this.options,this.options.rowAttributes,[n,k],r))for(l in r)s.push(c('%s="%s"',l,j(r[l])));n._data&&!a.isEmptyObject(n._data)&&a.each(n._data,function(a,b){"index"!==a&&(q+=c(' data-%s="%s"',a,b))}),g.push("<tr",c(" %s",s.join(" ")),c(' id="%s"',a.isArray(n)?void 0:n._id),c(' class="%s"',o.classes||(a.isArray(n)?void 0:n._class)),c(' data-index="%s"',k),c(' data-uniqueid="%s"',n[this.options.uniqueId]),c("%s",q),">"),this.options.cardView&&g.push(c('<td colspan="%s"><div class="card-views">',this.header.fields.length)),!this.options.cardView&&this.options.detailView&&g.push("<td>",'<a class="detail-icon" href="javascript:">',c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.detailOpen),"</a>","</td>"),a.each(this.header.fields,function(b,e){var i="",j=m(n,e,f.options.escape),l="",q={},r="",s=f.header.classes[b],t="",u="",v="",w="",x=f.columns[b];if(!(f.fromHtml&&"undefined"==typeof j||!x.visible||f.options.cardView&&!x.cardVisible)){if(o=c('style="%s"',p.concat(f.header.styles[b]).join("; ")),n["_"+e+"_id"]&&(r=c(' id="%s"',n["_"+e+"_id"])),n["_"+e+"_class"]&&(s=c(' class="%s"',n["_"+e+"_class"])),n["_"+e+"_rowspan"]&&(u=c(' rowspan="%s"',n["_"+e+"_rowspan"])),n["_"+e+"_colspan"]&&(v=c(' colspan="%s"',n["_"+e+"_colspan"])),n["_"+e+"_title"]&&(w=c(' title="%s"',n["_"+e+"_title"])),q=h(f.header,f.header.cellStyles[b],[j,n,k,e],q),q.classes&&(s=c(' class="%s"',q.classes)),q.css){var y=[];for(var z in q.css)y.push(z+": "+q.css[z]);o=c('style="%s"',y.concat(f.header.styles[b]).join("; "))}j=h(x,f.header.formatters[b],[j,n,k],j),n["_"+e+"_data"]&&!a.isEmptyObject(n["_"+e+"_data"])&&a.each(n["_"+e+"_data"],function(a,b){"index"!==a&&(t+=c(' data-%s="%s"',a,b))}),x.checkbox||x.radio?(l=x.checkbox?"checkbox":l,l=x.radio?"radio":l,i=[c(f.options.cardView?'<div class="card-view %s">':'<td class="bs-checkbox %s">',x["class"]||""),"<input"+c(' data-index="%s"',k)+c(' name="%s"',f.options.selectItemName)+c(' type="%s"',l)+c(' value="%s"',n[f.options.idField])+c(' checked="%s"',j===!0||j&&j.checked?"checked":void 0)+c(' disabled="%s"',!x.checkboxEnabled||j&&j.disabled?"disabled":void 0)+" />",f.header.formatters[b]&&"string"==typeof j?j:"",f.options.cardView?"</div>":"</td>"].join(""),n[f.header.stateField]=j===!0||j&&j.checked):(j="undefined"==typeof j||null===j?f.options.undefinedText:j,i=f.options.cardView?['<div class="card-view">',f.options.showHeader?c('<span class="title" %s>%s</span>',o,d(f.columns,"field","title",e)):"",c('<span class="value">%s</span>',j),"</div>"].join(""):[c("<td%s %s %s %s %s %s %s>",r,s,o,t,u,v,w),j,"</td>"].join(""),f.options.cardView&&f.options.smartDisplay&&""===j&&(i='<div class="card-view"></div>')),g.push(i)}}),this.options.cardView&&g.push("</div></td>"),g.push("</tr>")}g.length||g.push('<tr class="no-records-found">',c('<td colspan="%s">%s</td>',this.$header.find("th").length,this.options.formatNoMatches()),"</tr>"),this.$body.html(g.join("")),b||this.scrollTo(0),this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",function(b){var d=a(this),g=d.parent(),h=f.data[g.data("index")],i=d[0].cellIndex,j=f.getVisibleFields(),k=j[f.options.detailView&&!f.options.cardView?i-1:i],l=f.columns[e(f.columns,k)],n=m(h,k,f.options.escape);if(!d.find(".detail-icon").length&&(f.trigger("click"===b.type?"click-cell":"dbl-click-cell",k,n,h,d),f.trigger("click"===b.type?"click-row":"dbl-click-row",h,g,k),
  8 + "click"===b.type&&f.options.clickToSelect&&l.clickToSelect)){var o=g.find(c('[name="%s"]',f.options.selectItemName));o.length&&o[0].click()}}),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",function(){var b=a(this),d=b.parent().parent(),e=d.data("index"),g=i[e];if(d.next().is("tr.detail-view"))b.find("i").attr("class",c("%s %s",f.options.iconsPrefix,f.options.icons.detailOpen)),d.next().remove(),f.trigger("collapse-row",e,g);else{b.find("i").attr("class",c("%s %s",f.options.iconsPrefix,f.options.icons.detailClose)),d.after(c('<tr class="detail-view"><td colspan="%s"></td></tr>',d.find("td").length));var j=d.next().find("td"),k=h(f.options,f.options.detailFormatter,[e,g,j],"");1===j.length&&j.append(k),f.trigger("expand-row",e,g,j)}f.resetView()}),this.$selectItem=this.$body.find(c('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",function(b){b.stopImmediatePropagation();var c=a(this),d=c.prop("checked"),e=f.data[c.data("index")];f.options.maintainSelected&&a(this).is(":radio")&&a.each(f.options.data,function(a,b){b[f.header.stateField]=!1}),e[f.header.stateField]=d,f.options.singleSelect&&(f.$selectItem.not(this).each(function(){f.data[a(this).data("index")][f.header.stateField]=!1}),f.$selectItem.filter(":checked").not(this).prop("checked",!1)),f.updateSelected(),f.trigger(d?"check":"uncheck",e,c)}),a.each(this.header.events,function(b,c){if(c){"string"==typeof c&&(c=h(null,c));var d=f.header.fields[b],e=a.inArray(d,f.getVisibleFields());f.options.detailView&&!f.options.cardView&&(e+=1);for(var g in c)f.$body.find(">tr:not(.no-records-found)").each(function(){var b=a(this),h=b.find(f.options.cardView?".card-view":"td").eq(e),i=g.indexOf(" "),j=g.substring(0,i),k=g.substring(i+1),l=c[g];h.find(k).off(j).on(j,function(a){var c=b.data("index"),e=f.data[c],g=e[d];l.apply(this,[a,g,e,c])})})}}),this.updateSelected(),this.resetView(),this.trigger("post-body",i)},p.prototype.initServer=function(b,c,d){var e,f=this,g={},i={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};this.options.pagination&&(i.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,i.pageNumber=this.options.pageNumber),(d||this.options.url||this.options.ajax)&&("limit"===this.options.queryParamsType&&(i={search:i.searchText,sort:i.sortName,order:i.sortOrder},this.options.pagination&&(i.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),i.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize)),a.isEmptyObject(this.filterColumnsPartial)||(i.filter=JSON.stringify(this.filterColumnsPartial,null)),g=h(this.options,this.options.queryParams,[i],g),a.extend(g,c||{}),g!==!1&&(b||this.$tableLoading.show(),e=a.extend({},h(null,this.options.ajaxOptions),{type:this.options.method,url:d||this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(g):g,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(a){a=h(f.options,f.options.responseHandler,[a],a),f.load(a),f.trigger("load-success",a),b||f.$tableLoading.hide()},error:function(a){f.trigger("load-error",a.status,a),b||f.$tableLoading.hide()}}),this.options.ajax?h(this,this.options.ajax,[e],null):(this._xhr&&4!==this._xhr.readyState&&this._xhr.abort(),this._xhr=a.ajax(e))))},p.prototype.initSearchText=function(){if(this.options.search&&""!==this.options.searchText){var a=this.$toolbar.find(".search input");a.val(this.options.searchText),this.onSearch({currentTarget:a})}},p.prototype.getCaret=function(){var b=this;a.each(this.$header.find("th"),function(c,d){a(d).find(".sortable").removeClass("desc asc").addClass(a(d).data("field")===b.options.sortName?b.options.sortOrder:"both")})},p.prototype.updateSelected=function(){var b=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",b),this.$selectItem.each(function(){a(this).closest("tr")[a(this).prop("checked")?"addClass":"removeClass"]("selected")})},p.prototype.updateRows=function(){var b=this;this.$selectItem.each(function(){b.data[a(this).data("index")][b.header.stateField]=a(this).prop("checked")})},p.prototype.resetRows=function(){var b=this;a.each(this.data,function(a,c){b.$selectAll.prop("checked",!1),b.$selectItem.prop("checked",!1),b.header.stateField&&(c[b.header.stateField]=!1)})},p.prototype.trigger=function(b){var c=Array.prototype.slice.call(arguments,1);b+=".bs.table",this.options[p.EVENTS[b]].apply(this.options,c),this.$el.trigger(a.Event(b),c),this.options.onAll(b,c),this.$el.trigger(a.Event("all.bs.table"),[b,c])},p.prototype.resetHeader=function(){clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(a.proxy(this.fitHeader,this),this.$el.is(":hidden")?100:0)},p.prototype.fitHeader=function(){var b,d,e,f,h=this;if(h.$el.is(":hidden"))return void(h.timeoutId_=setTimeout(a.proxy(h.fitHeader,h),100));if(b=this.$tableBody.get(0),d=b.scrollWidth>b.clientWidth&&b.scrollHeight>b.clientHeight+this.$header.outerHeight()?g():0,this.$el.css("margin-top",-this.$header.outerHeight()),e=a(":focus"),e.length>0){var i=e.parents("th");if(i.length>0){var j=i.attr("data-field");if(void 0!==j){var k=this.$header.find("[data-field='"+j+"']");k.length>0&&k.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css({"margin-right":d}).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),f=a(".focus-temp:visible:eq(0)"),f.length>0&&(f.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each(function(){h.$header_.find(c('th[data-field="%s"]',a(this).data("field"))).data(a(this).data())});var l=this.getVisibleFields(),m=this.$header_.find("th");this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(b){var d=a(this),e=b;h.options.detailView&&!h.options.cardView&&(0===b&&h.$header_.find("th.detail").find(".fht-cell").width(d.innerWidth()),e=b-1);var f=h.$header_.find(c('th[data-field="%s"]',l[e]));f.length>1&&(f=a(m[d[0].cellIndex])),f.find(".fht-cell").width(d.innerWidth())}),this.$tableBody.off("scroll").on("scroll",function(){h.$tableHeader.scrollLeft(a(this).scrollLeft()),h.options.showFooter&&!h.options.cardView&&h.$tableFooter.scrollLeft(a(this).scrollLeft())}),h.trigger("post-header")},p.prototype.resetFooter=function(){var b=this,d=b.getData(),e=[];this.options.showFooter&&!this.options.cardView&&(!this.options.cardView&&this.options.detailView&&e.push('<td><div class="th-inner">&nbsp;</div><div class="fht-cell"></div></td>'),a.each(this.columns,function(a,f){var g,i="",j="",k=[],l={},m=c(' class="%s"',f["class"]);if(f.visible&&(!b.options.cardView||f.cardVisible)){if(i=c("text-align: %s; ",f.falign?f.falign:f.align),j=c("vertical-align: %s; ",f.valign),l=h(null,b.options.footerStyle),l&&l.css)for(g in l.css)k.push(g+": "+l.css[g]);e.push("<td",m,c(' style="%s"',i+j+k.concat().join("; ")),">"),e.push('<div class="th-inner">'),e.push(h(f,f.footerFormatter,[d],"&nbsp;")||"&nbsp;"),e.push("</div>"),e.push('<div class="fht-cell"></div>'),e.push("</div>"),e.push("</td>")}}),this.$tableFooter.find("tr").html(e.join("")),this.$tableFooter.show(),clearTimeout(this.timeoutFooter_),this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),this.$el.is(":hidden")?100:0))},p.prototype.fitFooter=function(){var b,c,d;return clearTimeout(this.timeoutFooter_),this.$el.is(":hidden")?void(this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),100)):(c=this.$el.css("width"),d=c>this.$tableBody.width()?g():0,this.$tableFooter.css({"margin-right":d}).find("table").css("width",c).attr("class",this.$el.attr("class")),b=this.$tableFooter.find("td"),void this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(c){var d=a(this);b.eq(c).find(".fht-cell").width(d.innerWidth())}))},p.prototype.toggleColumn=function(a,b,d){if(-1!==a&&(this.columns[a].visible=b,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var e=this.$toolbar.find(".keep-open input").prop("disabled",!1);d&&e.filter(c('[value="%s"]',a)).prop("checked",b),e.filter(":checked").length<=this.options.minimumCountColumns&&e.filter(":checked").prop("disabled",!0)}},p.prototype.toggleRow=function(a,b,d){-1!==a&&this.$body.find("undefined"!=typeof a?c('tr[data-index="%s"]',a):c('tr[data-uniqueid="%s"]',b))[d?"show":"hide"]()},p.prototype.getVisibleFields=function(){var b=this,c=[];return a.each(this.header.fields,function(a,d){var f=b.columns[e(b.columns,d)];f.visible&&c.push(d)}),c},p.prototype.resetView=function(a){var b=0;if(a&&a.height&&(this.options.height=a.height),this.$selectAll.prop("checked",this.$selectItem.length>0&&this.$selectItem.length===this.$selectItem.filter(":checked").length),this.options.height){var c=k(this.$toolbar),d=k(this.$pagination),e=this.options.height-c-d;this.$tableContainer.css("height",e+"px")}return this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),void this.$tableFooter.hide()):(this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),b+=this.$header.outerHeight()):(this.$tableHeader.hide(),this.trigger("post-header")),this.options.showFooter&&(this.resetFooter(),this.options.height&&(b+=this.$tableFooter.outerHeight()+1)),this.getCaret(),this.$tableContainer.css("padding-bottom",b+"px"),void this.trigger("reset-view"))},p.prototype.getData=function(b){return!this.searchText&&a.isEmptyObject(this.filterColumns)&&a.isEmptyObject(this.filterColumnsPartial)?b?this.options.data.slice(this.pageFrom-1,this.pageTo):this.options.data:b?this.data.slice(this.pageFrom-1,this.pageTo):this.data},p.prototype.load=function(b){var c=!1;"server"===this.options.sidePagination?(this.options.totalRows=b.total,c=b.fixedScroll,b=b[this.options.dataField]):a.isArray(b)||(c=b.fixedScroll,b=b.data),this.initData(b),this.initSearch(),this.initPagination(),this.initBody(c)},p.prototype.append=function(a){this.initData(a,"append"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},p.prototype.prepend=function(a){this.initData(a,"prepend"),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)},p.prototype.remove=function(b){var c,d,e=this.options.data.length;if(b.hasOwnProperty("field")&&b.hasOwnProperty("values")){for(c=e-1;c>=0;c--)d=this.options.data[c],d.hasOwnProperty(b.field)&&-1!==a.inArray(d[b.field],b.values)&&this.options.data.splice(c,1);e!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},p.prototype.removeAll=function(){this.options.data.length>0&&(this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))},p.prototype.getRowByUniqueId=function(a){var b,c,d,e=this.options.uniqueId,f=this.options.data.length,g=null;for(b=f-1;b>=0;b--){if(c=this.options.data[b],c.hasOwnProperty(e))d=c[e];else{if(!c._data.hasOwnProperty(e))continue;d=c._data[e]}if("string"==typeof d?a=a.toString():"number"==typeof d&&(Number(d)===d&&d%1===0?a=parseInt(a):d===Number(d)&&0!==d&&(a=parseFloat(a))),d===a){g=c;break}}return g},p.prototype.removeByUniqueId=function(a){var b=this.options.data.length,c=this.getRowByUniqueId(a);c&&this.options.data.splice(this.options.data.indexOf(c),1),b!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initBody(!0))},p.prototype.updateByUniqueId=function(b){var c=this,d=a.isArray(b)?b:[b];a.each(d,function(b,d){var e;d.hasOwnProperty("id")&&d.hasOwnProperty("row")&&(e=a.inArray(c.getRowByUniqueId(d.id),c.options.data),-1!==e&&a.extend(c.options.data[e],d.row))}),this.initSearch(),this.initSort(),this.initBody(!0)},p.prototype.insertRow=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("row")&&(this.data.splice(a.index,0,a.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))},p.prototype.updateRow=function(b){var c=this,d=a.isArray(b)?b:[b];a.each(d,function(b,d){d.hasOwnProperty("index")&&d.hasOwnProperty("row")&&a.extend(c.options.data[d.index],d.row)}),this.initSearch(),this.initSort(),this.initBody(!0)},p.prototype.showRow=function(a){(a.hasOwnProperty("index")||a.hasOwnProperty("uniqueId"))&&this.toggleRow(a.index,a.uniqueId,!0)},p.prototype.hideRow=function(a){(a.hasOwnProperty("index")||a.hasOwnProperty("uniqueId"))&&this.toggleRow(a.index,a.uniqueId,!1)},p.prototype.getRowsHidden=function(b){var c=a(this.$body[0]).children().filter(":hidden"),d=0;if(b)for(;d<c.length;d++)a(c[d]).show();return c},p.prototype.mergeCells=function(b){var c,d,e,f=b.index,g=a.inArray(b.field,this.getVisibleFields()),h=b.rowspan||1,i=b.colspan||1,j=this.$body.find(">tr");if(this.options.detailView&&!this.options.cardView&&(g+=1),e=j.eq(f).find(">td").eq(g),!(0>f||0>g||f>=this.data.length)){for(c=f;f+h>c;c++)for(d=g;g+i>d;d++)j.eq(c).find(">td").eq(d).hide();e.attr("rowspan",h).attr("colspan",i).show()}},p.prototype.updateCell=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("field")&&a.hasOwnProperty("value")&&(this.data[a.index][a.field]=a.value,a.reinit!==!1&&(this.initSort(),this.initBody(!0)))},p.prototype.getOptions=function(){return this.options},p.prototype.getSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]})},p.prototype.getAllSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]})},p.prototype.checkAll=function(){this.checkAll_(!0)},p.prototype.uncheckAll=function(){this.checkAll_(!1)},p.prototype.checkInvert=function(){var b=this,c=b.$selectItem.filter(":enabled"),d=c.filter(":checked");c.each(function(){a(this).prop("checked",!a(this).prop("checked"))}),b.updateRows(),b.updateSelected(),b.trigger("uncheck-some",d),d=b.getSelections(),b.trigger("check-some",d)},p.prototype.checkAll_=function(a){var b;a||(b=this.getSelections()),this.$selectAll.add(this.$selectAll_).prop("checked",a),this.$selectItem.filter(":enabled").prop("checked",a),this.updateRows(),a&&(b=this.getSelections()),this.trigger(a?"check-all":"uncheck-all",b)},p.prototype.check=function(a){this.check_(!0,a)},p.prototype.uncheck=function(a){this.check_(!1,a)},p.prototype.check_=function(a,b){var d=this.$selectItem.filter(c('[data-index="%s"]',b)).prop("checked",a);this.data[b][this.header.stateField]=a,this.updateSelected(),this.trigger(a?"check":"uncheck",this.data[b],d)},p.prototype.checkBy=function(a){this.checkBy_(!0,a)},p.prototype.uncheckBy=function(a){this.checkBy_(!1,a)},p.prototype.checkBy_=function(b,d){if(d.hasOwnProperty("field")&&d.hasOwnProperty("values")){var e=this,f=[];a.each(this.options.data,function(g,h){if(!h.hasOwnProperty(d.field))return!1;if(-1!==a.inArray(h[d.field],d.values)){var i=e.$selectItem.filter(":enabled").filter(c('[data-index="%s"]',g)).prop("checked",b);h[e.header.stateField]=b,f.push(h),e.trigger(b?"check":"uncheck",h,i)}}),this.updateSelected(),this.trigger(b?"check-some":"uncheck-some",f)}},p.prototype.destroy=function(){this.$el.insertBefore(this.$container),a(this.options.toolbar).insertBefore(this.$el),this.$container.next().remove(),this.$container.remove(),this.$el.html(this.$el_.html()).css("margin-top","0").attr("class",this.$el_.attr("class")||"")},p.prototype.showLoading=function(){this.$tableLoading.show()},p.prototype.hideLoading=function(){this.$tableLoading.hide()},p.prototype.togglePagination=function(){this.options.pagination=!this.options.pagination;var a=this.$toolbar.find('button[name="paginationSwitch"] i');this.options.pagination?a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchDown):a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchUp),this.updatePagination()},p.prototype.refresh=function(a){a&&a.url&&(this.options.pageNumber=1),this.initServer(a&&a.silent,a&&a.query,a&&a.url),this.trigger("refresh",a)},p.prototype.resetWidth=function(){this.options.showHeader&&this.options.height&&this.fitHeader(),this.options.showFooter&&this.fitFooter()},p.prototype.showColumn=function(a){this.toggleColumn(e(this.columns,a),!0,!0)},p.prototype.hideColumn=function(a){this.toggleColumn(e(this.columns,a),!1,!0)},p.prototype.getHiddenColumns=function(){return a.grep(this.columns,function(a){return!a.visible})},p.prototype.getVisibleColumns=function(){return a.grep(this.columns,function(a){return a.visible})},p.prototype.toggleAllColumns=function(b){if(a.each(this.columns,function(a){this.columns[a].visible=b}),this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var c=this.$toolbar.find(".keep-open input").prop("disabled",!1);c.filter(":checked").length<=this.options.minimumCountColumns&&c.filter(":checked").prop("disabled",!0)}},p.prototype.showAllColumns=function(){this.toggleAllColumns(!0)},p.prototype.hideAllColumns=function(){this.toggleAllColumns(!1)},p.prototype.filterBy=function(b){this.filterColumns=a.isEmptyObject(b)?{}:b,this.options.pageNumber=1,this.initSearch(),this.updatePagination()},p.prototype.scrollTo=function(a){return"string"==typeof a&&(a="bottom"===a?this.$tableBody[0].scrollHeight:0),"number"==typeof a&&this.$tableBody.scrollTop(a),"undefined"==typeof a?this.$tableBody.scrollTop():void 0},p.prototype.getScrollPosition=function(){return this.scrollTo()},p.prototype.selectPage=function(a){a>0&&a<=this.options.totalPages&&(this.options.pageNumber=a,this.updatePagination())},p.prototype.prevPage=function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())},p.prototype.nextPage=function(){this.options.pageNumber<this.options.totalPages&&(this.options.pageNumber++,this.updatePagination())},p.prototype.toggleView=function(){this.options.cardView=!this.options.cardView,this.initHeader(),this.initBody(),this.trigger("toggle",this.options.cardView)},p.prototype.refreshOptions=function(b){i(this.options,b,!0)||(this.options=a.extend(this.options,b),this.trigger("refresh-options",this.options),this.destroy(),this.init())},p.prototype.resetSearch=function(a){var b=this.$toolbar.find(".search input");b.val(a||""),this.onSearch({currentTarget:b})},p.prototype.expandRow_=function(a,b){var d=this.$body.find(c('> tr[data-index="%s"]',b));d.next().is("tr.detail-view")===(a?!1:!0)&&d.find("> td > .detail-icon").click()},p.prototype.expandRow=function(a){this.expandRow_(!0,a)},p.prototype.collapseRow=function(a){this.expandRow_(!1,a)},p.prototype.expandAllRows=function(b){if(b){var d=this.$body.find(c('> tr[data-index="%s"]',0)),e=this,f=null,g=!1,h=-1;if(d.next().is("tr.detail-view")?d.next().next().is("tr.detail-view")||(d.next().find(".detail-icon").click(),g=!0):(d.find("> td > .detail-icon").click(),g=!0),g)try{h=setInterval(function(){f=e.$body.find("tr.detail-view").last().find(".detail-icon"),f.length>0?f.click():clearInterval(h)},1)}catch(i){clearInterval(h)}}else for(var j=this.$body.children(),k=0;k<j.length;k++)this.expandRow_(!0,a(j[k]).data("index"))},p.prototype.collapseAllRows=function(b){if(b)this.expandRow_(!1,0);else for(var c=this.$body.children(),d=0;d<c.length;d++)this.expandRow_(!1,a(c[d]).data("index"))},p.prototype.updateFormatText=function(a,b){this.options[c("format%s",a)]&&("string"==typeof b?this.options[c("format%s",a)]=function(){return b}:"function"==typeof b&&(this.options[c("format%s",a)]=b)),this.initToolbar(),this.initPagination(),this.initBody()};var q=["getOptions","getSelections","getAllSelections","getData","load","append","prepend","remove","removeAll","insertRow","updateRow","updateCell","updateByUniqueId","removeByUniqueId","getRowByUniqueId","showRow","hideRow","getRowsHidden","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","resetView","resetWidth","destroy","showLoading","hideLoading","showColumn","hideColumn","getHiddenColumns","getVisibleColumns","showAllColumns","hideAllColumns","filterBy","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","togglePagination","toggleView","refreshOptions","resetSearch","expandRow","collapseRow","expandAllRows","collapseAllRows","updateFormatText"];a.fn.bootstrapTable=function(b){var c,d=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=a(this),f=e.data("bootstrap.table"),g=a.extend({},p.DEFAULTS,e.data(),"object"==typeof b&&b);if("string"==typeof b){if(a.inArray(b,q)<0)throw new Error("Unknown method: "+b);if(!f)return;c=f[b].apply(f,d),"destroy"===b&&e.removeData("bootstrap.table")}f||e.data("bootstrap.table",f=new p(this,g))}),"undefined"==typeof c?this:c},a.fn.bootstrapTable.Constructor=p,a.fn.bootstrapTable.defaults=p.DEFAULTS,a.fn.bootstrapTable.columnDefaults=p.COLUMN_DEFAULTS,a.fn.bootstrapTable.locales=p.LOCALES,a.fn.bootstrapTable.methods=q,a.fn.bootstrapTable.utils={sprintf:c,getFieldIndex:e,compareObjects:i,calculateObjectValue:h,getItemField:m,objectKeys:o,isIEBrowser:n},a(function(){a('[data-toggle="table"]').bootstrapTable()})}(jQuery);
0 9 \ No newline at end of file
... ...
resource/lib/bootstrap/css/bootstrap.min.css 0 → 100644
  1 +/*!
  2 + * Bootstrap v3.3.5 (http://getbootstrap.com)
  3 + * Copyright 2011-2015 Twitter, Inc.
  4 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  5 + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.btn,.btn-group,.btn-group-vertical,.caret,.checkbox-inline,.radio-inline,img{vertical-align:middle}hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu{float:left}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}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{border:0;padding:0}input[type=checkbox],input[type=radio]{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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-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}thead{display:table-header-group}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}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/bootstrap/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:"\2a"}.glyphicon-plus:before{content:"\2b"}.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,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble: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"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Microsoft YaHei",;font-size:14px;line-height:1.42857;color:#34495e}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#337ab7;text-decoration:none}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;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;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #fff}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;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:#6c8dae}.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}dt,kbd kbd,label{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#f9e491;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.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}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#6c8dae}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#28acb8}a.text-success:focus,a.text-success:hover{color:#1f858e}.text-info{color:#327ad5}a.text-info:focus,a.text-info:hover{color:#2462b0}.text-warning{color:#c29d0b}a.text-warning:focus,a.text-warning:hover{color:#927608}.text-danger{color:#e73d4a}a.text-danger:focus,a.text-danger:hover{color:#d71b29}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#b4eaee}a.bg-success:focus,a.bg-success:hover{background-color:#8adee5}.bg-info{background-color:#e0ebf9}a.bg-info:focus,a.bg-info:hover{background-color:#b5cff0}.bg-warning{background-color:#f9e491}a.bg-warning:focus,a.bg-warning:hover{background-color:#f6d861}.bg-danger{background-color:#fbe1e3}a.bg-danger:focus,a.bg-danger:hover{background-color:#f6b3b8}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #fff}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd,dt{line-height:1.42857}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.modal-footer:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #6c8dae}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #fff}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857;color:#6c8dae}legend,pre{color:#34495e}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #fff;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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{font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-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-left:15px;padding-right:15px}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@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-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@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-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#6c8dae}.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{vertical-align:top;border-bottom:1px solid #f0f1f9}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #e7ecf1}.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 #e7ecf1}.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,.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 #e7ecf1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#fff}.table-hover>tbody>tr:hover,.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:#eef1f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.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:#dee5ec}.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:rgba(38,190,150,0.2)}.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:rgba(38,190,150,0.2)}.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:#e0ebf9}.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:#caddf4}.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:#f9e491}.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:#f7de79}.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:#fbe1e3}.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:#f8cace}.table-responsive{overflow-x:auto;min-height:.01%}@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 #e7ecf1}.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,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857;color:#626c72;display:block}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:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 6px;background-color:#fff;border:1px solid #d8e2e5;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,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:#93a1bb;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(147,161,187,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(147,161,187,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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:#28acb8}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#fff;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@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-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,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-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,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-left:-20px;margin-top:4px\9}.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;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,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-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,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.33333;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.33333}.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}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.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-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#28acb8;-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:#1f858e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #68d4de;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #68d4de}.has-success .input-group-addon{color:#28acb8;border-color:#28acb8;background-color:#b4eaee}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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:#c29d0b}.has-warning .form-control{border-color:#c29d0b;-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:#927608;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f4d03f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f4d03f}.has-warning .input-group-addon{color:#c29d0b;border-color:#c29d0b;background-color:#f9e491}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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:#e73d4a}.has-error .form-control{border-color:#e73d4a;-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:#d71b29;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f2989f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f2989f}.has-error .input-group-addon{color:#e73d4a;border-color:#e73d4a;background-color:#fbe1e3}.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:#6789ab}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{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;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#9B9B9B;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#9B9B9B}.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>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,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.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#23527c}.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>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#255884;border-color:#1f4a70}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,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:#3fc9d5;border-color:#2dc0cd}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#28acb8;border-color:#2499a3}.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>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#26a1ab;border-color:#218d96}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#3fc9d5;border-color:#2dc0cd}.btn-success .badge{color:#3fc9d5;background-color:#fff}.btn-info{color:#fff;background-color:#659be0;border-color:#508edb}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#3a80d7;border-color:#2a73ce}.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>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#2e78d4;border-color:#276cc1}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#659be0;border-color:#508edb}.btn-info .badge{color:#659be0;background-color:#fff}.btn-warning{color:#fff;background-color:#F1C40F;border-color:#dab10d}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#c29d0b;border-color:#aa8a0a}.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>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#b3920a;border-color:#9b7e09}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#F1C40F;border-color:#dab10d}.btn-warning .badge{color:#F1C40F;background-color:#fff}.btn-danger{color:#fff;background-color:#ed6b75;border-color:#ea5460}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#e73d4a;border-color:#e42735}.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>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#e5303e;border-color:#e01c2b}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ed6b75;border-color:#ea5460}.btn-danger .badge{color:#ed6b75;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;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:#6c8dae;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33333;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{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;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);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857;white-space:nowrap}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#34495e}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#2b3c4e;background-color:#e1e5ec}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#6c8dae}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#6c8dae}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.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{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block}.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:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-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-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right: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-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.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:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.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:first-child:not(:last-child){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-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.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}.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-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;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,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.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:#4d6b8a;text-align:center;background-color:#fff;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.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{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#fff}.nav>li.disabled>a{color:#6c8dae}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#6c8dae;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#fff;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.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#fff #fff #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#4d6b8a;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.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+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-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,.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-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-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,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{content:" ";display:table}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;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-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@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}.navbar-static-top{z-index:9995;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;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}.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;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}}.progress-bar-striped,.progress-striped .progress-bar,.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)}@media (min-width:768px){.navbar-toggle{display:none}.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;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);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.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-left:15px;margin-right:15px}.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-nav>li>a,.navbar-default .navbar-text{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{background-color:#e7e7e7;color:#555}@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:#090909}.navbar-inverse .navbar-brand{color:#9eb3c9}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9eb3c9}.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:#090909}.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{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9eb3c9}.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:#090909}.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:#9eb3c9}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9eb3c9}.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+li:before{content:"/\\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#6c8dae}.pagination{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;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.list-group-item>.badge,.pager .next>a,.pager .next>span{float:right}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#fff;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:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#6c8dae;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.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:#fff}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#6c8dae;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#6c8dae}.label-default[href]:focus,.label-default[href]:hover{background-color:#527495}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#3fc9d5}.label-success[href]:focus,.label-success[href]:hover{background-color:#28acb8}.label-info{background-color:#659be0}.label-info[href]:focus,.label-info[href]:hover{background-color:#3a80d7}.label-warning{background-color:#F1C40F}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#c29d0b}.label-danger{background-color:#ed6b75}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#e73d4a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#6c8dae;border-radius:10px}.jumbotron,.thumbnail{background-color:#fff}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#e6e6e6}.container .jumbotron,.container-fluid .jumbotron{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-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857;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{display:block;width:100%;height:100%;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#34495e}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.alert{padding:15px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.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}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#b4eaee;border-color:#b4eaee;color:#28acb8}.alert-success hr{border-top-color:#9fe4ea}.alert-success .alert-link{color:#1f858e}.alert-info{background-color:#e0ebf9;border-color:#e0ebf9;color:#327ad5}.alert-info hr{border-top-color:#caddf4}.alert-info .alert-link{color:#2462b0}.alert-warning{background-color:#f9e491;border-color:#f9e491;color:#c29d0b}.alert-warning hr{border-top-color:#f7de79}.alert-warning .alert-link{color:#927608}.alert-danger{background-color:#fbe1e3;border-color:#fbe1e3;color:#e73d4a}.alert-danger hr{border-top-color:#f8cace}.alert-danger .alert-link{color:#d71b29}@-webkit-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;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:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size: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:#3fc9d5}.progress-striped .progress-bar-success{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-striped .progress-bar-info,.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)}.progress-bar-info{background-color:#659be0}.progress-striped .progress-bar-info{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:#F1C40F}.progress-striped .progress-bar-warning{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:#ed6b75}.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{zoom:1;overflow:hidden}.media-body{width:10000px}.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{margin-bottom:20px;padding-left:0}.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-right-radius:4px;border-top-left-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{text-decoration:none;color:#555;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{background-color:#fff;color:#6c8dae;cursor:not-allowed}.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:#6c8dae}.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:#28acb8;background-color:#b4eaee}a.list-group-item-success,button.list-group-item-success{color:#28acb8}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:#28acb8;background-color:#9fe4ea}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:#28acb8;border-color:#28acb8}.list-group-item-info{color:#327ad5;background-color:#e0ebf9}a.list-group-item-info,button.list-group-item-info{color:#327ad5}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:#327ad5;background-color:#caddf4}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:#327ad5;border-color:#327ad5}.list-group-item-warning{color:#c29d0b;background-color:#f9e491}a.list-group-item-warning,button.list-group-item-warning{color:#c29d0b}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:#c29d0b;background-color:#f7de79}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:#c29d0b;border-color:#c29d0b}.list-group-item-danger{color:#e73d4a;background-color:#fbe1e3}a.list-group-item-danger,button.list-group-item-danger{color:#e73d4a}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:#e73d4a;background-color:#f8cace}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:#e73d4a;border-color:#e73d4a}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.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-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;font-size:16px}.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 .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.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-responsive:last-child>.table:last-child,.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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.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-right-radius:3px;border-top-left-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-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.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,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.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>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 #e7ecf1}.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-responsive{border:0;margin-bottom: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+.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:#34495e;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:#34495e}.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:#b4eaee}.panel-success>.panel-heading{color:#28acb8;background-color:#b4eaee;border-color:#b4eaee}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#b4eaee}.panel-success>.panel-heading .badge{color:#b4eaee;background-color:#28acb8}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#b4eaee}.panel-info{border-color:#e0ebf9}.panel-info>.panel-heading{color:#327ad5;background-color:#e0ebf9;border-color:#e0ebf9}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e0ebf9}.panel-info>.panel-heading .badge{color:#e0ebf9;background-color:#327ad5}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e0ebf9}.panel-warning{border-color:#f9e491}.panel-warning>.panel-heading{color:#c29d0b;background-color:#f9e491;border-color:#f9e491}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f9e491}.panel-warning>.panel-heading .badge{color:#f9e491;background-color:#c29d0b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f9e491}.panel-danger{border-color:#fbe1e3}.panel-danger>.panel-heading{color:#e73d4a;background-color:#fbe1e3;border-color:#fbe1e3}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#fbe1e3}.panel-danger>.panel-heading .badge{color:#fbe1e3;background-color:#e73d4a}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#fbe1e3}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width: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:#f1f4f7;border:1px solid #dae2ea;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;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.42857;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;text-decoration:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal{display:none;position:fixed;z-index:10050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.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;}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;z-index:10049;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.43px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{content:" ";display:table}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.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;}.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}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;text-align:left;text-align:start;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.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}.tooltip.top-right .tooltip-arrow{left:5px}.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,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;text-align:start;font-size:14px;background-color:#fff;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)}.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;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}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;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;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-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{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left: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;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px}.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:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;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:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.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;line-height:1;font-family:serif}.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%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{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:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@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}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.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}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!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}}.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}.hidden-print{display:none!important}}
0 6 \ No newline at end of file
... ...
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot 0 → 100644
No preview for this file type
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg 0 → 100644
  1 +<?xml version="1.0" standalone="no"?>
  2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
  3 +<svg xmlns="http://www.w3.org/2000/svg">
  4 +<metadata></metadata>
  5 +<defs>
  6 +<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
  7 +<font-face units-per-em="1200" ascent="960" descent="-240" />
  8 +<missing-glyph horiz-adv-x="500" />
  9 +<glyph horiz-adv-x="0" />
  10 +<glyph horiz-adv-x="400" />
  11 +<glyph unicode=" " />
  12 +<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
  13 +<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
  14 +<glyph unicode="&#xa0;" />
  15 +<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
  16 +<glyph unicode="&#x2000;" horiz-adv-x="650" />
  17 +<glyph unicode="&#x2001;" horiz-adv-x="1300" />
  18 +<glyph unicode="&#x2002;" horiz-adv-x="650" />
  19 +<glyph unicode="&#x2003;" horiz-adv-x="1300" />
  20 +<glyph unicode="&#x2004;" horiz-adv-x="433" />
  21 +<glyph unicode="&#x2005;" horiz-adv-x="325" />
  22 +<glyph unicode="&#x2006;" horiz-adv-x="216" />
  23 +<glyph unicode="&#x2007;" horiz-adv-x="216" />
  24 +<glyph unicode="&#x2008;" horiz-adv-x="162" />
  25 +<glyph unicode="&#x2009;" horiz-adv-x="260" />
  26 +<glyph unicode="&#x200a;" horiz-adv-x="72" />
  27 +<glyph unicode="&#x202f;" horiz-adv-x="260" />
  28 +<glyph unicode="&#x205f;" horiz-adv-x="325" />
  29 +<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
  30 +<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
  31 +<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
  32 +<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
  33 +<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
  34 +<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
  35 +<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
  36 +<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
  37 +<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
  38 +<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
  39 +<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
  40 +<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
  41 +<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
  42 +<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
  43 +<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
  44 +<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
  45 +<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
  46 +<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
  47 +<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
  48 +<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
  49 +<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
  50 +<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
  51 +<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
  52 +<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
  53 +<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
  54 +<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
  55 +<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
  56 +<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
  57 +<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
  58 +<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
  59 +<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
  60 +<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
  61 +<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
  62 +<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
  63 +<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
  64 +<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
  65 +<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
  66 +<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
  67 +<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
  68 +<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
  69 +<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
  70 +<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
  71 +<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
  72 +<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
  73 +<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
  74 +<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
  75 +<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
  76 +<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
  77 +<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
  78 +<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
  79 +<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
  80 +<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
  81 +<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
  82 +<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
  83 +<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
  84 +<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
  85 +<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
  86 +<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
  87 +<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
  88 +<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  89 +<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  90 +<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
  91 +<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  92 +<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  93 +<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  94 +<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  95 +<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
  96 +<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
  97 +<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
  98 +<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
  99 +<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
  100 +<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
  101 +<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
  102 +<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
  103 +<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
  104 +<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
  105 +<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
  106 +<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
  107 +<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
  108 +<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
  109 +<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
  110 +<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
  111 +<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
  112 +<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
  113 +<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  114 +<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
  115 +<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
  116 +<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
  117 +<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
  118 +<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
  119 +<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
  120 +<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
  121 +<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
  122 +<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
  123 +<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
  124 +<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
  125 +<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
  126 +<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
  127 +<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
  128 +<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
  129 +<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
  130 +<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
  131 +<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
  132 +<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
  133 +<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
  134 +<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
  135 +<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
  136 +<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
  137 +<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
  138 +<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
  139 +<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
  140 +<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
  141 +<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
  142 +<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
  143 +<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
  144 +<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
  145 +<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
  146 +<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
  147 +<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
  148 +<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
  149 +<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
  150 +<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
  151 +<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
  152 +<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
  153 +<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
  154 +<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
  155 +<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
  156 +<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
  157 +<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
  158 +<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
  159 +<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
  160 +<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
  161 +<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
  162 +<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
  163 +<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
  164 +<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
  165 +<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
  166 +<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
  167 +<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
  168 +<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
  169 +<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
  170 +<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
  171 +<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
  172 +<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
  173 +<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
  174 +<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
  175 +<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
  176 +<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
  177 +<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
  178 +<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
  179 +<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
  180 +<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
  181 +<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
  182 +<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
  183 +<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
  184 +<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
  185 +<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
  186 +<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
  187 +<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
  188 +<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
  189 +<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
  190 +<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
  191 +<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
  192 +<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
  193 +<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
  194 +<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
  195 +<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
  196 +<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
  197 +<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
  198 +<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
  199 +<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
  200 +<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
  201 +<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
  202 +<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
  203 +<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
  204 +<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
  205 +<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
  206 +<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
  207 +<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
  208 +<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
  209 +<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
  210 +<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
  211 +<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
  212 +<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
  213 +<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
  214 +<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
  215 +<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
  216 +<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
  217 +<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
  218 +<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
  219 +<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
  220 +<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
  221 +<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
  222 +<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
  223 +<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
  224 +<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
  225 +<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
  226 +<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
  227 +<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
  228 +<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
  229 +<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
  230 +<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
  231 +<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
  232 +<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
  233 +<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
  234 +<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
  235 +<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
  236 +<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
  237 +<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
  238 +<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
  239 +<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
  240 +<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
  241 +<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
  242 +<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
  243 +<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
  244 +<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
  245 +<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
  246 +<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
  247 +<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
  248 +<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
  249 +<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
  250 +<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
  251 +<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
  252 +<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
  253 +<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
  254 +<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
  255 +<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
  256 +<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
  257 +<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
  258 +<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
  259 +<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
  260 +<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
  261 +<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
  262 +<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
  263 +<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
  264 +<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
  265 +<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
  266 +<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
  267 +<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
  268 +<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
  269 +<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
  270 +<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
  271 +<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
  272 +<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
  273 +<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
  274 +<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
  275 +<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
  276 +<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
  277 +<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
  278 +<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
  279 +<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
  280 +<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
  281 +<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
  282 +<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
  283 +<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
  284 +<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
  285 +<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
  286 +<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
  287 +</font>
  288 +</defs></svg>
0 289 \ No newline at end of file
... ...
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf 0 → 100644
No preview for this file type
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff 0 → 100644
No preview for this file type
resource/lib/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 0 → 100644
No preview for this file type