wenhongquan 8 anni fa
parent
commit
fadf14a27e
100 ha cambiato i file con 8101 aggiunte e 12975 eliminazioni
  1. 20 19
      VisualInspection/js/statistics/dept_check_statistics.js
  2. 151 0
      VisualInspection/node_modules/zui/CHANGES.md
  3. 8 6
      VisualInspection/node_modules/zui/README.md
  4. 19 0
      VisualInspection/node_modules/zui/assets/marked/LICENSE
  5. 37 0
      VisualInspection/node_modules/zui/assets/mousewheel/LICENSE.txt
  6. 76 0
      VisualInspection/node_modules/zui/assets/mousewheel/README.md
  7. 221 0
      VisualInspection/node_modules/zui/assets/mousewheel/jquery.mousewheel.js
  8. 7 0
      VisualInspection/node_modules/zui/assets/mousewheel/jquery.mousewheel.min.js
  9. 92 3
      VisualInspection/node_modules/zui/dist/css/zui-theme.css
  10. 1 2
      VisualInspection/node_modules/zui/dist/css/zui-theme.min.css
  11. 315 222
      VisualInspection/node_modules/zui/dist/css/zui.css
  12. 104 90
      VisualInspection/node_modules/zui/dist/css/zui.lite.css
  13. 1 2
      VisualInspection/node_modules/zui/dist/css/zui.lite.min.css
  14. 1 2
      VisualInspection/node_modules/zui/dist/css/zui.min.css
  15. BIN
      VisualInspection/node_modules/zui/dist/fonts/zenicon.eot
  16. 3 3
      VisualInspection/node_modules/zui/dist/fonts/zenicon.svg
  17. BIN
      VisualInspection/node_modules/zui/dist/fonts/zenicon.ttf
  18. BIN
      VisualInspection/node_modules/zui/dist/fonts/zenicon.woff
  19. 710 70
      VisualInspection/node_modules/zui/dist/js/zui.js
  20. 197 79
      VisualInspection/node_modules/zui/dist/js/zui.lite.js
  21. 2 2
      VisualInspection/node_modules/zui/dist/js/zui.lite.min.js
  22. 2 2
      VisualInspection/node_modules/zui/dist/js/zui.min.js
  23. 3 3
      VisualInspection/node_modules/zui/dist/lib/array/zui.array.js
  24. 2 2
      VisualInspection/node_modules/zui/dist/lib/array/zui.array.min.js
  25. 2 2
      VisualInspection/node_modules/zui/dist/lib/board/zui.board.css
  26. 2 2
      VisualInspection/node_modules/zui/dist/lib/board/zui.board.js
  27. 2 2
      VisualInspection/node_modules/zui/dist/lib/board/zui.board.min.css
  28. 2 2
      VisualInspection/node_modules/zui/dist/lib/board/zui.board.min.js
  29. 0 0
      VisualInspection/node_modules/zui/dist/lib/bootbox/bootbox.min.js
  30. 15 6
      VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.css
  31. 17 9
      VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.js
  32. 1 2
      VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.min.css
  33. 2 2
      VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.min.js
  34. 24 23
      VisualInspection/node_modules/zui/dist/lib/chart/zui.chart.js
  35. 2 2
      VisualInspection/node_modules/zui/dist/lib/chart/zui.chart.min.js
  36. 17 9
      VisualInspection/node_modules/zui/dist/lib/chosen/chosen.js
  37. 0 0
      VisualInspection/node_modules/zui/dist/lib/chosen/chosen.min.js
  38. 2 2
      VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.css
  39. 2 2
      VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.js
  40. 2 2
      VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.min.css
  41. 2 2
      VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.min.js
  42. 0 0
      VisualInspection/node_modules/zui/dist/lib/clipboard/clipboard.min.js
  43. 2 2
      VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.css
  44. 2 2
      VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.js
  45. 2 2
      VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.min.css
  46. 2 2
      VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.min.js
  47. 4 4
      VisualInspection/node_modules/zui/dist/lib/colorset.js/zui.colorset.js
  48. 5 5
      VisualInspection/node_modules/zui/dist/lib/colorset.js/zui.colorset.min.js
  49. 2 2
      VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.css
  50. 6 4
      VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.js
  51. 2 2
      VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.min.css
  52. 2 2
      VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.min.js
  53. 272 0
      VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.css
  54. 1825 0
      VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.js
  55. 5 0
      VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.min.css
  56. 13 0
      VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.min.js
  57. 2 2
      VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.css
  58. 59 56
      VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.js
  59. 2 2
      VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.min.css
  60. 2 2
      VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.min.js
  61. 3 0
      VisualInspection/node_modules/zui/dist/lib/datetimepicker/datetimepicker.css
  62. 0 0
      VisualInspection/node_modules/zui/dist/lib/datetimepicker/datetimepicker.min.css
  63. 0 0
      VisualInspection/node_modules/zui/dist/lib/datetimepicker/datetimepicker.min.js
  64. 1 1
      VisualInspection/node_modules/zui/dist/lib/hotkey/hotkey.min.js
  65. 2 2
      VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.css
  66. 2 2
      VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.js
  67. 2 2
      VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.min.css
  68. 2 2
      VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.min.js
  69. 2 1
      VisualInspection/node_modules/zui/dist/lib/kindeditor/kindeditor.css
  70. 0 0
      VisualInspection/node_modules/zui/dist/lib/kindeditor/kindeditor.min.css
  71. 0 0
      VisualInspection/node_modules/zui/dist/lib/kindeditor/kindeditor.min.js
  72. 2 2
      VisualInspection/node_modules/zui/dist/lib/migrate1.2/zui.migrate1.2.js
  73. 2 2
      VisualInspection/node_modules/zui/dist/lib/migrate1.2/zui.migrate1.2.min.js
  74. 0 170
      VisualInspection/node_modules/zui/dist/lib/mytable/mytable.js
  75. 26 8
      VisualInspection/node_modules/zui/dist/lib/selectable/zui.selectable.js
  76. 2 2
      VisualInspection/node_modules/zui/dist/lib/selectable/zui.selectable.min.js
  77. 34 12
      VisualInspection/node_modules/zui/dist/lib/sortable/zui.sortable.js
  78. 2 3
      VisualInspection/node_modules/zui/dist/lib/sortable/zui.sortable.min.js
  79. 146 0
      VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.css
  80. 488 0
      VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.js
  81. 5 0
      VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.min.css
  82. 6 0
      VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.min.js
  83. 120 0
      VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.css
  84. 415 0
      VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.js
  85. 5 0
      VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.min.css
  86. 6 0
      VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.min.js
  87. 6 3
      VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.css
  88. 61 25
      VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.js
  89. 1 2
      VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.min.css
  90. 2 2
      VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.min.js
  91. 2028 2
      VisualInspection/node_modules/zui/docs/css/doc.css
  92. 1 2
      VisualInspection/node_modules/zui/docs/css/doc.min.css
  93. 0 12060
      VisualInspection/node_modules/zui/docs/css/zui.css
  94. 0 5
      VisualInspection/node_modules/zui/docs/css/zui.min.css
  95. BIN
      VisualInspection/node_modules/zui/docs/download/zui-1.7.0-dist.zip
  96. BIN
      VisualInspection/node_modules/zui/docs/download/zui-1.8.0-dist.zip
  97. BIN
      VisualInspection/node_modules/zui/docs/download/zui-1.8.1-dist.zip
  98. 79 0
      VisualInspection/node_modules/zui/docs/examples/contextmenu.html
  99. 282 0
      VisualInspection/node_modules/zui/docs/examples/datagrid.html
  100. 93 0
      VisualInspection/node_modules/zui/docs/examples/datatable.html

+ 20 - 19
VisualInspection/js/statistics/dept_check_statistics.js

@@ -54,49 +54,50 @@ function getdeptscore(starttime, endtime) {
         //     var table = '';
 
         //先确定表格标题
-        var h_html = "<tr><th rowspan=2 style='width:"+(10*100/(time_m*4*30+80))+"%'>序号</th><th rowspan=2 style='width:"+(70*100/(time_m*4*30+80))+"%'>站名</th>";
+        var h_html = "<tr><th rowspan=2 style='width:30px'>序号</th><th rowspan=2 style='width:95px'>站名</th>";
         var h_html_t = "<tr>"
         for (var i = 0; i <= time_m; i++) {
-            h_html += "<th colspan=4>" + (moment(starttime).add(i, "month").format("MM月")) + "</th>";
-            h_html_t += "<th style='width:"+(30*100/(time_m*4*30+80))+"%'>考核分</th><th style='width:"+(30*100/(time_m*4*30+80))+"%'>积分</th><th style='width:"+(30*100/(time_m*4*30+80))+"%'>累计积分</th><th style='width:"+(30*100/(time_m*4*30+80))+"%'>排名</th>"
+            h_html += "<th colspan=4 style='width:240px'>" + (moment(starttime).add(i, "month").format("MM月")) + "</th>";
+            h_html_t += "<th style='width:60px'>考核分</th><th style='width:60px'>积分</th><th style='width:60px'>累计积分</th><th style='width:60px'>排名</th>"
         }
         h_html += "</tr>";
         h_html_t += "</tr>";
         h_html += h_html_t;
 
         $("#table_h").html(h_html)
-        // $("#table_h").css("width",time_m*4*30+80)
+         $(".tb").css("width",(time_m+1)*4*60+125)
         // $("#table").css("width",time_m*4*30+80)
 
         var b_html = ""
+  
 
         //再确定表格列
         if (Object.keys(data).length > 0) {
             var cc = 0;
             for (var i in data) {
                 var dd = data[i];
-                b_html += "<tr><td style='width:"+(10*100/(time_m*4*30+80))+"%'>" + (++cc) + "</td><td style='width:"+(70*100/(time_m*4*30+80))+"%'>" + dd[0].dept_name + "</td>"
+                b_html += "<tr><td style='width:30px'>" + (++cc) + "</td><td style='width:95px'>" + dd[0].dept_name + "</td>"
                 var tt = moment(dd[0].time).diff(moment(starttime), 'month')
-                for (var op = 0; op <= tt; op++) {
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
+                for (var op = 0; op < tt; op++) {
+                    b_html += "<td style='width:60px'>-</td>"
+                    b_html += "<td style='width:60px'>-</td>"
+                    b_html += "<td style='width:60px'>-</td>"
+                    b_html += "<td style='width:60px'>-</td>"
                 }
                 for (var p in dd) {
                     var ss = dd[p];
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>" + ss.score + "</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>" + ss.integral + "</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>" + ss.total_integral + "</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>" + ss.total_ranking + "</td>"
+                    b_html += "<td style='width:60px'>" + ss.score + "</td>"
+                    b_html += "<td style='width:60px'>" + ss.integral + "</td>"
+                    b_html += "<td style='width:60px'>" + ss.total_integral + "</td>"
+                    b_html += "<td style='width:60px'>" + ss.total_ranking + "</td>"
                 }
 
                 var tt1 = moment(endtime).diff(moment(dd[dd.length-1].time), 'month')
-                for (var op = 0; op <= tt1; op++) {
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
-                    b_html += "<td style='width:"+(30*100/(time_m*4*30+80))+"%'>-</td>"
+                for (var op = 0; op < tt1; op++) {
+                    b_html += "<td style='width:60px'>-</td>"
+                    b_html += "<td style='width:60px'>-</td>"
+                    b_html += "<td style='width:60px'>-</td>"
+                    b_html += "<td style='width:60px'>-</td>"
                 }
             }
             b_html += "</tr>"

+ 151 - 0
VisualInspection/node_modules/zui/CHANGES.md

@@ -1,5 +1,156 @@
 # 更新记录
 
+## v 1.8.1
+
+解决了近两周社区反馈的问题。
+
+### 更新明细
+
++ 数据表格2:
+  * 修复了 `responsive` 选项和 `checkbox` 选项同时启用冲突的问题[@YNZZZ](http://forum.zui.sexy/thread/417.html));
+  * 修复了 `configs` 中的 `html` 属性和列配置的 `html` 属性设置为 `true` 时没有生效的问题([@YNZZ](http://forum.zui.sexy/thread/422.html));
+  * 修复了 列配置中 `valueOperator` 没有按照预期工作的问题,同时修复了值转换期函数中参数不完整的问题([@zz](http://forum.zui.sexy/thread/419.html));
+  * 修复了 默认的日期值转换期没有按照预期工作的问题([@YNZZZ](http://forum.zui.sexy/thread/417.html));
+  * 修复了 `checkByClickRow` 和 `selectable` 选项冲突的问题,当 `checkByClickRow` 被禁用时,如果开启拖拽选择,则仅可以在勾选框所在列进行拖选操作([@YNZZZ](http://forum.zui.sexy/thread/416.html));
+  * 修复了 Windows 上滚轮方向相反,滚动距离过小的问题,并且新增了 `mouseWheelFactor` 参数用于控制滚轮滚动速度和方向;
+  * 修复了 当数据没有定义 `id` 或 `rowId` 属性时获取选中行编号为 `undefined` 的问题;
+  * 修复了 `showRowIndex` 设置为 `false` 列宽混乱的问题;
+  * 优化了 缓存机制,现在默认缓存大小为 `1`;
+  * 优化了 行号列列宽自动计算方法,避免有时出现省略号的问题([@徐业龙](http://forum.zui.sexy/thread/424.html))
++ 数据表格1:
+  * 修复了 启用本地存储后,排序操作方向没有安装预期顺序显示的问题,参见 issue #79;
++ 上下文菜单:
+  * 修复了 `html` 选项设置为 `true` 时没有按照预期工作的问题;
++ 按钮组:
+  * 修复了 垂直的按钮组右上角圆角为直角的问题;
++ 辅助类:
+  * 增加了 `.no-padding` 类用于移除元素所有内边距;
++ 日期选择器:
+  * 优化了 内部 `input-group-addon` 左侧边框有双倍宽度的问题;
++ 日历:
+  * 将 `hideEmptyWeekends` 默认值设置为 `false`;
++ 图片浏览:
+  * 增加 `setImage(image, caption)` 和 `show()` 方法用于手动控制显示和更新内容(QQ 群 @深圳市雷诺表业-it);
+
+感谢 [@neo20](https://github.com/easysoft/zui/pull/94)、[zora-han](https://github.com/easysoft/zui/pull/93) 提交了 Pull Request。欢迎大家反馈建议,最好是在[论坛发帖](http://forum.zui.sexy/forum/)或者[在 Github 上提交 issue](https://github.com/easysoft/zui/issues),更欢迎有能力的同学[提交 Pull Request](https://github.com/easysoft/zui/pulls)。
+
+## v 1.8.0
+
+1.8 版本带来了多个新的 JS 组件,包括全新的<a href="http://zui.sexy#view/datagrid" target="_blank">数据表格2</a>、<a href="http://zui.sexy#view/tabs" target="_blank">标签页管理器</a>、<a href="http://zui.sexy#javascript/contextmenu" target="_blank">上下文菜单</a>、<a href="http://zui.sexy#javascript/searchbox" target="_blank">搜索框</a>、<a href="http://zui.sexy#component/input-control" target="_blank">输入框</a>和<a href="http://zui.sexy#javascript/pagerjs" target="_blank">分页器</a>。
+
+### 新功能预览
+
+* 数据表格2支持自定义数据源(包括远程数据),提供行列固定、排序、分页、搜索、行选择、自适应、跨行跨列单元格等重量级功能,并且使用灵活方便定制(旧版本数据表格将不再继续支持,将于 1.9 中淘汰);
+* 标签页管理器最大化增强了标签页控件功能,现在可以使用标签页动态加载内容,甚至是远程页码,还可以手动打开、关闭标签页,就像使用浏览器标签页一样方便;
+* 上下文菜单允许你在任意位置弹出浮动在鼠标光标附近的菜单,非常方便的监听鼠标右键并屏蔽系统行为从而定制自己的右键菜单;
+* 分页器提供完全自动化的分页界面控件管理,只需要给定当前页码和条目数目即可;
+* 搜索框提供了常用的搜索输入框+按钮的组合界面,并且提供一个延迟触发事件用于监听搜索框文本变更事件,使用搜索框可以非常方便的定制现代话搜索交互功能;
+* 输入框创建了一种将标签和图标内置到输入框的现代化形式,创建更美观的表单界面。
+
+### 更新明细
+
++ 新增 <a href="http://zui.sexy#view/datagrid" target="_blank">数据表格2</a>;
++ 新增 <a href="http://zui.sexy#view/tabs" target="_blank">标签页管理器</a>;
++ 新增 <a href="http://zui.sexy#javascript/contextmenu" target="_blank">上下文菜单</a>;
++ 新增 <a href="http://zui.sexy#javascript/pagerjs" target="_blank">分页器</a>;
++ 新增 <a href="http://zui.sexy#javascript/searchbox" target="_blank">搜索框</a>;
++ 新增 <a href="http://zui.sexy#component/input-control" target="_blank">输入框</a>;
++ 工具提示:
+  * 修复 触发的事件名称;
++ 图标:
+  * 优化 了 `icon-check-plus` 和 `icon-check-minus` 图标,现在看起来更大些;
+  * 修复 图标旋转辅助类在 IE8 中实现的问题;
++ 输入组:
+  * 修复 `.fix-padding` 在 IE8 上失效的问题;
++ 文件上传:
+  * 优化 对服务器返回值对支持,当服务器返回字段中包含 `name` 属性时会自动更新界面上的文件名;
+  * 优化 对上传完毕的消息显示,现在会合并多个消息;
+  * 优化 对静态文件(`staticFiles`)对支持,现在在提示信息中会计算静态文件的个数和大小;
+  * 修复 `renameActionOnDone` 回调函数执行参数 `doRenameFile` 方法无效的问题;
+  * 修复 在上传完毕返回的错误消息没有显示的问题;
+  * 修复 七牛上传无法使用的问题;
+  * 修复 文件上传按钮在 IE10 以下的浏览器无法点击的问题;
++ 图表:
+  * 修复 曲线图调用 `addData()` 方法后当显示鼠标悬停标签出错的问题;
++ Chosen:
+  * 优化 搜索策略,现在会搜索 `<option>` 上的 `value` 属性;
+  * 优化 当 `drop_direction` 选项设置为 `'auto'` 时,现在弹出方向不会随着条目数目变动;
+  * 修复 当用户点击一个允许用户滚动对容器内的 chosen 时自动更改父级元素滚动位置的问题;
++ 模态框:
+  * 优化 `moveable` 选项,当设置为 `'inside'` 时不会允许用户将模态框移动到窗口可视区域之外;
++ 模态框触发器:
+  * 修复 `className` 选项失效的问题;
+  * 修复 有时当用户点击链接触发执行文本中的 JavaScript 代码的问题;
+  * 修复 `broken` 事件中返回的错误文本内容没有显示的问题;
++ 拖放:
+  * 优化 对拖放决策对支持,增加 `canMoveHere` 选项;
+  * 优化 `move` 选项,现在可以使用一个回调函数来执行移动操作;
++ 拖放排序:
+  * 优化 拖放初始化选项,增加对 `lazy`、`canMoveHere`、`nested` 选项对支持;
+  * 修复 `start` 事件中获取不到事件参数 `event` 的问题;
+  * 修复 `destroy` 无效的问题;
+  * 修复 新增加的条目无法排序的问题;
++ 树形菜单:
+  * 优化 了图标,现在看起来图标更大些;
++ 组织结构图:
+  * 修复 有时连接线绘制不正确的问题;
+  * 优化 图标的默认颜色;
+  * 优化 节点对象结构,支持 `foldable` 属性来设置是否可以折叠该节点;
++ 日历:
+  * 优化 了拖放到日期时界面响应拖放事件的区域,现在拖放到日期单元格上任意位置即可;
+  * 优化 对 `dragThenDrop` 选项的支持,现在可以使用一个对象来初始化拖放插件;
+  * 优化 对界面上周末的支持,使用 `hideEmptyWeekends` 选项可以折叠周末所在列;
++ 漂浮消息:
+  * 修复 了 `contentClass` 选项失效的问题;
++ 表单:
+  * 修复 在 Android 上复选框和单选框位置问题;
++ 设备检测辅助类:
+  * 增加 对操作系统的检测功能,在 `<html>` 会自动添加 `os-win` 或 `os-mac` 等辅助类用于为不同的操作系统应用样式;
++ 主题:
+  * 增加 对开关、树形菜单等组件的支持,优化了主题中按钮按下时的外观;
++ 其他:
+  * 移除了 `svg` 标签 `max-width` 样式设定,避免在一些地图控件中造成冲突。
+
+
+## v 1.7.0
+
+本次更新修复了文件上传等组件等关键 bug,增加了一个新的视图:组织结构图,轻松绘制多级树形组织结构图,支持节点的动态更新和层级折叠控制。
+
+### 更新明细
+
+* 组织结构图:
+  - 增加组织结构图视图,轻松绘制多级树形组织结构图,支持更新和折叠控制;
+* 图标:
+  - 增加了一些新的图标:`.icon-plus-sign-alt`,`.icon-check-plus`,`.icon-chanzhi`,,`.icon-chanzhi-pro`,,`.icon-zsite`,,`.icon-zsite-pro`;
+* 文件上传:
+  - 修复当启用重命名功能时,不显示删除按钮的问题;
+  - 修复 `multipart_params` 选项设置无效的问题;
+  - 当选项 `multipart_params` 为函数时,该回调函数会使用当前文件对象作为第一个参数,默认值作为第二个参数;
+  - 文件下载按钮会使用 `download` 属性指定文件下载文件名;
+  - 当禁用文件扩展名重命名时(`renameExtension` 设置为 `false`),在重命名时不显示扩展名;
+  - 修复了有时重命名之后文件列表没有更新的问题;
+* 辅助类:
+  - 现在可以使用颜色命名的辅助类添加文本颜色、背景样式,包括(`.text-red`,`.text-green`,`.bg-yellow`,`hl-blue` 等);
+* 对话框触发器:
+  - 支持使用 `className` 选项来指定生成的对话框额外添加的 CLASS 属性;
+* 图表:
+  - 饼状图支持设置外部文本标签的行高(使用 `scaleLineHeight` 选项);
+  - 修复了图表对 ZUI 独立组件 `colorset.js` 的依赖,现在快捷指定图表配色不需要单独引入 `colorset.js` 插件;
+* 数据表格:
+  - 增加 `fixCellHeight` 选项用于禁用自动调整行高(行高可以使用 CSS 设定,从而避免每次自动计算提示了性能),默认为 `true`(启用自动调整,行为与之前的版本一致);
+* 仪表盘:
+  - 修复面板配置中的 `panelAttrs` 和 `colAttrs` 选项无效的问题;
+* 颜色处理:
+  - `$.zui.Color` 类增加类方法 `get(colorName)`,用于快速创建一个新的颜色实例;
+* 拖拽、拖放、拖放选取、拖放排序:
+  - 增加 `mouseButton` 选项用于指定点击哪个鼠标按键会出发拖放操作;
+  - 拖放排序修复调用 `destroy()` 方法出错的问题;
+* 输入组:
+  - 优化输入组在紧凑表单内的圆角边框效果;
+* 文档:
+  - 所有独立组件相关的文档增加引入 `lib` 目录下资源的提示;
+  - 文档网站所使用的 ZUI 不再单独定制的,现在使用 ZUI 标准版。
+
 ## v 1.6.0
 
 ### 更新明细

+ 8 - 6
VisualInspection/node_modules/zui/README.md

@@ -3,7 +3,6 @@
 [![npm version](https://badge.fury.io/js/zui.svg)](https://badge.fury.io/js/zui)
 [![Bower version](https://badge.fury.io/bo/zui.svg)](https://badge.fury.io/bo/zui)
 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/easysoft/zui/blob/master/LICENSE)
-[![官方QQ群](https://img.shields.io/badge/QQ%E7%BE%A4-384135104-03b8cf.svg)](http://shang.qq.com/wpa/qunwpa?idkey=7ae4c241aab7cca58f55ac03b2b5fb48b71242475a9f1be06b5af053008d6bfc)
 
 一个基于 Bootstrap 深度定制开源前端实践方案,帮助你快速构建现代跨屏应用。
 
@@ -11,6 +10,9 @@
 
 💎 &nbsp;为移动端设计,基于 Flex 的 UI 框架: [MZUI](http://zui.sexy/m/)。
 
+官方 QQ 群:**384135104**
+项目和计划:http://zui.5upm.com/product-browse-2.html
+
 ## 特色
 
 - 简单易用,快速构建美观的现代 Web 应用;
@@ -41,12 +43,12 @@ bower install zui
 
 ```html
 <!-- ZUI 标准版压缩后的 CSS 文件 -->
-<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/zui/1.6.0/css/zui.min.css">
+<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/zui/1.8.0/css/zui.min.css">
 
 <!-- ZUI Javascript 依赖 jQuery -->
-<script src="//cdnjs.cloudflare.com/ajax/libs/zui/1.6.0/lib/jquery/jquery.js"></script>
+<script src="//cdnjs.cloudflare.com/ajax/libs/zui/1.8.0/lib/jquery/jquery.js"></script>
 <!-- ZUI 标准版压缩后的 JavaScript 文件 -->
-<script src="//cdnjs.cloudflare.com/ajax/libs/zui/1.6.0/js/zui.min.js"></script>
+<script src="//cdnjs.cloudflare.com/ajax/libs/zui/1.8.0/js/zui.min.js"></script>
 ```
 
 其他 CDN:
@@ -55,8 +57,8 @@ bower install zui
 
 ### 下载
 
- - [v 1.6.0 生产包](https://github.com/easysoft/zui/releases/download/v1.6.0/zui-1.6.0-dist.zip)
- - [v 1.6.0 源码](https://github.com/easysoft/zui/archive/v1.6.0.zip)
+ - [v 1.8.0 生产包](https://github.com/easysoft/zui/releases/download/v1.8.0/zui-1.8.0-dist.zip)
+ - [v 1.8.0 源码](https://github.com/easysoft/zui/archive/v1.8.0.zip)
 
 ### 文档
 

+ 19 - 0
VisualInspection/node_modules/zui/assets/marked/LICENSE

@@ -0,0 +1,19 @@
+Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 37 - 0
VisualInspection/node_modules/zui/assets/mousewheel/LICENSE.txt

@@ -0,0 +1,37 @@
+Copyright jQuery Foundation and other contributors
+https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-mousewheel
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.

+ 76 - 0
VisualInspection/node_modules/zui/assets/mousewheel/README.md

@@ -0,0 +1,76 @@
+# jQuery Mouse Wheel Plugin
+
+A [jQuery](http://jquery.com/) plugin that adds cross-browser mouse wheel support with delta normalization.
+
+In order to use the plugin, simply bind the `mousewheel` event to an element.
+
+It also provides two helper methods called `mousewheel` and `unmousewheel`
+that act just like other event helper methods in jQuery.
+
+The event object is updated with the normalized `deltaX` and `deltaY` properties.
+In addition there is a new property on the event object called `deltaFactor`. Multiply
+the `deltaFactor` by `deltaX` or `deltaY` to get the scroll distance that the browser
+has reported.
+
+Here is an example of using both the bind and helper method syntax:
+
+```js
+// using on
+$('#my_elem').on('mousewheel', function(event) {
+    console.log(event.deltaX, event.deltaY, event.deltaFactor);
+});
+
+// using the event helper
+$('#my_elem').mousewheel(function(event) {
+    console.log(event.deltaX, event.deltaY, event.deltaFactor);
+});
+```
+
+The old behavior of adding three arguments (`delta`, `deltaX`, and `deltaY`) to the
+event handler is now deprecated and will be removed in later releases.
+
+
+## The Deltas...
+
+The combination of Browsers, Operating Systems, and Devices offer a huge range of possible delta values. In fact if the user
+uses a trackpad and then a physical mouse wheel the delta values can differ wildly. This plugin normalizes those
+values so you get a whole number starting at +-1 and going up in increments of +-1 according to the force or
+acceleration that is used. This number has the potential to be in the thousands depending on the device.
+Check out some of the data collected from users [here](http://mousewheeldatacollector.herokuapp.com/).
+
+### Getting the scroll distance
+
+In some use-cases we prefer to have the normalized delta but in others we want to know how far the browser should
+scroll based on the users input. This can be done by multiplying the `deltaFactor` by the `deltaX` or `deltaY`
+event property to find the scroll distance the browser reported.
+
+The `deltaFactor` property was added to the event object in 3.1.5 so that the actual reported delta value can be
+extracted. This is a non-standard property.
+
+
+## Using with [Browserify](http://browserify.org)
+
+Support for browserify is baked in.
+
+```bash
+npm install jquery-mousewheel
+npm install jquery-browserify
+```
+
+In your server-side node.js code:
+
+```js
+var express = require('express');
+var app = express.createServer();
+
+app.use(require('browserify')({
+    require : [ 'jquery-browserify', 'jquery-mousewheel' ]
+}));
+```
+
+In your browser-side javascript:
+
+```js
+var $ = require('jquery-browserify');
+require('jquery-mousewheel')($);
+```

+ 221 - 0
VisualInspection/node_modules/zui/assets/mousewheel/jquery.mousewheel.js

@@ -0,0 +1,221 @@
+/*!
+ * jQuery Mousewheel 3.1.13
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ */
+
+(function (factory) {
+    if ( typeof define === 'function' && define.amd ) {
+        // AMD. Register as an anonymous module.
+        define(['jquery'], factory);
+    } else if (typeof exports === 'object') {
+        // Node/CommonJS style for Browserify
+        module.exports = factory;
+    } else {
+        // Browser globals
+        factory(jQuery);
+    }
+}(function ($) {
+
+    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
+        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
+                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
+        slice  = Array.prototype.slice,
+        nullLowestDeltaTimeout, lowestDelta;
+
+    if ( $.event.fixHooks ) {
+        for ( var i = toFix.length; i; ) {
+            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
+        }
+    }
+
+    var special = $.event.special.mousewheel = {
+        version: '3.1.12',
+
+        setup: function() {
+            if ( this.addEventListener ) {
+                for ( var i = toBind.length; i; ) {
+                    this.addEventListener( toBind[--i], handler, false );
+                }
+            } else {
+                this.onmousewheel = handler;
+            }
+            // Store the line height and page height for this particular element
+            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
+            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
+        },
+
+        teardown: function() {
+            if ( this.removeEventListener ) {
+                for ( var i = toBind.length; i; ) {
+                    this.removeEventListener( toBind[--i], handler, false );
+                }
+            } else {
+                this.onmousewheel = null;
+            }
+            // Clean up the data we added to the element
+            $.removeData(this, 'mousewheel-line-height');
+            $.removeData(this, 'mousewheel-page-height');
+        },
+
+        getLineHeight: function(elem) {
+            var $elem = $(elem),
+                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
+            if (!$parent.length) {
+                $parent = $('body');
+            }
+            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
+        },
+
+        getPageHeight: function(elem) {
+            return $(elem).height();
+        },
+
+        settings: {
+            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
+            normalizeOffset: true  // calls getBoundingClientRect for each event
+        }
+    };
+
+    $.fn.extend({
+        mousewheel: function(fn) {
+            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
+        },
+
+        unmousewheel: function(fn) {
+            return this.unbind('mousewheel', fn);
+        }
+    });
+
+
+    function handler(event) {
+        var orgEvent   = event || window.event,
+            args       = slice.call(arguments, 1),
+            delta      = 0,
+            deltaX     = 0,
+            deltaY     = 0,
+            absDelta   = 0,
+            offsetX    = 0,
+            offsetY    = 0;
+        event = $.event.fix(orgEvent);
+        event.type = 'mousewheel';
+
+        // Old school scrollwheel delta
+        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
+        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
+        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
+        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
+
+        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
+        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
+            deltaX = deltaY * -1;
+            deltaY = 0;
+        }
+
+        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
+        delta = deltaY === 0 ? deltaX : deltaY;
+
+        // New school wheel delta (wheel event)
+        if ( 'deltaY' in orgEvent ) {
+            deltaY = orgEvent.deltaY * -1;
+            delta  = deltaY;
+        }
+        if ( 'deltaX' in orgEvent ) {
+            deltaX = orgEvent.deltaX;
+            if ( deltaY === 0 ) { delta  = deltaX * -1; }
+        }
+
+        // No change actually happened, no reason to go any further
+        if ( deltaY === 0 && deltaX === 0 ) { return; }
+
+        // Need to convert lines and pages to pixels if we aren't already in pixels
+        // There are three delta modes:
+        //   * deltaMode 0 is by pixels, nothing to do
+        //   * deltaMode 1 is by lines
+        //   * deltaMode 2 is by pages
+        if ( orgEvent.deltaMode === 1 ) {
+            var lineHeight = $.data(this, 'mousewheel-line-height');
+            delta  *= lineHeight;
+            deltaY *= lineHeight;
+            deltaX *= lineHeight;
+        } else if ( orgEvent.deltaMode === 2 ) {
+            var pageHeight = $.data(this, 'mousewheel-page-height');
+            delta  *= pageHeight;
+            deltaY *= pageHeight;
+            deltaX *= pageHeight;
+        }
+
+        // Store lowest absolute delta to normalize the delta values
+        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
+
+        if ( !lowestDelta || absDelta < lowestDelta ) {
+            lowestDelta = absDelta;
+
+            // Adjust older deltas if necessary
+            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
+                lowestDelta /= 40;
+            }
+        }
+
+        // Adjust older deltas if necessary
+        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
+            // Divide all the things by 40!
+            delta  /= 40;
+            deltaX /= 40;
+            deltaY /= 40;
+        }
+
+        // Get a whole, normalized value for the deltas
+        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
+        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
+        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
+
+        // Normalise offsetX and offsetY properties
+        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
+            var boundingRect = this.getBoundingClientRect();
+            offsetX = event.clientX - boundingRect.left;
+            offsetY = event.clientY - boundingRect.top;
+        }
+
+        // Add information to the event object
+        event.deltaX = deltaX;
+        event.deltaY = deltaY;
+        event.deltaFactor = lowestDelta;
+        event.offsetX = offsetX;
+        event.offsetY = offsetY;
+        // Go ahead and set deltaMode to 0 since we converted to pixels
+        // Although this is a little odd since we overwrite the deltaX/Y
+        // properties with normalized deltas.
+        event.deltaMode = 0;
+
+        // Add event and delta to the front of the arguments
+        args.unshift(event, delta, deltaX, deltaY);
+
+        // Clearout lowestDelta after sometime to better
+        // handle multiple device types that give different
+        // a different lowestDelta
+        // Ex: trackpad = 3 and mouse wheel = 120
+        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
+        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
+
+        return ($.event.dispatch || $.event.handle).apply(this, args);
+    }
+
+    function nullLowestDelta() {
+        lowestDelta = null;
+    }
+
+    function shouldAdjustOldDeltas(orgEvent, absDelta) {
+        // If this is an older event and the delta is divisable by 120,
+        // then we are assuming that the browser is treating this as an
+        // older mouse wheel event and that we should divide the deltas
+        // by 40 to try and get a more usable deltaFactor.
+        // Side note, this actually impacts the reported scroll distance
+        // in older browsers and can cause scrolling to be slower than native.
+        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
+        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
+    }
+
+}));

File diff suppressed because it is too large
+ 7 - 0
VisualInspection/node_modules/zui/assets/mousewheel/jquery.mousewheel.min.js


+ 92 - 3
VisualInspection/node_modules/zui/dist/css/zui-theme.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: Theme - v1.6.0 - 2017-03-16
+ * ZUI: Theme - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 a {
@@ -67,6 +67,15 @@ fieldset[disabled] .btn.active {
   -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
           box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
   }
+.btn:active,
+.btn.active,
+.open .dropdown-toggle.btn {
+  background-color: #d9d9d9;
+  background-image: none;
+  border-color: #b3b3b3;
+  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+  }
 .btn.disabled,
 .btn[disabled],
 fieldset[disabled] .btn,
@@ -139,6 +148,15 @@ fieldset[disabled] .btn-primary.active {
   -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
           box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
   }
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  background-color: #2b387c;
+  background-image: none;
+  border-color: #313e8b;
+  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+  }
 .btn-primary.disabled,
 .btn-primary[disabled],
 fieldset[disabled] .btn-primary,
@@ -211,6 +229,15 @@ fieldset[disabled] .btn-warning.active {
   -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
           box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
   }
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  background-color: #df8a13;
+  background-image: none;
+  border-color: #ec951a;
+  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+  }
 .btn-warning.disabled,
 .btn-warning[disabled],
 fieldset[disabled] .btn-warning,
@@ -283,6 +310,15 @@ fieldset[disabled] .btn-danger.active {
   -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
           box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
   }
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  background-color: #b52b27;
+  background-image: none;
+  border-color: #c52f2b;
+  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+  }
 .btn-danger.disabled,
 .btn-danger[disabled],
 fieldset[disabled] .btn-danger,
@@ -355,6 +391,15 @@ fieldset[disabled] .btn-success.active {
   -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
           box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
   }
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  background-color: #357a38;
+  background-image: none;
+  border-color: #3b883e;
+  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+  }
 .btn-success.disabled,
 .btn-success[disabled],
 fieldset[disabled] .btn-success,
@@ -427,6 +472,15 @@ fieldset[disabled] .btn-info.active {
   -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
           box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
   }
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  background-color: #026899;
+  background-image: none;
+  border-color: #0276ae;
+  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
+  }
 .btn-info.disabled,
 .btn-info[disabled],
 fieldset[disabled] .btn-info,
@@ -636,7 +690,8 @@ a.hl-primary:hover {
 .form-control {
   border-radius: 0;
   }
-.form-control:focus {
+.form-control:focus,
+.form-control.focus {
   border-color: #3949ab;
   outline: 0;
   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6);
@@ -651,6 +706,19 @@ a.hl-primary:hover {
 .form-condensed .btn {
   border-radius: 0;
   }
+.switch > input:checked + label:before {
+  background-color: #3f51b5;
+  border-color: #3f51b5;
+  }
+.switch input:focus + label {
+  color: #3f51b5;
+  }
+.switch input:focus + label:before {
+  border-color: #3f51b5;
+  }
+.form-control:focus + .input-control-label-left {
+  color: #3949ab;
+  }
 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
   border-radius: 0;
   }
@@ -1256,3 +1324,24 @@ table.tablesorter thead tr .headerSortDown:after {
 pre {
   border-radius: 0;
   }
+.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell,
+.datagrid .datagrid-hover-col .datagrid-cell.hover,
+.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover {
+  background-color: #eceff1;
+  }
+.datagrid .datagrid-loading > .content > .icon,
+.datagrid .datagrid-sort-up > .icon-sort:before,
+.datagrid .datagrid-sort-down > .icon-sort:before {
+  color: #3f51b5;
+  }
+.tree-drag-holder {
+  background-color: #eceff1;
+  }
+.tree-menu li.active > a {
+  color: #fff;
+  background-color: #3f51b5;
+  border-color: #3f51b5;
+  }
+.tree-menu li.active > .list-toggle {
+  color: #fff;
+  }

File diff suppressed because it is too large
+ 1 - 2
VisualInspection/node_modules/zui/dist/css/zui-theme.min.css


+ 315 - 222
VisualInspection/node_modules/zui/dist/css/zui.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: Standard edition - v1.6.0 - 2017-03-16
+ * ZUI: Standard edition - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
@@ -299,6 +299,9 @@ table {
 .with-padding {
   padding: 5px 12px;
   }
+.no-padding {
+  padding: 0!important;
+  }
 .visible-xs,
 .inline.visible-xs,
 .inline-block.visible-xs,
@@ -934,7 +937,6 @@ a[disabled]:focus {
 audio,
 canvas,
 img,
-svg,
 video {
   max-width: 100%;
   vertical-align: middle;
@@ -1608,58 +1610,47 @@ small,
 cite {
   font-style: normal;
   }
+.text-gray,
 .text-muted {
   color: #808080;
   }
+.text-gray a,
 .text-muted a {
   color: #737373;
   }
+.text-gray a:hover,
 .text-muted a:hover,
+.text-gray a:active,
 .text-muted a:active {
   color: #145ccd;
   }
 .text-primary {
   color: #3280fc;
   }
-.text-primary:hover {
-  color: #0462f7;
-  }
+.text-yellow,
 .text-warning {
   color: #f1a325;
   }
-.text-warning:hover {
-  color: #d5890e;
-  }
+.text-red,
 .text-danger {
   color: #ea644a;
   }
-.text-danger:hover {
-  color: #e53d1c;
-  }
+.text-green,
 .text-success {
   color: #38b03f;
   }
-.text-success:hover {
-  color: #2c8931;
-  }
+.text-blue,
 .text-info {
   color: #03b8cf;
   }
-.text-info:hover {
-  color: #028b9d;
-  }
+.text-brown,
 .text-important {
   color: #bd7b46;
   }
-.text-important:hover {
-  color: #996337;
-  }
+.text-purple,
 .text-special {
   color: #8666b8;
   }
-.text-special:hover {
-  color: #6c4aa1;
-  }
 .text-link {
   color: #353535;
   }
@@ -1807,110 +1798,76 @@ blockquote.pull-right small:after {
 .ol-pd-4 {
   padding-left: 80px;
   }
+.bg-black,
 .bg-default {
   color: #fff;
   background-color: #353535;
   }
-a.bg-default:hover {
-  background-color: #1c1c1c;
-  }
 .bg-primary {
   color: #fff;
   background-color: #3280fc;
   }
-a.bg-primary:hover {
-  background-color: #0462f7;
-  }
+.bg-green,
 .bg-success {
   color: #fff;
   background-color: #38b03f;
   }
-a.bg-success:hover {
-  background-color: #2c8931;
-  }
+.bg-blue,
 .bg-info {
   color: #fff;
   background-color: #03b8cf;
   }
-a.bg-info:hover {
-  background-color: #028b9d;
-  }
+.bg-yellow,
 .bg-warning {
   color: #fff;
   background-color: #f1a325;
   }
-a.bg-warning:hover {
-  background-color: #d5890e;
-  }
+.bg-red,
 .bg-danger {
   color: #fff;
   background-color: #ea644a;
   }
-a.bg-danger:hover {
-  background-color: #e53d1c;
-  }
+.bg-brown,
 .bg-important {
   color: #fff;
   background-color: #bd7b46;
   }
-a.bg-important:hover {
-  background-color: #996337;
-  }
+.bg-purple,
 .bg-special {
   color: #fff;
   background-color: #8666b8;
   }
-a.bg-special:hover {
-  background-color: #6c4aa1;
-  }
+.hl-gray,
 .hl-default {
   background-color: #f1f1f1;
   }
-a.hl-default:hover {
-  background-color: #d7d7d7;
-  }
 .hl-primary {
   background-color: #ebf2f9;
   }
-a.hl-primary:hover {
-  background-color: #c4d8ed;
-  }
+.hl-green,
 .hl-success {
   background-color: #ddf4df;
   }
-a.hl-success:hover {
-  background-color: #b6e8bb;
-  }
+.hl-blue,
 .hl-info {
   background-color: #ddf3f5;
   }
-a.hl-info:hover {
-  background-color: #b6e5e9;
-  }
+.hl-yellow,
 .hl-warning {
   background-color: #fff0d5;
   }
-a.hl-warning:hover {
-  background-color: #ffdea2;
-  }
+.hl-red,
 .hl-danger {
   background-color: #ffe5e0;
   }
-a.hl-danger:hover {
-  background-color: #ffbaad;
-  }
+.hl-brown,
 .hl-important {
   background-color: #f7ebe1;
   }
-a.hl-important:hover {
-  background-color: #ecd0b9;
-  }
+.hl-purple,
 .hl-special {
   background-color: #f5eeff;
   }
-a.hl-special:hover {
-  background-color: #d7bbff;
-  }
 .page-header,
 .header-dividing {
   padding-bottom: 9px;
@@ -2553,7 +2510,8 @@ input[type="button"].btn-block {
 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
   border-radius: 0;
   }
-.btn-group-vertical > .btn:first-child:not(:last-child) {
+.btn-group-vertical > .btn:first-child:not(:last-child),
+.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
   border-top-left-radius: 4px;
   border-top-right-radius: 4px;
   border-bottom-right-radius: 0;
@@ -2932,44 +2890,44 @@ a .icon-spin {
             transform: rotate(359deg);
     }
   }
-.icon-rotate-90:before {
+.icon-rotate-90 {
   filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
   -webkit-transform: rotate(90deg);
       -ms-transform: rotate(90deg);
        -o-transform: rotate(90deg);
           transform: rotate(90deg);
   }
-.icon-rotate-180:before {
+.icon-rotate-180 {
   filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
   -webkit-transform: rotate(180deg);
       -ms-transform: rotate(180deg);
        -o-transform: rotate(180deg);
           transform: rotate(180deg);
   }
-.icon-rotate-270:before {
+.icon-rotate-270 {
   filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
   -webkit-transform: rotate(270deg);
       -ms-transform: rotate(270deg);
        -o-transform: rotate(270deg);
           transform: rotate(270deg);
   }
-.icon-flip-horizontal:before {
+.icon-flip-horizontal {
   -webkit-transform: scale(-1, 1);
       -ms-transform: scale(-1, 1);
        -o-transform: scale(-1, 1);
           transform: scale(-1, 1);
   }
-.icon-flip-vertical:before {
+.icon-flip-vertical {
   -webkit-transform: scale(1, -1);
       -ms-transform: scale(1, -1);
        -o-transform: scale(1, -1);
           transform: scale(1, -1);
   }
-.icon-rotate-90:before,
-.icon-rotate-180:before,
-.icon-rotate-270:before,
-.icon-flip-horizontal:before,
-.icon-flip-vertical:before {
+.icon.icon-rotate-90,
+.icon.icon-rotate-180,
+.icon.icon-rotate-270,
+.icon.icon-flip-horizontal,
+.icon.icon-flip-vertical {
   display: inline-block;
   }
 .icon-resize:before {
@@ -3077,6 +3035,18 @@ a .icon-spin {
 .icon-circle-o-notch:before {
   content: '\f1ce';
   }
+.icon-chanzhi:before {
+  content: '\e906';
+  }
+.icon-chanzhi-pro:before {
+  content: '\e905';
+  }
+.icon-zsite:before {
+  content: '\e904';
+  }
+.icon-zsite-pro:before {
+  content: '\e903';
+  }
 .icon-qq:before {
   content: '\f600';
   }
@@ -3875,9 +3845,15 @@ a .icon-spin {
 .icon-minus-sign-alt:before {
   content: '\e71c';
   }
+.icon-plus-sign-alt:before {
+  content: '\f0fe';
+  }
 .icon-check-minus:before {
   content: '\e71d';
   }
+.icon-check-plus:before {
+  content: '\f196';
+  }
 .icon-level-up:before {
   content: '\e71e';
   }
@@ -4140,7 +4116,8 @@ input[type="number"]::-webkit-inner-spin-button {
           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, -webkit-box-shadow ease-in-out .15s;
   }
-.form-control:focus {
+.form-control:focus,
+.form-control.focus {
   border-color: #145ccd;
   outline: 0;
   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
@@ -4185,6 +4162,12 @@ textarea.form-control {
   margin-top: 4px \9;
   margin-left: -20px;
   }
+.os-android .radio input[type="radio"],
+.os-android .radio-inline input[type="radio"],
+.os-android .checkbox input[type="checkbox"],
+.os-android .checkbox-inline input[type="checkbox"] {
+  margin-top: 0;
+  }
 .radio + .radio,
 .checkbox + .checkbox {
   margin-top: -5px;
@@ -4409,8 +4392,43 @@ textarea.form-condensed .form-control {
 .form-condensed .input-group > .input-group-btn > .btn {
   padding: 2px 8px;
   font-size: 12px;
-  border-top-right-radius: 3px;
-  border-bottom-right-radius: 3px;
+  border-radius: 3px;
+  }
+.form-condensed .input-group .form-control:first-child,
+.form-condensed .input-group-addon:first-child,
+.form-condensed .input-group-btn:first-child > .btn,
+.form-condensed .input-group-btn:first-child > .btn-group > .btn,
+.form-condensed .input-group-btn:first-child > .dropdown-toggle,
+.form-condensed .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.form-condensed .input-group-btn:last-child > .btn-group:not(:last-child) > .btn,
+.form-condensed .input-group-btn:first-child > .btn-group-vertical > .btn,
+.form-condensed .input-group-btn:last-child > .btn-group-vertical:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  }
+.form-condensed .input-group .form-control:last-child,
+.form-condensed .input-group-addon:last-child,
+.form-condensed .input-group-btn:last-child > .btn,
+.form-condensed .input-group-btn:last-child > .btn-group > .btn,
+.form-condensed .input-group-btn:last-child > .dropdown-toggle,
+.form-condensed .input-group-btn:first-child > .btn:not(:first-child),
+.form-condensed .input-group-btn:first-child > .btn-group:not(:first-child) > .btn,
+.form-condensed .input-group-btn:last-child > .btn-group-vertical > .btn,
+.form-condensed .input-group-btn:first-child > .btn-group-vertical:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+  }
+.form-condensed .input-group-addon:first-child {
+  border-right: 0;
+  }
+.form-condensed .input-group-addon:last-child {
+  border-left: 0;
+  }
+.form-condensed .input-group-addon.fix-border,
+.form-condensed .input-group-btn.fix-border > .btn {
+  border-right: 0;
+  border-left: 0;
+  border-radius: 0;
   }
 .form-condensed.form-horizontal .form-group > label,
 .form-condensed.form-horizontal .radio,
@@ -4518,6 +4536,80 @@ textarea.form-condensed .form-control {
 .switch-inline {
   display: inline-block;
   }
+.checkbox-primary {
+  position: relative;
+  display: inline-block;
+  }
+.checkbox-primary > label {
+  padding-left: 25px;
+  cursor: pointer;
+  }
+.checkbox-primary > label:before,
+.checkbox-primary > label:after {
+  position: absolute;
+  top: 2px;
+  right: 0;
+  left: 0;
+  display: block;
+  width: 16px;
+  height: 16px;
+  line-height: 16px;
+  text-align: center;
+  content: ' ';
+  border-radius: 2px;
+  }
+.checkbox-primary > label:after {
+  z-index: 1;
+  border: 1px solid #808080;
+  -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1);
+       -o-transition: .4s cubic-bezier(.175, .885, .32, 1);
+          transition: .4s cubic-bezier(.175, .885, .32, 1);
+  -webkit-transition-property: border, background-color;
+       -o-transition-property: border, background-color;
+          transition-property: border, background-color;
+  }
+.checkbox-primary > label:before {
+  top: 3px;
+  z-index: 2;
+  font-family: ZenIcon;
+  font-size: 14px;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  line-height: 1;
+  text-transform: none;
+  content: '\e60d';
+  opacity: 0;
+  -webkit-transition: .2s cubic-bezier(.175, .885, .32, 1);
+       -o-transition: .2s cubic-bezier(.175, .885, .32, 1);
+          transition: .2s cubic-bezier(.175, .885, .32, 1);
+  -webkit-transition-property: opacity, -webkit-transform;
+       -o-transition-property: opacity, -o-transform;
+          transition-property: opacity, -webkit-transform;
+          transition-property: opacity, transform;
+          transition-property: opacity, transform, -webkit-transform, -o-transform;
+  -webkit-transform: scale(0);
+      -ms-transform: scale(0);
+       -o-transform: scale(0);
+          transform: scale(0);
+
+  speak: none;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  }
+.checkbox-primary.checked > label:after {
+  background-color: #3280fc;
+  border-color: #3280fc;
+  border-width: 4px;
+  }
+.checkbox-primary.checked > label:before {
+  color: white;
+  opacity: 1;
+  -webkit-transform: scale(1);
+      -ms-transform: scale(1);
+       -o-transform: scale(1);
+          transform: scale(1);
+  }
 .close {
   float: right;
   font-size: 19.5px;
@@ -5270,6 +5362,99 @@ a.list-group-item:focus {
 .alert-danger-inverse .alert-link {
   color: rgba(255, 255, 255, .8);
   }
+.input-control-icon-left,
+.input-control-icon-right,
+.input-control-label-left,
+.input-control-label-right {
+  position: absolute;
+  top: 1px;
+  z-index: 5;
+  height: 30px;
+  line-height: 30px;
+  opacity: .5;
+  }
+.input-control-icon-left,
+.input-control-icon-right {
+  width: 30px;
+  text-align: center;
+  }
+.input-control-label-left,
+.input-control-icon-left {
+  left: 1px;
+  }
+.input-control-label-right,
+.input-control-icon-right {
+  right: 1px;
+  }
+.input-control-label-left,
+.input-control-label-right {
+  width: 70px;
+  padding: 0 8px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  }
+.has-label-left-sm > .input-control-label-left,
+.has-label-left-sm > .input-control-label-right {
+  width: 55px;
+  }
+.has-label-left-lg > .input-control-label-left,
+.has-label-left-lg > .input-control-label-right {
+  width: 95px;
+  }
+.input-control {
+  position: relative;
+  }
+.input-control.has-icon-left > .form-control {
+  padding-left: 30px;
+  }
+.input-control.has-icon-right > .form-control {
+  padding-right: 30px;
+  }
+.input-control.has-label-left > .form-control {
+  padding-left: 70px;
+  }
+.input-control.has-label-right > .form-control {
+  padding-right: 70px;
+  }
+.input-control.has-label-left-sm > .form-control {
+  padding-left: 55px;
+  }
+.input-control.has-label-right-sm > .form-control {
+  padding-right: 55px;
+  }
+.input-control.has-label-left-lg > .form-control {
+  padding-left: 95px;
+  }
+.input-control.has-label-right-lg > .form-control {
+  padding-right: 95px;
+  }
+.input-control > a:hover {
+  background-color: #f1f1f1;
+  opacity: 1;
+  }
+.form-control:focus + [class^="input-control-"],
+.form-control:focus + [class^="input-control-"] + [class^="input-control-"] {
+  opacity: 1;
+  }
+.form-control:focus + .input-control-label-left {
+  color: #145ccd;
+  }
+.empty + .search-clear-btn,
+.empty + .search-icon + .search-clear-btn {
+  opacity: 0 !important;
+  }
+input:placeholder-shown + .search-clear-btn,
+input:placeholder-shown + .search-icon + .search-clear-btn {
+  opacity: 0 !important;
+  }
+.search-box-circle .input-control-icon-left,
+.search-box-circle .input-control-icon-right,
+.search-box-circle > .form-control {
+  border-radius: 16px;
+  }
+.search-box-circle + .input-group-btn > .btn {
+  border-radius: 0 16px 16px 0;
+  }
 .input-group {
   position: relative;
   display: table;
@@ -5322,7 +5507,10 @@ a.list-group-item:focus {
   border-right: 0;
   border-left: 0;
   }
-.input-group-addon:empty,
+.input-group-addon:empty {
+  width: 1px;
+  padding: 0;
+  }
 .input-group-addon.fix-padding {
   width: 1px;
   padding: 0;
@@ -5344,9 +5532,6 @@ a.list-group-item:focus {
   border-top-right-radius: 0;
   border-bottom-right-radius: 0;
   }
-.input-group-addon:first-child {
-  border-right: 0;
-  }
 .input-group .form-control:last-child,
 .input-group-addon:last-child,
 .input-group-btn:last-child > .btn,
@@ -5359,6 +5544,9 @@ a.list-group-item:focus {
   border-top-left-radius: 0;
   border-bottom-left-radius: 0;
   }
+.input-group-addon:first-child {
+  border-right: 0;
+  }
 .input-group-addon:last-child {
   border-left: 0;
   }
@@ -5449,8 +5637,8 @@ kbd,
 code {
   padding: 2px 4px;
   font-size: 90%;
-  color: #ea644a;
-  background-color: #f9f2f4;
+  color: #37474f;
+  background-color: #f3f5f7;
   border-radius: 4px;
   }
 kbd {
@@ -5602,6 +5790,35 @@ pre code {
   float: left;
   border-radius: 4px;
   }
+.pager-goto {
+  width: 100px;
+  text-align: center;
+  }
+.pager > li > div {
+  float: left;
+  }
+.pager > li .pager-goto,
+.pager > li .pager-size-menu,
+.pager > li.space {
+  margin: 0 5px;
+  }
+.pager-label {
+  position: relative;
+  float: left;
+  padding: 5px 4px;
+  margin-left: -1px;
+  line-height: 1.53846154;
+  text-decoration: none;
+  border: 1px solid transparent;
+  }
+.pager-item-left > a {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  }
+.pager-item-right > a {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  }
 .pager-lg > li > a,
 .pager-lg > li > span {
   padding: 10px 16px;
@@ -6509,7 +6726,7 @@ tbody.collapse.in {
   }
 .modal.fade .modal-dialog {
   -webkit-transition: -webkit-transform .3s ease-out;
-       -o-transition:         transform .3s ease-out, -o-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
           transition: -webkit-transform .3s ease-out;
           transition:         transform .3s ease-out;
           transition:         transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out;
@@ -7741,130 +7958,6 @@ tbody.collapse.in {
 .messager-special {
   background-color: #8666b8;
   }
-.menu > .btn {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-  margin-bottom: 5px;
-  }
-.menu > .btn + .nav {
-  margin-top: 15px;
-  }
-.menu > .nav > li {
-  float: none;
-  }
-.menu > .nav > li.nav-parent > a > .nav-parent-fold-icon {
-  position: absolute;
-  top: 11px;
-  right: 10px;
-  display: block;
-  filter: alpha(opacity=45);
-  opacity: .45;
-  -webkit-transition: all .5s;
-       -o-transition: all .5s;
-          transition: all .5s;
-  }
-.menu > .nav > li.nav-parent > a:hover > .nav-parent-fold-icon {
-  filter: alpha(opacity=75);
-  opacity: .75;
-  }
-.menu > .nav > li > .nav {
-  display: none;
-  background-color: #f6f6f6;
-  }
-.menu > .nav > li > .nav > li > a {
-  padding-left: 35px;
-  margin-top: -1px;
-  border: 1px solid #ddd;
-  }
-.menu > .nav > li > .nav > li > a:hover,
-.menu > .nav > li > .nav > li > a:focus {
-  background-color: #e4e4e4;
-  }
-.menu > .nav > li > .nav > li.active > a,
-.menu > .nav > li > .nav > li.active > a:hover,
-.menu > .nav > li > .nav > li.active > a:focus {
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.menu > .nav > li > .nav > li.active > a [class*='icon-'],
-.menu > .nav > li > .nav > li.active > a:hover [class*='icon-'],
-.menu > .nav > li > .nav > li.active > a:focus [class*='icon-'] {
-  color: #fff;
-  }
-.menu > .nav > li > a > [class*='icon-'],
-.menu > .nav > li > .nav > li > a > [class*='icon-'] {
-  display: inline-block;
-  margin-right: 5px;
-  color: #808080;
-  }
-.menu > .nav > li + li {
-  margin-top: -1px;
-  margin-left: 0;
-  }
-.menu > .nav > li,
-.menu > .nav > li > a {
-  margin-left: 0;
-  }
-.menu > .nav > li:first-child {
-  margin-top: 0;
-  }
-.menu > .nav > li:first-child > a,
-.menu > .nav > li:first-child.nav-heading {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.menu > .nav > li:last-child > a {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.menu > .nav > li:first-child > a,
-.menu > .nav > li:first-child.nav-heading {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  }
-.menu > .nav > li.active > a [class*='icon-'],
-.menu > .nav > li.active > a:hover [class*='icon-'],
-.menu > .nav > li.active > a:focus [class*='icon-'] {
-  color: #fff;
-  }
-.menu > .nav > li.show > a,
-.menu > .nav > li.show > a:hover,
-.menu > .nav > li.show > a:focus {
-  color: #353535;
-  background-color: #fff;
-  border-color: #ddd;
-  }
-.menu > .nav > li.show > a > [class*='icon-'],
-.menu > .nav > li.show > a:hover > [class*='icon-'],
-.menu > .nav > li.show > a:focus > [class*='icon-'] {
-  color: #353535;
-  }
-.menu > .nav > li.show > a:hover {
-  background-color: #f1f1f1;
-  }
-.menu > .nav > li.show:last-child > a {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.menu > .nav > li.show:last-child > .nav > li:last-child > a {
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.menu > .nav > li.show > .nav {
-  display: block;
-  }
-.menu > .nav > li.nav-heading {
-  background-color: #f1f1f1;
-  border: 1px solid #ddd;
-  }
 .article {
   padding: 20px;
   }
@@ -8380,7 +8473,7 @@ body.article-content {
   cursor: pointer;
   }
 .tree li > .list-toggle:before {
-  content: '\e6f1';
+  content: '\f196';
   }
 .tree li > .list-toggle:hover,
 .tree li > .list-toggle:active {
@@ -8390,7 +8483,7 @@ body.article-content {
   display: block;
   }
 .tree li.open > .list-toggle:before {
-  content: '\e6f2';
+  content: '\e71d';
   }
 .tree-actions {
   display: inline-block;
@@ -8423,7 +8516,7 @@ body.article-content {
 .tree-animate ul {
   opacity: 0;
   -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1);
+       -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1);
           transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1);
           transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1);
           transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1);
@@ -8458,7 +8551,7 @@ body.article-content {
 .tree-lines ul > li.has-list:before {
   position: absolute;
   top: -12px;
-  bottom: 13px;
+  bottom: 12px;
   left: -11px;
   display: block;
   width: auto;
@@ -8473,7 +8566,7 @@ body.article-content {
   height: 23px;
   }
 .tree-lines ul > li:first-child:before {
-  top: -7px;
+  top: -5px;
   }
 .tree-lines ul > li.tree-single-item:before {
   height: 19px;

+ 104 - 90
VisualInspection/node_modules/zui/dist/css/zui.lite.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: Lite edition - v1.6.0 - 2017-03-16
+ * ZUI: Lite edition - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
@@ -284,6 +284,9 @@ table {
 .with-padding {
   padding: 5px 12px;
   }
+.no-padding {
+  padding: 0!important;
+  }
 .visible-xs,
 .inline.visible-xs,
 .inline-block.visible-xs,
@@ -919,7 +922,6 @@ a[disabled]:focus {
 audio,
 canvas,
 img,
-svg,
 video {
   max-width: 100%;
   vertical-align: middle;
@@ -1593,58 +1595,47 @@ small,
 cite {
   font-style: normal;
   }
+.text-gray,
 .text-muted {
   color: #808080;
   }
+.text-gray a,
 .text-muted a {
   color: #737373;
   }
+.text-gray a:hover,
 .text-muted a:hover,
+.text-gray a:active,
 .text-muted a:active {
   color: #145ccd;
   }
 .text-primary {
   color: #3280fc;
   }
-.text-primary:hover {
-  color: #0462f7;
-  }
+.text-yellow,
 .text-warning {
   color: #f1a325;
   }
-.text-warning:hover {
-  color: #d5890e;
-  }
+.text-red,
 .text-danger {
   color: #ea644a;
   }
-.text-danger:hover {
-  color: #e53d1c;
-  }
+.text-green,
 .text-success {
   color: #38b03f;
   }
-.text-success:hover {
-  color: #2c8931;
-  }
+.text-blue,
 .text-info {
   color: #03b8cf;
   }
-.text-info:hover {
-  color: #028b9d;
-  }
+.text-brown,
 .text-important {
   color: #bd7b46;
   }
-.text-important:hover {
-  color: #996337;
-  }
+.text-purple,
 .text-special {
   color: #8666b8;
   }
-.text-special:hover {
-  color: #6c4aa1;
-  }
 .text-link {
   color: #353535;
   }
@@ -2468,44 +2459,44 @@ a .icon-spin {
             transform: rotate(359deg);
     }
   }
-.icon-rotate-90:before {
+.icon-rotate-90 {
   filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
   -webkit-transform: rotate(90deg);
       -ms-transform: rotate(90deg);
        -o-transform: rotate(90deg);
           transform: rotate(90deg);
   }
-.icon-rotate-180:before {
+.icon-rotate-180 {
   filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
   -webkit-transform: rotate(180deg);
       -ms-transform: rotate(180deg);
        -o-transform: rotate(180deg);
           transform: rotate(180deg);
   }
-.icon-rotate-270:before {
+.icon-rotate-270 {
   filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
   -webkit-transform: rotate(270deg);
       -ms-transform: rotate(270deg);
        -o-transform: rotate(270deg);
           transform: rotate(270deg);
   }
-.icon-flip-horizontal:before {
+.icon-flip-horizontal {
   -webkit-transform: scale(-1, 1);
       -ms-transform: scale(-1, 1);
        -o-transform: scale(-1, 1);
           transform: scale(-1, 1);
   }
-.icon-flip-vertical:before {
+.icon-flip-vertical {
   -webkit-transform: scale(1, -1);
       -ms-transform: scale(1, -1);
        -o-transform: scale(1, -1);
           transform: scale(1, -1);
   }
-.icon-rotate-90:before,
-.icon-rotate-180:before,
-.icon-rotate-270:before,
-.icon-flip-horizontal:before,
-.icon-flip-vertical:before {
+.icon.icon-rotate-90,
+.icon.icon-rotate-180,
+.icon.icon-rotate-270,
+.icon.icon-flip-horizontal,
+.icon.icon-flip-vertical {
   display: inline-block;
   }
 .icon-resize:before {
@@ -2613,6 +2604,18 @@ a .icon-spin {
 .icon-circle-o-notch:before {
   content: '\f1ce';
   }
+.icon-chanzhi:before {
+  content: '\e906';
+  }
+.icon-chanzhi-pro:before {
+  content: '\e905';
+  }
+.icon-zsite:before {
+  content: '\e904';
+  }
+.icon-zsite-pro:before {
+  content: '\e903';
+  }
 .icon-qq:before {
   content: '\f600';
   }
@@ -3411,9 +3414,15 @@ a .icon-spin {
 .icon-minus-sign-alt:before {
   content: '\e71c';
   }
+.icon-plus-sign-alt:before {
+  content: '\f0fe';
+  }
 .icon-check-minus:before {
   content: '\e71d';
   }
+.icon-check-plus:before {
+  content: '\f196';
+  }
 .icon-level-up:before {
   content: '\e71e';
   }
@@ -3676,7 +3685,8 @@ input[type="number"]::-webkit-inner-spin-button {
           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, -webkit-box-shadow ease-in-out .15s;
   }
-.form-control:focus {
+.form-control:focus,
+.form-control.focus {
   border-color: #145ccd;
   outline: 0;
   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
@@ -3721,6 +3731,12 @@ textarea.form-control {
   margin-top: 4px \9;
   margin-left: -20px;
   }
+.os-android .radio input[type="radio"],
+.os-android .radio-inline input[type="radio"],
+.os-android .checkbox input[type="checkbox"],
+.os-android .checkbox-inline input[type="checkbox"] {
+  margin-top: 0;
+  }
 .radio + .radio,
 .checkbox + .checkbox {
   margin-top: -5px;
@@ -4393,7 +4409,10 @@ a.list-group-item:focus {
   border-right: 0;
   border-left: 0;
   }
-.input-group-addon:empty,
+.input-group-addon:empty {
+  width: 1px;
+  padding: 0;
+  }
 .input-group-addon.fix-padding {
   width: 1px;
   padding: 0;
@@ -4413,9 +4432,6 @@ a.list-group-item:focus {
   border-top-right-radius: 0;
   border-bottom-right-radius: 0;
   }
-.input-group-addon:first-child {
-  border-right: 0;
-  }
 .input-group .form-control:last-child,
 .input-group-addon:last-child,
 .input-group-btn:last-child > .btn,
@@ -4426,6 +4442,9 @@ a.list-group-item:focus {
   border-top-left-radius: 0;
   border-bottom-left-radius: 0;
   }
+.input-group-addon:first-child {
+  border-right: 0;
+  }
 .input-group-addon:last-child {
   border-left: 0;
   }
@@ -4514,8 +4533,8 @@ kbd,
 code {
   padding: 2px 4px;
   font-size: 90%;
-  color: #ea644a;
-  background-color: #f9f2f4;
+  color: #37474f;
+  background-color: #f3f5f7;
   border-radius: 4px;
   }
 kbd {
@@ -4667,6 +4686,35 @@ pre code {
   float: left;
   border-radius: 4px;
   }
+.pager-goto {
+  width: 100px;
+  text-align: center;
+  }
+.pager > li > div {
+  float: left;
+  }
+.pager > li .pager-goto,
+.pager > li .pager-size-menu,
+.pager > li.space {
+  margin: 0 5px;
+  }
+.pager-label {
+  position: relative;
+  float: left;
+  padding: 5px 4px;
+  margin-left: -1px;
+  line-height: 1.53846154;
+  text-decoration: none;
+  border: 1px solid transparent;
+  }
+.pager-item-left > a {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  }
+.pager-item-right > a {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+  }
 .nav {
   padding-left: 0;
   margin-bottom: 0;
@@ -5334,7 +5382,7 @@ tbody.collapse.in {
   }
 .modal.fade .modal-dialog {
   -webkit-transition: -webkit-transform .3s ease-out;
-       -o-transition:         transform .3s ease-out, -o-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
           transition: -webkit-transform .3s ease-out;
           transition:         transform .3s ease-out;
           transition:         transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out;
@@ -6317,110 +6365,76 @@ tbody.collapse.in {
   margin: 0;
   background-color: #fff;
   }
+.bg-black,
 .bg-default {
   color: #fff;
   background-color: #353535;
   }
-a.bg-default:hover {
-  background-color: #1c1c1c;
-  }
 .bg-primary {
   color: #fff;
   background-color: #3280fc;
   }
-a.bg-primary:hover {
-  background-color: #0462f7;
-  }
+.bg-green,
 .bg-success {
   color: #fff;
   background-color: #38b03f;
   }
-a.bg-success:hover {
-  background-color: #2c8931;
-  }
+.bg-blue,
 .bg-info {
   color: #fff;
   background-color: #03b8cf;
   }
-a.bg-info:hover {
-  background-color: #028b9d;
-  }
+.bg-yellow,
 .bg-warning {
   color: #fff;
   background-color: #f1a325;
   }
-a.bg-warning:hover {
-  background-color: #d5890e;
-  }
+.bg-red,
 .bg-danger {
   color: #fff;
   background-color: #ea644a;
   }
-a.bg-danger:hover {
-  background-color: #e53d1c;
-  }
+.bg-brown,
 .bg-important {
   color: #fff;
   background-color: #bd7b46;
   }
-a.bg-important:hover {
-  background-color: #996337;
-  }
+.bg-purple,
 .bg-special {
   color: #fff;
   background-color: #8666b8;
   }
-a.bg-special:hover {
-  background-color: #6c4aa1;
-  }
+.hl-gray,
 .hl-default {
   background-color: #f1f1f1;
   }
-a.hl-default:hover {
-  background-color: #d7d7d7;
-  }
 .hl-primary {
   background-color: #ebf2f9;
   }
-a.hl-primary:hover {
-  background-color: #c4d8ed;
-  }
+.hl-green,
 .hl-success {
   background-color: #ddf4df;
   }
-a.hl-success:hover {
-  background-color: #b6e8bb;
-  }
+.hl-blue,
 .hl-info {
   background-color: #ddf3f5;
   }
-a.hl-info:hover {
-  background-color: #b6e5e9;
-  }
+.hl-yellow,
 .hl-warning {
   background-color: #fff0d5;
   }
-a.hl-warning:hover {
-  background-color: #ffdea2;
-  }
+.hl-red,
 .hl-danger {
   background-color: #ffe5e0;
   }
-a.hl-danger:hover {
-  background-color: #ffbaad;
-  }
+.hl-brown,
 .hl-important {
   background-color: #f7ebe1;
   }
-a.hl-important:hover {
-  background-color: #ecd0b9;
-  }
+.hl-purple,
 .hl-special {
   background-color: #f5eeff;
   }
-a.hl-special:hover {
-  background-color: #d7bbff;
-  }
 .article {
   padding: 20px;
   }

File diff suppressed because it is too large
+ 1 - 2
VisualInspection/node_modules/zui/dist/css/zui.lite.min.css


File diff suppressed because it is too large
+ 1 - 2
VisualInspection/node_modules/zui/dist/css/zui.min.css


BIN
VisualInspection/node_modules/zui/dist/fonts/zenicon.eot


File diff suppressed because it is too large
+ 3 - 3
VisualInspection/node_modules/zui/dist/fonts/zenicon.svg


BIN
VisualInspection/node_modules/zui/dist/fonts/zenicon.ttf


BIN
VisualInspection/node_modules/zui/dist/fonts/zenicon.woff


File diff suppressed because it is too large
+ 710 - 70
VisualInspection/node_modules/zui/dist/js/zui.js


+ 197 - 79
VisualInspection/node_modules/zui/dist/js/zui.lite.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: Lite edition - v1.6.0 - 2017-03-16
+ * ZUI: Lite edition - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
@@ -15,7 +15,7 @@
  * ======================================================================== */
 
 
-(function($, window) {
+(function($, window, undefined) {
     'use strict';
 
     /* Check jquery */
@@ -28,6 +28,13 @@
         }
     };
 
+    var MOUSE_BUTTON_CODES = {
+        all: -1,
+        left: 0,
+        middle: 1,
+        right: 2
+    };
+
     var lastUuidAmend = 0;
     $.zui({
         uuid: function() {
@@ -67,6 +74,14 @@
                 }
             }
             return code;
+        },
+
+        getMouseButtonCode: function(mouseButton) {
+            if(typeof mouseButton !== 'number') {
+                mouseButton = MOUSE_BUTTON_CODES[mouseButton];
+            }
+            if(mouseButton === undefined || mouseButton === null) mouseButton = -1;
+            return mouseButton;
         }
     });
 
@@ -83,13 +98,27 @@
         if(model && model.options) {
             var func = model.options[shortName];
             if($.isFunction(func)) {
-                $.zui.callEvent(func, e, model);
+                e.result = $.zui.callEvent(func, e, model);
             }
         }
         $this.trigger(e);
         return e;
     };
-}(jQuery, window));
+
+    $.fn.callComEvent = function(component, eventName, params) {
+        if (params !== undefined && !$.isArray(params)) {
+            params = [params];
+        }
+        var $this = this;
+        var result = $this.triggerHandler(eventName, params);
+
+        var eventCallback = component.options[eventName];
+        if (eventCallback) {
+            result = eventCallback.apply(component, params);
+        }
+        return result;
+    };
+}(jQuery, window, undefined));
 
 
 /* ========================================================================
@@ -487,30 +516,40 @@
     'use strict';
     var desktopLg = 1200,
         desktop = 992,
-        tablet = 768,
-        cssNames = {
-            desktop: 'screen-desktop',
-            desktopLg: 'screen-desktop-wide',
-            tablet: 'screen-tablet',
-            phone: 'screen-phone',
-            isMobile: 'device-mobile',
-            isDesktop: 'device-desktop',
-            touch: 'is-touchable'
-        };
+        tablet = 768;
 
     var $window = $(window);
 
     var resetCssClass = function() {
         var width = $window.width();
-        $('html').toggleClass(cssNames.desktop, width >= desktop && width < desktopLg)
-            .toggleClass(cssNames.desktopLg, width >= desktopLg)
-            .toggleClass(cssNames.tablet, width >= tablet && width < desktop)
-            .toggleClass(cssNames.phone, width < tablet)
-            .toggleClass(cssNames.isMobile, width < desktop)
-            .toggleClass(cssNames.touch, 'ontouchstart' in document.documentElement)
-            .toggleClass(cssNames.isDesktop, width >= desktop);
+        $('html').toggleClass('screen-desktop', width >= desktop && width < desktopLg)
+            .toggleClass('screen-desktop-wide', width >= desktopLg)
+            .toggleClass('screen-tablet', width >= tablet && width < desktop)
+            .toggleClass('screen-phone', width < tablet)
+            .toggleClass('device-mobile', width < desktop)
+            .toggleClass('device-desktop', width >= desktop);
     };
 
+    var classNames = '';
+    var userAgent = navigator.userAgent;
+    if (userAgent.match(/(iPad|iPhone|iPod)/i)) {
+        classNames += ' os-ios';
+    } else if (userAgent.match(/android/i)) {
+        classNames += ' os-android';
+    } else if (userAgent.match(/Win/i)) {
+        classNames += ' os-windows';
+    } else if (userAgent.match(/Mac/i)) {
+        classNames += ' os-mac';
+    } else if (userAgent.match(/Linux/i)) {
+        classNames += ' os-linux';
+    } else if (userAgent.match(/X11/i)) {
+        classNames += ' os-unix';
+    }
+    if ('ontouchstart' in document.documentElement) {
+        classNames += ' is-touchable';
+    }
+    $('html').addClass(classNames);
+
     $window.resize(resetCssClass);
     resetCssClass();
 }(window, jQuery));
@@ -820,6 +859,36 @@
             return this.getFullYear() === date.getFullYear();
         };
     }
+
+    /**
+     * Create an date instance with string, timestamp or date instance
+     * @param  {Date|String|Number}  date
+     * @return {Date}
+     */
+    if (!Date.create) {
+        Date.create = function(date) {
+            if (!(date instanceof Date)) {
+                if (typeof date === 'number' && date < 10000000000) {
+                    date *= 1000;
+                }
+                date = new Date(date);
+            }
+            return date;
+        };
+    }
+
+    if (!Date.timestamp) {
+        Date.timestamp = function(date) {
+            if (typeof date === 'number') {
+                if (date < 10000000000) {
+                    date *= 1000;
+                }
+            } else {
+                date = Date.create(date).getTime();
+            }
+            return date;
+        };
+    }
 }());
 
 
@@ -883,6 +952,31 @@
         };
     }
 
+    if(!String.prototype.endsWith) {
+        String.prototype.endsWith = function(searchString, position) {
+            var subjectString = this.toString();
+            if(position === undefined || position > subjectString.length) {
+                position = subjectString.length;
+            }
+            position -= searchString.length;
+            var lastIndex = subjectString.indexOf(searchString, position);
+            return lastIndex !== -1 && lastIndex === position;
+        };
+    }
+
+    if(!String.prototype.startsWith) {
+        String.prototype.startsWith = function(searchString, position) {
+            position = position || 0;
+            return this.lastIndexOf(searchString, position) === position;
+        };
+    }
+
+    if(!String.prototype.includes) {
+        String.prototype.includes = function() {
+            return String.prototype.indexOf.apply(this, arguments) !== -1;
+        };
+    }
+
 })();
 
 
@@ -1546,23 +1640,24 @@
 
     var zuiname = 'zui.modal'
     var Modal = function(element, options) {
-        this.options = options
-        this.$body = $(document.body)
-        this.$element = $(element)
-        this.$backdrop =
-            this.isShown = null
-        this.scrollbarWidth = 0
+        var that = this;
+        that.options = options
+        that.$body = $(document.body)
+        that.$element = $(element)
+        that.$backdrop =
+            that.isShown = null
+        that.scrollbarWidth = 0
 
-        if(typeof this.options.moveable === 'undefined') {
-            this.options.moveable = this.$element.hasClass('modal-moveable');
+        if(options.moveable === undefined) {
+            that.options.moveable = that.$element.hasClass('modal-moveable');
         }
 
-        if(this.options.remote) {
-            this.$element
+        if(options.remote) {
+            that.$element
                 .find('.modal-content')
-                .load(this.options.remote, $.proxy(function() {
-                    this.$element.trigger('loaded.' + zuiname)
-                }, this))
+                .load(options.remote, function() {
+                    that.$element.trigger('loaded.' + zuiname)
+                })
         }
     }
 
@@ -1578,27 +1673,37 @@
         // rememberPos: false,
         // moveable: false,
         position: 'fit' // 'center' or '40px' or '10%'
-    }
+    };
+
+    var setDialogPos = function($dialog, pos) {
+        var $window = $(window);
+        pos.left = Math.max(0, Math.min(pos.left, $window.width() - $dialog.outerWidth()));
+        pos.top = Math.max(0, Math.min(pos.top, $window.height() - $dialog.outerHeight()));
+        $dialog.css(pos);
+    };
 
     Modal.prototype.toggle = function(_relatedTarget, position) {
         return this.isShown ? this.hide() : this.show(_relatedTarget, position)
     }
 
     Modal.prototype.ajustPosition = function(position) {
-        if(typeof position === 'undefined') position = this.options.position;
+        var that = this;
+        var options = that.options;
+        if(typeof position === 'undefined') position = options.position;
         if(typeof position === 'undefined') return;
-        var $dialog = this.$element.find('.modal-dialog');
+        var $dialog = that.$element.find('.modal-dialog');
         // if($dialog.hasClass('modal-dragged')) return;
 
         var half = Math.max(0, ($(window).height() - $dialog.outerHeight()) / 2);
         var topPos = position == 'fit' ? (half * 2 / 3) : (position == 'center' ? half : position);
         if($dialog.hasClass('modal-moveable')) {
             var pos = null;
-            if(this.options.rememberPos) {
-                if(this.options.rememberPos === true) {
-                    pos = this.$element.data('modal-pos');
+            var rememberPos = options.rememberPos;
+            if(rememberPos) {
+                if(rememberPos === true) {
+                    pos = that.$element.data('modal-pos');
                 } else if($.zui.store) {
-                    pos = $.zui.store.pageGet(zuiname + '.rememberPos');
+                    pos = $.zui.store.pageGet(zuiname + '.rememberPos.' + rememberPos);
                 }
             }
             if(!pos) {
@@ -1607,7 +1712,11 @@
                     top: topPos
                 };
             }
-            $dialog.css(pos);
+            if (options.moveable === 'inside') {
+                setDialogPos($dialog, pos);
+            } else {
+                $dialog.css(pos);
+            }
         } else {
             $dialog.css('margin-top', topPos);
         }
@@ -1618,7 +1727,7 @@
         var that = this;
         var options = that.options;
         var $dialog = that.$element.find('.modal-dialog').removeClass('modal-dragged');
-        $dialog.toggleClass('modal-moveable', options.moveable);
+        $dialog.toggleClass('modal-moveable', !!options.moveable);
 
         if(!that.$element.data('modal-moveable-setup')) {
             $dialog.draggable({
@@ -1628,13 +1737,17 @@
                     $dialog.css('margin-top', '').addClass('modal-dragged');
                 },
                 finish: function(e) {
-                    if(options.rememberPos) {
+                    var rememberPos = options.rememberPos;
+                    if(rememberPos) {
                         that.$element.data('modal-pos', e.pos);
-                        if($.zui.store && options.rememberPos !== true) {
-                            $.zui.store.pageSet(zuiname + '.rememberPos', e.pos);
+                        if($.zui.store && rememberPos !== true) {
+                            $.zui.store.pageSet(zuiname + '.rememberPos.' + rememberPos, e.pos);
                         }
                     }
-                }
+                },
+                move: options.moveable === 'inside' ? function (dragPos) {
+                    setDialogPos($dialog, dragPos);
+                } : true
             });
         }
     }
@@ -1924,8 +2037,6 @@
         this.$trigger = $trigger;
         this.options = options;
         this.id = $.zui.uuid();
-
-        // todo: handle when: options.show = true
     };
 
     ModalTrigger.DEFAULTS = {
@@ -1935,6 +2046,7 @@
         height: 'auto',
         // icon: null,
         name: 'triggerModal',
+        // className: '',
         fade: true,
         position: 'fit',
         showHeader: true,
@@ -1983,14 +2095,14 @@
             if(!that.isShown) $modal.off(ZUI_MODAL);
             $modal.remove();
         }
-        $modal = $('<div id="' + options.name + '" class="modal modal-trigger">' + (typeof options.loadingIcon === 'string' && options.loadingIcon.indexOf('icon-') === 0 ? ('<div class="icon icon-spin loader ' + options.loadingIcon + '"></div>') : options.loadingIcon) + '<div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal">×</button><h4 class="modal-title"><i class="modal-icon"></i> <span class="modal-title-name"></span></h4></div><div class="modal-body"></div></div></div></div>').appendTo('body').data(NAME, that);
+        $modal = $('<div id="' + options.name + '" class="modal modal-trigger ' + (options.className || '') + '">' + (typeof options.loadingIcon === 'string' && options.loadingIcon.indexOf('icon-') === 0 ? ('<div class="icon icon-spin loader ' + options.loadingIcon + '"></div>') : options.loadingIcon) + '<div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal">×</button><h4 class="modal-title"><i class="modal-icon"></i> <span class="modal-title-name"></span></h4></div><div class="modal-body"></div></div></div></div>').appendTo('body').data(NAME, that);
 
         var bindEvent = function(optonName, eventName) {
             var handleFunc = options[optonName];
             if($.isFunction(handleFunc)) $modal.on(eventName + ZUI_MODAL, handleFunc);
         };
         bindEvent('onShow', 'show');
-        bindEvent('shown', 'shown');
+        bindEvent('shown',  'shown');
         bindEvent('onHide', 'hide');
         bindEvent('hidden', 'hidden');
         bindEvent('loaded', 'loaded');
@@ -2019,7 +2131,7 @@
             $content = $dialog.find('.modal-content');
 
         $modal.toggleClass('fade', options.fade)
-            .addClass(options.cssClass)
+            .addClass(options.className)
             .toggleClass('modal-loading', !this.isShown);
 
         $dialog.toggleClass('modal-md', options.size === 'md')
@@ -2029,7 +2141,7 @@
 
         $header.toggle(options.showHeader);
         $header.find('.modal-icon').attr('class', 'modal-icon icon-' + options.icon);
-        $header.find('.modal-title-name').html(options.title || '');
+        $header.find('.modal-title-name').text(options.title || '');
         if(options.size && options.size === 'fullscreen') {
             options.width = '';
             options.height = '';
@@ -2085,9 +2197,10 @@
             }
         } else if(options.url) {
             var onLoadBroken = function() {
-                var brokenContent = $modal.callEvent('broken' + ZUI_MODAL, that, that);
+                var brokenContent = $modal.callComEvent(that, 'broken');
                 if(brokenContent) {
                     $body.html(brokenContent);
+                    readyToShow();
                 }
             };
 
@@ -2135,10 +2248,10 @@
                                 readyToShow();
                             };
 
-                            $modal.callEvent('loaded' + ZUI_MODAL, {
+                            $modal.callComEvent(that, 'loaded', {
                                 modalType: 'iframe',
                                 jQuery: frame$
-                            }, null);
+                            });
 
                             setTimeout(ajustFrameSize, 100);
 
@@ -2155,32 +2268,37 @@
                     }
                 };
             } else {
-                $.get(options.url, function(data) {
-                    try {
-                        var $data = $(data);
-                        if($data.hasClass('modal-dialog')) {
-                            $dialog.replaceWith($data);
-                        } else if($data.hasClass('modal-content')) {
-                            $dialog.find('.modal-content').replaceWith($data);
-                        } else {
-                            $body.wrapInner($data);
+                $.ajax($.extend({
+                    url: options.url,
+                    success: function(data) {
+                        try {
+                            var $data = $(data);
+                            if($data.hasClass('modal-dialog')) {
+                                $dialog.replaceWith($data);
+                            } else if($data.hasClass('modal-content')) {
+                                $dialog.find('.modal-content').replaceWith($data);
+                            } else {
+                                $body.wrapInner($data);
+                            }
+                        } catch(e) {
+                            $modal.html(data);
                         }
-                    } catch(e) {
-                        $modal.html(data);
-                    }
-                    $modal.callEvent('loaded' + ZUI_MODAL, {
-                        modalType: STR_AJAX
-                    }, that);
-                    readyToShow();
-                }).error(onLoadBroken);
+                        $modal.callComEvent(that, 'loaded', {
+                            modalType: STR_AJAX
+                        });
+                        readyToShow();
+                    },
+                    error: onLoadBroken
+                }, options.ajaxOptions));
             }
         }
 
         $modal.modal({
-            show: 'show',
-            backdrop: options.backdrop,
-            moveable: options.moveable,
-            keyboard: options.keyboard
+            show       : 'show',
+            backdrop   : options.backdrop,
+            moveable   : options.moveable,
+            rememberPos: options.rememberPos,
+            keyboard   : options.keyboard
         });
     };
 
@@ -2508,7 +2626,7 @@
             that.applyPlacement(calculatedOffset, placement)
             var complete = function () {
                 var prevHoverState = that.hoverState
-                that.$element.trigger('shown.bs.' + that.type)
+                that.$element.trigger('shown.zui.' + that.type)
                 that.hoverState = null
 
                 if (prevHoverState == 'out') that.leave(that)

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/js/zui.lite.min.js


File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/js/zui.min.js


+ 3 - 3
VisualInspection/node_modules/zui/dist/lib/array/zui.array.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 数组辅助方法 - v1.6.0 - 2017-03-16
+ * ZUI: 数组辅助方法 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -164,7 +164,7 @@
      * @param  {array} result
      * @return {array}
      */
-    if(!Array.prototype.mawherep) {
+    if(!Array.prototype.where) {
         Array.prototype.where = function(conditions, result) {
             result = result || [];
             var cdt, ok, objVal;

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/array/zui.array.min.js


+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/board/zui.board.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 看板 - v1.6.0 - 2017-03-16
+ * ZUI: 看板 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .board-item {

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/board/zui.board.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 看板 - v1.6.0 - 2017-03-16
+ * ZUI: 看板 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/board/zui.board.min.css

@@ -1,6 +1,6 @@
 /*!
- * ZUI: 看板 - v1.6.0 - 2017-03-16
+ * ZUI: 看板 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */.board-item{padding:6px 10px;margin-bottom:5px;background:#fff;border:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.05);box-shadow:0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.board-item:hover{-webkit-box-shadow:0 1px 1 rgba(0,0,0,.1);box-shadow:0 1px 1 rgba(0,0,0,.1)}.board-item.board-item-empty{display:none;color:grey;border-style:dashed}.board-item.board-item-shadow{display:none;padding:0;background:#ddd;border:none;border-color:#ddd;-webkit-box-shadow:inset 0 0 4px rgba(0,0,0,.1);box-shadow:inset 0 0 4px rgba(0,0,0,.1);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.board-item.drag-shadow{width:250px;cursor:move;background-color:#fff;border-color:#c4c4c4;-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.25);box-shadow:1px 1px 15px rgba(0,0,0,.25);opacity:.9}.board-item.drag-from{background-color:#ebf2f9}.board-list .board-item:last-child{margin-bottom:0}.board{float:left;width:250px;margin-right:10px}.board.drop-in-empty .board-item-empty{height:0;padding:0;margin:0;overflow:hidden;border:transparent}.board:last-child{margin-right:0}.board>.panel-body{padding:5px;background:#f1f1f1}.boards:after,.boards:before{display:table;content:" "}.boards:after{clear:both}.boards.dragging .board.drop-in{border-color:#c4c4c4;-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.25);box-shadow:1px 1px 15px rgba(0,0,0,.25)}.boards.dragging .board.drop-in .board-item-shadow{display:block}.boards.dragging .board .board-item.board-item-empty{display:block}.boards.dragging .board-item.disable-drop{display:none}.boards.drop-in .board-item.drag-from{height:0;padding:0;margin:0;overflow:hidden;border:transparent}

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/board/zui.board.min.js


File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/bootbox/bootbox.min.js


+ 15 - 6
VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 日历 - v1.6.0 - 2017-03-16
+ * ZUI: 日历 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .calendar {
@@ -31,6 +31,15 @@
   text-align: center;
   background-color: #fff;
   }
+.calendar .weekends-empty .table > thead > tr > th,
+.calendar .weekends-empty .table > tbody > tr > td {
+  width: 20%;
+  }
+.calendar .weekends-empty .table > thead > tr > th.weekend-head,
+.calendar .weekends-empty .table > tbody > tr > td.weekend-day {
+  width: 40px;
+  min-width: 40px;
+  }
 .calendar .day {
   opacity: .7;
   }
@@ -48,10 +57,6 @@
   height: 100%;
   min-height: 70px;
   }
-.calendar .day.drop-to {
-  background-color: #fff0d5;
-  opacity: 1;
-  }
 .calendar .cell-day {
   background-color: #f1f1f1;
   }
@@ -75,6 +80,10 @@
 .calendar .cell-day.current > .day > .heading {
   background-color: rgba(0, 0, 0, .1);
   }
+.calendar .cell-day.drop-to {
+  background-color: #fff0d5;
+  opacity: 1;
+  }
 .calendar .event {
   padding: 1px 5px;
   margin: 0 1px 1px;

+ 17 - 9
VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 日历 - v1.6.0 - 2017-03-16
+ * ZUI: 日历 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -150,7 +150,8 @@
         limitEventTitle: true,
         storage: true,
         withHeader: true,
-        dragThenDrop: true // drag an event and drop at another day
+        dragThenDrop: true, // drag an event and drop at another day,
+        // hideEmptyWeekends: false // Auto hide empty weekends
     };
 
     // Sort events by start datetime
@@ -453,13 +454,13 @@
                 $tr;
 
             for(i = 0; i < 7; i++) {
-                $weekHead.append('<th>' + lang.weekNames[i] + '</th>');
+                $('<th>' + lang.weekNames[i] + '</th>').toggleClass('weekend-head', i >= 5).appendTo($weekHead);
             }
 
             for(i = 0; i < 6; i++) {
                 $tr = $('<tr class="week-days"></tr>');
                 for(var j = 0; j < 7; j++) {
-                    $tr.append('<td class="cell-day"><div class="day"><div class="heading"><span class="month"></span> <span class="number"></span></div><div class="content"><div class="events"></div></div></div></td>');
+                    $('<td class="cell-day"><div class="day"><div class="heading"><span class="month"></span> <span class="number"></span></div><div class="content"><div class="events"></div></div></div></td>').toggleClass('weekend-day', j >= 5).appendTo($tr);
                 }
                 $monthDays.append($tr);
             }
@@ -491,6 +492,7 @@
             calendars = that.calendars,
             printDateId, isFirstDayOfWeek, $event, cal, $dayEvents;
 
+        var isEmptyWeekends = true;
         $weeks.each(function(weekIdx) {
             $week = $(this);
             $week.find('.day').each(function(dayIndex) {
@@ -524,6 +526,9 @@
                             stripCount++;
                             continue;
                         }
+                        if (isEmptyWeekends && dayIndex >= 5) {
+                            isEmptyWeekends = false;
+                        }
                         $event = $('<div data-id="' + e.id + '" class="event" title="' + e.desc + '"><span class="time">' + e.start.format('hh:mm') + '</span> <span class="title">' + e.title + '</span></div>');
                         $event.find('.time').toggle(!e.allDay);
                         $event.data('event', e);
@@ -563,6 +568,9 @@
                 printDate.addDays(1);
             });
         });
+        if (options.hideEmptyWeekends) {
+            $view.toggleClass('weekends-empty', isEmptyWeekends);
+        }
 
         if(options.withHeader) {
             that.$caption.text(lang.yearMonth.format(thisYear, thisMonth + 1, lang.monthNames[thisMonth]));
@@ -574,8 +582,8 @@
                 return console.error('Calendar dragThenDrop option requires droppable.js');
             }
             if(!$view.data('zui.droppable')) {
-                $view.droppable({
-                    target: '.day',
+                $view.droppable($.extend({
+                    target: '.cell-day',
                     selector: '.event',
                     flex: true,
                     start: function() {
@@ -583,7 +591,7 @@
                     },
                     drop: function(e) {
                         var et = e.element.data('event'),
-                            newDate = e.target.attr('data-date');
+                            newDate = e.target.children('.day').attr('data-date');
                         if(!et || !newDate) return;
                         var startDate = et.start.clone();
                         if(startDate.toDateString() != newDate) {
@@ -625,7 +633,7 @@
                     finish: function() {
                         that.$.removeClass('event-dragging');
                     }
-                });
+                }, ($.isPlainObject(options.dragThenDrop)) ? options.dragThenDrop : null));
             }
         }
     };

File diff suppressed because it is too large
+ 1 - 2
VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.min.css


File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/calendar/zui.calendar.min.js


+ 24 - 23
VisualInspection/node_modules/zui/dist/lib/chart/zui.chart.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: Chart.js - v1.6.0 - 2017-03-16
+ * ZUI: Chart.js - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -2083,7 +2083,7 @@
 /* ========================================================================
  * Chart.js: Chart.line.js [Version: 1.0.2]
  * http://chartjs.org/
- * 
+ *
  * ZUI: The file has been changed in ZUI. It will not keep update with the
  * official version in the future.
  * http://zui.sexy
@@ -2104,7 +2104,7 @@
 
     /// ----- ZUI change begin -----
     /// Change root to zui shared object
-    /// 
+    ///
     ///   var root = this, // old code
     var root = $ && $.zui ? $.zui : this,
         /// ----- ZUI change end -----
@@ -2129,7 +2129,7 @@
         //Boolean - Whether to show beyond lines
         scaleShowBeyondLine: true,
         /// ZUI change end
-        /// 
+        ///
         //Boolean - Whether to show vertical lines (except Y axis)
         scaleShowVerticalLines: true,
 
@@ -2351,23 +2351,24 @@
             this.scale = new Chart.Scale(scaleOptions);
         },
         addData: function(valuesArray, label) {
-            //Map the values array for each of the datasets
-
-            helpers.each(valuesArray, function(value, datasetIndex) {
-                //Add a new point for each piece of data, passing any required data to draw.
-                this.datasets[datasetIndex].points.push(new this.PointClass({
-                    value: value,
-                    label: label,
-                    x: this.scale.calculateX(this.scale.valuesCount + 1),
-                    y: this.scale.endPoint,
-                    strokeColor: this.datasets[datasetIndex].pointStrokeColor,
-                    fillColor: this.datasets[datasetIndex].pointColor
-                }));
-            }, this);
-
-            this.scale.addXLabel(label);
-            //Then re-render the chart.
-            this.update();
+			//Map the values array for each of the datasets
+
+			helpers.each(valuesArray,function(value,datasetIndex){
+				//Add a new point for each piece of data, passing any required data to draw.
+				this.datasets[datasetIndex].points.push(new this.PointClass({
+					value : value,
+					label : label,
+					datasetLabel: this.datasets[datasetIndex].label,
+					x: this.scale.calculateX(this.scale.valuesCount+1),
+					y: this.scale.endPoint,
+					strokeColor : this.datasets[datasetIndex].pointStrokeColor,
+					fillColor : this.datasets[datasetIndex].pointColor
+				}));
+			},this);
+
+			this.scale.addXLabel(label);
+			//Then re-render the chart.
+			this.update();
         },
         removeData: function() {
             this.scale.removeXLabel();
@@ -2764,7 +2765,7 @@
                     x = Math.min(chartWidthHalf - segment.outerRadius - 10, x - 30 + chartWidthHalf);
                 }
 
-                var textHeight = options.scaleFontSize;
+                var textHeight = options.scaleFontSize * (options.scaleLineHeight || 1);
                 var labelPos = Math.round((y * 0.8 + chartHeightHalf) / textHeight) + 1;
                 var maxPos = Math.floor(this.chart.width / textHeight) + 1;
                 var labelPosDirection = isRight ? 1 : (-1);

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/chart/zui.chart.min.js


+ 17 - 9
VisualInspection/node_modules/zui/dist/lib/chosen/chosen.js

@@ -1,7 +1,7 @@
 /* ========================================================================
  * Chosen: chosen.js [version 1.1.0]
  * https://github.com/harvesthq/chosen
- * 
+ *
  * Chosen, a Select Box Enhancer for jQuery and Prototype
  * by Patrick Filler for Harvest, http://getharvest.com
  *
@@ -14,8 +14,10 @@
  * ========================================================================
  * Improvement in ZUI:
  * 1. New option 'drop_direction': 'auto' | 'top' | 'bottom';
- * 2. Enhance the search experience, support search items by custom data 
+ * 2. Enhance the search experience, support search items by custom data
  *    with 'data-keys=*' attribute in option;
+ * 3. ‘middle_highlight’ option can make hightlight item in the middle of
+ *    the dropdown menu
  * ======================================================================== */
 
 
@@ -113,7 +115,7 @@ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
                         group_array_index: group_position,
                         classes: option.className,
                         style: option.style.cssText,
-                        search_keys: ($.trim(option.getAttribute('data-keys') || '')).replace(/,/, ' ')
+                        search_keys: ($.trim(option.getAttribute('data-keys') || '') + option.value).replace(/,/, ' ')
                     });
                 } else {
                     this.parsed.push({
@@ -833,7 +835,7 @@ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
             this.container.addClass("chosen-container-active");
             this.active_field = true;
             this.search_field.val(this.search_field.val());
-            return this.search_field.focus();
+            // return this.search_field.focus(); ZUI: bug: when user select a item by click, container scroll to left automaticly.
         };
 
         Chosen.prototype.test_active_click = function(evt) {
@@ -918,10 +920,15 @@ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
 
             var dropDirection = this.drop_direction;
             if(dropDirection === 'auto') {
-                var $drop = this.container.find('.chosen-drop');
-                var offset = this.container.offset();
-                if(offset.top + $drop.outerHeight() + 30 > $(window).height() + $(window).scrollTop()) {
-                    dropDirection = 'up';
+                if (!this.drop_directionFixed) {
+                    var $drop = this.container.find('.chosen-drop');
+                    var offset = this.container.offset();
+                    if(offset.top + $drop.outerHeight() + 30 > $(window).height() + $(window).scrollTop()) {
+                        dropDirection = 'up';
+                    }
+                    this.drop_directionFixed = dropDirection;
+                } else {
+                    dropDirection = this.drop_directionFixed;
                 }
             }
             this.container.toggleClass('chosen-up', dropDirection === 'up');
@@ -942,6 +949,7 @@ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
                 this.form_field_jq.trigger("chosen:hiding_dropdown", {
                     chosen: this
                 });
+                this.drop_directionFixed = 0;
             }
             return this.results_showing = false;
         };
@@ -988,7 +996,7 @@ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
             if(target.length) {
                 this.result_highlight = target;
                 this.result_select(evt);
-                return this.search_field.focus();
+                // return this.search_field.focus(); // ZUI: bug: when user select a item by click, container scroll to left automaticly.
             }
         };
 

File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/chosen/chosen.min.js


+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 图标选择器 - v1.6.0 - 2017-03-16
+ * ZUI: 图标选择器 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .chosen-container.chosen-icons .chosen-results {

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 图标选择器 - v1.6.0 - 2017-03-16
+ * ZUI: 图标选择器 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.min.css

@@ -1,6 +1,6 @@
 /*!
- * ZUI: 图标选择器 - v1.6.0 - 2017-03-16
+ * ZUI: 图标选择器 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */.chosen-container.chosen-icons .chosen-results{padding:5px}.chosen-container.chosen-icons .chosen-results li{border-radius:4px}.chosen-container.chosen-icons .chosen-results li.group-result{padding:5px 0;font-size:12px;color:#666;border-radius:0}.chosen-container.chosen-icons .chosen-results li.group-option{display:inline-block;width:30px;padding:8px;font-size:14px;line-height:14px;text-align:center}

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/chosenicons/zui.chosenicons.min.js


File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/clipboard/clipboard.min.js


+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 颜色选择器 - v1.6.0 - 2017-03-16
+ * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .colorpicker .dropdown-menu {

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 颜色选择器 - v1.6.0 - 2017-03-16
+ * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.min.css

@@ -1,6 +1,6 @@
 /*!
- * ZUI: 颜色选择器 - v1.6.0 - 2017-03-16
+ * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */.colorpicker .dropdown-menu{min-width:0;padding:2px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:2px}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:4px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:50%;display:block;width:100%;height:20px;margin-top:-8px}.colorpicker .dropdown-menu>li>a:hover{border-color:#333;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{content:'\e60d'}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#f2f2f2}.colorpicker .dropdown-menu>li>a.empty:before{content:'\d7'}.colorpicker .btn{text-shadow:none}.colorpicker .btn .cp-title{display:inline-block;margin-right:5px}.colorpicker.btn-wrapper{position:relative;display:inline-block}

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/colorpicker/zui.colorpicker.min.js


+ 4 - 4
VisualInspection/node_modules/zui/dist/lib/colorset.js/colorset.js → VisualInspection/node_modules/zui/dist/lib/colorset.js/zui.colorset.js

@@ -1,15 +1,15 @@
 /*!
- * ZUI: JS配色表 - v1.6.0 - 2017-03-16
+ * ZUI: JS配色表 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /*!
- * ZUI: Generated from less code - v1.6.0 - 2017-03-16
+ * ZUI: Generated from less code - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 (function($) {

+ 5 - 5
VisualInspection/node_modules/zui/dist/lib/colorset.js/colorset.min.js → VisualInspection/node_modules/zui/dist/lib/colorset.js/zui.colorset.min.js

@@ -1,13 +1,13 @@
 /*!
- * ZUI: JS配色表 - v1.6.0 - 2017-03-16
+ * ZUI: JS配色表 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 /*!
- * ZUI: Generated from less code - v1.6.0 - 2017-03-16
+ * ZUI: Generated from less code - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
-!function(e){"use strict";var f=0,r=["primary","red","yellow","green","blue","purple","brown","dark"],a={primary:"#3280fc",secondary:"#145ccd",pale:"#ebf2f9",fore:"#353535",back:"#fff",grayDarker:"#222222",grayDark:"#333333",gray:"#808080",grayLight:"#dddddd",grayLighter:"#e5e5e5",grayPale:"#f1f1f1",white:"#fff",black:"#000",red:"#ea644a",yellow:"#f1a325",green:"#38b03f",blue:"#03b8cf",purple:"#8666b8",brown:"#bd7b46",greenPale:"#ddf4df",yellowPale:"#fff0d5",redPale:"#ffe5e0",bluePale:"#ddf3f5",brownPale:"#f7ebe1",purplePale:"#f5eeff",light:"#fff",dark:"#353535",success:"#38b03f",warning:"#f1a325",danger:"#ea644a",info:"#03b8cf",important:"#bd7b46",special:"#8666b8",successPale:"#ddf4df",warningPale:"#fff0d5",dangerPale:"#ffe5e0",infoPale:"#ddf3f5",importantPale:"#f7ebe1",specialPale:"#f5eeff"};a.get=function(l){("undefined"==typeof l||"random"===l)&&(l=r[f++%r.length]);var d=a[l]?a[l]:l;return e.zui.Color?new e.zui.Color(d):d},e.zui({colorset:a}),e.zui.Color&&e.extend(e.zui.Color,a)}(jQuery);
+!function(e){"use strict";var f=0,r=["primary","red","yellow","green","blue","purple","brown","dark"],a={primary:"#3280fc",secondary:"#145ccd",pale:"#ebf2f9",fore:"#353535",back:"#fff",grayDarker:"#222222",grayDark:"#333333",gray:"#808080",grayLight:"#dddddd",grayLighter:"#e5e5e5",grayPale:"#f1f1f1",white:"#fff",black:"#000",red:"#ea644a",yellow:"#f1a325",green:"#38b03f",blue:"#03b8cf",purple:"#8666b8",brown:"#bd7b46",greenPale:"#ddf4df",yellowPale:"#fff0d5",redPale:"#ffe5e0",bluePale:"#ddf3f5",brownPale:"#f7ebe1",purplePale:"#f5eeff",light:"#fff",dark:"#353535",success:"#38b03f",warning:"#f1a325",danger:"#ea644a",info:"#03b8cf",important:"#bd7b46",special:"#8666b8",successPale:"#ddf4df",warningPale:"#fff0d5",dangerPale:"#ffe5e0",infoPale:"#ddf3f5",importantPale:"#f7ebe1",specialPale:"#f5eeff"};a.get=function(l){"undefined"!=typeof l&&"random"!==l||(l=r[f++%r.length]);var d=a[l]?a[l]:l;return e.zui.Color?new e.zui.Color(d):d},e.zui({colorset:a}),e.zui.Color&&e.extend(e.zui.Color,a)}(jQuery);

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 仪表盘 - v1.6.0 - 2017-03-16
+ * ZUI: 仪表盘 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .dashboard {

+ 6 - 4
VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 仪表盘 - v1.6.0 - 2017-03-16
+ * ZUI: 仪表盘 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -468,8 +468,10 @@
         if(options.data) {
             var $row = $('<div class="row"/>');
             $.each(options.data, function(idx, config) {
-                var $col = $('<div class="col-sm-' + (config.colWidth || 4) + '"/>', config.colAttrs);
-                var $panel = $('<div class="panel" data-id="' + (config.id || $.zui.uuid()) + '"/>', config.panelAttrs);
+                var $col = $('<div class="col-sm-' + (config.colWidth || 4) + '"/>');
+                if(config.colAttrs) $col.attr(config.colAttrs);
+                var $panel = $('<div class="panel" data-id="' + (config.id || $.zui.uuid()) + '"/>');
+                if(config.panelAttrs) $panel.attr(config.panelAttrs);
                 if(config.height !== undefined) $panel.data('height', config.height);
                 if(config.content !== undefined) {
                     if($.isFunction(config.content)) {

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.min.css


File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/dashboard/zui.dashboard.min.js


+ 272 - 0
VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.css

@@ -0,0 +1,272 @@
+/*!
+ * ZUI: 数据表格② - v1.8.1 - 2018-01-18
+ * http://zui.sexy
+ * GitHub: https://github.com/easysoft/zui.git 
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
+ */
+
+.datagrid-container {
+  position: relative;
+  overflow: hidden;
+  background-color: #f1f1f1;
+  border: 1px solid #ddd;
+  }
+.datagrid-cells {
+  position: absolute;
+  top: 0;
+  left: 0;
+  overflow: visible;
+  }
+.datagrid-cell {
+  position: absolute;
+  padding: 8px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1);
+       -o-transition: .4s cubic-bezier(.175, .885, .32, 1);
+          transition: .4s cubic-bezier(.175, .885, .32, 1);
+  -webkit-transition-property: background, outline;
+       -o-transition-property: background, outline;
+          transition-property: background, outline;
+  }
+.datagrid-cell.datagrid-cell-index {
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+  color: #808080;
+  text-align: right;
+  background-color: #f1f1f1;
+  }
+.datagrid-cell.datagrid-cell-head {
+  background-color: #f1f1f1;
+  }
+.datagrid-cell-span {
+  z-index: 10;
+  }
+.datagrid-row {
+  position: absolute;
+  width: 100%;
+  background-color: #fff;
+  -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1);
+       -o-transition: .4s cubic-bezier(.175, .885, .32, 1);
+          transition: .4s cubic-bezier(.175, .885, .32, 1);
+  -webkit-transition-property: background, outline;
+       -o-transition-property: background, outline;
+          transition-property: background, outline;
+  }
+.datagrid-row-head {
+  font-weight: bold;
+  color: #808080;
+  background-color: #f1f1f1;
+  }
+.datagrid-fixed.datagrid-row {
+  z-index: 35;
+  }
+.datagrid-fixed.datagrid-cell {
+  z-index: 30;
+  }
+.datagrid-fixed-edge-top {
+  -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .125), 0 1px 0 rgba(0, 0, 0, .25);
+          box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .125), 0 1px 0 rgba(0, 0, 0, .25);
+  }
+.datagrid-fixed-edge-bottom {
+  -webkit-box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, .125), 0 -1px 0 rgba(0, 0, 0, .25);
+          box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, .125), 0 -1px 0 rgba(0, 0, 0, .25);
+  }
+.datagrid-fixed-edge-left {
+  -webkit-box-shadow: -1px 0 0 rgba(0, 0, 0, .25) inset;
+          box-shadow: -1px 0 0 rgba(0, 0, 0, .25) inset;
+  }
+.datagrid-fixed-edge-right {
+  -webkit-box-shadow: 1px 0 0 rgba(0, 0, 0, .25) inset;
+          box-shadow: 1px 0 0 rgba(0, 0, 0, .25) inset;
+  }
+.datagrid-row-cell.active .datagrid-cell {
+  background-color: #fff0d5;
+  }
+.datagrid-row-cell.active .datagrid-cell.datagrid-cell-index {
+  background-color: #ffe7bc;
+  }
+.datagrid-hover-row .datagrid-row-cell:hover {
+  z-index: 20;
+  }
+.datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell {
+  background-color: #ebf2f9;
+  }
+.datagrid-hover-row .datagrid-row-cell:hover.datagrid-fixed {
+  z-index: 38;
+  }
+.datagrid-hover-row .datagrid-row-cell:hover > .datagrid-cell-index {
+  background-color: #ddd;
+  }
+.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell {
+  background-color: #ffe1ac;
+  }
+.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell-index {
+  background-color: #ffda98;
+  }
+.datagrid-hover-row.datagrid-hover-shadow .datagrid-row-cell:hover {
+  -webkit-box-shadow: 0 1px 3px 2px rgba(0, 0, 0, .05), 0 0 2px 1px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 3px 2px rgba(0, 0, 0, .05), 0 0 2px 1px rgba(0, 0, 0, .075);
+  }
+.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell:hover {
+  z-index: 40;
+  background-color: #fff;
+  outline: 1px solid #808080;
+  outline-offset: -1px;
+  }
+.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell.datagrid-fixed:hover,
+.datagrid-hover-cell .datagrid-row-cell.datagrid-fixed .datagrid-cell-cell:hover {
+  z-index: 42;
+  }
+.datagrid-hover-cell.datagrid-hover-shadow .datagrid-row-cell .datagrid-cell:hover {
+  -webkit-box-shadow: 0 1px 3px 3px rgba(0, 0, 0, .075), 0 0 2px rgba(0, 0, 0, .1);
+          box-shadow: 0 1px 3px 3px rgba(0, 0, 0, .075), 0 0 2px rgba(0, 0, 0, .1);
+  }
+.datagrid-hover-col .datagrid-cell.hover {
+  background-color: #ebf2f9;
+  }
+.datagrid-hover-col .datagrid-cell-head.hover,
+.datagrid-hover-col .datagrid-cell-index.hover {
+  background-color: #ddd;
+  }
+.datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover {
+  background-color: #d7e5f3;
+  }
+.datagrid-scrollbar {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  z-index: 50;
+  opacity: 0;
+  -webkit-transition: 2.5s cubic-bezier(.175, .885, .32, 1);
+       -o-transition: 2.5s cubic-bezier(.175, .885, .32, 1);
+          transition: 2.5s cubic-bezier(.175, .885, .32, 1);
+  -webkit-transition-property: background, opacity;
+       -o-transition-property: background, opacity;
+          transition-property: background, opacity;
+  }
+.datagrid-scrollbar.scrolling,
+.datagrid-container:hover .datagrid-scrollbar {
+  opacity: 1;
+  }
+.datagrid-scrollbar > .bar {
+  position: absolute;
+  min-width: 10px;
+  background-color: #ddd;
+  background-color: rgba(0, 0, 0, .25);
+  }
+.datagrid-scrollbar.scrolling,
+.datagrid-scrollbar:hover {
+  background-color: rgba(0, 0, 0, .075);
+  }
+.datagrid-scrollbar.scrolling > .bar,
+.datagrid-scrollbar:hover > .bar {
+  position: absolute;
+  background-color: #808080;
+  background-color: rgba(0, 0, 0, .5);
+  }
+.datagrid-scrollbar-h {
+  left: 0;
+  height: 10px;
+  }
+.datagrid-scrollbar-h > .bar {
+  top: 0!important;
+  bottom: 0!important;
+  min-width: 20px;
+  }
+.datagrid-scrollbar-v {
+  top: 0;
+  width: 10px;
+  }
+.datagrid-scrollbar-v > .bar {
+  right: 0!important;
+  left: 0!important;
+  min-height: 20px;
+  }
+.datagrid-messager {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 60;
+  padding: 5px 10px;
+  text-align: center;
+  }
+.datagrid-messager > .close {
+  position: absolute;
+  top: 0;
+  right: 0;
+  display: block;
+  width: 30px;
+  height: 30px;
+  padding-bottom: 5px;
+  line-height: 20px;
+  text-align: center;
+  }
+.datagrid-messager > .close:hover {
+  background-color: rgba(0, 0, 0, .1);
+  }
+.datagrid-loading {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 61;
+  background-color: rgba(255, 255, 255, .6);
+  }
+.datagrid-loading > .content {
+  position: relative;
+  top: 50%;
+  display: block;
+  height: 50px;
+  margin-top: -25px;
+  text-align: center;
+  }
+.datagrid-loading > .content > .icon {
+  color: #3280fc;
+  }
+.datagrid-col-sortable {
+  padding-right: 20px;
+  cursor: pointer;
+  }
+.datagrid-sorter {
+  position: absolute;
+  top: 3px;
+  right: 0;
+  bottom: 0;
+  width: 20px;
+  line-height: 30px;
+  text-align: center;
+  }
+.datagrid-sort-down > .icon-sort:before {
+  color: #3280fc;
+  content: '\e6b8';
+  }
+.datagrid-sort-up > .icon-sort:before {
+  color: #3280fc;
+  content: '\e6b9';
+  }
+.datagrid-borderless .datagrid-container {
+  border-color: transparent;
+  }
+.datagrid-borderless .datagrid-cell {
+  border-right-color: transparent;
+  border-left-color: transparent;
+  }
+.datagrid-borderless .datagrid-fixed-edge-left {
+  -webkit-box-shadow: -1px 0 0 rgba(0, 0, 0, .1) inset;
+          box-shadow: -1px 0 0 rgba(0, 0, 0, .1) inset;
+  }
+.datagrid-borderless .datagrid-fixed-edge-right {
+  -webkit-box-shadow: 1px 0 0 rgba(0, 0, 0, .1) inset;
+          box-shadow: 1px 0 0 rgba(0, 0, 0, .1) inset;
+  }
+.datagrid-borderless .datagrid-row-cell:not(:hover) .datagrid-cell.datagrid-cell-index {
+  background-color: #fff;
+  }
+.datagrid-striped .datagrid-cells > .datagrid-row-cell:nth-child(odd) .datagrid-cell-cell {
+  background-color: #f9f9f9;
+  }

+ 1825 - 0
VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.js

@@ -0,0 +1,1825 @@
+/*!
+ * ZUI: 数据表格② - v1.8.1 - 2018-01-18
+ * http://zui.sexy
+ * GitHub: https://github.com/easysoft/zui.git 
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
+ */
+
+/*!
+ * jQuery Mousewheel 3.1.13
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ */
+
+(function (factory) {
+    if ( typeof define === 'function' && define.amd ) {
+        // AMD. Register as an anonymous module.
+        define(['jquery'], factory);
+    } else if (typeof exports === 'object') {
+        // Node/CommonJS style for Browserify
+        module.exports = factory;
+    } else {
+        // Browser globals
+        factory(jQuery);
+    }
+}(function ($) {
+
+    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
+        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
+                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
+        slice  = Array.prototype.slice,
+        nullLowestDeltaTimeout, lowestDelta;
+
+    if ( $.event.fixHooks ) {
+        for ( var i = toFix.length; i; ) {
+            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
+        }
+    }
+
+    var special = $.event.special.mousewheel = {
+        version: '3.1.12',
+
+        setup: function() {
+            if ( this.addEventListener ) {
+                for ( var i = toBind.length; i; ) {
+                    this.addEventListener( toBind[--i], handler, false );
+                }
+            } else {
+                this.onmousewheel = handler;
+            }
+            // Store the line height and page height for this particular element
+            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
+            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
+        },
+
+        teardown: function() {
+            if ( this.removeEventListener ) {
+                for ( var i = toBind.length; i; ) {
+                    this.removeEventListener( toBind[--i], handler, false );
+                }
+            } else {
+                this.onmousewheel = null;
+            }
+            // Clean up the data we added to the element
+            $.removeData(this, 'mousewheel-line-height');
+            $.removeData(this, 'mousewheel-page-height');
+        },
+
+        getLineHeight: function(elem) {
+            var $elem = $(elem),
+                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
+            if (!$parent.length) {
+                $parent = $('body');
+            }
+            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
+        },
+
+        getPageHeight: function(elem) {
+            return $(elem).height();
+        },
+
+        settings: {
+            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
+            normalizeOffset: true  // calls getBoundingClientRect for each event
+        }
+    };
+
+    $.fn.extend({
+        mousewheel: function(fn) {
+            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
+        },
+
+        unmousewheel: function(fn) {
+            return this.unbind('mousewheel', fn);
+        }
+    });
+
+
+    function handler(event) {
+        var orgEvent   = event || window.event,
+            args       = slice.call(arguments, 1),
+            delta      = 0,
+            deltaX     = 0,
+            deltaY     = 0,
+            absDelta   = 0,
+            offsetX    = 0,
+            offsetY    = 0;
+        event = $.event.fix(orgEvent);
+        event.type = 'mousewheel';
+
+        // Old school scrollwheel delta
+        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
+        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
+        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
+        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
+
+        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
+        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
+            deltaX = deltaY * -1;
+            deltaY = 0;
+        }
+
+        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
+        delta = deltaY === 0 ? deltaX : deltaY;
+
+        // New school wheel delta (wheel event)
+        if ( 'deltaY' in orgEvent ) {
+            deltaY = orgEvent.deltaY * -1;
+            delta  = deltaY;
+        }
+        if ( 'deltaX' in orgEvent ) {
+            deltaX = orgEvent.deltaX;
+            if ( deltaY === 0 ) { delta  = deltaX * -1; }
+        }
+
+        // No change actually happened, no reason to go any further
+        if ( deltaY === 0 && deltaX === 0 ) { return; }
+
+        // Need to convert lines and pages to pixels if we aren't already in pixels
+        // There are three delta modes:
+        //   * deltaMode 0 is by pixels, nothing to do
+        //   * deltaMode 1 is by lines
+        //   * deltaMode 2 is by pages
+        if ( orgEvent.deltaMode === 1 ) {
+            var lineHeight = $.data(this, 'mousewheel-line-height');
+            delta  *= lineHeight;
+            deltaY *= lineHeight;
+            deltaX *= lineHeight;
+        } else if ( orgEvent.deltaMode === 2 ) {
+            var pageHeight = $.data(this, 'mousewheel-page-height');
+            delta  *= pageHeight;
+            deltaY *= pageHeight;
+            deltaX *= pageHeight;
+        }
+
+        // Store lowest absolute delta to normalize the delta values
+        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
+
+        if ( !lowestDelta || absDelta < lowestDelta ) {
+            lowestDelta = absDelta;
+
+            // Adjust older deltas if necessary
+            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
+                lowestDelta /= 40;
+            }
+        }
+
+        // Adjust older deltas if necessary
+        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
+            // Divide all the things by 40!
+            delta  /= 40;
+            deltaX /= 40;
+            deltaY /= 40;
+        }
+
+        // Get a whole, normalized value for the deltas
+        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
+        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
+        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
+
+        // Normalise offsetX and offsetY properties
+        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
+            var boundingRect = this.getBoundingClientRect();
+            offsetX = event.clientX - boundingRect.left;
+            offsetY = event.clientY - boundingRect.top;
+        }
+
+        // Add information to the event object
+        event.deltaX = deltaX;
+        event.deltaY = deltaY;
+        event.deltaFactor = lowestDelta;
+        event.offsetX = offsetX;
+        event.offsetY = offsetY;
+        // Go ahead and set deltaMode to 0 since we converted to pixels
+        // Although this is a little odd since we overwrite the deltaX/Y
+        // properties with normalized deltas.
+        event.deltaMode = 0;
+
+        // Add event and delta to the front of the arguments
+        args.unshift(event, delta, deltaX, deltaY);
+
+        // Clearout lowestDelta after sometime to better
+        // handle multiple device types that give different
+        // a different lowestDelta
+        // Ex: trackpad = 3 and mouse wheel = 120
+        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
+        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
+
+        return ($.event.dispatch || $.event.handle).apply(this, args);
+    }
+
+    function nullLowestDelta() {
+        lowestDelta = null;
+    }
+
+    function shouldAdjustOldDeltas(orgEvent, absDelta) {
+        // If this is an older event and the delta is divisable by 120,
+        // then we are assuming that the browser is treating this as an
+        // older mouse wheel event and that we should divide the deltas
+        // by 40 to try and get a more usable deltaFactor.
+        // Side note, this actually impacts the reported scroll distance
+        // in older browsers and can cause scrolling to be slower than native.
+        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
+        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
+    }
+
+}));
+
+/* ========================================================================
+ * ZUI: datagrid.js
+ * http://zui.sexy
+ * ========================================================================
+ * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT
+ * ======================================================================== */
+
+
+(function($, undefined) {
+    'use strict';
+
+    var loadDataSourceFromTable = function ($table) {
+        var cols = [];
+        $table.find('thead>tr:first>th').each(function(idx) {
+            var $th = $(this);
+            cols.push($.extend({
+                name: idx,
+                label: $th.html(),
+                html: true,
+                width: $th.outerWidth()
+            }, $th.data()));
+            if ($th.attr('colspan') && $th.attr('colspan') !== '1') {
+                throw new Erorr('Table th element with colspan attribute is not support.');
+            }
+        });
+        var data = [];
+        $table.find('tbody>tr').each(function() {
+            var $tr = $(this);
+            var item = {};
+            $tr.children('td').each(function(idx) {
+                item[idx] = $(this).html();
+            });
+            data.push($.extend(item, $tr.data()));
+        });
+        return {
+            cols: cols,
+            array: data,
+            length: data.length
+        };
+    };
+
+    // Define the datagrid model name
+    var NAME = 'zui.datagrid';
+
+    var DEFAULT_VALUE_OPERATOR = {
+        date: {
+            getter: function(dataValue, cell, dataGrid) {
+                var formater = dataGrid.options.defaultDateFormater;
+                return Date.create(dataValue).format(formater);
+            },
+            setter: function(inputValue, cell, dataGrid) {
+                if (typeof inputValue === 'string') {
+                    var intValue = parseInt(inputValue, 10);
+                    if (!isNaN(intValue)) {
+                        inputValue = intValue;
+                    }
+                }
+                return Date.timestamp(inputValue);
+            },
+            // sort: function(val1, val2) {
+            // }
+        }
+    };
+
+    var DEFAULT_CONFIGS = {
+    };
+
+    var DEFAULT_PAGER = {
+        page: 0,        // current page index
+        recTotal: 0,    // records total count
+        recPerPage: 10, // records count per page
+    };
+
+    var DEFAULT_STATES = {
+        // Fixed columns and rows config
+        fixedLeftUntil: 0,
+        // fixedRightFrom: 5,
+        fixedTopUntil: 0,
+        // fixedBottomFrom: 5,
+
+        order: 'asc', // desc
+
+        sortBy: null,
+
+        pager: DEFAULT_PAGER,
+
+        selections: {}
+    };
+
+    var DEFAULT_SEARCH_FUNC = function(item, searchKeyArr) {
+        var score = 0;
+        var searchKeyLength = searchKeyArr.length;
+        var matchKeysCount = 0, matchKeys = {};
+        $.each(item, function(key, value) {
+            var valueType = typeof value;
+            if (valueType === 'number' || valueType === 'number') {
+                value += '';
+            } else if (valueType !== 'string') {
+                value = JSON.stringify(valueType);
+            }
+            var keyScore = 0;
+            for(var i = 0; i < searchKeyLength; ++i) {
+                var search = searchKeyArr[i];
+                if (value.includes(search)) {
+                    if (value.startsWith(search)) {
+                        keyScore = 10;
+                    } else {
+                        keyScore = 20;
+                    }
+                    if (!matchKeys[search]) {
+                        matchKeys[search] = 1;
+                        matchKeysCount++;
+                    }
+                }
+            }
+            score += keyScore;
+        });
+        score = matchKeysCount === searchKeyLength ? score : 0;
+        return score;
+    };
+
+    var DEFAULT_SORT_FUNC = function(val1, val2) {
+        if (val1 == val2) {
+            return 0;
+        } else if (val1 < val2) {
+            return -1;
+        }
+        return 1;
+    };
+
+    var LANG = {
+        zh_cn: {
+            'errorCannotGetDataFromRemote': '无法从远程服务器({0})获取数据。',
+            'errorCannotHandleRemoteData': '无法处理远程服务器返回的数据。'
+        },
+        zh_tw: {
+            'errorCannotGetDataFromRemote': '無法從遠程服務器({0})獲取數據。',
+            'errorCannotHandleRemoteData': '無法處理遠程服務器返回的數據。'
+        },
+        en: {
+            'errorCannotGetDataFromRemote': 'Cannot fetch data from remote server {0}.',
+            'errorCannotHandleRemoteData': 'Cannot handle the remote data.'
+        }
+    };
+
+    // The datagrid modal class
+    var DataGrid = function(element, options) {
+        var that       = this;
+        var $element   = that.$ = $(element);
+        that.name      = NAME;
+        that.uuid      = $.zui.uuid();
+        that.id        = 'zui-datagrid-' + that.uuid;
+        options        = $.extend({}, DataGrid.DEFAULTS, that.$.data(), options);
+
+        var lang   = options.lang || 'zh_cn';
+        that.lang  = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang];
+
+        options.valueOperator    = $.extend({}, DEFAULT_VALUE_OPERATOR, options.valueOperator);
+        options.rowDefaultHeight = options.rowDefaultHeight || 30;
+        options.headerHeight     = options.headerHeight || options.rowDefaultHeight || 30;
+        that.options             = options;
+        if (typeof options.borderWidth !== 'number') {
+            options.borderWidth = 1;
+        }
+
+        // Initialize
+        if ($element.is('table')) {
+            options.dataSource = $.extend(loadDataSourceFromTable(that.$), options.dataSource);
+            $element.hide();
+            $element = $('<div class="datagrid" id="datagrid-' + that.uuid + '" />').insertAfter(that.$);
+        }
+
+        var $container = $element.find('.datagrid-container:first');
+        if (!$container.length) {
+            $container = $('<div class="datagrid-container" />').appendTo($element);
+        }
+        $container.css({
+            width:       options.width,
+            borderWidth: options.borderWidth
+        });
+        var $document = $(document);
+        var createScrollbar = function(direction) {
+            var $scrollbar = $container.find('.datagrid-scrollbar-' + direction);
+            if (!$scrollbar.length) {
+                $scrollbar = $('<div class="datagrid-scrollbar datagrid-scrollbar-' + direction + '"><div class="bar"></div></div>').appendTo($container);
+            }
+            var isMouseDown = false;
+            var lastPos = null;
+            var eventSuffix = '.scrollbar' + direction + '.' + NAME + '.' + that.uuid;
+            var startPagePos, startPageOffset, isClickBar, startScrollOffset;
+            var handleMousePosition = function(e) {
+                if (!isMouseDown) return;
+                var pos = e[direction === 'h' ? 'pageX' : 'pageY'];
+                if (lastPos === pos) {
+                    return;
+                }
+                lastPos = pos;
+                pos = (pos - startPagePos) + startPageOffset;
+                var scroll = that.layout[direction + 'Scroll'];
+                var offset;
+                if (isClickBar) {
+                    offset = (lastPos - startPagePos) + startScrollOffset;
+                } else {
+                    offset = Math.max(0, Math.min(scroll.space, pos - Math.round(scroll.barSize/2)));
+                }
+                if (direction === 'h') {
+                    that.setScrollbarOffset(offset);
+                } else {
+                    that.setScrollbarOffset(null, offset);
+                }
+            };
+            $scrollbar.on('mousedown', function(e) {
+                e.preventDefault();
+                isMouseDown = true;
+                var scroll = that.layout[direction + 'Scroll'];
+                var degree = direction === 'h' ? 'X' : 'Y';
+                startPageOffset = e['offset' + degree];
+                startPagePos = e['page' + degree];
+                isClickBar = $(e.target).is('.bar');
+                startScrollOffset = scroll.offset;
+                if (isClickBar) {
+                    startPageOffset += startScrollOffset;
+                }
+                handleMousePosition(e);
+                $scrollbar.addClass('scrolling');
+                $document.on('mouseup' + eventSuffix, function(e) {
+                    isMouseDown = false;
+                    handleMousePosition(e);
+                    $document.off(eventSuffix);
+                    $scrollbar.removeClass('scrolling');
+                }).on('mousemove' + eventSuffix, handleMousePosition);
+            });
+            that['$' + direction + 'Scroll'] = $scrollbar;
+            that['$' + direction + 'Scrollbar'] = $scrollbar.find('.bar');
+        };
+        createScrollbar('h');
+        createScrollbar('v');
+        var mouseWheelFactor = options.mouseWheelFactor;
+        var isWindows = window.navigator.userAgent.match(/Win/i);
+        if (isWindows) mouseWheelFactor *= 20;
+        $container.on('mousewheel', function(event) {
+            that.scroll(that.layout.scrollLeft - Math.round(event.deltaX * mouseWheelFactor), that.layout.scrollTop - Math.round(event.deltaY * mouseWheelFactor));
+            event.preventDefault();
+        });
+
+        that.$container = $container;
+
+        var $cells = $element.find('.datagrid-cells:first');
+        if (!$cells.length) {
+            $cells = $('<div class="datagrid-cells" />').appendTo($container);
+        }
+        $cells.toggleClass('datagrid-hover-cell', !!options.hoverCell)
+              .toggleClass('datagrid-hover-row', !!options.hoverRow)
+              .toggleClass('datagrid-hover-col', !!options.hoverCol)
+              .toggleClass('datagrid-hover-shadow', !!options.hoverCol);
+        that.$cells = $cells;
+
+        // configs is an object
+        that.isFuncConfigs = $.isFunction(options.configs);
+        that.configs = that.isFuncConfigs ? options.configs : $.extend({}, DEFAULT_CONFIGS, options.configs);
+
+        that.layout       = {scrollLeft: 0, scrollTop: 0};
+        that.configsCache = {};
+        that.userConfigs  = {};
+
+        // states is 2D arrays
+        that.states    = $.extend(true, {}, DEFAULT_STATES, options.states);
+        that.cells     = [];
+        that.setPager(that.states.pager);
+
+        that.setDataSource(options.dataSource);
+
+        that.render(true);
+
+        if (options.responsive) {
+            var lastContainerWidth = $container.width();
+            $container.on('resize', function() {
+                that.layout.cols = null;
+                that.render();
+            });
+        }
+
+        if (options.hoverCol) {
+            $cells.on('mouseenter', '.datagrid-cell-head', function() {
+                var $headCol = $(this);
+                var colIndex = $headCol.data('col');
+                that.$cells.find('.datagrid-cell.hover').removeClass('hover');
+                that.$cells.find('.datagrid-cell[data-col="' + colIndex + '"]').addClass('hover');
+            }).on('mouseleave', '.datagrid-cell-head.hover', function() {
+                that.$cells.find('.datagrid-cell.hover').removeClass('hover');
+            });
+        }
+
+        if (options.sortable) {
+            $cells.on('click', '.datagrid-col-sortable', function() {
+                var colIndex = $(this).data('col');
+                var col = that.getColConfig(colIndex);
+                var sortBy = that.states.sortBy;
+                var order = that.states.order;
+                if (sortBy !== col.name) {
+                    sortBy = col.name;
+                    order = 'desc';
+                } else if (order === 'desc') {
+                    order = 'asc';
+                } else if (order === 'asc') {
+                    sortBy = '';
+                }
+                that.sortBy(sortBy, order);
+            });
+        }
+
+        if (options.checkable) {
+            if (options.selectable && $.fn.selectable) {
+                that.selectable = $cells.selectable($.extend({
+                    selector: '.datagrid-row-cell',
+                    // selectClass: false,
+                    trigger: options.checkByClickRow ? null : '.datagrid-row-cell .datagrid-has-checkbox',
+                    clickBehavior: 'multi',
+                    select: function(data) {
+                        that.checkRow(data.id, true);
+                    },
+                    unselect: function(data) {
+                        that.checkRow(data.id, false);
+                    }
+                }, $.isPlainObject(options.selectable) ? options.selectable : null)).data('zui.selectable');
+                $cells.on('click', '.datagrid-cell-head.datagrid-has-checkbox', function() {
+                    that.checkRow($(this).data('row'));
+                    that.selectable.syncSelectionsFromClass();
+                });
+            } else {
+                $cells.on('click', options.checkByClickRow ? '.datagrid-row' : '.datagrid-has-checkbox', function(e) {
+                    var rowIndex = $(this).data('row');
+                    if (rowIndex || $(e.target).closest('.datagrid-has-checkbox').length) {
+                        that.checkRow(rowIndex);
+                    }
+                });
+            }
+        }
+
+        // Init pager
+        if ($.fn.pager) {
+            var $pager = that.$.find('.pager');
+            if ($pager.length) {
+                that.pagerObj = $pager.pager($.extend({}, that.pager, {
+                    onPageChange: function(pageInfo) {
+                        that.setPager(pageInfo).render();
+                    }
+                })).data('zui.pager');
+            }
+        }
+
+        // Init searchbox
+        if ($.fn.searchBox) {
+            var $searchBox = that.$.find('.search-box');
+            if($searchBox)  {
+                that.searchbox = $searchBox.searchBox({
+                    onSearchChange: function (searchString) {
+                        that.search(searchString);
+                    }
+                });
+            }
+        }
+    };
+
+    DataGrid.prototype.setPager = function(page, recTotal, recPerPage) {
+        var that = this;
+        if (typeof page === 'object') {
+            recPerPage = page.recPerPage;
+            recTotal = page.recTotal;
+            page = page.page;
+        }
+        var pager = that.pager;
+        var oldPager = $.extend({}, pager);
+        if (!pager) {
+            pager = $.extend({}, DEFAULT_PAGER);
+        }
+        if (typeof recPerPage === 'number' && recPerPage > 0) {
+            pager.recPerPage = recPerPage;
+        }
+        if (typeof recTotal === 'number' && recTotal >= 0) {
+            pager.recTotal = recTotal;
+        }
+        if (typeof page === 'number' && page >= 0) {
+            pager.page = page;
+        }
+        pager.totalPage = (pager.recTotal && pager.recPerPage) ? (Math.ceil(pager.recTotal / pager.recPerPage)) : 1;
+        pager.page = Math.max(0, Math.min(pager.page, pager.totalPage));
+        // pagerRecCount is items count in current page
+        pager.pageRecCount = pager.recTotal;
+        if (pager.page && pager.recTotal) {
+            if (pager.page < pager.totalPage) {
+                pager.pageRecCount = pager.recPerPage;
+            } else if (pager.page > 1) {
+                pager.pageRecCount = pager.recTotal - (pager.recPerPage * (pager.page - 1));
+            }
+        }
+        pager.skip = pager.page > 1 ? ((pager.page - 1) * pager.recPerPage) : 0;
+        pager.end = pager.skip + pager.pageRecCount;
+        that.pager = pager;
+
+        if (oldPager.page !== pager.page || oldPager.recTotal !== pager.recTotal || oldPager.recPerPage !== pager.recPerPage) {
+            that.layout.cols = null;
+            that.scroll(0, 0);
+        }
+        return that;
+    };
+
+    DataGrid.prototype.goToPage = function(page) {
+        return this.setPager(page).render();
+    };
+
+    DataGrid.prototype.setSearch = function(searchStr) {
+        if (searchStr === undefined || searchStr === null) {
+            searchStr = '';
+        }
+        this.states.search = $.trim(searchStr);
+        return this;
+    };
+
+    DataGrid.prototype.search = function(searchStr) {
+        var that = this;
+        if (searchStr !== that.states.search && that.pager.page) {
+            that.setPager(1);
+        }
+        return that.setSearch(searchStr).render();
+    };
+
+    DataGrid.prototype.setSorter = function(sortBy, order) {
+        var that = this;
+        if (order === undefined) {
+            order = that.states.order === 'desc' ? 'asc' : 'desc';
+        }
+        that.states.order = order.toLowerCase();
+        that.states.sortBy = sortBy;
+        return that;
+    };
+
+    DataGrid.prototype.sortBy = function(sortBy, order) {
+        return this.setSorter(sortBy, order).render();
+    };
+
+    DataGrid.prototype.setDataSource = function(data, cols) {
+        var that = this;
+        var dataSource = {};
+        var oldcols = that.dataSource && that.dataSource.cols;
+        if ($.isArray(data)) {
+            dataSource.array = data;
+            dataSource.length = data.length;
+            that.setPager('', data.length);
+        } else  if ($.isPlainObject(data)) {
+            dataSource = $.extend(dataSource, data);
+        } else if (typeof data === 'string') {
+            dataSource.remote = data;
+        }
+        if (dataSource.cache === true || dataSource.cache === undefined) {
+            dataSource.cache = [];
+            dataSource.cacheSize = 1;
+        } else if (typeof dataSource.cache === 'number') {
+            dataSource.cacheSize = dataSource.cache;
+            dataSource.cache = [];
+        }
+        if ($.isArray(dataSource.data)) {
+            dataSource.array = dataSource.data;
+            dataSource.length = dataSource.array.length;
+            that.setPager('', dataSource.length);
+            delete dataSource.data;
+        } else if (!dataSource.data && $.isFunction(dataSource.getByIndex)) {
+            that.setPager('', dataSource.length);
+        }
+        that.dataSource = dataSource;
+
+        cols = cols || dataSource.cols || oldcols || [];
+        if (cols.length) {
+            for (var i = 0; i < cols.length; ++i) {
+                var col = cols[i];
+                if (typeof col === 'string') {
+                    cols[i] = {name: col};
+                }
+            }
+        }
+        if (cols !== oldcols) {
+            that.layout.cols = null;
+        }
+        dataSource.cols = cols;
+    };
+
+    DataGrid.prototype.filterData = function(arr, filter) {
+        var that = this;
+        var result = arr;
+        var hasSearchScore = null;
+        if (filter.search) {
+            var searchKeyArr = filter.search.replace(/\s{2,}/g, ' ').split(' ');
+            result = [];
+            var searchFunc = that.options.searchFunc || DEFAULT_SEARCH_FUNC;
+            for (var i = 0; i < arr.length; ++i) {
+                var item = arr[i];
+                var score = searchFunc(item, searchKeyArr, i, filter, that);
+                if (score) {
+                    if (hasSearchScore === null) {
+                        hasSearchScore = typeof score === 'number';
+                    }
+                    if (hasSearchScore) {
+                        item._SCORE = score;
+                    }
+                    result.push(item);
+                }
+            }
+        }
+
+        that.setPager(-1, result.length);
+
+        if (result.length) {
+            var sortBy = filter.sortBy || (hasSearchScore ? '_SCORE' : false);
+            if (sortBy) {
+                var order = sortBy === '_SCORE' ? 'DESC' : filter.order;
+                var colConfig = that.getColConfigByName(sortBy);
+                var isDESC = order === 'desc';
+                var sortFunc = (colConfig && colConfig.sortFunc) || that.options.sortFunc || DEFAULT_SORT_FUNC;
+                result.sort(function(item1, item2) {
+                    var sortResult = sortFunc(item1[sortBy], item2[sortBy], item1, item2, sortBy, that);
+                    return isDESC ? ((-1) * sortResult) : sortResult;
+                });
+            }
+
+            var pager = that.pager;
+            if (pager.page) {
+                var start = pager.page > 1 ? (pager.page * pager.recPerPage) : 0;
+                result = result.slice(pager.skip, pager.end);
+            }
+        }
+
+        return result;
+    };
+
+    DataGrid.prototype.getFilterParams = function() {
+        var that = this;
+        var states = that.states;
+        return {
+            page:       that.pager.page,
+            recPerPage: that.pager.recPerPage,
+            search:     states.search,
+            sortBy:     states.sortBy,
+            order:      states.order
+        };
+    };
+
+    DataGrid.prototype.loadData = function(callback) {
+        var that = this;
+        that.loadingId = $.zui.uuid();
+
+        var afterLoad = function(result) {
+            that.$.callComEvent(that, 'onLoad', result);
+            return callback && callback(result);
+        };
+
+        var params = that.getFilterParams();
+        var dataId = [params.page, params.recPerPage, params.search, params.sortBy, params.order].join('&');
+        var data = that.getData(dataId);
+
+        if (data) {
+            return afterLoad(data);
+        }
+        var dataSource = that.dataSource;
+        if (dataSource.array) {
+            data = that.filterData(dataSource.array, params);
+            that.resetData(dataId, data, that.pager);
+            return afterLoad(data);
+        } else if (dataSource.getByIndex) {
+            data = dataSource.getByIndex;
+            that.resetData(dataId, data);
+            return afterLoad(data);
+        } else {
+            var loadData = dataSource.loader;
+            var remote = dataSource.remote;
+            if (!loadData && remote) {
+                loadData = function(params, onFinish) {
+                    var ajaxOptions = $.isFunction(remote) ? remote(params, that) : {url: remote};
+                    $.ajax($.extend({
+                        type: 'GET',
+                        data: params,
+                        dataType: 'json',
+                        success: function(responseData, textStatus, jqXHR) {
+                            if (dataSource.remoteConverter) {
+                                responseData = dataSource.remoteConverter(responseData, textStatus, jqXHR, that);
+                            }
+                            if (typeof responseData === 'string') {
+                                responseData = $.parseJSON(responseData);
+                            }
+                            if ($.isPlainObject(responseData) && responseData.data) {
+                                var result = responseData.result || responseData.status;
+                                if (result === 'success' || result === 'ok' || result === 200) {
+                                    onFinish(responseData);
+                                } else {
+                                    onFinish(false, responseData.message || responseData.reason || that.lang['errorCannotHandleRemoteData'], responseData);
+                                }
+                            } else {
+                                onFinish(false, that.lang['errorCannotHandleRemoteData'], responseData);
+                            }
+                        },
+                        error: function() {
+                            onFinish(false, that.lang['errorCannotGetDataFromRemote'].format(dataSource.remote));
+                        },
+                    }, ajaxOptions));
+                };
+            }
+            if (loadData) {
+                that.renderLoading(true);
+                var loadingId = that.loadingId;
+                loadData(params, function(resultData, error) {
+                    if (loadingId !== that.loadingId) {
+                        return;
+                    }
+                    that.renderLoading(false);
+                    if (error) {
+                        that.showMessage(error, 'danger');
+                        afterLoad(false);
+                        return;
+                    }
+                    that.resetData(dataId, resultData.data, resultData.pager);
+                    afterLoad(resultData.data);
+                });
+            } else {
+                return afterLoad(false);
+            }
+        }
+    };
+
+    DataGrid.prototype.getDataItem = function(index, data, filterParams) {
+        var that = this;
+        data = data || that.getData();
+        if (typeof data === 'function') {
+            filterParams = filterParams || that.getFilterParams();
+            return data(index, filterParams);
+        }
+        return data[index];
+    };
+
+    DataGrid.prototype.showMessage = function(message, type, autoCloseTime) {
+        var that = this;
+        if (that.msgerAutoCloseTimer) {
+            clearTimeout(that.msgerAutoCloseTimer);
+            that.msgerAutoCloseTimer = null;
+        }
+        var $messager = that.$container.find('.datagrid-messager');
+        if (!message) {
+            $messager.slideUp();
+            return;
+        }
+        type = type || 'info';
+        if (autoCloseTime === undefined) {
+            autoCloseTime = 5000;
+        }
+        if (!$messager.length) {
+            $messager = $('<div class="datagrid-messager" style="display: none"><div class="content"></div><button type="button" class="close">×</button></div>').appendTo(that.$container).on('click', '.close', function() {
+                $messager.slideUp();
+                if (that.msgerAutoCloseTimer) {
+                    clearTimeout(that.msgerAutoCloseTimer);
+                    that.msgerAutoCloseTimer = null;
+                }
+            });
+        }
+        $messager.attr('class', 'datagrid-messager bg-' + type).find('.content').text(message);
+        $messager.slideDown();
+        if (autoCloseTime) {
+            that.msgerAutoCloseTimer = setTimeout(function() {
+                $messager.slideUp();
+                that.msgerAutoCloseTimer = null;
+            }, autoCloseTime);
+        }
+    };
+
+    DataGrid.prototype.renderLoading = function(loading) {
+        var that = this;
+        if (loading !== undefined) {
+            that.states.loading = loading;
+        }
+        var $loading = that.$container.find('.datagrid-loading');
+        if (loading) {
+            if (!$loading.length) {
+                $loading = $('<div class="datagrid-loading" style="display: none"><div class="content"><i class="icon icon-spin icon-spinner icon-2x"></i><div className="datagrid-loading-message"></div></div></div>').appendTo(that.$container);
+            }
+            $loading.find('.datagrid-loading-message').text((typeof loading === 'string') ? loading : '');
+            $loading.fadeIn();
+        } else {
+            $loading.fadeOut();
+        }
+    };
+
+    DataGrid.prototype.getData = function(dataId) {
+        var dataSource = this.dataSource;
+        var data = null;
+        if (dataId && dataId !== dataSource.dataId) {
+            if (dataSource.cache && dataSource.cache.length) {
+                for (var i = dataSource.cache.length - 1; i >= 0; --i) {
+                    var dataCache = dataSource.cache[i];
+                    if (dataCache.id === dataId) {
+                        dataSource.dataId = dataId;
+                        dataSource.data = dataCache.data;
+                        this.setPager(dataCache.pager);
+                        data = dataCache.data;
+                        break;
+                    }
+                }
+            }
+        } else {
+            data = dataSource.data;
+        }
+        return data;
+    };
+
+    DataGrid.prototype.resetData = function(dataId, data, pager) {
+        var dataSource = this.dataSource;
+        dataSource.dataId = dataId;
+        dataSource.data = data;
+        if (dataSource.cache) {
+            for (var i = dataSource.cache.length - 1; i > 0; --i) {
+                var dataCache = dataSource.cache[i];
+                if (dataCache.id === dataId) {
+                    dataSource.cache.splice(i, 1);
+                    break;
+                }
+            }
+            dataSource.cache.push({
+                id: dataId,
+                data: data,
+                pager: $.extend({}, pager)
+            });
+            while (dataSource.cache.length > dataSource.cacheSize) {
+                dataSource.cache.shift();
+            }
+        }
+        if (pager) {
+            this.setPager(pager);
+        }
+    };
+
+    DataGrid.prototype.getRowLayout = function(rowIndex) {
+        var layout = this.layout;
+        if (rowIndex === 0) {
+            return {
+                top: 0,
+                height: layout.headerHeight
+            };
+        }
+        var rowHeight =  layout.rowHeight;
+        return {
+            height: rowHeight,
+            top: layout.headerHeight + (rowIndex > 1 ? ((rowIndex - 1) * rowHeight) : 0) + rowIndex * layout.borderWidth
+        };
+    };
+
+    DataGrid.prototype.updateLayout = function() {
+        var that            = this;
+        var options         = that.options;
+        var layout          = that.layout;
+        var data            = that.data;
+        var pager           = that.pager;
+        var dataLength      = pager.pageRecCount;
+        var $container      = that.$container;
+        var containerWidth  = $container.width();
+        var dataSource      = that.dataSource;
+
+        if (!dataSource.cols.length && dataLength) {
+            $.each(that.getDataItem(0), function(name) {
+                dataSource.cols.push({
+                    name: name
+                });
+            });
+        }
+
+        // Caculate cols layout
+        if (!layout.cols) {
+            var cols                = dataSource.cols;
+            var colAutoMinWidth     = options.colAutoMinWidth;
+            var colAutoDefaultWidth = options.colAutoDefaultWidth;
+            var growTotal           = 0;
+            var minGrowWidth        = 0;
+            var rowIndexWidth       = options.rowIndexWidth;
+            var colsLayout          = [{
+                left: 0,
+                width: options.showRowIndex ? (rowIndexWidth === 'auto' ? ((dataLength + that.pager.skip + '').length * 8 + 18) : rowIndexWidth) : 0
+            }];
+            var cellsTotalWidth     = 0;
+            var fixedWidth          = colsLayout[0].width;
+            var lastGrowColIndex    = false;
+            var lastMaxGrow         = 0;
+            var checkBoxColIndex    = 0;
+            var colLayout, colWidth;
+
+            for (var i = 0; i < cols.length; ++i) {
+                var col = cols[i];
+                if (!col) continue;
+                colWidth = col.width;
+                if (!colWidth || colWidth === 'auto') {
+                    colWidth = 0.1;
+                }
+                colLayout = {left: 0};
+                if (colWidth >= 1) {
+                    if (col.minWidth !== undefined) {
+                        colWidth = Math.max(colWidth, col.minWidth);
+                    }
+                    colLayout.width = colWidth;
+                    fixedWidth     += colWidth;
+                } else {
+                    if (col.minWidth === undefined) {
+                        col.minWidth = colAutoMinWidth;
+                    }
+                    colLayout.grow = colWidth;
+                    growTotal += colWidth;
+                    minGrowWidth += col.minWidth;
+                    if (lastMaxGrow <= colLayout.grow) {
+                        lastMaxGrow      = colLayout.grow;
+                        lastGrowColIndex = i + 1;
+                    }
+                }
+                colLayout.minWidth = col.minWidth;
+                if (!checkBoxColIndex && col.checkbox) {
+                    checkBoxColIndex   = i + 1;
+                    colLayout.checkbox = true;
+                }
+                colsLayout.push(colLayout);
+            }
+            if (options.checkable && !checkBoxColIndex) {
+                colsLayout[0].checkbox = true;
+                if (rowIndexWidth === 'auto') {
+                    colsLayout[0].width += 30;
+                    fixedWidth += 30;
+                }
+            }
+            var flexWidth    = containerWidth - fixedWidth;
+            var autoOverflow = flexWidth < minGrowWidth;
+            var colsLenght   = colsLayout.length;
+            for (var j = 0; j < colsLenght; ++j) {
+                colLayout = colsLayout[j];
+                colWidth = colLayout.width;
+                if (!colWidth && colWidth !== 0) {
+                    if (autoOverflow) {
+                        colWidth = colAutoDefaultWidth * colLayout.grow * 10;
+                    } else {
+                        colWidth = flexWidth * colLayout.grow / growTotal;
+                    }
+                    colWidth = Math.floor(Math.max(colLayout.minWidth, colWidth));
+                    colLayout.width = colWidth;
+                }
+                if (j > 0) {
+                    var lastColLayout = colsLayout[j - 1];
+                    colLayout.left = lastColLayout.left + lastColLayout.width;
+                }
+                cellsTotalWidth += colWidth;
+            }
+
+            var extraGap = containerWidth - cellsTotalWidth;
+            if (lastGrowColIndex && extraGap > 0) {
+                colsLayout[lastGrowColIndex].width += extraGap;
+                cellsTotalWidth += extraGap;
+            }
+            layout.width = cellsTotalWidth;
+            layout.cols = colsLayout;
+        }
+
+        layout.containerWidth  = containerWidth;
+        layout.rowHeight       = options.rowDefaultHeight;
+        layout.borderWidth     = options.borderWidth;
+        layout.headerHeight    = options.showHeader ? (options.headerHeight) : 0;
+        layout.rowsLength      = dataLength + 1;
+        layout.colsLength      = layout.cols.length;
+        layout.height          = layout.headerHeight + dataLength * (layout.rowHeight + layout.borderWidth);
+        layout.spanMap         = {};
+
+        var containerHeight = options.height;
+        if (containerHeight === 'page') {
+            containerHeight = layout.headerHeight + that.pager.recPerPage * (layout.rowHeight + layout.borderWidth);
+        }
+        $container.css('height', containerHeight);
+        layout.containerHeight = containerHeight;
+
+        layout.vScrollSpare    = layout.height - layout.containerHeight;
+        layout.hScrollSpare    = layout.width - layout.containerWidth;
+
+        that.layout = layout;
+
+        var partialRendering = pager.page ? true : options.partialRendering;
+        if (partialRendering === 'auto') {
+            partialRendering = layout.height > (2 * layout.containerHeight);
+        }
+        layout.partialRendering = partialRendering;
+        return layout;
+    };
+
+    DataGrid.prototype.getCell = function(rowIndex, colIndex) {
+        var that = this;
+        var config = that.getCellConfig(rowIndex, colIndex);
+        var col = colIndex > 0 ? that.dataSource.cols[colIndex - 1] : null;
+        var type, value;
+        var cell = {
+            rowIndex: rowIndex,
+            colIndex: colIndex,
+            config:   config,
+            checked:  that.isRowChecked(config.rowId)
+        };
+        if (colIndex === 0) {
+            type = 'index';
+            var colLabel = rowIndex > 0 ? (that.pager.skip + rowIndex) : '';
+            value = config.label !== undefined ? config.label : colLabel;
+        } else if (rowIndex === 0) {
+            type = 'head';
+            value = config.label !== undefined ? config.label : (config.name !== undefined ? config.name : colIndex);
+        } else {
+            type = 'cell';
+            value = config.data && config.data[that.options.dataItemIsArray ? colIndex : col.name];
+        }
+        if (rowIndex > 0) {
+            var optionsValueOperator = that.options.valueOperator;
+            var valueType = config.valueType;
+            var valueOperator = config.valueOperator || (optionsValueOperator && valueType ? optionsValueOperator[valueType] : null);
+            if (valueOperator && valueOperator.getter) {
+                value = valueOperator.getter(value, cell, that);
+            }
+        }
+        cell.value = value;
+        cell.type = type;
+        var spanMap = that.layout.spanMap;
+        if (spanMap[config.id] || config.hidden) {
+            cell.hidden = true;
+        } else if ((config.colspan && config.colspan > 1) || (config.rowspan && config.rowspan > 1)) {
+            var rowSpanEnd = rowIndex + (config.rowspan || 1);
+            var colSpanEnd = colIndex + (config.colspan || 1);
+            for (var r = rowIndex; r < rowSpanEnd; ++r) {
+                for (var c = colIndex; c < colSpanEnd; ++c) {
+                    if (r !== rowIndex || c !== colIndex) {
+                        spanMap['R' + r + 'C' + c] = config.id;
+                    }
+                }
+            }
+            config.span = true;
+        }
+        return cell;
+    };
+
+    DataGrid.prototype.getRowConfig = function(rowIndex) {
+        var that   = this;
+        var rowId  = 'R' + rowIndex;
+        var config = that.configsCache[rowId];
+        if (!config) {
+            config = $.extend({
+                // height: 'auto'
+                // fixed: false
+            }, that.isFuncConfigs ? that.configs(rowId) : that.configs[rowId], that.userConfigs[rowId]);
+            that.configsCache[rowId] = config;
+        }
+        var dataItem = rowIndex > 0 ? that.getDataItem(rowIndex - 1) : null;
+        config.data = dataItem;
+        var rowId = dataItem && (dataItem.rowId || dataItem.id);
+        config.rowId = rowId !== undefined ? rowId : (rowIndex === 0 ? '#header' : rowIndex);
+        return config;
+    };
+
+    DataGrid.prototype.getColConfigByName = function(colName) {
+        var cols = this.dataSource.cols;
+        for (var i = 0; i < cols.length; ++i) {
+            if (cols[i].name === colName) {
+                return this.getColConfig(i + 1);
+            }
+        }
+        return null;
+    };
+
+    DataGrid.prototype.getColConfig = function(colIndex) {
+        var that = this;
+        var colId = 'C' + colIndex;
+        // var config = that.configsCache[colId];
+        var config = null;
+        if (!config) {
+            config = $.extend(
+                {
+                    // html: false,
+                    // style: null,
+                    // className: '',
+                    // valueOperator: null,
+                    // sortFunc
+                    valueType: 'string'
+                },
+                colIndex > 0 ? that.dataSource.cols[colIndex - 1] : null,
+                that.layout.cols ? that.layout.cols[colIndex] : null,
+                that.isFuncConfigs ? that.configs(colId) : that.configs[colId],
+                that.userConfigs[colId]
+            );
+            // that.configsCache[colId] = config;
+        }
+        return config;
+    };
+
+    DataGrid.prototype.getCellConfig = function(rowIndex, colIndex) {
+        var that = this;
+        var cellId = 'R' + rowIndex + 'C' + colIndex;
+        // var config = that.configsCache[cellId];
+        var config = null;
+        if (!config) {
+            config = $.extend(
+                {id: cellId},
+                that.getColConfig(colIndex),
+                that.getRowConfig(rowIndex),
+                that.isFuncConfigs ? that.configs(cellId) : that.configs[cellId],
+                that.userConfigs[cellId]
+            );
+            // that.configsCache[cellId] = config;
+        }
+        return config;
+    };
+
+    DataGrid.prototype.isRowChecked = function(rowId) {
+        return !!this.states.selections[rowId];
+    };
+
+    DataGrid.prototype.checkRow = function(rowIndex, checked) {
+        var that       = this;
+        var selections = that.states.selections;
+        var rowConfig  = that.getRowConfig(rowIndex);
+        var rowId      = rowConfig.rowId;
+        if (checked === undefined) {
+            checked = !selections[rowId];
+        }
+        if (selections[rowId] === checked) {
+            return;
+        }
+        if (checked) {
+            selections[rowId] = rowConfig;
+        } else {
+            delete selections[rowId];
+            if (rowIndex > 0 && selections['#header']) {
+                delete selections['#header'];
+                that.renderRow(0);
+            }
+        }
+        that.renderRow(rowIndex);
+        if (rowIndex === 0 && that.layout.rowsLength < 500) {
+            for (var i = 1; i < that.layout.rowsLength; ++i) {
+                that.checkRow(i, checked);
+            }
+        }
+        that.renderFixeds();
+        return checked;
+    };
+
+    DataGrid.prototype.getCheckItems = function() {
+        var selections = this.states.selections;
+        var items = [];
+        selections && $.each(selections, function(rowId) {
+            items.push(selections[rowId].data);
+        });
+        return items;
+    };
+
+    DataGrid.prototype.renderCell = function(rowIndex, colIndex, $row) {
+        var that       = this;
+        var options    = that.options;
+        var cell       = that.getCell(rowIndex, colIndex);
+        var config     = cell.config;
+
+        if (cell.hidden) {
+            return;
+        }
+
+        var isCheckbox = config.checkbox;
+        var elementId  = [that.id, 'cell', rowIndex, colIndex].join('-');
+        var $cell      = $('#' + elementId);
+        if (!$cell.length) {
+            $row = $row || $('#' + that.id + '-row-' + rowIndex);
+            $cell = (options.cellCreator ? options.cellCreator(cell, that) : $('<div class="datagrid-cell" />')).appendTo($row);
+            $cell.attr({
+                id: elementId,
+                'data-type': cell.type,
+                'data-col': cell.colIndex,
+                'data-row': cell.rowIndex
+            }).toggleClass('datagrid-cell-head', rowIndex === 0)
+              .toggleClass('datagrid-cell-cell', cell.type === 'cell')
+              .toggleClass('datagrid-cell-index', colIndex === 0);
+
+            if (isCheckbox) {
+                var $checkbox = $cell.find('.datagrid-checkbox');
+                if (!$checkbox.length) {
+                    $checkbox = $('<div class="checkbox-primary datagrid-checkbox"><label></label></div>').prependTo($cell.addClass('datagrid-has-checkbox'));
+                }
+                $cell.append('<span class="content"></span>');
+            }
+        }
+
+        // Caculate cell style
+        var borderWidth     = options.borderWidth;
+        var layout          = that.layout;
+        var colsLength      = layout.colsLength;
+        var cellBoundsStyle = {
+            top: borderWidth ? -borderWidth : 0,
+            bottom: borderWidth ? -borderWidth : 0,
+            left: borderWidth ? (config.left - borderWidth) : config.left,
+            width: borderWidth ? (config.width + ((colsLength - 1) === colIndex ? 2 : 1) * borderWidth) : config.width,
+            borderWidth: borderWidth
+        };
+        if (config.span) {
+            if (config.rowspan && config.rowspan > 1) {
+                cellBoundsStyle.bottom -= (config.rowspan - 1) * (layout.rowHeight + borderWidth);
+            }
+            if (config.colspan && config.colspan > 1) {
+                var colspanEnd = colIndex + config.colspan;
+                for (var i = colIndex + 1; i < colspanEnd; ++i) {
+                    var theSpanCell = that.getCell(rowIndex, i);
+                    cellBoundsStyle.width += theSpanCell.config.width;
+                }
+            }
+        }
+        var configStyle = config.style;
+        if ($.isFunction(configStyle)) {
+            configStyle = configStyle(cell, cellBoundsStyle, that);
+        }
+        var style = $.extend({}, configStyle, cellBoundsStyle);
+        $cell.css(style).toggleClass('datagrid-cell-span', !!config.span);
+
+        if (options.cellFormator) {
+            options.cellFormator($cell, cell, that);
+        } else {
+            var $content = isCheckbox ? $cell.find('.content') : $cell;
+            $content[cell.config.html ? 'html' : 'text'](cell.value);
+            if (config.className) {
+                $cell.addClass(config.className);
+            }
+        }
+
+        if (colIndex > 0 && rowIndex === 0 && options.sortable && config.sort !== false) {
+            var sorted = false;
+            if (config.name === that.states.sortBy) {
+                sorted = that.states.order === 'desc' ? 'down' : 'up';
+            }
+            var $sorter = $cell.find('.datagrid-sorter');
+            if (!$sorter.length) {
+                $sorter = $('<div class="datagrid-sorter"><i class="icon icon-sort"></i></div>').appendTo($cell);
+                $cell.addClass('datagrid-col-sortable');
+            }
+            $sorter.toggleClass('datagrid-sort-up', sorted === 'up')
+                   .toggleClass('datagrid-sort-down', sorted === 'down');
+        }
+
+        if (isCheckbox) {
+            $cell.find('.datagrid-checkbox').toggleClass('checked', cell.checked);
+            $row.toggleClass('active', cell.checked);
+        }
+        return $cell;
+    };
+
+    DataGrid.prototype.renderRow = function(rowIndex) {
+        var that       = this;
+        var layout     = that.layout;
+        var options    = that.options;
+        var rowLayout  = that.getRowLayout(rowIndex);
+        var colsLength = layout.colsLength;
+        var elementId  = that.id + '-row-' + rowIndex;
+        var $row       = $('#' + elementId);
+        if (!$row.length) {
+            $row = (options.rowCreator ? options.rowCreator(rowIndex, that) : $('<div class="datagrid-row" />')).appendTo(that.$cells);
+            $row.attr({
+                id: elementId,
+                'data-row': rowIndex,
+                'data-id': rowIndex
+            }).css({
+                top: layout.partialRendering ? (rowLayout.top - layout.scrollTop) : rowLayout.top,
+                height: rowLayout.height
+            }).toggleClass('datagrid-row-head', rowIndex === 0)
+              .toggleClass('datagrid-row-cell', rowIndex !== 0);
+        } else if(layout.partialRendering) {
+            $row.css('top', rowLayout.top - layout.scrollTop);
+        }
+        for (var i = 0; i < colsLength; ++i) {
+            that.renderCell(rowIndex, i, $row);
+        }
+        return $row;
+    };
+
+    DataGrid.prototype.renderData = function() {
+        var that           = this;
+        var layout         = that.layout;
+
+        if (!layout.cols) {
+            that.updateLayout();
+        }
+
+        var startRenderRow = 1;
+        var endRenderRow   = layout.rowsLength - 1;
+        if (layout.partialRendering) {
+            var rowHeight = layout.rowHeight + layout.borderWidth;
+            startRenderRow = Math.min(endRenderRow, Math.max(1, Math.floor((layout.scrollTop - layout.headerHeight)/rowHeight)));
+            endRenderRow = Math.min(endRenderRow, Math.max(1, Math.ceil((layout.scrollTop + layout.containerHeight - layout.headerHeight)/rowHeight)));
+            that.$cells.find('.datagrid-row').each(function() {
+                var $row = $(this);
+                var rowIndex = $row.data('row');
+                if (rowIndex > 0 && !$row.hasClass('datagrid-fixed') && (rowIndex < startRenderRow || rowIndex > endRenderRow)) {
+                    $row.remove();
+                }
+            });
+        }
+
+        // Render header
+        if (that.options.showHeader) {
+            that.renderRow(0);
+        }
+
+        for (var i = startRenderRow; i <= endRenderRow; ++i) {
+            that.renderRow(i);
+        }
+
+        if (layout.vScrollSpare) {
+            var states = that.states;
+            var fixedTopUntil = states.fixedTopUntil;
+            var fixedBottomFrom = states.fixedBottomFrom;
+            if (typeof fixedTopUntil === 'number' && fixedTopUntil > 0 && fixedTopUntil < startRenderRow) {
+                for (var i = 1; i <= fixedTopUntil; ++i) {
+                    that.renderRow(i);
+                }
+            }
+            if (typeof fixedBottomFrom === 'number' && fixedBottomFrom > 0 && fixedBottomFrom > endRenderRow) {
+                for (var i = fixedBottomFrom; i <= (layout.rowsLength - 1); ++i) {
+                    that.renderRow(i);
+                }
+            }
+        }
+
+        if (that.pagerObj) {
+            that.pagerObj.set(that.pager);
+        }
+    };
+
+    DataGrid.prototype.render = function(ignoreDelay) {
+        var that    = this;
+        var options = that.options;
+
+        if (!ignoreDelay && options.renderDelay) {
+            if (that.renderDelayTimer) {
+                clearTimeout(that.renderDelayTimer);
+            }
+            that.renderDelayTimer = setTimeout(function() {
+                that.render(true);
+            }, options.renderDelay);
+            return that;
+        }
+
+        if (that.renderDelayTimer) {
+            clearTimeout(that.renderDelayTimer);
+            that.renderDelayTimer = null;
+        }
+
+        that.loadData(function(data) {
+            var layout = that.updateLayout();
+
+            that.$cells.css({
+                width: layout.width,
+                height: layout.partialRendering ? layout.containerHeight : that.layout.height
+            });
+
+            // Render rows
+            that.renderData();
+
+            // Render scrollbars
+            that.renderScrolls();
+
+            that.renderFixeds();
+
+            that.$.callComEvent(that, 'onRender');
+        });
+
+        return that;
+    };
+
+    DataGrid.prototype.setScrollbarOffset = function(offsetX, offsetY) {
+        var that       = this;
+        var layout     = that.layout;
+        var scrollLeft = layout.scrollLeft;
+        var scrollTop  = layout.scrollTop;
+        if (typeof offsetX === 'number') {
+            var hScroll = layout.hScroll;
+            if (hScroll.offset !== offsetX) {
+                scrollLeft = Math.round(offsetX * layout.hScrollSpare / hScroll.space);
+            }
+        }
+        if (typeof offsetY === 'number') {
+            var vScroll = layout.vScroll;
+            if (vScroll.offset !== offsetY) {
+                scrollTop = Math.round(offsetY * layout.vScrollSpare / vScroll.space);
+            }
+        }
+        that.scroll(scrollLeft, scrollTop);
+    };
+
+    DataGrid.prototype.renderScrolls = function() {
+        var that     = this;
+        var layout   = that.layout;
+        var vSize    = layout.vScrollSpare;
+        var hSize    = layout.hScrollSpare;
+        var showVBar = vSize > 0;
+        var showHBar = hSize > 0;
+        that.$vScroll.toggle(showVBar);
+        that.$hScroll.toggle(showHBar);
+        layout.scrollLeft = showHBar ? Math.max(0, Math.min(hSize, layout.scrollLeft)) : 0;
+        layout.scrollTop = showVBar ? Math.max(0, Math.min(vSize, layout.scrollTop)) : 0;
+        if (showVBar) {
+            var $bar = that.$vScrollbar;
+            var scale = layout.containerHeight / layout.height;
+            var barSize = Math.max(20, Math.floor(scale * layout.containerHeight));
+            var scrollSpace = layout.containerHeight - barSize;
+            var scrollScale = scrollSpace / vSize;
+            var offset = Math.round(layout.scrollTop * scrollScale);
+            layout.vScroll = {
+                space: scrollSpace,
+                size: vSize,
+                scale: scrollScale,
+                barSize: barSize,
+                offset: offset
+            };
+            var barStyle = {
+                height: barSize,
+                top: offset
+            };
+            $bar.css(barStyle);
+        }
+        if (showHBar) {
+            var $bar = that.$hScrollbar;
+            var scale = layout.containerWidth / layout.width;
+            var barSize = Math.max(20, Math.floor(scale * layout.containerWidth));
+            var scrollSpace = layout.containerWidth - barSize;
+            var offset = Math.round(layout.scrollLeft * scrollSpace / hSize);
+            var barStyle = {
+                width: barSize,
+                left: offset
+            };
+            layout.hScroll = {
+                offset: offset,
+                space: scrollSpace,
+                size: hSize,
+                barSize: barSize
+            };
+            $bar.css(barStyle);
+        }
+        that.$cells.css({
+            top: layout.partialRendering ? 0 : -layout.scrollTop,
+            left: -layout.scrollLeft
+        });
+    };
+
+    DataGrid.prototype.scroll = function(scrollLeft, scrollTop, ignoreDelay) {
+        var that = this;
+        var now  = new Date();
+        var scrollDelay = that.options.scrollDelay;
+        if (scrollDelay) {
+            if (!ignoreDelay && that.lastScrollTime && (now - that.lastScrollTime) < scrollDelay) {
+                if (that.scrollDelayTimer) {
+                    clearTimeout(that.scrollDelayTimer);
+                }
+                that.scrollDelayTimer = setTimeout(function() {
+                    that.scroll(scrollLeft, scrollTop);
+                }, (scrollDelay - ((now - that.lastScrollTime))));
+
+                return;
+            }
+            if (that.scrollDelayTimer) {
+                clearTimeout(that.scrollDelayTimer);
+                that.scrollDelayTimer = null;
+            }
+            that.lastScrollTime = now;
+        }
+        var layout = that.layout;
+        var hScrolled = false, vScrolled = false;
+        if (typeof scrollLeft === 'number') {
+            scrollLeft = Math.max(0, Math.min(scrollLeft, layout.width - layout.containerWidth));
+            if (scrollLeft !== layout.scrollLeft) {
+                hScrolled = true;
+                layout.scrollLeft = scrollLeft;
+            }
+        }
+        if (typeof scrollTop === 'number') {
+            scrollTop = Math.max(0, Math.min(scrollTop, layout.height - layout.containerHeight));
+            if (scrollTop !== layout.scrollTop) {
+                vScrolled = true;
+                layout.scrollTop = scrollTop;
+            }
+        }
+
+        if (vScrolled && layout.partialRendering) {
+            that.renderData();
+        }
+
+        if (hScrolled || vScrolled) {
+            that.renderScrolls();
+            that.renderFixeds();
+        }
+
+        that.$.callComEvent(that, 'onScroll', [scrollLeft, scrollTop, {vScrolled: vScrolled, hScrolled: hScrolled}]);
+    };
+
+    DataGrid.prototype.renderFixeds = function() {
+        var that   = this;
+        var states = that.states;
+        var layout = that.layout;
+
+        that.$cells.find('.datagrid-fixed').removeClass('datagrid-fixed');
+        that.$cells.find('.datagrid-fixed-edge-top').removeClass('datagrid-fixed-edge-top');
+        that.$cells.find('.datagrid-fixed-edge-bottom').removeClass('datagrid-fixed-edge-bottom');
+        that.$cells.find('.datagrid-fixed-edge-left').removeClass('datagrid-fixed-edge-left');
+        that.$cells.find('.datagrid-fixed-edge-right').removeClass('datagrid-fixed-edge-right');
+
+        if (layout.vScrollSpare) {
+            var fixedTopUntil = states.fixedTopUntil;
+            if (typeof fixedTopUntil === 'number' && fixedTopUntil > -1) {
+                fixedTopUntil = Math.min(fixedTopUntil, layout.rowsLength);
+                for (var i = 0; i <= fixedTopUntil; ++i) {
+                    var rowLayout = that.getRowLayout(i);
+                    var $row = $('#' + that.id + '-row-' + i);
+                    var fixedTop = layout.partialRendering ? rowLayout.top : (rowLayout.top + layout.scrollTop);
+                    $row.addClass('datagrid-fixed').css('top', fixedTop);
+                    if (i === fixedTopUntil && layout.scrollTop) {
+                        $row.addClass('datagrid-fixed-edge-top');
+                    }
+                }
+            } else {
+                fixedTopUntil = -1;
+            }
+            var fixedBottomFrom = states.fixedBottomFrom;
+            if (typeof fixedBottomFrom === 'number' && fixedBottomFrom > -1) {
+                fixedBottomFrom = Math.max(fixedTopUntil > -1 ? (fixedTopUntil + 1) : 1, Math.min(fixedBottomFrom, layout.rowsLength));
+                for (var i = fixedBottomFrom; i < layout.rowsLength; ++i) {
+                    var rowLayout = that.getRowLayout(i);
+                    var $row = $('#' + that.id + '-row-' + i);
+                    var fixedTop = layout.partialRendering ? (rowLayout.top - layout.vScrollSpare) : (rowLayout.top - layout.vScrollSpare + layout.scrollTop);
+                    $row.addClass('datagrid-fixed').css('top', fixedTop);
+                    if (i === fixedBottomFrom && layout.scrollTop < layout.vScrollSpare) {
+                        $row.addClass('datagrid-fixed-edge-bottom');
+                    }
+                }
+            }
+        }
+
+        if (layout.hScrollSpare) {
+            var fixedLeftUntil = states.fixedLeftUntil;
+            if (typeof fixedLeftUntil === 'number' && fixedLeftUntil > -1) {
+                fixedLeftUntil = Math.min(fixedLeftUntil, layout.colsLength);
+                for (var i = 0; i <= fixedLeftUntil; ++i) {
+                    var colLayout = layout.cols[i];
+                    var $cols = that.$cells.find('.datagrid-cell[data-col="' + i + '"]');
+                    var fixedLeft = colLayout.left + layout.scrollLeft - layout.borderWidth;
+                    $cols.addClass('datagrid-fixed').css('left', fixedLeft);
+                    if (i === fixedLeftUntil && layout.scrollLeft) {
+                        $cols.addClass('datagrid-fixed-edge-left');
+                    }
+                }
+            } else {
+                fixedLeftUntil = -1;
+            }
+            var fixedRightFrom = states.fixedRightFrom;
+            if (typeof fixedRightFrom === 'number' && fixedRightFrom > -1) {
+                fixedRightFrom = Math.max(fixedLeftUntil > -1 ? (fixedLeftUntil + 1) : 1, Math.min(fixedRightFrom, layout.colsLength));
+                for (var i = fixedRightFrom; i < layout.colsLength; ++i) {
+                    var colLayout = layout.cols[i];
+                    var $cols = that.$cells.find('.datagrid-cell[data-col="' + i + '"]');
+                    var fixedLeft = colLayout.left - layout.hScrollSpare + layout.scrollLeft;
+                    $cols.addClass('datagrid-fixed').css('left', fixedLeft);
+                    if (i === fixedRightFrom && layout.scrollLeft < layout.hScrollSpare) {
+                        $cols.addClass('datagrid-fixed-edge-right');
+                    }
+                }
+            }
+        }
+    };
+
+    // default options
+    DataGrid.DEFAULTS = {
+        // The data grid width, if set 'auto', then use the container element width
+        width: 'auto',
+
+        // The data grid height, if set 'page', then use the page height
+        height: 400,
+
+        // The init data, require an object array
+        // dataSource: null,
+
+        // The cells configurations
+        // configs: null,
+
+        // The cells default states
+        // states: null,
+
+        // Cell default height
+        rowDefaultHeight: 36,
+
+        // Column default width
+        colAutoDefaultWidth: 80,
+
+        // Column min width
+        colAutoMinWidth: 50,
+
+        // Show cells header
+        showHeader: true,
+
+        // Cells header height
+        headerHeight: 36,
+
+        // Show row index number
+        showRowIndex: true,
+
+        // Row index width
+        rowIndexWidth: 'auto',
+
+        // Create cell element
+        // cellCreator: null,
+
+        // Format cell element
+        // cellFormator: null,
+
+        // Row creator
+        // rowCreator: null,
+
+        // Border width (px)
+        borderWidth: 1,
+
+        // Use row hover effection
+        hoverRow: true,
+
+        // Use column hover effection
+        hoverCol: true,
+
+        // Use cell hover effection
+        hoverCell: false,
+
+        // Relayout on container resize
+        responsive: true,
+
+        // Value operator
+        // valueOperator: null,
+
+        // Default date formater
+        defaultDateFormater: 'yyyy-MM-dd hh:mm',
+
+        // Partial rendering can show large amount data in high efficiency
+        partialRendering: 'auto',
+
+        // Scroll event trigger delay time
+        scrollDelay: 0,
+
+        // Delay render time
+        renderDelay: 100,
+
+        // On user scroll list
+        // onScroll: null,
+
+        // On render datagrid
+        // onRender: null,
+
+        // Search filter function
+        // searchFunc: null,
+
+        // Sort function
+        // sortFunc: null,
+
+        // Sort by click column headers
+        // sortable: false,
+
+        // Show checkboxes and let user select a row
+        // checkable: false,
+
+        // Let user check by click row
+        checkByClickRow: true,
+
+        // Let user check rows by drag
+        selectable: true,
+
+        mouseWheelFactor: 1,
+    };
+
+    // Extense jquery element
+    $.fn.datagrid = function(option) {
+        return this.each(function() {
+            var $this = $(this);
+            var data = $this.data(NAME);
+            var options = typeof option == 'object' && option;
+
+            if(!data) $this.data(NAME, (data = new DataGrid(this, options)));
+
+            if(typeof option == 'string') data[option]();
+        });
+    };
+
+    DataGrid.NAME = NAME;
+
+    $.fn.datagrid.Constructor = DataGrid;
+
+    // Auto call datagrid after document load complete
+    $(function() {
+        $('[data-ride="datagrid"]').datagrid();
+    });
+}(jQuery, undefined));
+

File diff suppressed because it is too large
+ 5 - 0
VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.min.css


File diff suppressed because it is too large
+ 13 - 0
VisualInspection/node_modules/zui/dist/lib/datagrid/zui.datagrid.min.js


+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 数据表格 - v1.6.0 - 2017-03-16
+ * ZUI: 数据表格 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .datatable-head,

+ 59 - 56
VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 数据表格 - v1.6.0 - 2017-03-16
+ * ZUI: 数据表格 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -11,8 +11,6 @@
  * ========================================================================
  * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT
  * ======================================================================== */
-
-
 (function($) {
     'use strict';
 
@@ -21,7 +19,7 @@
 
     /**
      * Datatable class
-     * 
+     *
      * @param object element           DOM element or jquery element
      * @param object options           Datatable options
      */
@@ -77,6 +75,10 @@
         hoverClass: 'hover',
         colHoverClass: 'col-hover',
 
+
+        // Fix cell height
+        fixCellHeight: true,
+
         // Merge rows
         mergeRows: false, // Merge rows
 
@@ -144,7 +146,7 @@
                     $th, $tr, $td, row, $t = this.$table,
                     colSpan;
 
-                $t.find('thead > tr:first').children('th').each(function() {
+                $t.children('thead').children('tr:first').children('th').each(function() {
                     $th = $(this);
                     cols.push($.extend({
                         text: $th.html(),
@@ -159,7 +161,7 @@
                     }, $th.data()));
                 });
 
-                $t.find('tbody > tr').each(function() {
+                $t.children('tbody').children('tr').each(function() {
                     $tr = $(this);
                     row = $.extend({
                         data: [],
@@ -192,7 +194,7 @@
                     rows.push(row);
                 });
 
-                var $tfoot = $t.find('tfoot');
+                var $tfoot = $t.children('tfoot');
                 if($tfoot.length) {
                     data.footer = $('<table class="table' + options.tableClass + '"></table>').append($tfoot);
                 }
@@ -267,9 +269,9 @@
             $tr,
             $th,
             col;
-        $left = $('<tr/>');
-        $right = $('<tr/>');
-        $flex = $('<tr/>');
+        $left = $('<tr class="datatable-row datatable-row-left"/>');
+        $right = $('<tr class="datatable-row datatable-row-right"/>');
+        $flex = $('<tr class="datatable-row datatable-row-flex"/>');
         for(i = 0; i < cols.length; i++) {
             col = cols[i];
             $tr = i < data.flexStart ? $left : ((i >= data.flexStart && i <= data.flexEnd) ? $flex : $right);
@@ -278,7 +280,7 @@
             }
             if(col.ignore) continue;
 
-            $th = $('<th/>');
+            $th = $('<th class="datatable-head-cell"/>');
 
             // set sort class
             $th.toggleClass('sort-down', col.sort === 'down')
@@ -292,7 +294,7 @@
                     'data-index': i,
                     'data-type': col.type,
                     style: col.css
-                });
+                }).css('width', col.width);
             $tr.append($th);
         }
 
@@ -354,15 +356,16 @@
             }
             row.index = r;
 
-            $leftRow = $('<tr/>');
+            $leftRow = $('<tr class="datatable-row"/>');
             $leftRow.addClass(row.cssClass)
                 .toggleClass(options.checkedClass, !!row.checked)
                 .attr({
                     'data-index': r,
                     'data-id': row.id
                 });
-            $flexRow = $leftRow.clone();
-            $rightRow = $leftRow.clone();
+            $flexRow = $leftRow.clone().addClass('datatable-row-flex');
+            $rightRow = $leftRow.clone().addClass('datatable-row-right');
+            $leftRow.addClass('datatable-row-left');
 
             rowColLen = row.data.length;
             for(i = 0; i < rowColLen; ++i) {
@@ -395,7 +398,7 @@
                 }
                 row.data[i] = rowCol;
 
-                $td = $('<td/>');
+                $td = $('<td class="datatable-cell"/>');
 
                 $td.html(rowCol.text)
                     .addClass(rowCol.cssClass)
@@ -408,7 +411,7 @@
                         'data-type': cols[i].type,
                         style: rowCol.css,
                         title: rowCol.title || ''
-                    });
+                    }).css('width', cols[i].width);
 
 
                 $tr.append($td);
@@ -419,6 +422,7 @@
             $right.append($rightRow);
         }
 
+
         var $rowSpan;
         if(data.fixedLeft) {
             $rowSpan = $(dataRowSpan);
@@ -468,7 +472,6 @@
 
         that.bindEvents();
         that.refreshSize();
-
         that.callEvent('render');
     };
 
@@ -482,20 +485,20 @@
         var $dataSpans = that.$dataSpans = $datatable.children('.datatable-head, .datatable-rows').find('.datatable-span');
         var $rowsSpans = that.$rowsSpans = $datatable.children('.datatable-rows').children('.datatable-rows-span');
         var $headSpans = that.$headSpans = $datatable.children('.datatable-head').children('.datatable-head-span');
-        var $cells = that.$cells = $dataSpans.find('td, th');
-        var $dataCells = that.$dataCells = $cells.filter('td');
-        that.$headCells = $cells.filter('th');
-        var $rows = that.$rows = that.$rowsSpans.find('.table > tbody > tr');
+        var $cells = that.$cells = $dataSpans.find('.datatable-head-cell,.datatable-cell');
+        var $dataCells = that.$dataCells = $cells.filter('.datatable-cell');
+        that.$headCells = $cells.filter('.datatable-head-cell');
+        var $rows = that.$rows = that.$rowsSpans.find('.datatable-row');
 
         // handle row hover events
         if(options.rowHover) {
             var hoverClass = options.hoverClass;
-            $rowsSpans.on('mouseenter', 'td', function() {
+            $rowsSpans.on('mouseenter', '.datatable-cell', function() {
                 $dataCells.filter('.' + hoverClass).removeClass(hoverClass);
                 $rows.filter('.' + hoverClass).removeClass(hoverClass);
 
-                $rows.filter('[data-index="' + $(this).addClass(hoverClass).closest('tr').data('index') + '"]').addClass(hoverClass);
-            }).on('mouseleave', 'td', function() {
+                $rows.filter('[data-index="' + $(this).addClass(hoverClass).data('row') + '"]').addClass(hoverClass);
+            }).on('mouseleave', '.datatable-cell', function() {
                 $dataCells.filter('.' + hoverClass).removeClass(hoverClass);
                 $rows.filter('.' + hoverClass).removeClass(hoverClass);
             });
@@ -504,10 +507,10 @@
         // handle col hover events
         if(options.colHover) {
             var colHoverClass = options.colHoverClass;
-            $headSpans.on('mouseenter', 'th', function() {
+            $headSpans.on('mouseenter', '.datatable-head-cell', function() {
                 $cells.filter('.' + colHoverClass).removeClass(colHoverClass);
                 $cells.filter('[data-index="' + $(this).data('index') + '"]').addClass(colHoverClass);
-            }).on('mouseleave', 'th', function() {
+            }).on('mouseleave', '.datatable-head-cell', function() {
                 $cells.filter('.' + colHoverClass).removeClass(colHoverClass);
             });
         }
@@ -519,7 +522,7 @@
                 $flexArea = $datatable.find('.datatable-span.flexarea'),
                 $fixedLeft = $datatable.find('.datatable-span.fixed-left'),
                 // $flexTable = $datatable.find('.datatable-rows-span.flexarea .table');
-                $flexTable = $datatable.find('.datatable-span.flexarea .table');
+                $flexTable = $datatable.find('.datatable-span.flexarea .table-datatable');
             var $bar = $scrollbar.children('.bar'),
                 flexWidth,
                 scrollWidth,
@@ -553,6 +556,7 @@
             var resizeScrollbar = function() {
                 flexWidth = $flexArea.width();
                 $scrollbar.width(flexWidth).css('left', $fixedLeft.width());
+                tableWidth = 0;
                 tableWidth = $flexTable.width();
                 scrollWidth = Math.floor((flexWidth * flexWidth) / tableWidth);
                 $bar.css('width', scrollWidth);
@@ -604,7 +608,7 @@
                 checkedClass = options.checkedClass,
                 rowId;
             var syncChecks = function() {
-                var $checkRows = $rowsSpans.first().find('.table > tbody > tr');
+                var $checkRows = $rowsSpans.first().find('.datatable-row');
                 var $checkedRows = $checkRows.filter('.' + checkedClass);
                 if(options.checkboxName) $checkRows.find('.check-row input:checkbox').prop('checked', false);
                 var checkedStatus = {
@@ -639,7 +643,7 @@
             var checkEventPrefix = 'click.zui.datatable.check';
             if(options.selectable) {
                 var selectableOptions = {
-                    selector: '.datatable-rows tr',
+                    selector: '.datatable-rows .datatable-row',
                     trigger: '.datatable-rows',
                     start: function(e) {
                         var $checkRow = $(e.target).closest('.check-row, .check-btn');
@@ -745,7 +749,7 @@
     };
 
     DataTable.prototype.mergeRows = function() {
-        var $cells = this.$rowsSpans.find('.table > tbody > tr > td');
+        var $cells = this.$rowsSpans.find('.datatable-cell');
         var cols = this.data.cols;
         for(var i = 0; i < cols.length; i++) {
             var col = cols[i];
@@ -784,9 +788,12 @@
         var sorterStoreName = this.id + '_datatableSorter';
         var sorter = options.storage ? store.pageGet(sorterStoreName) : null;
 
+        // sort-down: desc
+        // sort-up: asc
+
         if(!$th) {
             if(sorter) {
-                $th = this.$headCells.filter('[data-index="' + sorter.index + '"]').addClass('sort-' + sorter.type);
+                $th = this.$headCells.filter('[data-index="' + sorter.index + '"]').addClass('sort-' + (sorter.type === 'up' ? 'down' : 'up'));
             } else {
                 $th = this.$headCells.filter('.sort-up, .sort-down').first();
             }
@@ -838,7 +845,7 @@
                 valA = valA.toLowerCase();
                 valB = valB.toLowerCase();
             }
-            result = valA > valB ? 1 : (valA < valB ? -1 : 0);
+            result = valA < valB ? 1 : (valA > valB ? -1 : 0);
             if(sortUp) {
                 result = result * (-1);
             }
@@ -886,7 +893,8 @@
         $datatable.find('.datatable-span.fixed-left').css('width', options.fixedLeftWidth);
         $datatable.find('.datatable-span.fixed-right').css('width', options.fixedRightWidth);
 
-        var findMaxHeight = function($cells) {
+        if(options.fixCellHeight) {
+            var findMaxHeight = function($cells) {
                 var mx = 0,
                     $cell, rowSpan;
                 $cells.css('height', 'auto');
@@ -896,26 +904,22 @@
                     if(!rowSpan || rowSpan == 1) mx = Math.max(mx, $cell.outerHeight());
                 });
                 return mx;
-            },
-            $dataCells = this.$dataCells,
-            $cells = this.$cells,
-            $headCells = this.$headCells;
-
-        // set width of data cells
-        for(i = 0; i < cols.length; ++i) {
-            $cells.filter('[data-index="' + i + '"]').css('width', cols[i].width);
-        }
-
-        // set height of head cells
-        var headMaxHeight = findMaxHeight($headCells);
-        $headCells.css('min-height', headMaxHeight).css('height', headMaxHeight);
-
-        // set height of data cells
-        var $rowCells;
-        for(i = 0; i < rows.length; ++i) {
-            $rowCells = $dataCells.filter('[data-row="' + i + '"]');
-            var rowMaxHeight = findMaxHeight($rowCells);
-            $rowCells.css('min-height', rowMaxHeight).css('height', rowMaxHeight);
+            };
+            var $dataCells = this.$dataCells,
+                $cells = this.$cells,
+                $headCells = this.$headCells;
+
+            // set height of head cells
+            var headMaxHeight = findMaxHeight($headCells);
+            $headCells.css('min-height', headMaxHeight).css('height', headMaxHeight);
+
+            // set height of data cells
+            var $rowCells;
+            for(i = 0; i < rows.length; ++i) {
+                $rowCells = $dataCells.filter('[data-row="' + i + '"]');
+                var rowMaxHeight = findMaxHeight($rowCells);
+                $rowCells.css('min-height', rowMaxHeight).css('height', rowMaxHeight);
+            }
         }
     };
 
@@ -942,4 +946,3 @@
 
     $.fn.datatable.Constructor = DataTable;
 }(jQuery));
-

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.min.css


File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/datatable/zui.datatable.min.js


+ 3 - 0
VisualInspection/node_modules/zui/dist/lib/datetimepicker/datetimepicker.css

@@ -227,6 +227,9 @@
 .datetimepicker tfoot tr:first-child th:hover {
   background: #eee;
   }
+.input-group.date > .input-group-addon {
+  border-left: none;
+  }
 .input-append.date .add-on i,
 .input-prepend.date .add-on i,
 .input-group.date .input-group-addon span {

File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/datetimepicker/datetimepicker.min.css


File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/datetimepicker/datetimepicker.min.js


+ 1 - 1
VisualInspection/node_modules/zui/dist/lib/hotkey/hotkey.min.js

@@ -9,4 +9,4 @@
  * Original idea by:
  * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
 */
-!function(e){function t(t){if("string"==typeof t.data){var s=t.handler,a=t.data.toLowerCase().split(" ");t.handler=function(t){if(this===t.target||!/textarea|select/i.test(t.target.nodeName)&&"text"!==t.target.type){var r="keypress"!==t.type&&e.hotkeys.specialKeys[t.which],f=String.fromCharCode(t.which).toLowerCase(),i="",h={};t.altKey&&"alt"!==r&&(i+="alt+"),t.ctrlKey&&"ctrl"!==r&&(i+="ctrl+"),t.metaKey&&!t.ctrlKey&&"meta"!==r&&(i+="meta+"),t.shiftKey&&"shift"!==r&&(i+="shift+"),r?h[i+r]=!0:(h[i+f]=!0,h[i+e.hotkeys.shiftNums[f]]=!0,"shift+"===i&&(h[e.hotkeys.shiftNums[f]]=!0));for(var n=0,o=a.length;o>n;n++)if(h[a[n]])return s.apply(this,arguments)}}}}e.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}},e.each(["keydown","keyup","keypress"],function(){e.event.special[this]={add:t}})}(jQuery);
+!function(e){function t(t){if("string"==typeof t.data){var s=t.handler,a=t.data.toLowerCase().split(" ");t.handler=function(t){if(this===t.target||!/textarea|select/i.test(t.target.nodeName)&&"text"!==t.target.type){var r="keypress"!==t.type&&e.hotkeys.specialKeys[t.which],f=String.fromCharCode(t.which).toLowerCase(),i="",h={};t.altKey&&"alt"!==r&&(i+="alt+"),t.ctrlKey&&"ctrl"!==r&&(i+="ctrl+"),t.metaKey&&!t.ctrlKey&&"meta"!==r&&(i+="meta+"),t.shiftKey&&"shift"!==r&&(i+="shift+"),r?h[i+r]=!0:(h[i+f]=!0,h[i+e.hotkeys.shiftNums[f]]=!0,"shift+"===i&&(h[e.hotkeys.shiftNums[f]]=!0));for(var o=0,c=a.length;o<c;o++)if(h[a[o]])return s.apply(this,arguments)}}}}e.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}},e.each(["keydown","keyup","keypress"],function(){e.event.special[this]={add:t}})}(jQuery);

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 图片裁剪工具 - v1.6.0 - 2017-03-16
+ * ZUI: 图片裁剪工具 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .img-cutter {

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 图片裁剪工具 - v1.6.0 - 2017-03-16
+ * ZUI: 图片裁剪工具 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.min.css


File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/imgcutter/zui.imgcutter.min.js


+ 2 - 1
VisualInspection/node_modules/zui/dist/lib/kindeditor/kindeditor.css

@@ -785,7 +785,8 @@ fieldset[disabled] .ke-button.active {
 
   *display: inline;
   }
-.ke-input-text:focus {
+.ke-input-text:focus,
+.ke-input-text.focus {
   border-color: #145ccd;
   outline: 0;
   -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);

File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/kindeditor/kindeditor.min.css


File diff suppressed because it is too large
+ 0 - 0
VisualInspection/node_modules/zui/dist/lib/kindeditor/kindeditor.min.js


+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/migrate1.2/zui.migrate1.2.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 1.2升级到1.3兼容插件 - v1.6.0 - 2017-03-16
+ * ZUI: 1.2升级到1.3兼容插件 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================

+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/migrate1.2/zui.migrate1.2.min.js

@@ -1,7 +1,7 @@
 /*!
- * ZUI: 1.2升级到1.3兼容插件 - v1.6.0 - 2017-03-16
+ * ZUI: 1.2升级到1.3兼容插件 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 !function(e,o){function r(o,a){if(e.isArray(o))return void e.each(o,function(e,o){r(o,a)});var i={};i[o]=s[o],a?e.extend(a,i):e.extend(i)}var s=e.zui;s&&(r(["uuid","callEvent","clientLang","browser","messager","Messager","showMessager","closeModal","ajustModalPosition","ModalTrigger","modalTrigger","store"]),r(["Color","imgReady","messager","Messager","showMessager","closeModal","ajustModalPosition","ModalTrigger","modalTrigger","store"],o))}(jQuery,window);

+ 0 - 170
VisualInspection/node_modules/zui/dist/lib/mytable/mytable.js

@@ -1,170 +0,0 @@
-(function($) {
-    'use strict';
-
-    var con;
-    var options;
-    var curDatas;
-    var element;
-    var obj;
-    /**
-     * Datatable class
-     * 
-     * @param object element           DOM element or jquery element
-     * @param object options           Datatable options
-     */
-    var mytable = function(element, options) {
-        this.element = element;
-        this.options = options;
-        this.pager = options.pager;
-        this.con = $(element);
-        this.obj = this;
-        $(element).html('');
-        $(element).append('<div class="row"><div id="my_table" data-checkable="true" data-sortable="true"></div></div>'
-                           + '<div id="kkpager" class="row" style="text-align:center"></div>');
-        this.getRemoteData(element,options,this);
-        return this;       
-    };
-
-
-    // default options
-    mytable.DEFAULTS = {
-        container:"",
-        pages:'',
-        curr:'',
-        groups:'',
-        first:1,
-        last:1,
-        prev:1,
-        next:1,
-        jump:null
-    };
-
-    // Get options
-    mytable.prototype = {
-        getRemoteData:function(element,options,obj){
-            if(!element) element = this.element;
-            if(!options) options = this.options;
-            var url = options.url;
-            var p_cur = 1;
-            var pager = options.pager;
-            this.getServerData(p_cur, options, element, obj);
-        },
-        getRemoteData1:function(p_cur){
-            this.getServerData(p_cur, this.options, this.element, this.obj);
-        },
-        getServerData:function(p_cur, options, element, obj){
-            var url = options.url;
-            var pager = options.pager;
-            var page_size = pager.page_size;
-            var param = options.param;
-            // var obj = this.obj;
-            common_post_service(url+"/"+p_cur+"/"+page_size, param, function(data) {
-                // $(element).html("");
-                element.tt_data=data.list;
-                options.tableData=data.list;
-                obj.setTable(data.list,element, options,p_cur); 
-                if(obj.options.pager){
-                    options.pager = {
-                        page_size:10,
-                        p_cur : data.pageNum, //页号
-                        p_pages:data.pages, //总页码
-                        p_totalRecords:data.total
-                        // 'cb':'getRemoteData
-                    }   
-                    obj.setPager();
-                }
-            }, function(error) {
-                alert(error);
-            });
-        },
-        setTable:function(datas, element, options,p_cur) {
-            var cols = options.cols;
-            var tableData = datas;
-            // var pager = options.pager;
-            clearTable(cols);
-            var rowData = formatTableData(tableData, cols, p_cur);
-
-            // 使用data参数更新数据:
-            $('#my_table').datatable('load',{
-                    cols: cols,
-                    rows:rowData
-                }
-            );
-            function formatTableData(data,cols,p_cur){
-                var rows = [];
-                for(var i=0;i<data.length;i++){
-                    data[i].num=(p_cur-1)*10+i+1;
-                    rows.push(genRow(data[i],cols));
-                }
-                return rows;
-            }
-
-            function genRow(obj,cols){
-                var row = {checked: false, data:null};
-                var dArr=[];
-                for(var i=0;i<cols.length;i++){
-                    if(cols[i].oper!=null) {
-                        var oper = cols[i].oper;
-                        var operStr="";
-                        for(var j=0;j<oper.length;j++){
-                            operStr+='<a href="#" onclick="'+oper[j].func+'('+obj[cols[i].field]+')"><i class="icon icon-edit"></i>'+oper[j].text+'</a> ';
-                        }
-                        dArr.push(operStr);
-                    }else{
-                        dArr.push(obj[cols[i].field]);
-                    }
-                }
-                row.data=dArr;
-                return row;
-            }
-            function clearTable(cols){
-                $('#my_table').datatable( {
-                    checkable:false,
-                    sortable:false,
-                    data: {
-                        cols: cols,
-                        rows:[]
-                    }
-                });
-            }
-        },
-        setPager:function(data) {
-            var pager = this.options.pager;
-            var p_cur = pager.p_cur;
-            var p_pages = pager.p_pages;
-            var p_totalRecords = pager.p_totalRecords;
-            var obj=this;
-            kkpager.generPageHtml({
-                pno : p_cur,
-                total : p_pages,
-                totalRecords : p_totalRecords,
-                mode : 'click',
-                click : function(n){
-                    obj.options.pager.p_cur = n;
-                    this.selectPage(n);
-                    obj.getRemoteData1(n);//调用获取数据方法
-                    return false;
-                }
-            },true);
-        }
-    };
-
-    $.fn.mytable = function(options) {
-        if (typeof options == 'string') {
-            switch (options) {
-                case 'getTableData': 
-                    return this[0].tt_data; 
-            }
-         }   else{
-        return this.each(function() {
-            // var $this = $(this);
-                new mytable(this,options);
-            //  $(this).attr('tableData',mytable.tableData);
-            });
-        }
-    };
-
-
-    $.fn.mytable.Constructor = mytable;
-}(jQuery));
-

+ 26 - 8
VisualInspection/node_modules/zui/dist/lib/selectable/zui.selectable.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 拖拽选择 - v1.6.0 - 2017-03-16
+ * ZUI: 拖拽选择 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -54,6 +54,7 @@
         },
         clickBehavior: 'toggle',
         ignoreVal: 3
+        // mouseButton: -1 // 0, 1, 2, -1, all, left,  right, middle
     };
 
     // Get and init options
@@ -101,12 +102,13 @@
                     that.callEvent(isSelect ? 'select' : 'unselect', {id: id, selections: that.selections, target: $element, selected: that.getSelectedArray()}, that);
                 }
             }
-            $element.toggleClass(that.options.selectClass, isSelect);
+            if (that.options.selectClass) {
+                $element.toggleClass(that.options.selectClass, isSelect);
+            }
         }
     };
 
-    Selectable.prototype.getSelectedArray = function()
-    {
+    Selectable.prototype.getSelectedArray = function() {
         var selected = [];
         $.each(this.selections, function(thisId, thisIsSelected) {
             if(thisIsSelected) selected.push(thisId);
@@ -114,6 +116,16 @@
         return selected;
     };
 
+    Selectable.prototype.syncSelectionsFromClass = function() {
+        var that = this;
+        var $children = that.$children = that.$.find(that.options.selector);
+        that.selections = {};
+        that.$children.each(function() {
+            var $item = $(this);
+            that.selections[$item.data('id')] = $item.hasClass(that.options.selectClass);
+        });
+    };
+
     Selectable.prototype._init = function() {
         var options = this.options, that = this;
         var ignoreVal = options.ignoreVal;
@@ -136,8 +148,8 @@
                 var isIntersect = rangeFunc ? rangeFunc.call(this, range, offset) : isIntersectArea(range, offset);
                 if(checkFunc) {
                     var result = checkFunc.call(that, {
-                        intersect: isIntersect, 
-                        target: $item, 
+                        intersect: isIntersect,
+                        target: $item,
                         range: range,
                         targetRange: offset
                     });
@@ -166,7 +178,7 @@
                 left: x > startX ? startX : x,
                 top: y > startY ? startY : y
             };
-            
+
             if(isIgnoreMove && range.width < ignoreVal && range.height < ignoreVal) return;
             if(!$range) {
                 $range = $('.selectable-range[data-id="' + that.id + '"]');
@@ -210,6 +222,12 @@
             if(isMouseDown) {
                 return mouseup(e);
             }
+
+            var mouseButton = $.zui.getMouseButtonCode(options.mouseButton);
+            if(mouseButton > -1 && e.button !== mouseButton) {
+                return;
+            }
+
             if(that.altKey || e.which === 3 || that.callEvent('start', e) === false) {
                 return;
             }

File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/selectable/zui.selectable.min.js


+ 34 - 12
VisualInspection/node_modules/zui/dist/lib/sortable/zui.sortable.js

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 排序 - v1.6.0 - 2017-03-16
+ * ZUI: 排序 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 /* ========================================================================
@@ -39,7 +39,7 @@
     Sortable.DEFAULTS = DEFAULTS;
     Sortable.NAME     = NAME;
 
-    Sortable.prototype.init = function($list) {
+    Sortable.prototype.init = function() {
         var that         = this,
             $root        = that.$,
             options      = that.options,
@@ -72,7 +72,9 @@
                 orders.reverse();
             }
 
+            that.maxOrder = 0;
             $items.each(function(idx) {
+                that.maxOrder = Math.max(that.maxOrder, orders[idx]);
                 $(this).data(STR_ORDER, orders[idx]).attr('data-' + STR_ORDER, orders[idx]);
             });
         };
@@ -80,16 +82,20 @@
         markOrders();
 
         $root.droppable({
-            handle   : options.trigger,
-            target   : selector,
-            selector : selector,
-            container: $root,
-            always   : options.always,
-            flex     : true,
-            before   : options.before,
+            handle      : options.trigger,
+            target      : selector,
+            selector    : selector,
+            container   : $root,
+            always      : options.always,
+            flex        : true,
+            lazy        : options.lazy,
+            canMoveHere : options.canMoveHere,
+            nested      : options.nested,
+            before      : options.before,
+            mouseButton : options.mouseButton,
             start: function(e) {
                 if(dragCssClass) e.element.addClass(dragCssClass);
-                that.trigger('start');
+                that.trigger('start', e);
             },
             drag: function(e) {
                 $root.addClass(sortingClass);
@@ -98,6 +104,16 @@
                         $target     = e.target,
                         eleOrder    = $ele.data(STR_ORDER),
                         targetOrder = $target.data(STR_ORDER);
+                    if (!eleOrder && eleOrder !== 0) {
+                        that.maxOrder++;
+                        eleOrder = that.maxOrder;
+                        $ele.attr('data-' + STR_ORDER, eleOrder);
+                    }
+                    if (!targetOrder && targetOrder !== 0) {
+                        that.maxOrder++;
+                        targetOrder = that.maxOrder;
+                        $target.attr('data-' + STR_ORDER, targetOrder);
+                    }
                     if(eleOrder == targetOrder) return;
                     else if(eleOrder > targetOrder) {
                         $target[isReverse ? 'after' : 'before']($ele);
@@ -124,7 +140,13 @@
     };
 
     Sortable.prototype.destroy = function() {
-        that.$.droppable('destroy');
+        this.$.droppable('destroy');
+        this.$.data(NAME, null);
+    };
+
+    Sortable.prototype.reset = function() {
+        this.destroy();
+        this.init();
     };
 
     Sortable.prototype.getItems = function(onlyElements) {

File diff suppressed because it is too large
+ 2 - 3
VisualInspection/node_modules/zui/dist/lib/sortable/zui.sortable.min.js


+ 146 - 0
VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.css

@@ -0,0 +1,146 @@
+/*!
+ * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18
+ * http://zui.sexy
+ * GitHub: https://github.com/easysoft/zui.git 
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
+ */
+
+.tabs {
+  position: relative;
+  min-height: 400px;
+  }
+.tabs-navbar {
+  padding: 4px 4px 0 4px;
+  }
+.tabs-nav {
+  height: 30px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  border-bottom: none;
+  border-bottom: 1px solid #ddd;
+  }
+.tab-nav-item {
+  width: 160px;
+  min-width: 0;
+  max-width: 160px;
+  padding-right: 2px;
+  margin-bottom: 0;
+  border: none;
+  }
+.tab-nav-item:hover {
+  min-width: 95px;
+  }
+.tab-nav-link {
+  position: relative;
+  height: 30px;
+  margin: 0;
+  overflow: hidden;
+  background-color: rgba(255, 255, 255, .65);
+  background-color: #e5e5e5;
+  border-color: #ddd;
+  border-bottom: none;
+  border-radius: 2px 2px 0 0;
+  }
+.tab-nav-link > .title {
+  position: absolute;
+  top: 5px;
+  right: 5px;
+  left: 30px;
+  display: block;
+  overflow: hidden;
+  font-size: 14px;
+  line-height: 20px;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  }
+.tab-nav-link > .icon {
+  position: absolute;
+  top: 5px;
+  left: 5px;
+  display: block;
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  text-align: center;
+  opacity: .8;
+  }
+.tab-nav-item.loading .tab-nav-link > .icon:before {
+  content: '\e97b';
+  -webkit-animation: spin 2s infinite linear;
+       -o-animation: spin 2s infinite linear;
+          animation: spin 2s infinite linear;
+  }
+.tab-nav-link > .close {
+  position: absolute;
+  top: 5px;
+  right: 5px;
+  width: 20px;
+  height: 20px;
+  font-weight: 200;
+  line-height: 16px;
+  text-align: center;
+  text-shadow: none;
+  visibility: hidden;
+  border-radius: 4px;
+  opacity: 0;
+  -webkit-transition: all .2s;
+       -o-transition: all .2s;
+          transition: all .2s;
+  }
+.tab-nav-link > .close:hover {
+  color: #fff;
+  background-color: #ea644a;
+  }
+.tab-nav-link:hover > .title {
+  right: 25px;
+  }
+.tab-nav-link:hover > .close {
+  visibility: visible;
+  opacity: 1;
+  }
+.tab-nav-link.not-closable > .close {
+  display: none;
+  }
+.nav-tabs.tabs-nav > li > a,
+.nav-tabs.tabs-nav > li > a:hover,
+.nav-tabs.tabs-nav > li > a:focus {
+  border-color: #ddd #ddd transparent #ddd;
+  }
+.tab-nav-condensed .tab-nav-link > .title {
+  left: 5px;
+  text-overflow: initial;
+  }
+.tab-nav-condensed .tab-nav-link > .icon {
+  display: none;
+  }
+.tabs-container {
+  position: absolute;
+  top: 34px;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  }
+.tabs-container > .tab-pane {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  display: none;
+  }
+.tabs-container > .tab-pane.active {
+  display: block;
+  }
+.tab-iframe-cover {
+  display: none;
+  }
+.tabs-show-contextmenu .tab-iframe-cover {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  display: block;
+  }

+ 488 - 0
VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.js

@@ -0,0 +1,488 @@
+/*!
+ * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18
+ * http://zui.sexy
+ * GitHub: https://github.com/easysoft/zui.git 
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
+ */
+
+/* ========================================================================
+ * ZUI: tabs.js
+ * http://zui.sexy
+ * ========================================================================
+ * Copyright (c) 2017-2018 cnezsoft.com; Licensed MIT
+ * ======================================================================== */
+
+
+(function($) {
+    'use strict';
+
+    /**
+     * Tab object
+     * @param {Object | String} tab
+     */
+    var Tab = function(tab) {
+        var that = this;
+        if(typeof tab === 'string') {
+            that.url = tab;
+        } else if($.isPlainObject(tab)) {
+            $.extend(that, tab);
+        }
+        if(!that.id) {
+            that.id = $.zui.uuid();
+        }
+        if(!that.type) {
+            if(that.iframe) {
+                that.type = 'iframe';
+                that.url = that.url || that.iframe;
+            } else if(that.ajax) {
+                that.type = 'ajax';
+                that.url = that.url || ($.isPlainObject(that.ajax) ? that.ajax.url : that.ajax);
+            } else if(that.url) {
+                that.type = tab.ajax ? 'ajax' : 'iframe';
+            } else {
+                that.type = 'custom';
+            }
+        }
+        that.createTime = new Date().getTime();
+        that.openTime = 0;
+        that.onCreate && that.onCreate.call(that);
+    };
+
+    Tab.prototype.open = function() {
+        var that = this;
+        that.openTime = new Date().getTime();
+        that.onOpen && that.onOpen.call(that);
+    };
+
+    Tab.prototype.close = function() {
+        var that = this;
+        that.openTime = 0;
+        that.onClose && that.onClose.call(that);
+    };
+
+    Tab.create = function(data) {
+        if (data instanceof Tab) {
+            return data;
+        }
+        return new Tab(data);
+    };
+
+    var NAME = 'zui.tabs'; // model name
+    var DEFAULTS = {
+        tabs: [],
+        defaultTabIcon: 'icon-window',
+        contextMenu: true,
+        errorTemplate: '<div class="alert alert-block alert-danger with-icon"><i class="icon-warning-sign"></i><div class="content">{0}</div></div>',
+        // messagerOptions: null,
+        showMessage: true,
+        navTemplate: '<nav class="tabs-navbar"></nav>',
+        containerTemplate: '<div class="tabs-container"></div>'
+    };
+
+    var LANG = {
+        zh_cn: {
+            reload: '重新加载',
+            close: '关闭',
+            closeOthers: '关闭其他标签页',
+            closeRight: '关闭右侧标签页',
+            reopenLast: '恢复上次关闭的标签页',
+            errorCannotFetchFromRemote: '无法从远程服务器({0})获取内容。'
+        },
+        zh_tw: {
+            reload: '重新加載',
+            close: '關閉',
+            closeOthers: '關閉其他標籤頁',
+            closeRight: '關閉右側標籤頁',
+            reopenLast: '恢復上次關閉的標籤頁',
+            errorCannotFetchFromRemote: '無法從遠程服務器({0})獲取內容。'
+        },
+        en: {
+            reload: 'Reload',
+            close: 'Close',
+            closeOthers: 'Close others',
+            closeRight: 'Close right',
+            reopenLast: 'Reopen last',
+            errorCannotFetchFromRemote: 'Cannot fetch data from remote server {0}.'
+        }
+    };
+
+    // The tabs model class
+    var Tabs = function(element, options) {
+        var that = this;
+        that.name = NAME;
+        that.$ = $(element);
+
+        options = that.options = $.extend({}, DEFAULTS, this.$.data(), options);
+        var lang   = options.lang || 'zh_cn';
+        that.lang  = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang];
+
+        // Initialize here
+        var $navbar = that.$.find('.tabs-navbar');
+        if (!$navbar.length) {
+            $navbar = $(options.navTemplate).appendTo(that.$);
+        }
+        that.$navbar = $navbar;
+
+        var $nav = $navbar.find('.tabs-nav');
+        if (!$nav.length) {
+            $nav = $('<ul class="tabs-nav nav nav-tabs"></ul>').appendTo($navbar);
+        }
+        that.$nav = $nav;
+
+        var $tabs = that.$.find('.tabs-container');
+        if (!$tabs.length) {
+            $tabs = $(options.containerTemplate).appendTo(that.$);
+        }
+        that.$tabs = $tabs;
+
+        that.activeTabId = options.defaultTab;
+        var tabs = options.tabs || [];
+        that.tabs = {};
+        $.each(tabs, function(index, item) {
+            var tab = Tab.create(item);
+            that.tabs[tab.id] = tab;
+
+            if (!that.activeTabId) {
+                that.activeTabId = tab.id;
+            }
+
+            that.renderTab(tab);
+        });
+        that.closedTabs = [];
+
+        that.open(that.getActiveTab());
+
+        $nav.on('click.' + NAME, '.tab-nav-link', function () {
+            that.open(that.getTab($(this).data('id')));
+        }).on('click.' + NAME, '.tab-nav-close', function (e) {
+            that.close($(this).closest('.tab-nav-link').data('id'));
+            e.stopPropagation();
+        }).on('resize.' + NAME, function () {
+            that.adjustNavs();
+        });
+
+        if (options.contextMenu) {
+            $nav.contextmenu({
+                selector: '.tab-nav-link',
+                itemsCreator: function (e) {
+                    return that.createMenuItems(that.getTab($(this).data('id')));
+                },
+                onShow: function () {
+                    that.$.addClass('tabs-show-contextmenu');
+                },
+                onHide: function () {
+                    that.$.removeClass('tabs-show-contextmenu');
+                }
+            });
+        }
+    };
+
+    Tabs.prototype.createMenuItems = function (tab) {
+        var that = this;
+        var lang = that.lang;
+        return [{
+            label: lang.reload,
+            onClick: function () {
+                that.open(tab, true);
+            }
+        }, '-', {
+            label: lang.close,
+            disabled: tab.forbidClose,
+            onClick: function () {
+                that.close(tab.id);
+            }
+        }, {
+            label: lang.closeOthers,
+            disabled: that.$nav.find('.tab-nav-item:not(.hidden)').length <= 1,
+            onClick: function () {
+                that.closeOthers(tab.id);
+            }
+        }, {
+            label: lang.closeRight,
+            disabled: !$('#tab-nav-item-' + tab.id).next('.tab-nav-item:not(.hidden)').length,
+            onClick: function () {
+                that.closeRight(tab.id);
+            }
+        }, '-', {
+            label: lang.reopenLast,
+            disabled: !that.closedTabs.length,
+            onClick: function () {
+                that.reopen();
+            }
+        }];
+    };
+
+    Tabs.prototype.adjustNavs = function (immediately) {
+        var that = this;
+        if (!immediately) {
+            if (that.adjustNavsTimer) {
+                clearTimeout(that.adjustNavsTimer);
+            }
+            that.adjustNavsTimer = setTimeout(function() {
+                that.adjustNavs(true);
+            }, 50);
+            return;
+        }
+        if (that.adjustNavsTimer) {
+            that.adjustNavsTimer = null;
+        }
+        var $nav = that.$nav;
+        var $navItems = $nav.find('.tab-nav-item:not(.hidden)');
+        var totalWidth = $nav.width();
+        var totalCount = $navItems.length;
+        var maxWidth = Math.floor(totalWidth/totalCount);
+        if(maxWidth < 96) {
+            maxWidth = Math.floor((totalWidth-96)/(totalCount-1))
+        }
+        $nav.toggleClass('tab-nav-condensed', maxWidth <= 50);
+        $navItems.css('max-width', maxWidth);
+    };
+
+    Tabs.prototype.renderTab = function(tab, beforeTabId) {
+        var that = this;
+        var $nav = that.$nav;
+        var $tabNav = $('#tab-nav-item-' + tab.id);
+        if (!$tabNav.length) {
+            var $a = $('<a class="tab-nav-link"><i class="icon"></i><span class="title"></span><i class="close tab-nav-close" title="' + that.lang.close + '">&times;</i></a>').attr({
+                href: '#tabs-item-' + tab.id,
+                'data-id': tab.id
+            });
+            $tabNav = $('<li class="tab-nav-item" data-id="' + tab.id + '" id="tab-nav-item-' + tab.id + '" />').append($a).appendTo(that.$nav);
+            if (beforeTabId) {
+                var $before$nav = $('#tab-nav-item-' + beforeTabId);
+                if ($before$nav.length) {
+                    $tabNav.insertAfter($before$nav);
+                }
+            }
+            that.adjustNavs();
+        }
+        var $a = $tabNav.find('a').attr('title', tab.desc).toggleClass('not-closable', !!tab.forbidClose);
+        $a.find('.icon').attr('class', 'icon ' + (tab.icon || that.options.defaultTabIcon));
+        $a.find('.title').text(tab.title || tab.defaultTitle || '');
+        return $tabNav;
+    };
+
+    Tabs.prototype.getActiveTab = function() {
+        var that = this;
+        return that.activeTabId ? that.tabs[that.activeTabId] : null;
+    };
+
+    Tabs.prototype.getTab = function(tabId) {
+        var that = this;
+        if (!tabId) {
+            return that.getActiveTab();
+        }
+        if (typeof tabId === 'object') {
+            tabId = tabId.id;
+        }
+        return that.tabs[tabId];
+    };
+
+    Tabs.prototype.close = function(tabId, forceClose) {
+        var that = this;
+        var tab = that.getTab(tabId);
+        if (tab && (forceClose || !tab.forbidClose)) {
+            $('#tab-nav-item-' + tab.id).remove();
+            $('#tab-' + tab.id).remove();
+            tab.close();
+            delete that.tabs[tab.id];
+            that.closedTabs.push(tab);
+            that.$.callComEvent(that, 'onClose', tab);
+
+            var lastTab;
+            $.each(that.tabs, function (tabId, tab) {
+                if (!lastTab || lastTab.openTime < tab.openTime) {
+                    lastTab = tab;
+                }
+            });
+            lastTab && that.open(lastTab);
+        }
+    };
+
+    Tabs.prototype.open = function(tab, forceReload) {
+        var that = this;
+
+        if (!(tab instanceof Tab)) {
+            tab = Tab.create(tab);
+        }
+
+        var $tabNav = that.renderTab(tab);
+        that.$nav.find('.tab-nav-item.active').removeClass('active');
+        $tabNav.addClass('active');
+
+        var $tabPane = $('#tab-' + tab.id);
+        if (!$tabPane.length) {
+            $tabPane = $('<div class="tab-pane" id="tab-' + tab.id + '" />').appendTo(that.$tabs);
+        }
+        that.$tabs.find('.tab-pane.active').removeClass('active');
+        $tabPane.addClass('active');
+
+        tab.open();
+        that.activeTabId = tab.id;
+        that.tabs[tab.id] = tab;
+
+        if (forceReload || !tab.loaded) {
+            that.reload(tab);
+        }
+
+        that.$.callComEvent(that, 'onOpen', tab);
+    };
+
+    Tabs.prototype.showMessage = function (message, type) {
+        $.zui.messager.show(message, $.extend({
+            placement: 'center'
+        }, this.options.messagerOptions, {
+            type: type
+        }));
+    };
+
+    Tabs.prototype.reload = function(tab) {
+        var that = this;
+
+        if (typeof tab === 'string') {
+            tab = that.getTab(tab);
+        } else if (!tab) {
+            tab = that.getActiveTab();
+        }
+
+        if (!tab) {
+            return;
+        }
+
+        if (!tab.openTime) {
+            return that.open(tab);
+        }
+
+        var $tabNav = $('#tab-nav-item-' + tab.id).addClass('loading').removeClass('has-error');
+        var $tabPane = $('#tab-' + tab.id).addClass('loading').removeClass('has-error');
+        var afterRefresh = function (content, error) {
+            if (!tab.openTime) {
+                return;
+            }
+            $tabNav.removeClass('loading');
+            $tabPane.removeClass('loading');
+            that.$.callComEvent(that, 'onLoad', tab);
+            if(typeof content === 'string' || content instanceof $) {
+                if (tab.contentConverter) {
+                    content = tab.contentConverter(content, tab);
+                }
+                $tabPane.empty().append(content);
+                if (!tab.title) {
+                    content = $tabPane.text().replace(/\n/g, '');
+                    tab.title = content.length > 10 ? content.substr(0, 10) : content;
+                    that.renderTab(tab);
+                }
+            }
+            if (error) {
+                $tabNav.addClass('has-error');
+                $tabPane.addClass('has-error');
+                var showMessage = that.options.showMessage;
+                if (showMessage) {
+                    if ($.isFunction(showMessage)) {
+                        error = showMessage(error);
+                    }
+                    that.showMessage(error, 'danger');
+                }
+                if (!content) {
+                    $tabPane.html(that.options.errorTemplate.format(error));
+                }
+            }
+            tab.loaded = new Date().getTime();
+        };
+        if (tab.type === 'ajax') {
+            var ajaxOption = {
+                type: 'get',
+                url: tab.url,
+                error: function(jqXHR, textStatus, errorThrown) {
+                    afterRefresh(false, that.lang.errorCannotFetchFromRemote.format(tab.url));
+                },
+                success: function(data) {
+                    afterRefresh(data);
+                }
+            };
+            if($.isPlainObject(tab.ajax)) {
+                ajaxOption = $.extend(ajaxOption, tab.ajax);
+            }
+            $.ajax(ajaxOption);
+        } else if (tab.type === 'iframe') {
+            try {
+                var iframeName = 'tab-iframe-' + tab.id;
+                var $iframe = $('<iframe id="' + iframeName + '" name="' + iframeName + '" src="' + (tab.url) + '" frameborder="no"  allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"  allowtransparency="true" scrolling="auto" style="width: 100%; height: 100%; left: 0px;"></iframe>');
+                $iframe.appendTo($tabPane.empty());
+                $('<div class="tab-iframe-cover" />').appendTo($tabPane);
+                var frame = document.getElementById(iframeName);
+                frame.onload = frame.onreadystatechange = function() {
+                    if(this.readyState && this.readyState != 'complete') return;
+                    afterRefresh();
+                    var contentDocument = frame.contentDocument;
+                    if (contentDocument && !tab.title) {
+                        tab.title = contentDocument.title;
+                        that.renderTab(tab);
+                    }
+                };
+            } catch (e) {
+                afterRefresh();
+            }
+        } else {
+            var content = tab.content || tab.custom;
+            if (typeof content === 'function') {
+                content = content(tab, afterRefresh, that);
+                if (content !== true) {
+                    afterRefresh(content);
+                }
+            } else {
+                afterRefresh(content);
+            }
+        }
+    };
+
+    Tabs.prototype.closeOthers = function(tabId) {
+        var that = this;
+        that.$nav.find('.tab-nav-link:not(.hidden)').each(function() {
+            var thisTabId = $(this).data('id');
+            if (thisTabId !== tabId) {
+                that.close(thisTabId);
+            }
+        });
+    };
+
+    Tabs.prototype.closeRight = function(tabId) {
+        var $tabNav = $('#tab-nav-item-' + tabId);
+        var $rightNav = $tabNav.next('.tab-nav-item:not(.hidden)');
+        while ($rightNav.length) {
+            this.close($rightNav.data('id'));
+            $rightNav = $tabNav.next('.tab-nav-item:not(.hidden)');
+        }
+    };
+
+    Tabs.prototype.closeAll = function() {
+        var that = this;
+        that.$nav.find('.tab-nav-link:not(.hidden)').each(function() {
+            that.close($(this).data('id'));
+        });
+    };
+
+    Tabs.prototype.reopen = function() {
+        var that = this;
+        if(that.closedTabs.length) {
+            that.open(that.closedTabs.pop());
+        }
+    };
+
+    // Extense jquery element
+    $.fn.tabs = function(option) {
+        return this.each(function() {
+            var $this = $(this);
+            var data = $this.data(NAME);
+            var options = typeof option == 'object' && option;
+
+            if(!data) $this.data(NAME, (data = new Tabs(this, options)));
+
+            if(typeof option == 'string') data[option]();
+        });
+    };
+
+    Tabs.NAME = NAME;
+    $.fn.tabs.Constructor = Tabs;
+}(jQuery));
+

File diff suppressed because it is too large
+ 5 - 0
VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.min.css


File diff suppressed because it is too large
+ 6 - 0
VisualInspection/node_modules/zui/dist/lib/tabs/zui.tabs.min.js


+ 120 - 0
VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.css

@@ -0,0 +1,120 @@
+/*!
+ * ZUI: 树形图 - v1.8.1 - 2018-01-18
+ * http://zui.sexy
+ * GitHub: https://github.com/easysoft/zui.git 
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
+ */
+
+.treemap-data {
+  text-align: left;
+  }
+.treemap-nodes {
+  position: relative;
+  display: table;
+  padding: 10px;
+  margin-right: auto;
+  margin-left: auto;
+  text-align: center;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+  }
+.treemap-node {
+  display: table-cell;
+  vertical-align: top;
+  }
+.treemap-node-wrapper {
+  position: relative;
+  z-index: 5;
+  display: inline-block;
+  padding: 5px 10px;
+  border: 1px solid #808080;
+  border-radius: 1px;
+  }
+a.treemap-node-wrapper {
+  color: #353535;
+  cursor: pointer;
+  }
+a.treemap-node-wrapper:active,
+a.treemap-node-wrapper:focus,
+a.treemap-node-wrapper:hover {
+  color: #3280fc;
+  text-decoration: none;
+  background-color: #ebf2f9;
+  border-color: #3280fc;
+  }
+.treemap-node-root > .treemap-node-wrapper {
+  background-color: rgba(0, 0, 0, .1);
+  }
+.treemap-node-children {
+  display: table;
+  margin-top: 20px auto 0;
+  }
+.treemap-line-top,
+.treemap-line-bottom {
+  position: absolute;
+  top: 100%;
+  left: 50%;
+  margin-left: -1px;
+  border-right: none!important;
+  border-bottom: none!important;
+  }
+.treemap-line-top {
+  top: 0;
+  }
+.treemap-node > .treemap-line {
+  position: absolute;
+  right: 0;
+  left: 0;
+  z-index: 1;
+  border-right: none!important;
+  border-bottom: none!important;
+  }
+.treemap-node-fold-icon {
+  position: absolute;
+  top: -6px;
+  left: -5px;
+  z-index: 10;
+  display: block!important;
+  width: 10px;
+  height: 10px;
+  line-height: 10px;
+  color: #808080;
+  background-color: #fff;
+  border-radius: 5px;
+  opacity: 0;
+  -webkit-transition: opacity .2s, -webkit-transform .1s;
+       -o-transition: opacity .2s, -o-transform .1s;
+          transition: opacity .2s, -webkit-transform .1s;
+          transition: opacity .2s, transform .1s;
+          transition: opacity .2s, transform .1s, -webkit-transform .1s, -o-transform .1s;
+  }
+.treemap-node-fold-icon:before {
+  min-width: 10px;
+  content: '\e6f2';
+  }
+.treemap-node-wrapper:hover .treemap-node-fold-icon {
+  opacity: 1;
+  }
+.treemap-node.collapsed > .treemap-line,
+.treemap-node.collapsed .treemap-line-bottom {
+  border-color: transparent!important;
+  }
+.treemap-node.collapsed > .treemap-node-children {
+  display: none;
+  }
+.treemap-node.collapsed .treemap-node-fold-icon {
+  top: -6px;
+  color: #808080;
+  opacity: 1;
+  -webkit-transform: none!important;
+      -ms-transform: none!important;
+       -o-transform: none!important;
+          transform: none!important;
+  }
+.treemap-node.collapsed .treemap-node-fold-icon:before {
+  content: '\e6f1';
+  }
+.treemap-node.tree-node-collapsing > .treemap-line,
+.treemap-node.tree-node-collapsing > .treemap-node-children {
+  visibility: hidden;
+  }

+ 415 - 0
VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.js

@@ -0,0 +1,415 @@
+/*!
+ * ZUI: 树形图 - v1.8.1 - 2018-01-18
+ * http://zui.sexy
+ * GitHub: https://github.com/easysoft/zui.git 
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
+ */
+
+/* ========================================================================
+ * ZUI: treemap.js
+ * http://zui.sexy
+ * ========================================================================
+ * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT
+ * ======================================================================== */
+
+
+// Tree map data format
+// {
+//      text: main text,
+//      html: main text as html format
+//      style: node style,
+//      textColor: text color,
+//      color: background color
+//      border: border style,
+//      cableWidth: 2,
+//      cableColor: '#808080'
+//      cableStyle: 'solid'
+// }
+
+
+(function($, window, document, Math, undefined) {
+    'use strict';
+
+    var NAME = 'zui.treemap',
+        DEFAULTS = {
+            data: [],
+            // direction: 'bottom', // or 'top', 'left', 'right'
+            cableWidth: 1,
+            cableColor: '#808080',
+            cableStyle: 'solid',
+            rowSpace: 30,
+            nodeSpace: 20,
+            listenNodeResize: true,
+            nodeTemplate: '<div class="treemap-node"><a class="treemap-node-wrapper"></a></div>',
+            foldable: true,
+            clickNodeToFold: true,
+            // sort: false, // Boolean or function
+            // tooltip: null,
+            // nodeStyle: null,
+        };
+        // var  DEFAULT_NODE = {
+            // id: uuid(),           // uuid
+            // text: '',             // main text,
+            // html: '',             // main text as html format
+            // style: null,          // node element style
+            // textColor: '',        // text color
+            // color: '',            // background color
+            // border: '',           // border style,
+            // tooltip: ''           // node caption
+            // attrs: null           // attrs
+            // title: ''             // node title
+            // tooltip: ''           // node tooltip
+        // };
+
+    var getDataFromUlList = function($list) {
+        return $list.children('li,.treemap-data-item').map(function() {
+            var $item = $(this),
+                item = $item.data(),
+                $text = $item.children('.text'),
+                $html = $item.children('.content'),
+                $children = $item.children('ul,.treemap-data-list');
+            if($text.length) item.text = $text.text();
+            if($html.length) item.html = $html.html();
+            if($children.length) {
+                item.children = getDataFromUlList($children);
+            }
+            if(!item.text && !item.html) {
+                var $content = $item.children(':not(ul,.treemap-data-list)');
+                var $itemClone = $item.clone();
+                $itemClone.find('ul,.treemap-data-list').remove();
+                if(!$content.length) {
+                    item.text = $itemClone.text();
+                } else {
+                    item.html = $itemClone.html();
+                }
+            }
+            return item;
+        }).get();
+    };
+
+    var Treemap = function(element, options) {
+        var $element = $(element);
+        if($.isArray(options)) {
+            options = {data: options};
+        }
+        options = $.extend({}, DEFAULTS, $element.data(), options);
+
+        var data = options.data || [];
+        if(!data.length) {
+            var $dataList = $element.children('.treemap-data');
+            if($dataList.length) {
+                data = getDataFromUlList($dataList.hide());
+            }
+        }
+
+        var $nodes = $element.children('.treemap-nodes');
+        if(!$nodes.length) {
+            $nodes = $('<div class="treemap-nodes" unselectable="on"/>').appendTo($element);
+        }
+
+        var that     = this;
+        that.$       = $element;
+        that.$nodes  = $nodes;
+        that.data    = $.isArray(data) ? data : [data];
+        that.options = options;
+        that.offsetX = 0;
+        that.offsetY = 0;
+        that.scale   = options.scale || 1;
+
+        // Bind events
+
+        that.render();
+
+        $nodes.on('resize', '.treemap-node-wrapper', function() {
+            that.delayDrawLines();
+        });
+        if(options.foldable) {
+            $nodes.on('click', options.clickNodeToFold ? '.treemap-node-wrapper' : '.treemap-node-fold-icon', function() {
+                that.toggle($(this).closest('.treemap-node'));
+            });
+        }
+
+        $nodes.on('click', '.treemap-node-wrapper', function() {
+            var $node = $(this).closest('.treemap-node');
+            that.callEvent('onNodeClick', $node.data('node'));
+        });
+    };
+
+    Treemap.prototype.toggle = function($node, toggle, ignoreAnimation) {
+        var that = this;
+        if(typeof $node === 'boolean') {
+            toggle = $node;
+            $node = null;
+        }
+        if(!$node) {
+            $node = that.$nodes.children('.treemap-node').first();
+        }
+        if($node)
+        {
+            if($node.data('node').foldable === false) {
+                return;
+            }
+            if(toggle === undefined) {
+                toggle = $node.hasClass('collapsed');
+            }
+            $node.toggleClass('collapsed', !toggle).find('[data-toggle="tooltip"]').tooltip('hide');
+            if (!ignoreAnimation) {
+                $node.addClass('tree-node-collapsing')
+            }
+            that.$nodes.find('.tooltip').remove();
+            that.drawLines();
+            if (!ignoreAnimation) {
+                $node.removeClass('tree-node-collapsing');
+            } else {
+                clearTimeout(that.toggleTimeTask);
+                that.toggleTimeTask = setTimeout(function() {
+                    $node.removeClass('tree-node-collapsing');
+                }, 200);
+            }
+        }
+    };
+
+    Treemap.prototype.showLevel = function(level) {
+        var that = this;
+        that.$nodes.find('.treemap-node').each(function() {
+            var $node = $(this);
+            that.toggle($node, $node.data('level') < level, true);
+        });
+    };
+
+    Treemap.prototype.render = function(data) {
+        var that = this;
+        that.data = data ? ($.isArray(data) ? data : [data]) : that.data;
+
+        if(that.data) {
+            that.createNodes();
+            that.drawLines();
+            that.delayDrawLines(500);
+        }
+
+        that.callEvent('afterRender');
+    };
+
+    Treemap.prototype.createNodes = function(nodes, parent, callback) {
+        var that       = this,
+            options    = that.options,
+            rowSpace   = options.rowSpace,
+            $nodes     = that.$nodes;
+        if(!parent) {
+            $nodes.find('.treemap-node-wrapper').off('resize.' + NAME);
+            $nodes.empty();
+        }
+        if(options.sort) {
+            nodes.sort($.isFunction(options.sort) ? options.sort : function(nodeX, nodeY) {
+                return (nodeX.order || 0) - (nodeY.order);
+            });
+        }
+        var lastNode = null;
+        nodes = nodes || that.data;
+        if (!parent) {
+            that.maxLevel = 1;
+        }
+        $.each(nodes, function(idx, node) {
+            if(typeof node === 'string') {
+                node = {html: node};
+                nodes[idx] = node;
+            }
+
+            if(!node.id) node.id = $.zui.uuid();
+            node.level = parent ? (parent.level + 1) : 1;
+            that.maxLevel = Math.max(that.maxLevel, node.level);
+
+            // Create node element
+            var isCustomNodeTemplate = $.isFunction(options.nodeTemplate);
+            var $node = isCustomNodeTemplate ? options.nodeTemplate(node, that) : $(options.nodeTemplate);
+
+            // Create node wrapper element
+            var $wrapper = $node.find('.treemap-node-wrapper');
+            if(!$wrapper.length) {
+                $wrapper = $('<div class="treemap-node-wrapper"/>').appendTo($node);
+            }
+
+            var children = node.children;
+            var hasChild = children && children.length;
+            node.isOnlyOneChild = hasChild === 1;
+
+            // Set node data attributes
+            node.idx    = idx;
+            var row = parent ? (parent.row + 1) : 0;
+            $node.toggleClass('treemap-node-has-child', !!hasChild)
+                 .toggleClass('treemap-node-has-parent', !!parent)
+                 .toggleClass('treemap-node-one-child', hasChild === 1)
+                 .toggleClass('collapsed', !!node.collapsed && node.collapsed !== 'false')
+                 .toggleClass('treemap-node-root', !row)
+                 .attr({'data-id': node.id, 'data-level': node.level}).data('node', node);
+            if(node.className) {
+                $node.addClass(node.className);
+            }
+            node.row = row;
+
+            // Set node element attributes and sytle
+            var style = $.extend({}, options.nodeStyle, node.style);
+            if(node.textColor) style.color = node.textColor;
+            if(node.color) style.backgroundColor = node.color;
+            if(node.border) style.border = node.border;
+            var attrs = $.extend({}, node.attrs, {
+                title: node.caption
+            });
+            if(node.tooltip) {
+                attrs['data-toggle'] = 'tooltip';
+                attrs.title = node.tooltip;
+            }
+            $wrapper.attr(attrs).css(style);
+            if(lastNode) {
+                $node.css('padding-left', options.nodeSpace);
+            }
+            if(!isCustomNodeTemplate) {
+                if(node.html) $wrapper.append(node.html);
+                else if(node.text) $wrapper.text(node.text);
+            }
+
+            // append node element to ducument
+            $node.appendTo(parent ? parent.$children : $nodes);
+
+            // Save sizes
+            // node.bounds = {
+            //     width  : $wrapper.outerWidth(),
+            //     height : $wrapper.outerHeight()
+            // };
+
+            if(lastNode) {
+                lastNode.next = node;
+            }
+            node.prev     = lastNode;
+            node.parent   = parent;
+            node.$        = $node;
+            node.$wrapper = $wrapper;
+
+            // Create children
+            if(hasChild) {
+                var $children = $node.find('.treemap-node-children');
+                if(!$children.length) {
+                    $children = $('<div class="treemap-node-children"/>').appendTo($node);
+                }
+                $children.css('margin-top', rowSpace);
+                node.$children = $children;
+                that.createNodes(children, node);
+            }
+
+            if(options.listenNodeResize) {
+                $wrapper.on('resize.' + NAME, function() {
+                    // node.bounds.width = $wrapper.outerWidth();
+                    // node.bounds.height = $wrapper.outerHeight();
+                    that.delayDrawLines();
+                });
+            }
+
+            lastNode    = node;
+            callback && callback($node, node);
+        });
+
+        if(!parent) {
+            // Init tooltip
+            $nodes.find('[data-toggle="tooltip"]').tooltip(options.tooltip);
+        }
+    };
+
+    Treemap.prototype.delayDrawLines = function(delay) {
+        var that = this;
+        clearTimeout(that.delayDrawLinesTask);
+        that.delayDrawLinesTask = setTimeout(function() {
+            that.drawLines();
+        }, delay || 10);
+    };
+
+    Treemap.prototype.drawLines = function(nodes, parent) {
+        var that       = this,
+            options    = that.options,
+            rowSpace   = options.rowSpace;
+        var cableStyle = {};
+        if(options.cableWidth) cableStyle.borderWidth = options.cableWidth;
+        if(options.cableStyle) cableStyle.borderStyle = options.cableStyle;
+        if(options.cableColor) cableStyle.borderColor = options.cableColor;
+        var rowSpaceHalf = Math.round(rowSpace/2);
+        var nodesOffsetLeft = that.$nodes.offset().left;
+        $.each(nodes || that.data, function(idx, node) {
+            var $wrapper = node.$wrapper;
+            var children = node.children;
+            var nodeCableStyle = $.extend({
+                height: rowSpaceHalf,
+                top: -rowSpaceHalf - 1,
+                left: Math.round(($wrapper.outerWidth() - cableStyle.borderWidth)/2),
+                color: cableStyle.borderColor
+            }, cableStyle);
+            if(parent && !parent.isOnlyOneChild) {
+                var $topLine = $wrapper.find('.treemap-line-top');
+                if(!$topLine.length) {
+                    $topLine = $('<div class="treemap-line-top"/>').appendTo($wrapper);
+                }
+                $topLine.css(nodeCableStyle);
+            }
+            if(children && children.length) {
+                nodeCableStyle.top = $wrapper.outerHeight() - 1;
+                if(node.isOnlyOneChild) {
+                    nodeCableStyle.height = rowSpace;
+                }
+                var $bottomLine = $wrapper.find('.treemap-line-bottom');
+                if(!$bottomLine.length) {
+                    $bottomLine = $('<div class="treemap-line-bottom"/>').appendTo($wrapper);
+                    if(options.foldable) {
+                        $bottomLine.append('<i class="treemap-node-fold-icon icon" style="transform: translate(-' + Math.floor(nodeCableStyle.borderWidth/2) + 'px, ' + rowSpaceHalf + 'px)"/>');
+                    }
+                }
+                $bottomLine.css(nodeCableStyle);
+                that.drawLines(children, node);
+                if(children.length > 1) {
+                    var firstChild = children[0],
+                        lastChild = children[children.length - 1];
+
+                    var $centerLine = node.$.children('.treemap-line');
+                    if(!$centerLine.length) {
+                        $centerLine = $('<div class="treemap-line"/>').insertAfter($wrapper);
+                    }
+                    var lineLeft = Math.round(firstChild.$wrapper.offset().left - nodesOffsetLeft + firstChild.$wrapper.outerWidth()/2);
+                    $centerLine.css($.extend({
+                        marginTop: rowSpaceHalf,
+                        left: lineLeft,
+                        width: lastChild.$wrapper.offset().left - nodesOffsetLeft -lineLeft + lastChild.$wrapper.outerWidth()/2
+                    }, cableStyle));
+                }
+            }
+        });
+
+        if(!parent) {
+            that.callEvent('afterDrawLines');
+        }
+    };
+
+    // Call event
+    Treemap.prototype.callEvent = function(name, params) {
+        var that = this;
+        if(!$.isArray(params)) params = [params];
+        that.$.trigger(name, params);
+        if($.isFunction(that.options[name])) {
+            return that.options[name].apply(that, params);
+        }
+    };
+
+    Treemap.DEFAULTS = DEFAULTS;
+    Treemap.NAME     = NAME;
+
+    $.fn.treemap = function(option, param1, parma2) {
+        return this.each(function() {
+            var $this = $(this);
+            var data = $this.data(NAME);
+            var options = typeof option == 'object' && option;
+
+            if(!data) $this.data(NAME, (data = new Treemap(this, options)));
+
+            if(typeof option == 'string') data[option](param1, parma2);
+        });
+    };
+
+    $.fn.treemap.Constructor = Treemap;
+}(jQuery, window, document, Math, undefined));
+

File diff suppressed because it is too large
+ 5 - 0
VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.min.css


File diff suppressed because it is too large
+ 6 - 0
VisualInspection/node_modules/zui/dist/lib/treemap/zui.treemap.min.js


+ 6 - 3
VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.css

@@ -1,8 +1,8 @@
 /*!
- * ZUI: 文件上传 - v1.6.0 - 2017-03-16
+ * ZUI: 文件上传 - v1.8.1 - 2018-01-18
  * http://zui.sexy
  * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
+ * Copyright (c) 2018 cnezsoft.com; Licensed MIT
  */
 
 .uploader {
@@ -56,6 +56,9 @@
   -ms-flex-pack: center;
           justify-content: center;
   }
+.ie [data-drop-placeholder]:before {
+  display: none !important;
+  }
 .file-dragable[data-drop-placeholder]:before {
   filter: alpha(opacity=100);
   opacity: 1;
@@ -86,6 +89,7 @@
   line-height: 32px;
   color: #ddd;
   text-align: center;
+  pointer-events: none;
   content: attr(data-drag-placeholder);
   -webkit-transition: all .4s;
        -o-transition: all .4s;
@@ -311,7 +315,6 @@
   left: 0;
   z-index: 1;
   display: none;
-  height: 30px;
   padding: 5px 10px;
   color: #fff;
   background: #3280fc;

File diff suppressed because it is too large
+ 61 - 25
VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.js


File diff suppressed because it is too large
+ 1 - 2
VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.min.css


File diff suppressed because it is too large
+ 2 - 2
VisualInspection/node_modules/zui/dist/lib/uploader/zui.uploader.min.js


File diff suppressed because it is too large
+ 2028 - 2
VisualInspection/node_modules/zui/docs/css/doc.css


File diff suppressed because it is too large
+ 1 - 2
VisualInspection/node_modules/zui/docs/css/doc.min.css


+ 0 - 12060
VisualInspection/node_modules/zui/docs/css/zui.css

@@ -1,12060 +0,0 @@
-/*!
- * ZUI: ZUI for official website - v1.6.0 - 2017-03-16
- * http://zui.sexy
- * GitHub: https://github.com/easysoft/zui.git 
- * Copyright (c) 2017 cnezsoft.com; Licensed MIT
- */
-
-/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
-
-/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-  display: block;
-  }
-audio,
-canvas,
-video {
-  display: inline-block;
-  }
-audio:not([controls]) {
-  display: none;
-  height: 0;
-  }
-[hidden],
-template {
-  display: none;
-  }
-html {
-  font-family: sans-serif;
-
-      -ms-text-size-adjust: 100%;
-  -webkit-text-size-adjust: 100%;
-  }
-body {
-  margin: 0;
-  }
-a {
-  background: transparent;
-  }
-a:focus {
-  outline: thin dotted;
-  }
-a:active,
-a:hover {
-  outline: 0;
-  }
-h1 {
-  margin: .67em 0;
-  font-size: 2em;
-  }
-abbr[title] {
-  border-bottom: 1px dotted;
-  }
-b,
-strong {
-  font-weight: bold;
-  }
-dfn {
-  font-style: italic;
-  }
-hr {
-  height: 0;
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  }
-mark {
-  color: #000;
-  background: #ff0;
-  }
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, serif;
-  font-size: 1em;
-  }
-pre {
-  white-space: pre-wrap;
-  }
-q {
-  quotes: "\201C" "\201D" "\2018" "\2019";
-  }
-small {
-  font-size: 80%;
-  }
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-  }
-sup {
-  top: -.5em;
-  }
-sub {
-  bottom: -.25em;
-  }
-img {
-  border: 0;
-  }
-svg:not(:root) {
-  overflow: hidden;
-  }
-figure {
-  margin: 0;
-  }
-fieldset {
-  padding: .35em .625em .75em;
-  margin: 0 2px;
-  border: 1px solid #c0c0c0;
-  }
-legend {
-  padding: 0;
-  border: 0;
-  }
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-family: inherit;
-  font-size: 100%;
-  }
-button,
-input {
-  line-height: normal;
-  }
-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;
-  }
-input[type="checkbox"],
-input[type="radio"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  padding: 0;
-  }
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-  }
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-  }
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-  }
-textarea {
-  overflow: auto;
-  vertical-align: top;
-  }
-table {
-  border-spacing: 0;
-  border-collapse: collapse;
-  }
-.clearfix:before,
-.clearfix:after,
-.container:before,
-.container:after,
-.container-fluid:before,
-.container-fluid:after,
-.container-fixed:before,
-.container-fixed:after,
-.container-fixed-md:before,
-.container-fixed-md:after,
-.container-fixed-sm:before,
-.container-fixed-sm:after,
-.container-fixed-xs:before,
-.container-fixed-xs:after,
-.row:before,
-.row:after,
-.dl-horizontal dd:before,
-.dl-horizontal dd:after,
-.btn-toolbar:before,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after,
-.panel-body:before,
-.panel-body:after,
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after,
-.pager-justify:before,
-.pager-justify:after,
-.pager-loose:before,
-.pager-loose:after,
-.nav:before,
-.nav:after,
-.navbar:before,
-.navbar:after,
-.navbar-header:before,
-.navbar-header:after,
-.navbar-collapse:before,
-.navbar-collapse:after,
-.modal-header:before,
-.modal-header:after,
-.modal-footer:before,
-.modal-footer:after,
-.cards:before,
-.cards:after,
-.btn-group-vertical > .btn-group-vertical:before,
-.btn-group-vertical > .btn-group-vertical:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.clearfix:after,
-.container:after,
-.container-fluid:after,
-.container-fixed:after,
-.container-fixed-md:after,
-.container-fixed-sm:after,
-.container-fixed-xs:after,
-.row:after,
-.dl-horizontal dd:after,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:after,
-.panel-body:after,
-.form-horizontal .form-group:after,
-.pager-justify:after,
-.pager-loose:after,
-.nav:after,
-.navbar:after,
-.navbar-header:after,
-.navbar-collapse:after,
-.modal-header:after,
-.modal-footer:after,
-.cards:after,
-.btn-group-vertical > .btn-group-vertical:after {
-  clear: both;
-  }
-.center-block {
-  display: block;
-  margin-right: auto;
-  margin-left: auto;
-  }
-.pull-right {
-  float: right !important;
-  }
-.pull-left {
-  float: left !important;
-  }
-.hide {
-  display: none;
-  }
-.showing {
-  display: block;
-  }
-.hidden {
-  display: none!important;
-  visibility: hidden !important;
-  }
-.show {
-  display: block!important;
-  visibility: visible !important;
-  }
-.invisible {
-  visibility: hidden;
-  }
-.text-hide {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-  }
-.affix {
-  position: fixed;
-  }
-.with-padding {
-  padding: 5px 12px;
-  }
-.visible-xs,
-.inline.visible-xs,
-.inline-block.visible-xs,
-tr.visible-xs,
-th.visible-xs,
-td.visible-xs {
-  display: none !important;
-  }
-@media (max-width: 767px) {
-  .visible-xs {
-    display: block !important;
-    }
-  .inline.visible-xs {
-    display: inline !important;
-    }
-  .inline-block.visible-xs {
-    display: inline-block !important;
-    }
-  tr.visible-xs {
-    display: table-row !important;
-    }
-  th.visible-xs,
-  td.visible-xs {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-xs.visible-sm {
-    display: block !important;
-    }
-  .inline.visible-xs.visible-sm {
-    display: inline !important;
-    }
-  .inline-block.visible-xs.visible-sm {
-    display: inline-block !important;
-    }
-  tr.visible-xs.visible-sm {
-    display: table-row !important;
-    }
-  th.visible-xs.visible-sm,
-  td.visible-xs.visible-sm {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-xs.visible-md {
-    display: block !important;
-    }
-  .inline.visible-xs.visible-md {
-    display: inline !important;
-    }
-  .inline-block.visible-xs.visible-md {
-    display: inline-block !important;
-    }
-  tr.visible-xs.visible-md {
-    display: table-row !important;
-    }
-  th.visible-xs.visible-md,
-  td.visible-xs.visible-md {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .visible-xs.visible-lg {
-    display: block !important;
-    }
-  .inline.visible-xs.visible-lg {
-    display: inline !important;
-    }
-  .inline-block.visible-xs.visible-lg {
-    display: inline-block !important;
-    }
-  tr.visible-xs.visible-lg {
-    display: table-row !important;
-    }
-  th.visible-xs.visible-lg,
-  td.visible-xs.visible-lg {
-    display: table-cell !important;
-    }
-  }
-.visible-sm,
-.inline.visible-sm,
-.inline-block.visible-sm,
-tr.visible-sm,
-th.visible-sm,
-td.visible-sm {
-  display: none !important;
-  }
-@media (max-width: 767px) {
-  .visible-sm.visible-xs {
-    display: block !important;
-    }
-  .inline.visible-sm.visible-xs {
-    display: inline !important;
-    }
-  .inline-block.visible-sm.visible-xs {
-    display: inline-block !important;
-    }
-  tr.visible-sm.visible-xs {
-    display: table-row !important;
-    }
-  th.visible-sm.visible-xs,
-  td.visible-sm.visible-xs {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm {
-    display: block !important;
-    }
-  .inline.visible-sm {
-    display: inline !important;
-    }
-  .inline-block.visible-sm {
-    display: inline-block !important;
-    }
-  tr.visible-sm {
-    display: table-row !important;
-    }
-  th.visible-sm,
-  td.visible-sm {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-sm.visible-md {
-    display: block !important;
-    }
-  .inline.visible-sm.visible-md {
-    display: inline !important;
-    }
-  .inline-block.visible-sm.visible-md {
-    display: inline-block !important;
-    }
-  tr.visible-sm.visible-md {
-    display: table-row !important;
-    }
-  th.visible-sm.visible-md,
-  td.visible-sm.visible-md {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .visible-sm.visible-lg {
-    display: block !important;
-    }
-  .inline.visible-sm.visible-lg {
-    display: inline !important;
-    }
-  .inline-block.visible-sm.visible-lg {
-    display: inline-block !important;
-    }
-  tr.visible-sm.visible-lg {
-    display: table-row !important;
-    }
-  th.visible-sm.visible-lg,
-  td.visible-sm.visible-lg {
-    display: table-cell !important;
-    }
-  }
-.visible-md,
-.inline.visible-md,
-.inline-block.visible-md,
-tr.visible-md,
-th.visible-md,
-td.visible-md {
-  display: none !important;
-  }
-@media (max-width: 767px) {
-  .visible-md.visible-xs {
-    display: block !important;
-    }
-  .inline.visible-md.visible-xs {
-    display: inline !important;
-    }
-  .inline-block.visible-md.visible-xs {
-    display: inline-block !important;
-    }
-  tr.visible-md.visible-xs {
-    display: table-row !important;
-    }
-  th.visible-md.visible-xs,
-  td.visible-md.visible-xs {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-md.visible-sm {
-    display: block !important;
-    }
-  .inline.visible-md.visible-sm {
-    display: inline !important;
-    }
-  .inline-block.visible-md.visible-sm {
-    display: inline-block !important;
-    }
-  tr.visible-md.visible-sm {
-    display: table-row !important;
-    }
-  th.visible-md.visible-sm,
-  td.visible-md.visible-sm {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md {
-    display: block !important;
-    }
-  .inline.visible-md {
-    display: inline !important;
-    }
-  .inline-block.visible-md {
-    display: inline-block !important;
-    }
-  tr.visible-md {
-    display: table-row !important;
-    }
-  th.visible-md,
-  td.visible-md {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .visible-md.visible-lg {
-    display: block !important;
-    }
-  .inline.visible-md.visible-lg {
-    display: inline !important;
-    }
-  .inline-block.visible-md.visible-lg {
-    display: inline-block !important;
-    }
-  tr.visible-md.visible-lg {
-    display: table-row !important;
-    }
-  th.visible-md.visible-lg,
-  td.visible-md.visible-lg {
-    display: table-cell !important;
-    }
-  }
-.visible-lg,
-.inline.visible-lg,
-.inline-block.visible-lg,
-tr.visible-lg,
-th.visible-lg,
-td.visible-lg {
-  display: none !important;
-  }
-@media (max-width: 767px) {
-  .visible-lg.visible-xs {
-    display: block !important;
-    }
-  .inline.visible-lg.visible-xs {
-    display: inline !important;
-    }
-  .inline-block.visible-lg.visible-xs {
-    display: inline-block !important;
-    }
-  tr.visible-lg.visible-xs {
-    display: table-row !important;
-    }
-  th.visible-lg.visible-xs,
-  td.visible-lg.visible-xs {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-lg.visible-sm {
-    display: block !important;
-    }
-  .inline.visible-lg.visible-sm {
-    display: inline !important;
-    }
-  .inline-block.visible-lg.visible-sm {
-    display: inline-block !important;
-    }
-  tr.visible-lg.visible-sm {
-    display: table-row !important;
-    }
-  th.visible-lg.visible-sm,
-  td.visible-lg.visible-sm {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-lg.visible-md {
-    display: block !important;
-    }
-  .inline.visible-lg.visible-md {
-    display: inline !important;
-    }
-  .inline-block.visible-lg.visible-md {
-    display: inline-block !important;
-    }
-  tr.visible-lg.visible-md {
-    display: table-row !important;
-    }
-  th.visible-lg.visible-md,
-  td.visible-lg.visible-md {
-    display: table-cell !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .visible-lg {
-    display: block !important;
-    }
-  .inline.visible-lg {
-    display: inline !important;
-    }
-  .inline-block.visible-lg {
-    display: inline-block !important;
-    }
-  tr.visible-lg {
-    display: table-row !important;
-    }
-  th.visible-lg,
-  td.visible-lg {
-    display: table-cell !important;
-    }
-  }
-.hidden-xs {
-  display: block !important;
-  }
-.inline.hidden-xs {
-  display: inline !important;
-  }
-.inline-block.hidden-xs {
-  display: inline-block !important;
-  }
-tr.hidden-xs {
-  display: table-row !important;
-  }
-th.hidden-xs,
-td.hidden-xs {
-  display: table-cell !important;
-  }
-@media (max-width: 767px) {
-  .hidden-xs,
-  .inline.hidden-xs,
-  .inline-block.hidden-xs,
-  tr.hidden-xs,
-  th.hidden-xs,
-  td.hidden-xs {
-    display: none !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-xs.hidden-sm,
-  .inline.hidden-xs.hidden-sm,
-  .inline-block.hidden-xs.hidden-sm,
-  tr.hidden-xs.hidden-sm,
-  th.hidden-xs.hidden-sm,
-  td.hidden-xs.hidden-sm {
-    display: none !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-xs.hidden-md,
-  .inline.hidden-xs.hidden-md,
-  .inline-block.hidden-xs.hidden-md,
-  tr.hidden-xs.hidden-md,
-  th.hidden-xs.hidden-md,
-  td.hidden-xs.hidden-md {
-    display: none !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .hidden-xs.hidden-lg,
-  .inline.hidden-xs.hidden-lg,
-  .inline-block.hidden-xs.hidden-lg,
-  tr.hidden-xs.hidden-lg,
-  th.hidden-xs.hidden-lg,
-  td.hidden-xs.hidden-lg {
-    display: none !important;
-    }
-  }
-.hidden-sm {
-  display: block !important;
-  }
-.inline.hidden-sm {
-  display: inline !important;
-  }
-.inline-block.hidden-sm {
-  display: inline-block !important;
-  }
-tr.hidden-sm {
-  display: table-row !important;
-  }
-th.hidden-sm,
-td.hidden-sm {
-  display: table-cell !important;
-  }
-@media (max-width: 767px) {
-  .hidden-sm.hidden-xs,
-  .inline.hidden-sm.hidden-xs,
-  .inline-block.hidden-sm.hidden-xs,
-  tr.hidden-sm.hidden-xs,
-  th.hidden-sm.hidden-xs,
-  td.hidden-sm.hidden-xs {
-    display: none !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-sm,
-  .inline.hidden-sm,
-  .inline-block.hidden-sm,
-  tr.hidden-sm,
-  th.hidden-sm,
-  td.hidden-sm {
-    display: none !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-sm.hidden-md,
-  .inline.hidden-sm.hidden-md,
-  .inline-block.hidden-sm.hidden-md,
-  tr.hidden-sm.hidden-md,
-  th.hidden-sm.hidden-md,
-  td.hidden-sm.hidden-md {
-    display: none !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .hidden-sm.hidden-lg,
-  .inline.hidden-sm.hidden-lg,
-  .inline-block.hidden-sm.hidden-lg,
-  tr.hidden-sm.hidden-lg,
-  th.hidden-sm.hidden-lg,
-  td.hidden-sm.hidden-lg {
-    display: none !important;
-    }
-  }
-.hidden-md {
-  display: block !important;
-  }
-.inline.hidden-md {
-  display: inline !important;
-  }
-.inline-block.hidden-md {
-  display: inline-block !important;
-  }
-tr.hidden-md {
-  display: table-row !important;
-  }
-th.hidden-md,
-td.hidden-md {
-  display: table-cell !important;
-  }
-@media (max-width: 767px) {
-  .hidden-md.hidden-xs,
-  .inline.hidden-md.hidden-xs,
-  .inline-block.hidden-md.hidden-xs,
-  tr.hidden-md.hidden-xs,
-  th.hidden-md.hidden-xs,
-  td.hidden-md.hidden-xs {
-    display: none !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-md.hidden-sm,
-  .inline.hidden-md.hidden-sm,
-  .inline-block.hidden-md.hidden-sm,
-  tr.hidden-md.hidden-sm,
-  th.hidden-md.hidden-sm,
-  td.hidden-md.hidden-sm {
-    display: none !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-md,
-  .inline.hidden-md,
-  .inline-block.hidden-md,
-  tr.hidden-md,
-  th.hidden-md,
-  td.hidden-md {
-    display: none !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .hidden-md.hidden-lg,
-  .inline.hidden-md.hidden-lg,
-  .inline-block.hidden-md.hidden-lg,
-  tr.hidden-md.hidden-lg,
-  th.hidden-md.hidden-lg,
-  td.hidden-md.hidden-lg {
-    display: none !important;
-    }
-  }
-.hidden-lg {
-  display: block !important;
-  }
-.inline.hidden-lg {
-  display: inline !important;
-  }
-.inline-block.hidden-lg {
-  display: inline-block !important;
-  }
-tr.hidden-lg {
-  display: table-row !important;
-  }
-th.hidden-lg,
-td.hidden-lg {
-  display: table-cell !important;
-  }
-@media (max-width: 767px) {
-  .hidden-lg.hidden-xs,
-  .inline.hidden-lg.hidden-xs,
-  .inline-block.hidden-lg.hidden-xs,
-  tr.hidden-lg.hidden-xs,
-  th.hidden-lg.hidden-xs,
-  td.hidden-lg.hidden-xs {
-    display: none !important;
-    }
-  }
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-lg.hidden-sm,
-  .inline.hidden-lg.hidden-sm,
-  .inline-block.hidden-lg.hidden-sm,
-  tr.hidden-lg.hidden-sm,
-  th.hidden-lg.hidden-sm,
-  td.hidden-lg.hidden-sm {
-    display: none !important;
-    }
-  }
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-lg.hidden-md,
-  .inline.hidden-lg.hidden-md,
-  .inline-block.hidden-lg.hidden-md,
-  tr.hidden-lg.hidden-md,
-  th.hidden-lg.hidden-md,
-  td.hidden-lg.hidden-md {
-    display: none !important;
-    }
-  }
-@media (min-width: 1200px) {
-  .hidden-lg,
-  .inline.hidden-lg,
-  .inline-block.hidden-lg,
-  tr.hidden-lg,
-  th.hidden-lg,
-  td.hidden-lg {
-    display: none !important;
-    }
-  }
-.visible-print,
-.inline.visible-print,
-.inline-block.visible-print,
-tr.visible-print,
-th.visible-print,
-td.visible-print {
-  display: none !important;
-  }
-@media print {
-  .visible-print {
-    display: block !important;
-    }
-  .inline.visible-print {
-    display: inline !important;
-    }
-  .inline-block.visible-print {
-    display: inline-block !important;
-    }
-  tr.visible-print {
-    display: table-row !important;
-    }
-  th.visible-print,
-  td.visible-print {
-    display: table-cell !important;
-    }
-  .hidden-print,
-  .inline.hidden-print,
-  .inline-block.hidden-print,
-  tr.hidden-print,
-  th.hidden-print,
-  td.hidden-print {
-    display: none !important;
-    }
-  }
-*,
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  }
-html {
-  font-size: 10px;
-
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-  }
-body {
-  font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif;
-  font-size: 13px;
-  line-height: 1.53846154;
-  color: #353535;
-  background-color: #fff;
-  }
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-  }
-a {
-  color: #145ccd;
-  text-decoration: none;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-a:hover,
-a:focus {
-  color: #0d3d88;
-  text-decoration: underline;
-  }
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-  }
-a.disabled,
-a.disabled:hover,
-a.disabled:focus,
-a[disabled],
-a[disabled]:hover,
-a[disabled]:focus {
-  color: #aaa;
-  text-decoration: none;
-  cursor: default;
-  }
-audio,
-canvas,
-img,
-svg,
-video {
-  max-width: 100%;
-  vertical-align: middle;
-  }
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0 0 0 0);
-  border: 0;
-  }
-::-moz-selection {
-  text-shadow: none;
-  background: #b3d4fc;
-  }
-::selection {
-  text-shadow: none;
-  background: #b3d4fc;
-  }
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-  }
-textarea {
-  resize: vertical;
-  }
-ol,
-ul {
-  padding-left: 20px;
-  }
-.container,
-.container-fluid,
-.container-fixed,
-.container-fixed-md,
-.container-fixed-sm,
-.container-fixed-xs {
-  padding-right: 10px;
-  padding-left: 10px;
-  margin-right: auto;
-  margin-left: auto;
-  }
-@media (min-width: 768px) {
-  .container {
-    max-width: 740px;
-    }
-  }
-@media (min-width: 992px) {
-  .container {
-    max-width: 960px;
-    }
-  }
-@media (min-width: 1200px) {
-  .container {
-    max-width: 1160px;
-    }
-  }
-.container-fixed {
-  width: 1160px;
-  }
-.container-fixed-md {
-  width: 960px;
-  }
-.container-fixed-sm {
-  width: 740px;
-  }
-.container-fixed-xs {
-  width: 440px;
-  }
-.row {
-  margin-right: -10px;
-  margin-left: -10px;
-  }
-.col,
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-sm-1,
-.col-sm-2,
-.col-sm-3,
-.col-sm-4,
-.col-sm-5,
-.col-sm-6,
-.col-sm-7,
-.col-sm-8,
-.col-sm-9,
-.col-sm-10,
-.col-sm-11,
-.col-sm-12,
-.col-md-1,
-.col-md-2,
-.col-md-3,
-.col-md-4,
-.col-md-5,
-.col-md-6,
-.col-md-7,
-.col-md-8,
-.col-md-9,
-.col-md-10,
-.col-md-11,
-.col-md-12,
-.col-lg-1,
-.col-lg-2,
-.col-lg-3,
-.col-lg-4,
-.col-lg-5,
-.col-lg-6,
-.col-lg-7,
-.col-lg-8,
-.col-lg-9,
-.col-lg-10,
-.col-lg-11,
-.col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-right: 10px;
-  padding-left: 10px;
-  }
-.col,
-.col-xs,
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12 {
-  float: left;
-  }
-.col-xs-1 {
-  width: 8.33333333%;
-  }
-.col-xs-2 {
-  width: 16.66666667%;
-  }
-.col-xs-3 {
-  width: 25%;
-  }
-.col-xs-4 {
-  width: 33.33333333%;
-  }
-.col-xs-5 {
-  width: 41.66666667%;
-  }
-.col-xs-6 {
-  width: 50%;
-  }
-.col-xs-7 {
-  width: 58.33333333%;
-  }
-.col-xs-8 {
-  width: 66.66666667%;
-  }
-.col-xs-9 {
-  width: 75%;
-  }
-.col-xs-10 {
-  width: 83.33333333%;
-  }
-.col-xs-11 {
-  width: 91.66666667%;
-  }
-.col-xs-12 {
-  width: 100%;
-  }
-@media (min-width: 768px) {
-  .col-sm-1,
-  .col-sm-2,
-  .col-sm-3,
-  .col-sm-4,
-  .col-sm-5,
-  .col-sm-6,
-  .col-sm-7,
-  .col-sm-8,
-  .col-sm-9,
-  .col-sm-10,
-  .col-sm-11,
-  .col-sm-12 {
-    float: left;
-    }
-  .col-sm-1 {
-    width: 8.33333333%;
-    }
-  .col-sm-2 {
-    width: 16.66666667%;
-    }
-  .col-sm-3 {
-    width: 25%;
-    }
-  .col-sm-4 {
-    width: 33.33333333%;
-    }
-  .col-sm-5 {
-    width: 41.66666667%;
-    }
-  .col-sm-6 {
-    width: 50%;
-    }
-  .col-sm-7 {
-    width: 58.33333333%;
-    }
-  .col-sm-8 {
-    width: 66.66666667%;
-    }
-  .col-sm-9 {
-    width: 75%;
-    }
-  .col-sm-10 {
-    width: 83.33333333%;
-    }
-  .col-sm-11 {
-    width: 91.66666667%;
-    }
-  .col-sm-12 {
-    width: 100%;
-    }
-  .col-sm-push-1 {
-    left: 8.33333333%;
-    }
-  .col-sm-push-2 {
-    left: 16.66666667%;
-    }
-  .col-sm-push-3 {
-    left: 25%;
-    }
-  .col-sm-push-4 {
-    left: 33.33333333%;
-    }
-  .col-sm-push-5 {
-    left: 41.66666667%;
-    }
-  .col-sm-push-6 {
-    left: 50%;
-    }
-  .col-sm-push-7 {
-    left: 58.33333333%;
-    }
-  .col-sm-push-8 {
-    left: 66.66666667%;
-    }
-  .col-sm-push-9 {
-    left: 75%;
-    }
-  .col-sm-push-10 {
-    left: 83.33333333%;
-    }
-  .col-sm-push-11 {
-    left: 91.66666667%;
-    }
-  .col-sm-pull-1 {
-    right: 8.33333333%;
-    }
-  .col-sm-pull-2 {
-    right: 16.66666667%;
-    }
-  .col-sm-pull-3 {
-    right: 25%;
-    }
-  .col-sm-pull-4 {
-    right: 33.33333333%;
-    }
-  .col-sm-pull-5 {
-    right: 41.66666667%;
-    }
-  .col-sm-pull-6 {
-    right: 50%;
-    }
-  .col-sm-pull-7 {
-    right: 58.33333333%;
-    }
-  .col-sm-pull-8 {
-    right: 66.66666667%;
-    }
-  .col-sm-pull-9 {
-    right: 75%;
-    }
-  .col-sm-pull-10 {
-    right: 83.33333333%;
-    }
-  .col-sm-pull-11 {
-    right: 91.66666667%;
-    }
-  .col-sm-offset-1 {
-    margin-left: 8.33333333%;
-    }
-  .col-sm-offset-2 {
-    margin-left: 16.66666667%;
-    }
-  .col-sm-offset-3 {
-    margin-left: 25%;
-    }
-  .col-sm-offset-4 {
-    margin-left: 33.33333333%;
-    }
-  .col-sm-offset-5 {
-    margin-left: 41.66666667%;
-    }
-  .col-sm-offset-6 {
-    margin-left: 50%;
-    }
-  .col-sm-offset-7 {
-    margin-left: 58.33333333%;
-    }
-  .col-sm-offset-8 {
-    margin-left: 66.66666667%;
-    }
-  .col-sm-offset-9 {
-    margin-left: 75%;
-    }
-  .col-sm-offset-10 {
-    margin-left: 83.33333333%;
-    }
-  .col-sm-offset-11 {
-    margin-left: 91.66666667%;
-    }
-  }
-@media (min-width: 992px) {
-  .col-md-1,
-  .col-md-2,
-  .col-md-3,
-  .col-md-4,
-  .col-md-5,
-  .col-md-6,
-  .col-md-7,
-  .col-md-8,
-  .col-md-9,
-  .col-md-10,
-  .col-md-11,
-  .col-md-12 {
-    float: left;
-    }
-  .col-md-1 {
-    width: 8.33333333%;
-    }
-  .col-md-2 {
-    width: 16.66666667%;
-    }
-  .col-md-3 {
-    width: 25%;
-    }
-  .col-md-4 {
-    width: 33.33333333%;
-    }
-  .col-md-5 {
-    width: 41.66666667%;
-    }
-  .col-md-6 {
-    width: 50%;
-    }
-  .col-md-7 {
-    width: 58.33333333%;
-    }
-  .col-md-8 {
-    width: 66.66666667%;
-    }
-  .col-md-9 {
-    width: 75%;
-    }
-  .col-md-10 {
-    width: 83.33333333%;
-    }
-  .col-md-11 {
-    width: 91.66666667%;
-    }
-  .col-md-12 {
-    width: 100%;
-    }
-  .col-md-push-0 {
-    left: auto;
-    }
-  .col-md-push-1 {
-    left: 8.33333333%;
-    }
-  .col-md-push-2 {
-    left: 16.66666667%;
-    }
-  .col-md-push-3 {
-    left: 25%;
-    }
-  .col-md-push-4 {
-    left: 33.33333333%;
-    }
-  .col-md-push-5 {
-    left: 41.66666667%;
-    }
-  .col-md-push-6 {
-    left: 50%;
-    }
-  .col-md-push-7 {
-    left: 58.33333333%;
-    }
-  .col-md-push-8 {
-    left: 66.66666667%;
-    }
-  .col-md-push-9 {
-    left: 75%;
-    }
-  .col-md-push-10 {
-    left: 83.33333333%;
-    }
-  .col-md-push-11 {
-    left: 91.66666667%;
-    }
-  .col-md-pull-0 {
-    right: auto;
-    }
-  .col-md-pull-1 {
-    right: 8.33333333%;
-    }
-  .col-md-pull-2 {
-    right: 16.66666667%;
-    }
-  .col-md-pull-3 {
-    right: 25%;
-    }
-  .col-md-pull-4 {
-    right: 33.33333333%;
-    }
-  .col-md-pull-5 {
-    right: 41.66666667%;
-    }
-  .col-md-pull-6 {
-    right: 50%;
-    }
-  .col-md-pull-7 {
-    right: 58.33333333%;
-    }
-  .col-md-pull-8 {
-    right: 66.66666667%;
-    }
-  .col-md-pull-9 {
-    right: 75%;
-    }
-  .col-md-pull-10 {
-    right: 83.33333333%;
-    }
-  .col-md-pull-11 {
-    right: 91.66666667%;
-    }
-  .col-md-offset-0 {
-    margin-left: 0;
-    }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%;
-    }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%;
-    }
-  .col-md-offset-3 {
-    margin-left: 25%;
-    }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%;
-    }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%;
-    }
-  .col-md-offset-6 {
-    margin-left: 50%;
-    }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%;
-    }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%;
-    }
-  .col-md-offset-9 {
-    margin-left: 75%;
-    }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%;
-    }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%;
-    }
-  }
-@media (min-width: 1200px) {
-  .col-lg-1,
-  .col-lg-2,
-  .col-lg-3,
-  .col-lg-4,
-  .col-lg-5,
-  .col-lg-6,
-  .col-lg-7,
-  .col-lg-8,
-  .col-lg-9,
-  .col-lg-10,
-  .col-lg-11,
-  .col-lg-12 {
-    float: left;
-    }
-  .col-lg-1 {
-    width: 8.33333333%;
-    }
-  .col-lg-2 {
-    width: 16.66666667%;
-    }
-  .col-lg-3 {
-    width: 25%;
-    }
-  .col-lg-4 {
-    width: 33.33333333%;
-    }
-  .col-lg-5 {
-    width: 41.66666667%;
-    }
-  .col-lg-6 {
-    width: 50%;
-    }
-  .col-lg-7 {
-    width: 58.33333333%;
-    }
-  .col-lg-8 {
-    width: 66.66666667%;
-    }
-  .col-lg-9 {
-    width: 75%;
-    }
-  .col-lg-10 {
-    width: 83.33333333%;
-    }
-  .col-lg-11 {
-    width: 91.66666667%;
-    }
-  .col-lg-12 {
-    width: 100%;
-    }
-  .col-lg-push-0 {
-    left: auto;
-    }
-  .col-lg-push-1 {
-    left: 8.33333333%;
-    }
-  .col-lg-push-2 {
-    left: 16.66666667%;
-    }
-  .col-lg-push-3 {
-    left: 25%;
-    }
-  .col-lg-push-4 {
-    left: 33.33333333%;
-    }
-  .col-lg-push-5 {
-    left: 41.66666667%;
-    }
-  .col-lg-push-6 {
-    left: 50%;
-    }
-  .col-lg-push-7 {
-    left: 58.33333333%;
-    }
-  .col-lg-push-8 {
-    left: 66.66666667%;
-    }
-  .col-lg-push-9 {
-    left: 75%;
-    }
-  .col-lg-push-10 {
-    left: 83.33333333%;
-    }
-  .col-lg-push-11 {
-    left: 91.66666667%;
-    }
-  .col-lg-pull-0 {
-    right: auto;
-    }
-  .col-lg-pull-1 {
-    right: 8.33333333%;
-    }
-  .col-lg-pull-2 {
-    right: 16.66666667%;
-    }
-  .col-lg-pull-3 {
-    right: 25%;
-    }
-  .col-lg-pull-4 {
-    right: 33.33333333%;
-    }
-  .col-lg-pull-5 {
-    right: 41.66666667%;
-    }
-  .col-lg-pull-6 {
-    right: 50%;
-    }
-  .col-lg-pull-7 {
-    right: 58.33333333%;
-    }
-  .col-lg-pull-8 {
-    right: 66.66666667%;
-    }
-  .col-lg-pull-9 {
-    right: 75%;
-    }
-  .col-lg-pull-10 {
-    right: 83.33333333%;
-    }
-  .col-lg-pull-11 {
-    right: 91.66666667%;
-    }
-  .col-lg-offset-0 {
-    margin-left: 0;
-    }
-  .col-lg-offset-1 {
-    margin-left: 8.33333333%;
-    }
-  .col-lg-offset-2 {
-    margin-left: 16.66666667%;
-    }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-    }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333%;
-    }
-  .col-lg-offset-5 {
-    margin-left: 41.66666667%;
-    }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-    }
-  .col-lg-offset-7 {
-    margin-left: 58.33333333%;
-    }
-  .col-lg-offset-8 {
-    margin-left: 66.66666667%;
-    }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-    }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333%;
-    }
-  .col-lg-offset-11 {
-    margin-left: 91.66666667%;
-    }
-  }
-p {
-  margin: 0 0 10px;
-  }
-.lead {
-  margin-bottom: 20px;
-  font-size: 14px;
-  line-height: 1.4;
-  }
-@media (min-width: 768px) {
-  .lead {
-    font-size: 19.5px;
-    }
-  }
-small,
-.small {
-  font-size: 85%;
-  }
-cite {
-  font-style: normal;
-  }
-.text-muted {
-  color: #808080;
-  }
-.text-muted a {
-  color: #737373;
-  }
-.text-muted a:hover,
-.text-muted a:active {
-  color: #145ccd;
-  }
-.text-primary {
-  color: #3280fc;
-  }
-.text-primary:hover {
-  color: #0462f7;
-  }
-.text-warning {
-  color: #f1a325;
-  }
-.text-warning:hover {
-  color: #d5890e;
-  }
-.text-danger {
-  color: #ea644a;
-  }
-.text-danger:hover {
-  color: #e53d1c;
-  }
-.text-success {
-  color: #38b03f;
-  }
-.text-success:hover {
-  color: #2c8931;
-  }
-.text-info {
-  color: #03b8cf;
-  }
-.text-info:hover {
-  color: #028b9d;
-  }
-.text-important {
-  color: #bd7b46;
-  }
-.text-important:hover {
-  color: #996337;
-  }
-.text-special {
-  color: #8666b8;
-  }
-.text-special:hover {
-  color: #6c4aa1;
-  }
-.text-link {
-  color: #353535;
-  }
-.text-link:hover,
-.text-link:active {
-  color: #145ccd;
-  }
-.text-left {
-  text-align: left;
-  }
-.text-right {
-  text-align: right;
-  }
-.text-center {
-  text-align: center;
-  }
-.text-nowrap,
-.nobr {
-  overflow: hidden;
-  white-space: nowrap;
-  }
-.text-ellipsis {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  }
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-  }
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-  }
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-  }
-dl {
-  margin-bottom: 20px;
-  }
-dt,
-dd {
-  line-height: 1.53846154;
-  }
-dt {
-  font-weight: bold;
-  }
-dd {
-  margin-left: 0;
-  }
-.dl-inline:before,
-.dl-inline:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.dl-inline:after {
-  clear: both;
-  }
-.dl-inline:before,
-.dl-inline:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.dl-inline:after {
-  clear: both;
-  }
-.dl-inline dt {
-  display: inline-block;
-  }
-.dl-inline dd {
-  display: inline-block;
-  padding-right: 1em;
-  }
-.dl-inline dd:last-child {
-  padding-right: 0;
-  }
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    overflow: hidden;
-    clear: left;
-    text-align: right;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-    }
-  .dl-horizontal dd {
-    margin-left: 180px;
-    }
-  }
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 16.25px;
-  border-left: 5px solid #e5e5e5;
-  }
-blockquote p,
-blockquote ul,
-blockquote ol {
-  font-weight: 300;
-  }
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-  }
-blockquote small {
-  display: block;
-  line-height: 1.53846154;
-  color: #808080;
-  }
-blockquote small:before {
-  content: '\2014 \00A0';
-  }
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #e5e5e5;
-  border-left: 0;
-  }
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-  }
-blockquote.pull-right small:before {
-  content: '';
-  }
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-  }
-.ol-pd-2 {
-  padding-left: 40px;
-  }
-.ol-pd-3 {
-  padding-left: 60px;
-  }
-.ol-pd-4 {
-  padding-left: 80px;
-  }
-.bg-default {
-  color: #fff;
-  background-color: #353535;
-  }
-a.bg-default:hover {
-  background-color: #1c1c1c;
-  }
-.bg-primary {
-  color: #fff;
-  background-color: #3280fc;
-  }
-a.bg-primary:hover {
-  background-color: #0462f7;
-  }
-.bg-success {
-  color: #fff;
-  background-color: #38b03f;
-  }
-a.bg-success:hover {
-  background-color: #2c8931;
-  }
-.bg-info {
-  color: #fff;
-  background-color: #03b8cf;
-  }
-a.bg-info:hover {
-  background-color: #028b9d;
-  }
-.bg-warning {
-  color: #fff;
-  background-color: #f1a325;
-  }
-a.bg-warning:hover {
-  background-color: #d5890e;
-  }
-.bg-danger {
-  color: #fff;
-  background-color: #ea644a;
-  }
-a.bg-danger:hover {
-  background-color: #e53d1c;
-  }
-.bg-important {
-  color: #fff;
-  background-color: #bd7b46;
-  }
-a.bg-important:hover {
-  background-color: #996337;
-  }
-.bg-special {
-  color: #fff;
-  background-color: #8666b8;
-  }
-a.bg-special:hover {
-  background-color: #6c4aa1;
-  }
-.hl-default {
-  background-color: #f1f1f1;
-  }
-a.hl-default:hover {
-  background-color: #d7d7d7;
-  }
-.hl-primary {
-  background-color: #ebf2f9;
-  }
-a.hl-primary:hover {
-  background-color: #c4d8ed;
-  }
-.hl-success {
-  background-color: #ddf4df;
-  }
-a.hl-success:hover {
-  background-color: #b6e8bb;
-  }
-.hl-info {
-  background-color: #ddf3f5;
-  }
-a.hl-info:hover {
-  background-color: #b6e5e9;
-  }
-.hl-warning {
-  background-color: #fff0d5;
-  }
-a.hl-warning:hover {
-  background-color: #ffdea2;
-  }
-.hl-danger {
-  background-color: #ffe5e0;
-  }
-a.hl-danger:hover {
-  background-color: #ffbaad;
-  }
-.hl-important {
-  background-color: #f7ebe1;
-  }
-a.hl-important:hover {
-  background-color: #ecd0b9;
-  }
-.hl-special {
-  background-color: #f5eeff;
-  }
-a.hl-special:hover {
-  background-color: #d7bbff;
-  }
-.page-header,
-.header-dividing {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #e5e5e5;
-  }
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif;
-  font-weight: bold;
-  line-height: 1.1;
-  color: inherit;
-  }
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #808080;
-  }
-h1,
-h2,
-h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-  }
-h1 small,
-h2 small,
-h3 small {
-  font-size: 65%;
-  }
-h4,
-h5,
-h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-  }
-h4 small,
-h5 small,
-h6 small {
-  font-size: 75%;
-  }
-h1 {
-  font-size: 26px;
-  }
-h2 {
-  font-size: 20px;
-  }
-h3 {
-  font-size: 16px;
-  }
-h4 {
-  font-size: 14px;
-  }
-h5 {
-  font-size: 13px;
-  }
-h6 {
-  font-size: 12px;
-  }
-.btn {
-  display: inline-block;
-  padding: 5px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1.53846154;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-  }
-.btn:hover,
-.btn:focus {
-  color: #353535;
-  text-decoration: none;
-  }
-.btn:active,
-.btn.active {
-  background-image: none;
-  outline: none;
-  -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 {
-  pointer-events: none;
-  cursor: not-allowed;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  opacity: .65;
-  }
-.btn {
-  color: #353535;
-  text-shadow: 0 1px 0 #fff;
-  background-color: #f2f2f2;
-  border-color: #bfbfbf;
-  }
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.open .dropdown-toggle.btn {
-  color: #353535;
-  background-color: #dedede;
-  border-color: #a1a1a1;
-  -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-          box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-  }
-.btn:active,
-.btn.active,
-.open .dropdown-toggle.btn {
-  background-color: #ccc;
-  background-image: none;
-  border-color: #a6a6a6;
-  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-  }
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn,
-.btn.disabled:hover,
-.btn[disabled]:hover,
-fieldset[disabled] .btn:hover,
-.btn.disabled:focus,
-.btn[disabled]:focus,
-fieldset[disabled] .btn:focus,
-.btn.disabled:active,
-.btn[disabled]:active,
-fieldset[disabled] .btn:active,
-.btn.disabled.active,
-.btn[disabled].active,
-fieldset[disabled] .btn.active {
-  background-color: #f2f2f2;
-  border-color: #bfbfbf;
-  }
-.btn-primary {
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  background-color: #3280fc;
-  border-color: #1970fc;
-  }
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
-  color: #fff;
-  background-color: #0a67fb;
-  border-color: #0354d4;
-  -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-          box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-  }
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
-  background-color: #0358de;
-  background-image: none;
-  border-color: #0358de;
-  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-  }
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #3280fc;
-  border-color: #1970fc;
-  }
-.btn-warning {
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  background-color: #f1a325;
-  border-color: #ed980f;
-  }
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
-  color: #fff;
-  background-color: #df8f0e;
-  border-color: #b4730c;
-  -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-          box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-  }
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
-  background-color: #bd7a0c;
-  background-image: none;
-  border-color: #bd7a0c;
-  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-  }
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #f1a325;
-  border-color: #ed980f;
-  }
-.btn-danger {
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  background-color: #ea644a;
-  border-color: #e75033;
-  }
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
-  color: #fff;
-  background-color: #e64525;
-  border-color: #c63317;
-  -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-          box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-  }
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
-  background-color: #cf3618;
-  background-image: none;
-  border-color: #cf3618;
-  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-  }
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #ea644a;
-  border-color: #e75033;
-  }
-.btn-success {
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  background-color: #38b03f;
-  border-color: #329d38;
-  }
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
-  color: #fff;
-  background-color: #2e9134;
-  border-color: #236e27;
-  -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-          box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-  }
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
-  background-color: #26762a;
-  background-image: none;
-  border-color: #26762a;
-  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-  }
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #38b03f;
-  border-color: #329d38;
-  }
-.btn-info {
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  background-color: #03b8cf;
-  border-color: #03a2b6;
-  }
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
-  color: #fff;
-  background-color: #0294a7;
-  border-color: #026c7a;
-  -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-          box-shadow: 0 2px 1px rgba(0, 0, 0, .1);
-  }
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
-  background-color: #027584;
-  background-image: none;
-  border-color: #027584;
-  -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-          box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15);
-  }
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #03b8cf;
-  border-color: #03a2b6;
-  }
-.btn-link {
-  font-weight: normal;
-  color: #145ccd;
-  text-shadow: none;
-  cursor: pointer;
-  background: none;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  }
-.btn-link,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link,
-.btn-link:hover,
-.btn-link:focus {
-  border-color: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  }
-.btn-link:hover,
-.btn-link:focus {
-  color: #0d3d88;
-  }
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #ddd;
-  text-decoration: none;
-  }
-.btn-lg {
-  padding: 10px 16px;
-  font-size: 17px;
-  line-height: 1.25;
-  border-radius: 4px;
-  }
-.btn-sm,
-.btn-xs,
-.btn-mini {
-  padding: 2px 8px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 4px;
-  }
-.btn-xs,
-.btn-mini {
-  padding: 1px 5px;
-  }
-.btn-block {
-  display: block;
-  width: 100%;
-  }
-.btn-block + .btn-block {
-  margin-top: 5px;
-  }
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-  }
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  }
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-  }
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn:hover,
-.btn-group-vertical > .btn:focus,
-.btn-group-vertical > .btn:active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-  }
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
-  outline: none;
-  }
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group,
-.btn-group-vertical .btn + .btn,
-.btn-group-vertical .btn + .btn-group-vertical,
-.btn-group-vertical .btn-group-vertical + .btn,
-.btn-group-vertical .btn-group-vertical + .btn-group-vertical {
-  margin-left: -1px;
-  }
-.btn-toolbar {
-  margin-left: -5px;
-  }
-.btn-toolbar .btn,
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group,
-.btn-toolbar .btn-group-vertical {
-  float: left;
-  }
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group,
-.btn-toolbar > .btn-group-vertical {
-  margin-left: 5px;
-  }
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle),
-.btn-group-vertical > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-  }
-.btn-group > .btn:first-child,
-.btn-group-vertical > .btn:first-child {
-  margin-left: 0;
-  }
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle),
-.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-  }
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child),
-.btn-group-vertical > .btn:last-child:not(:first-child),
-.btn-group-vertical > .dropdown-toggle:not(:first-child) {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.btn-group > .btn-group,
-.btn-group-vertical > .btn-group-vertical {
-  float: left;
-  }
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn,
-.btn-group-vertical > .btn-group-vertical:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-  }
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle,
-.btn-group-vertical > .btn-group-vertical:first-child > .btn:last-child,
-.btn-group-vertical > .btn-group-vertical:first-child > .dropdown-toggle {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-  }
-.btn-group > .btn-group:last-child > .btn:first-child,
-.btn-group-vertical > .btn-group-vertical:last-child > .btn:first-child {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle,
-.btn-group-vertical .dropdown-toggle:active,
-.btn-group-vertical.open .dropdown-toggle {
-  outline: 0;
-  }
-.btn-group-xs > .btn {
-  padding: 2px 8px;
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 4px;
-  }
-.btn-group-sm > .btn {
-  padding: 2px 8px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 4px;
-  }
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 17px;
-  line-height: 1.25;
-  border-radius: 4px;
-  }
-.btn-group > .btn + .dropdown-toggle,
-.btn-group-vertical > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-  }
-.btn-group > .btn-lg + .dropdown-toggle,
-.btn-group-vertical > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-  }
-.btn-group.open .dropdown-toggle,
-.btn-group-vertical.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,
-.btn-group-vertical.open .dropdown-toggle.btn-link {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  }
-.btn .caret {
-  margin-left: 0;
-  }
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-  }
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-  }
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-  }
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group,
-.btn-group-justified > .btn-group-vertical {
-  display: table-cell;
-  float: none;
-  width: 1%;
-  }
-.btn-group-justified > .btn-group .btn,
-.btn-group-justified > .btn-group-vertical .btn {
-  width: 100%;
-  }
-.btn-group-justified > .btn-group .dropdown-menu,
-.btn-group-justified > .btn-group-vertical .dropdown-menu {
-  left: auto;
-  }
-[data-toggle="buttons"] > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group-vertical > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group-vertical > .btn input[type="checkbox"] {
-  position: absolute;
-  clip: rect(0, 0, 0, 0);
-  pointer-events: none;
-  }
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn,
-.btn-group-vertical > .btn-group-vertical,
-.btn-group-vertical > .btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-  }
-.btn-group-vertical > .btn-group > .btn,
-.btn-group-vertical > .btn-group-vertical > .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,
-.btn-group-vertical > .btn + .btn-group-vertical,
-.btn-group-vertical > .btn-group-vertical + .btn,
-.btn-group-vertical > .btn-group-vertical + .btn-group-vertical {
-  margin-top: -1px;
-  margin-left: 0;
-  }
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-  }
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn,
-.btn-group-vertical > .btn-group-vertical:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-  }
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle,
-.btn-group-vertical > .btn-group-vertical:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group-vertical: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,
-.btn-group-vertical > .btn-group-vertical:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  }
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-    }
-  to {
-    background-position: 0 0;
-    }
-  }
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-    }
-  to {
-    background-position: 0 0;
-    }
-  }
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-    }
-  to {
-    background-position: 0 0;
-    }
-  }
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-radius: 4px;
-  }
-.progress-bar {
-  float: left;
-  width: 0;
-  height: 100%;
-  font-size: 12px;
-  color: #fff;
-  text-align: center;
-  background-color: #3280fc;
-  -webkit-transition: width .6s ease;
-       -o-transition: width .6s ease;
-          transition: width .6s ease;
-  }
-.progress-striped .progress-bar {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-          background-size: 40px 40px;
-  }
-.progress.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: #38b03f;
-  }
-.progress-bar-info {
-  background-color: #03b8cf;
-  }
-.progress-bar-warning {
-  background-color: #f1a325;
-  }
-.progress-bar-danger {
-  background-color: #ea644a;
-  }
-.img-responsive,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  max-width: 100%;
-  height: auto;
-  }
-.img-rounded {
-  border-radius: 6px;
-  }
-.img-thumbnail {
-  display: inline-block;
-  max-width: 100%;
-  height: auto;
-  padding: 4px;
-  line-height: 1.53846154;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all .2s ease-in-out;
-       -o-transition: all .2s ease-in-out;
-          transition: all .2s ease-in-out;
-  }
-.img-circle {
-  border-radius: 50%;
-  }
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  }
-hr.divider-sm {
-  margin-top: 10px;
-  margin-bottom: 10px;
-  }
-hr.divider {
-  margin: 0;
-  }
-.label {
-  display: inline;
-  padding: .2em .6em .2em;
-  font-size: 75%;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  background-color: #808080;
-  border-radius: .25em;
-  }
-.label[href]:hover,
-.label[href]:focus {
-  color: #fff;
-  background-color: #666;
-  }
-.label.label-circle {
-  color: #808080;
-  background: none;
-  border: 1px solid #808080;
-  }
-a.label:hover,
-a.label:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer;
-  }
-.label:empty {
-  display: none;
-  }
-.label-badge {
-  display: inline-block;
-  min-width: 18px;
-  padding: 3px 7px;
-  font-size: 12px;
-  line-height: 1;
-  border-radius: 9px;
-  }
-.label-dot {
-  display: inline-block;
-  width: 10px;
-  height: 10px;
-  padding: 0;
-  line-height: 13px;
-  text-indent: -9999em;
-  border-radius: 5px;
-  }
-.label-dot:empty {
-  display: inline-block;
-  }
-.label-primary {
-  background-color: #3280fc;
-  }
-.label-primary[href]:hover,
-.label-primary[href]:focus {
-  color: #fff;
-  background-color: #0462f7;
-  }
-.label-primary.label-circle {
-  color: #3280fc;
-  background: none;
-  border: 1px solid #3280fc;
-  }
-.label-success {
-  background-color: #38b03f;
-  }
-.label-success[href]:hover,
-.label-success[href]:focus {
-  color: #fff;
-  background-color: #2c8931;
-  }
-.label-success.label-circle {
-  color: #38b03f;
-  background: none;
-  border: 1px solid #38b03f;
-  }
-.label-info {
-  background-color: #03b8cf;
-  }
-.label-info[href]:hover,
-.label-info[href]:focus {
-  color: #fff;
-  background-color: #028b9d;
-  }
-.label-info.label-circle {
-  color: #03b8cf;
-  background: none;
-  border: 1px solid #03b8cf;
-  }
-.label-warning {
-  background-color: #f1a325;
-  }
-.label-warning[href]:hover,
-.label-warning[href]:focus {
-  color: #fff;
-  background-color: #d5890e;
-  }
-.label-warning.label-circle {
-  color: #f1a325;
-  background: none;
-  border: 1px solid #f1a325;
-  }
-.label-danger {
-  background-color: #ea644a;
-  }
-.label-danger[href]:hover,
-.label-danger[href]:focus {
-  color: #fff;
-  background-color: #e53d1c;
-  }
-.label-danger.label-circle {
-  color: #ea644a;
-  background: none;
-  border: 1px solid #ea644a;
-  }
-.nav-primary > li > a > .label,
-.btn .label {
-  position: relative;
-  top: -1px;
-  }
-.btn-primary .label,
-.btn-success .label,
-.btn-info .label,
-.btn-danger .label,
-.btn-warning .label {
-  background-color: rgba(0, 0, 0, .2);
-  }
-.list-group-item.active > .label,
-.nav-primary > .active > a > .label,
-.nav-pills > .active > a > .label {
-  color: #145ccd;
-  background-color: #fff;
-  }
-.nav > li > a > .label {
-  margin-left: 3px;
-  }
-.breadcrumb {
-  padding: 8px 15px;
-  margin-bottom: 20px;
-  list-style: none;
-  border-radius: 4px;
-  }
-.breadcrumb > li {
-  display: inline-block;
-  }
-.breadcrumb > li + li:before {
-  padding: 0 5px;
-  color: #ccc;
-  content: "/\00a0";
-  }
-.breadcrumb > .active {
-  color: #808080;
-  }
-@font-face {
-  font-family: ZenIcon;
-  font-style: normal;
-  font-weight: normal;
-
-  src: url('../fonts/zenicon.eot?v=2.2.0');
-  src: url('../fonts/zenicon.eot?#iefix&v=2.2.0') format('embedded-opentype'), url('../fonts/zenicon.woff?v=2.2.0') format('woff'), url('../fonts/zenicon.ttf?v=2.2.0') format('truetype'), url('../fonts/zenicon.svg#regular?v=2.2.0') format('svg');
-  }
-.icon,
-[class^="icon-"],
-[class*=" icon-"] {
-  font-family: ZenIcon;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  line-height: 1;
-  text-transform: none;
-
-  speak: none;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  }
-.icon:before {
-  display: inline-block;
-  min-width: 14px;
-  text-align: center;
-  }
-a .icon,
-a [class^="icon-"],
-a [class*=" icon-"] {
-  display: inline;
-  }
-.icon-lg:before {
-  font-size: 1.33333333em;
-  vertical-align: -10%;
-  }
-.icon-2x {
-  font-size: 28px;
-  }
-.icon-3x {
-  font-size: 42px;
-  }
-.icon-4x {
-  font-size: 56px;
-  }
-.icon-5x {
-  font-size: 70px;
-  }
-.icon-spin {
-  display: inline-block;
-  -webkit-animation: spin 2s infinite linear;
-       -o-animation: spin 2s infinite linear;
-          animation: spin 2s infinite linear;
-  }
-a .icon-spin {
-  display: inline-block;
-  text-decoration: none;
-  }
-@-webkit-keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-            transform: rotate(0deg);
-    }
-  100% {
-    -webkit-transform: rotate(359deg);
-            transform: rotate(359deg);
-    }
-  }
-@-o-keyframes spin {
-  0% {
-    -o-transform: rotate(0deg);
-       transform: rotate(0deg);
-    }
-  100% {
-    -o-transform: rotate(359deg);
-       transform: rotate(359deg);
-    }
-  }
-@keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-         -o-transform: rotate(0deg);
-            transform: rotate(0deg);
-    }
-  100% {
-    -webkit-transform: rotate(359deg);
-         -o-transform: rotate(359deg);
-            transform: rotate(359deg);
-    }
-  }
-.icon-rotate-90:before {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-  -webkit-transform: rotate(90deg);
-      -ms-transform: rotate(90deg);
-       -o-transform: rotate(90deg);
-          transform: rotate(90deg);
-  }
-.icon-rotate-180:before {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-  -webkit-transform: rotate(180deg);
-      -ms-transform: rotate(180deg);
-       -o-transform: rotate(180deg);
-          transform: rotate(180deg);
-  }
-.icon-rotate-270:before {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-  -webkit-transform: rotate(270deg);
-      -ms-transform: rotate(270deg);
-       -o-transform: rotate(270deg);
-          transform: rotate(270deg);
-  }
-.icon-flip-horizontal:before {
-  -webkit-transform: scale(-1, 1);
-      -ms-transform: scale(-1, 1);
-       -o-transform: scale(-1, 1);
-          transform: scale(-1, 1);
-  }
-.icon-flip-vertical:before {
-  -webkit-transform: scale(1, -1);
-      -ms-transform: scale(1, -1);
-       -o-transform: scale(1, -1);
-          transform: scale(1, -1);
-  }
-.icon-rotate-90:before,
-.icon-rotate-180:before,
-.icon-rotate-270:before,
-.icon-flip-horizontal:before,
-.icon-flip-vertical:before {
-  display: inline-block;
-  }
-.icon-resize:before {
-  content: '\e667';
-  }
-.icon-expand-full:before {
-  content: '\e6a3';
-  }
-.icon-arrows-alt:before {
-  content: '\e6a3';
-  }
-.icon-fullscreen:before {
-  content: '\e6a3';
-  }
-.icon-collapse-full:before {
-  content: '\e682';
-  }
-.icon-yinyang:before {
-  content: '\e687';
-  }
-.icon-taiji:before {
-  content: '\e687';
-  }
-.icon-window:before {
-  content: '\e68e';
-  }
-.icon-window-alt:before {
-  content: '\e68f';
-  }
-.icon-carousel:before {
-  content: '\e6b0';
-  }
-.icon-spinner-snake:before {
-  content: '\e97b';
-  }
-.icon-spinner-indicator:before {
-  content: '\e97c';
-  }
-.icon-check-board:before {
-  content: '\e9b8';
-  }
-.icon-bar-chart:before {
-  content: '\f080';
-  }
-.icon-bar-chart-o:before {
-  content: '\f080';
-  }
-.icon-github:before {
-  content: '\f09b';
-  }
-.icon-dot-circle:before {
-  content: '\f192';
-  }
-.icon-dot-circle-o:before {
-  content: '\f192';
-  }
-.icon-cube-alt:before {
-  content: '\f1b2';
-  }
-.icon-cubes:before {
-  content: '\f1b3';
-  }
-.icon-file-pdf:before {
-  content: '\f1c1';
-  }
-.icon-file-word:before {
-  content: '\f1c2';
-  }
-.icon-file-excel:before {
-  content: '\f1c3';
-  }
-.icon-file-powerpoint:before {
-  content: '\f1c4';
-  }
-.icon-file-image:before {
-  content: '\f1c5';
-  }
-.icon-file-photo:before {
-  content: '\f1c5';
-  }
-.icon-file-picture:before {
-  content: '\f1c5';
-  }
-.icon-file-archive:before {
-  content: '\f1c6';
-  }
-.icon-file-zip:before {
-  content: '\f1c6';
-  }
-.icon-file-audio:before {
-  content: '\f1c7';
-  }
-.icon-file-sound:before {
-  content: '\f1c7';
-  }
-.icon-file-movie:before {
-  content: '\f1c8';
-  }
-.icon-file-video:before {
-  content: '\f1c8';
-  }
-.icon-file-code:before {
-  content: '\f1c9';
-  }
-.icon-circle-o-notch:before {
-  content: '\f1ce';
-  }
-.icon-qq:before {
-  content: '\f600';
-  }
-.icon-wechat:before {
-  content: '\f1d7';
-  }
-.icon-weixin:before {
-  content: '\f1d7';
-  }
-.icon-history:before {
-  content: '\f1da';
-  }
-.icon-circle-thin:before {
-  content: '\f1db';
-  }
-.icon-sliders:before {
-  content: '\f1de';
-  }
-.icon-newspaper-o:before {
-  content: '\f1ea';
-  }
-.icon-calculator:before {
-  content: '\f1ec';
-  }
-.icon-paint-brush:before {
-  content: '\f1fc';
-  }
-.icon-area-chart:before {
-  content: '\f1fe';
-  }
-.icon-pie-chart:before {
-  content: '\f200';
-  }
-.icon-line-chart:before {
-  content: '\f201';
-  }
-.icon-toggle-off:before {
-  content: '\f204';
-  }
-.icon-toggle-on:before {
-  content: '\f205';
-  }
-.icon-diamond:before {
-  content: '\f219';
-  }
-.icon-venus:before {
-  content: '\f221';
-  }
-.icon-mars:before {
-  content: '\f222';
-  }
-.icon-server:before {
-  content: '\f233';
-  }
-.icon-music:before {
-  content: '\e602';
-  }
-.icon-search:before {
-  content: '\e603';
-  }
-.icon-envelope:before {
-  content: '\e604';
-  }
-.icon-heart:before {
-  content: '\e605';
-  }
-.icon-star:before {
-  content: '\e606';
-  }
-.icon-star-empty:before {
-  content: '\e607';
-  }
-.icon-user:before {
-  content: '\e608';
-  }
-.icon-film:before {
-  content: '\e609';
-  }
-.icon-th-large:before {
-  content: '\e60a';
-  }
-.icon-th:before {
-  content: '\e60b';
-  }
-.icon-th-list:before {
-  content: '\e60c';
-  }
-.icon-ok:before {
-  content: '\e60d';
-  }
-.icon-check:before {
-  content: '\e60d';
-  }
-.icon-remove:before {
-  content: '\d7';
-  }
-.icon-times:before {
-  content: '\d7';
-  }
-.icon-zoom-in:before {
-  content: '\e60f';
-  }
-.icon-zoom-out:before {
-  content: '\e610';
-  }
-.icon-off:before {
-  content: '\e611';
-  }
-.icon-cog:before {
-  content: '\e613';
-  }
-.icon-trash:before {
-  content: '\e614';
-  }
-.icon-home:before {
-  content: '\e615';
-  }
-.icon-file-o:before {
-  content: '\e616';
-  }
-.icon-file-alt:before {
-  content: '\e616';
-  }
-.icon-time:before {
-  content: '\e617';
-  }
-.icon-download-alt:before {
-  content: '\e618';
-  }
-.icon-download:before {
-  content: '\e619';
-  }
-.icon-upload:before {
-  content: '\e61a';
-  }
-.icon-inbox:before {
-  content: '\e61b';
-  }
-.icon-play-circle:before {
-  content: '\e61c';
-  }
-.icon-repeat:before {
-  content: '\e61d';
-  }
-.icon-refresh:before {
-  content: '\e61e';
-  }
-.icon-list-alt:before {
-  content: '\e61f';
-  }
-.icon-lock:before {
-  content: '\e620';
-  }
-.icon-flag:before {
-  content: '\e621';
-  }
-.icon-headphones:before {
-  content: '\e622';
-  }
-.icon-volume-off:before {
-  content: '\e623';
-  }
-.icon-volume-up:before {
-  content: '\e625';
-  }
-.icon-qrcode:before {
-  content: '\e626';
-  }
-.icon-barcode:before {
-  content: '\e627';
-  }
-.icon-tag:before {
-  content: '\e628';
-  }
-.icon-tags:before {
-  content: '\e629';
-  }
-.icon-book:before {
-  content: '\e62a';
-  }
-.icon-bookmark:before {
-  content: '\e62b';
-  }
-.icon-print:before {
-  content: '\e62c';
-  }
-.icon-camera:before {
-  content: '\e62d';
-  }
-.icon-font:before {
-  content: '\e62e';
-  }
-.icon-bold:before {
-  content: '\e62f';
-  }
-.icon-italic:before {
-  content: '\f033';
-  }
-.icon-header:before {
-  content: '\f1dc';
-  }
-.icon-underline:before {
-  content: '\f0cd';
-  }
-.icon-strikethrough:before {
-  content: '\f0cc';
-  }
-.icon-eraser:before {
-  content: '\f12d';
-  }
-.icon-align-justify:before {
-  content: '\e636';
-  }
-.icon-list:before {
-  content: '\e637';
-  }
-.icon-picture:before {
-  content: '\e63b';
-  }
-.icon-pencil:before {
-  content: '\e63c';
-  }
-.icon-map-marker:before {
-  content: '\e63d';
-  }
-.icon-adjust:before {
-  content: '\e63e';
-  }
-.icon-tint:before {
-  content: '\e63f';
-  }
-.icon-edit:before {
-  content: '\e640';
-  }
-.icon-share:before {
-  content: '\e641';
-  }
-.icon-checked:before {
-  content: '\e642';
-  }
-.icon-move:before {
-  content: '\e643';
-  }
-.icon-arrows:before {
-  content: '\e643';
-  }
-.icon-step-backward:before {
-  content: '\e644';
-  }
-.icon-fast-backward:before {
-  content: '\e645';
-  }
-.icon-backward:before {
-  content: '\e646';
-  }
-.icon-play:before {
-  content: '\e647';
-  }
-.icon-pause:before {
-  content: '\e648';
-  }
-.icon-stop:before {
-  content: '\e649';
-  }
-.icon-forward:before {
-  content: '\e64a';
-  }
-.icon-fast-forward:before {
-  content: '\e64b';
-  }
-.icon-step-forward:before {
-  content: '\e64c';
-  }
-.icon-eject:before {
-  content: '\e64d';
-  }
-.icon-chevron-left:before {
-  content: '\e64e';
-  }
-.icon-chevron-right:before {
-  content: '\e64f';
-  }
-.icon-plus-sign:before {
-  content: '\e650';
-  }
-.icon-minus-sign:before {
-  content: '\e651';
-  }
-.icon-remove-sign:before {
-  content: '\e652';
-  }
-.icon-ok-sign:before {
-  content: '\e653';
-  }
-.icon-check-circle:before {
-  content: '\e653';
-  }
-.icon-question-sign:before {
-  content: '\e654';
-  }
-.icon-info-sign:before {
-  content: '\e655';
-  }
-.icon-remove-circle:before {
-  content: '\e657';
-  }
-.icon-ok-circle:before {
-  content: '\e658';
-  }
-.icon-check-circle-o:before {
-  content: '\e658';
-  }
-.icon-ban-circle:before {
-  content: '\e659';
-  }
-.icon-arrow-left:before {
-  content: '\e65a';
-  }
-.icon-arrow-right:before {
-  content: '\e65b';
-  }
-.icon-arrow-up:before {
-  content: '\e65c';
-  }
-.icon-arrow-down:before {
-  content: '\e65d';
-  }
-.icon-share-alt:before {
-  content: '\e65e';
-  }
-.icon-resize-full:before {
-  content: '\e65f';
-  }
-.icon-resize-small:before {
-  content: '\e660';
-  }
-.icon-plus:before {
-  content: '\e661';
-  }
-.icon-minus:before {
-  content: '\e662';
-  }
-.icon-asterisk:before {
-  content: '\e663';
-  }
-.icon-exclamation-sign:before {
-  content: '\e664';
-  }
-.icon-gift:before {
-  content: '\e665';
-  }
-.icon-leaf:before {
-  content: '\e666';
-  }
-.icon-eye-open:before {
-  content: '\e668';
-  }
-.icon-eye-close:before {
-  content: '\e669';
-  }
-.icon-warning-sign:before {
-  content: '\e66a';
-  }
-.icon-plane:before {
-  content: '\e66b';
-  }
-.icon-calendar:before {
-  content: '\e66c';
-  }
-.icon-random:before {
-  content: '\e66d';
-  }
-.icon-comment:before {
-  content: '\e66e';
-  }
-.icon-chevron-up:before {
-  content: '\e670';
-  }
-.icon-chevron-down:before {
-  content: '\e671';
-  }
-.icon-shopping-cart:before {
-  content: '\e673';
-  }
-.icon-folder-close:before {
-  content: '\e674';
-  }
-.icon-folder-open:before {
-  content: '\e675';
-  }
-.icon-resize-v:before {
-  content: '\e676';
-  }
-.icon-resize-h:before {
-  content: '\e677';
-  }
-.icon-bar-chart-alt:before {
-  content: '\e678';
-  }
-.icon-camera-retro:before {
-  content: '\e679';
-  }
-.icon-key:before {
-  content: '\e67a';
-  }
-.icon-cogs:before {
-  content: '\e67b';
-  }
-.icon-comments:before {
-  content: '\e67c';
-  }
-.icon-thumbs-o-up:before {
-  content: '\e67d';
-  }
-.icon-thumbs-o-down:before {
-  content: '\e67e';
-  }
-.icon-star-half:before {
-  content: '\e67f';
-  }
-.icon-heart-empty:before {
-  content: '\e680';
-  }
-.icon-signout:before {
-  content: '\e681';
-  }
-.icon-pushpin:before {
-  content: '\e683';
-  }
-.icon-external-link:before {
-  content: '\e684';
-  }
-.icon-signin:before {
-  content: '\e685';
-  }
-.icon-trophy:before {
-  content: '\e686';
-  }
-.icon-upload-alt:before {
-  content: '\e688';
-  }
-.icon-lemon:before {
-  content: '\e689';
-  }
-.icon-phone:before {
-  content: '\e68a';
-  }
-.icon-check-empty:before {
-  content: '\e68b';
-  }
-.icon-bookmark-empty:before {
-  content: '\e68c';
-  }
-.icon-phone-sign:before {
-  content: '\e68d';
-  }
-.icon-credit:before {
-  content: '\e690';
-  }
-.icon-rss:before {
-  content: '\e691';
-  }
-.icon-hdd:before {
-  content: '\e692';
-  }
-.icon-bullhorn:before {
-  content: '\e693';
-  }
-.icon-bell:before {
-  content: '\e694';
-  }
-.icon-certificate:before {
-  content: '\e695';
-  }
-.icon-hand-right:before {
-  content: '\e696';
-  }
-.icon-hand-left:before {
-  content: '\e697';
-  }
-.icon-hand-up:before {
-  content: '\e698';
-  }
-.icon-hand-down:before {
-  content: '\e699';
-  }
-.icon-circle-arrow-left:before {
-  content: '\e69a';
-  }
-.icon-circle-arrow-right:before {
-  content: '\e69b';
-  }
-.icon-circle-arrow-up:before {
-  content: '\e69c';
-  }
-.icon-circle-arrow-down:before {
-  content: '\e69d';
-  }
-.icon-globe:before {
-  content: '\e69e';
-  }
-.icon-wrench:before {
-  content: '\e69f';
-  }
-.icon-tasks:before {
-  content: '\e6a0';
-  }
-.icon-filter:before {
-  content: '\e6a1';
-  }
-.icon-group:before {
-  content: '\e6a4';
-  }
-.icon-link:before {
-  content: '\e6a5';
-  }
-.icon-cloud:before {
-  content: '\e6a6';
-  }
-.icon-beaker:before {
-  content: '\e6a7';
-  }
-.icon-cut:before {
-  content: '\e6a8';
-  }
-.icon-copy:before {
-  content: '\e6a9';
-  }
-.icon-paper-clip:before {
-  content: '\e6aa';
-  }
-.icon-save:before {
-  content: '\e6ab';
-  }
-.icon-sign-blank:before {
-  content: '\e6ac';
-  }
-.icon-bars:before {
-  content: '\e6ad';
-  }
-.icon-reorder:before {
-  content: '\e6ad';
-  }
-.icon-list-ul:before {
-  content: '\e6ae';
-  }
-.icon-list-ol:before {
-  content: '\e6af';
-  }
-.icon-table:before {
-  content: '\e6b2';
-  }
-.icon-magic:before {
-  content: '\e6b3';
-  }
-.icon-caret-down:before {
-  content: '\e6b8';
-  }
-.icon-caret-up:before {
-  content: '\e6b9';
-  }
-.icon-caret-left:before {
-  content: '\e6ba';
-  }
-.icon-caret-right:before {
-  content: '\e6bb';
-  }
-.icon-columns:before {
-  content: '\e6bc';
-  }
-.icon-sort:before {
-  content: '\e6bd';
-  }
-.icon-sort-down:before {
-  content: '\e6be';
-  }
-.icon-sort-up:before {
-  content: '\e6bf';
-  }
-.icon-envelope-alt:before {
-  content: '\e6c0';
-  }
-.icon-undo:before {
-  content: '\e6c1';
-  }
-.icon-dashboard:before {
-  content: '\e6c3';
-  }
-.icon-comment-alt:before {
-  content: '\e6c4';
-  }
-.icon-comments-alt:before {
-  content: '\e6c5';
-  }
-.icon-bolt:before {
-  content: '\e6c6';
-  }
-.icon-sitemap:before {
-  content: '\e6c7';
-  }
-.icon-umbrella:before {
-  content: '\e6c8';
-  }
-.icon-paste:before {
-  content: '\e6c9';
-  }
-.icon-lightbulb:before {
-  content: '\e6ca';
-  }
-.icon-exchange:before {
-  content: '\e6cb';
-  }
-.icon-cloud-download:before {
-  content: '\e6cc';
-  }
-.icon-cloud-upload:before {
-  content: '\e6cd';
-  }
-.icon-bell-alt:before {
-  content: '\e6d1';
-  }
-.icon-coffee:before {
-  content: '\e6d2';
-  }
-.icon-file-text-o:before {
-  content: '\e6d4';
-  }
-.icon-file-text-alt:before {
-  content: '\e6d4';
-  }
-.icon-building:before {
-  content: '\e6d5';
-  }
-.icon-double-angle-left:before {
-  content: '\e6dc';
-  }
-.icon-double-angle-right:before {
-  content: '\e6dd';
-  }
-.icon-double-angle-up:before {
-  content: '\e6de';
-  }
-.icon-double-angle-down:before {
-  content: '\e6df';
-  }
-.icon-angle-left:before {
-  content: '\e6e0';
-  }
-.icon-angle-right:before {
-  content: '\e6e1';
-  }
-.icon-angle-up:before {
-  content: '\e6e2';
-  }
-.icon-angle-down:before {
-  content: '\e6e3';
-  }
-.icon-desktop:before {
-  content: '\e6e4';
-  }
-.icon-laptop:before {
-  content: '\e6e5';
-  }
-.icon-tablet:before {
-  content: '\e6e6';
-  }
-.icon-mobile:before {
-  content: '\e6e7';
-  }
-.icon-circle-blank:before {
-  content: '\e6e8';
-  }
-.icon-quote-left:before {
-  content: '\e6e9';
-  }
-.icon-quote-right:before {
-  content: '\e6ea';
-  }
-.icon-spinner:before {
-  content: '\e6eb';
-  }
-.icon-circle:before {
-  content: '\e6ec';
-  }
-.icon-reply:before {
-  content: '\e6ed';
-  }
-.icon-folder-close-alt:before {
-  content: '\e6ef';
-  }
-.icon-folder-open-alt:before {
-  content: '\e6f0';
-  }
-.icon-expand-alt:before {
-  content: '\e6f1';
-  }
-.icon-collapse-alt:before {
-  content: '\e6f2';
-  }
-.icon-smile:before {
-  content: '\e6f3';
-  }
-.icon-frown:before {
-  content: '\e6f4';
-  }
-.icon-meh:before {
-  content: '\e6f5';
-  }
-.icon-gamepad:before {
-  content: '\e6f6';
-  }
-.icon-keyboard:before {
-  content: '\e6f7';
-  }
-.icon-flag-alt:before {
-  content: '\e6f8';
-  }
-.icon-flag-checkered:before {
-  content: '\e6f9';
-  }
-.icon-terminal:before {
-  content: '\e6fa';
-  }
-.icon-code:before {
-  content: '\e6fb';
-  }
-.icon-reply-all:before {
-  content: '\e6fc';
-  }
-.icon-star-half-full:before {
-  content: '\e6fd';
-  }
-.icon-location-arrow:before {
-  content: '\e6fe';
-  }
-.icon-crop:before {
-  content: '\e6ff';
-  }
-.icon-code-fork:before {
-  content: '\e700';
-  }
-.icon-unlink:before {
-  content: '\e701';
-  }
-.icon-question:before {
-  content: '\e702';
-  }
-.icon-info:before {
-  content: '\e703';
-  }
-.icon-shield:before {
-  content: '\e70b';
-  }
-.icon-calendar-empty:before {
-  content: '\e70c';
-  }
-.icon-rocket:before {
-  content: '\e70e';
-  }
-.icon-chevron-sign-left:before {
-  content: '\e70f';
-  }
-.icon-chevron-sign-right:before {
-  content: '\e710';
-  }
-.icon-chevron-sign-up:before {
-  content: '\e711';
-  }
-.icon-chevron-sign-down:before {
-  content: '\e712';
-  }
-.icon-html5:before {
-  content: '\e713';
-  }
-.icon-anchor:before {
-  content: '\e714';
-  }
-.icon-unlock-alt:before {
-  content: '\e715';
-  }
-.icon-bullseye:before {
-  content: '\e716';
-  }
-.icon-ellipsis-h:before {
-  content: '\e717';
-  }
-.icon-ellipsis-v:before {
-  content: '\e718';
-  }
-.icon-rss-sign:before {
-  content: '\e719';
-  }
-.icon-play-sign:before {
-  content: '\e71a';
-  }
-.icon-minus-sign-alt:before {
-  content: '\e71c';
-  }
-.icon-check-minus:before {
-  content: '\e71d';
-  }
-.icon-level-up:before {
-  content: '\e71e';
-  }
-.icon-level-down:before {
-  content: '\e71f';
-  }
-.icon-check-sign:before {
-  content: '\e720';
-  }
-.icon-edit-sign:before {
-  content: '\e721';
-  }
-.icon-external-link-sign:before {
-  content: '\e722';
-  }
-.icon-share-sign:before {
-  content: '\e723';
-  }
-.icon-compass:before {
-  content: '\e724';
-  }
-.icon-collapse:before {
-  content: '\e725';
-  }
-.icon-collapse-top:before {
-  content: '\e726';
-  }
-.icon-expand:before {
-  content: '\e727';
-  }
-.icon-dollar:before {
-  content: '\e728';
-  }
-.icon-yen:before {
-  content: '\e729';
-  }
-.icon-file:before {
-  content: '\e72b';
-  }
-.icon-file-text:before {
-  content: '\e72c';
-  }
-.icon-sort-by-alphabet:before {
-  content: '\e72d';
-  }
-.icon-sort-by-alphabet-alt:before {
-  content: '\e72e';
-  }
-.icon-sort-by-attributes:before {
-  content: '\e72f';
-  }
-.icon-sort-by-attributes-alt:before {
-  content: '\e730';
-  }
-.icon-sort-by-order:before {
-  content: '\e731';
-  }
-.icon-sort-by-order-alt:before {
-  content: '\e732';
-  }
-.icon-thumbs-up:before {
-  content: '\e733';
-  }
-.icon-thumbs-down:before {
-  content: '\e734';
-  }
-.icon-long-arrow-down:before {
-  content: '\e736';
-  }
-.icon-long-arrow-up:before {
-  content: '\e737';
-  }
-.icon-long-arrow-left:before {
-  content: '\e738';
-  }
-.icon-long-arrow-right:before {
-  content: '\e739';
-  }
-.icon-apple:before {
-  content: '\e73a';
-  }
-.icon-windows:before {
-  content: '\e73b';
-  }
-.icon-android:before {
-  content: '\e73c';
-  }
-.icon-linux:before {
-  content: '\e73d';
-  }
-.icon-sun:before {
-  content: '\e742';
-  }
-.icon-moon:before {
-  content: '\e743';
-  }
-.icon-archive:before {
-  content: '\e744';
-  }
-.icon-bug:before {
-  content: '\e745';
-  }
-.icon-zhifubao:before,
-.icon-alipay:before {
-  content: '\e901';
-  }
-.icon-zhifubao-square:before,
-.icon-alipay-square:before {
-  content: '\e900';
-  }
-.icon-taobao:before {
-  content: '\e902';
-  }
-.icon-weibo:before {
-  content: '\e746';
-  }
-.icon-renren:before {
-  content: '\e747';
-  }
-.icon-chrome:before {
-  content: '\e76c';
-  }
-.icon-firefox:before {
-  content: '\e76d';
-  }
-.icon-ie:before {
-  content: '\e76e';
-  }
-.icon-opera:before {
-  content: '\e76f';
-  }
-.icon-safari:before {
-  content: '\e770';
-  }
-.icon-node:before {
-  content: '\e76a';
-  }
-.icon-layout:before {
-  content: '\e768';
-  }
-.icon-usecase:before {
-  content: '\e74a';
-  }
-.icon-stack:before {
-  content: '\e769';
-  }
-.icon-branch:before {
-  content: '\e74b';
-  }
-.icon-chat:before {
-  content: '\e74c';
-  }
-.icon-chat-line:before {
-  content: '\e74f';
-  }
-.icon-comment-line:before {
-  content: '\e74f';
-  }
-.icon-chat-dot:before {
-  content: '\e750';
-  }
-.icon-cube:before {
-  content: '\e751';
-  }
-.icon-database:before {
-  content: '\f1c0';
-  }
-.icon-align-left:before {
-  content: '\e633';
-  }
-.close {
-  float: right;
-  font-size: 19.5px;
-  font-weight: bold;
-  line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
-  filter: alpha(opacity=20);
-  opacity: .2;
-  }
-.close:hover,
-.close:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  filter: alpha(opacity=50);
-  opacity: .5;
-  }
-button.close {
-  -webkit-appearance: none;
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  }
-@media (min-width: 768px) {
-  ::-webkit-scrollbar {
-    width: 10px;
-    height: 10px;
-    }
-  ::-webkit-scrollbar-button {
-    width: 0;
-    height: 0;
-    }
-  ::-webkit-scrollbar-button:start:decrement,
-  ::-webkit-scrollbar-button:end:increment {
-    display: block;
-    }
-  ::-webkit-scrollbar-button:vertical:start:increment,
-  ::-webkit-scrollbar-button:vertical:end:decrement {
-    display: none;
-    }
-  ::-webkit-scrollbar-track:vertical,
-  ::-webkit-scrollbar-track:horizontal,
-  ::-webkit-scrollbar-thumb:vertical,
-  ::-webkit-scrollbar-thumb:horizontal,
-  ::-webkit-scrollbar-track:vertical,
-  ::-webkit-scrollbar-track:horizontal,
-  ::-webkit-scrollbar-thumb:vertical,
-  ::-webkit-scrollbar-thumb:horizontal {
-    border-color: transparent;
-    border-style: solid;
-    }
-  ::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal {
-    background-color: #fff;
-    -webkit-background-clip: padding-box;
-            background-clip: padding-box;
-    }
-  ::-webkit-scrollbar-thumb {
-    min-height: 28px;
-    padding-top: 100;
-    background-color: rgba(0, 0, 0, .2);
-    -webkit-background-clip: padding-box;
-            background-clip: padding-box;
-    border-radius: 5px;
-    -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07);
-    }
-  ::-webkit-scrollbar-thumb:hover {
-    background-color: rgba(0, 0, 0, .4);
-    -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, .25);
-    }
-  ::-webkit-scrollbar-thumb:active {
-    background-color: rgba(0, 0, 0, .5);
-    -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .35);
-    }
-  ::-webkit-scrollbar-track:vertical,
-  ::-webkit-scrollbar-track:horizontal,
-  ::-webkit-scrollbar-thumb:vertical,
-  ::-webkit-scrollbar-thumb:horizontal {
-    border-width: 0;
-    }
-  ::-webkit-scrollbar-track:hover {
-    background-color: rgba(0, 0, 0, .05);
-    -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1);
-    }
-  ::-webkit-scrollbar-track:active {
-    background-color: rgba(0, 0, 0, .05);
-    -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .14), inset -1px -1px 0 rgba(0, 0, 0, .07);
-    }
-  .scrollbar-hover::-webkit-scrollbar,
-  .scrollbar-hover::-webkit-scrollbar-button,
-  .scrollbar-hover::-webkit-scrollbar-track,
-  .scrollbar-hover::-webkit-scrollbar-thumb {
-    visibility: hidden;
-    }
-  .scrollbar-hover:hover::-webkit-scrollbar,
-  .scrollbar-hover:hover::-webkit-scrollbar-button,
-  .scrollbar-hover:hover::-webkit-scrollbar-track,
-  .scrollbar-hover:hover::-webkit-scrollbar-thumb {
-    visibility: visible;
-    }
-  }
-table {
-  max-width: 100%;
-  background-color: transparent;
-  }
-caption {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  color: #808080;
-  text-align: left;
-  }
-th {
-  text-align: left;
-  }
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-  }
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 1.53846154;
-  vertical-align: top;
-  border-bottom: 1px solid #ddd;
-  -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: background .2s cubic-bezier(.175, .885, .32, 1);
-          transition: background .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.table > thead > tr > th {
-  vertical-align: bottom;
-  background-color: #f1f1f1;
-  border-bottom: 1px solid #ddd;
-  }
-.table > tbody + tbody {
-  border-top: 2px solid #ddd;
-  }
-.table-fixed {
-  table-layout: fixed;
-  }
-.table-fixed th,
-.table-fixed td {
-  overflow: hidden;
-  white-space: nowrap;
-  }
-.table-fixed tfoot > tr > th,
-.table-fixed tfoot > tr > td,
-.table-fixed .nofixed,
-.table-fixed .nofixed {
-  overflow: visible;
-  }
-.table-borderless thead > tr > th,
-.table-borderless th,
-.table-borderless td {
-  border: none;
-  }
-.table-auto {
-  width: auto;
-  max-width: 100%;
-  }
-.table-condensed th,
-.table-condensed td {
-  padding: 5px;
-  }
-.table-bordered {
-  border: 1px solid #ddd;
-  }
-.table-bordered th,
-.table-bordered td {
-  border: 1px solid #ddd;
-  }
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-  }
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
-  background-color: #ebf2f9;
-  }
-table col[class*="col-"] {
-  display: table-column;
-  float: none;
-  }
-table td[class*="col-"],
-table th[class*="col-"] {
-  display: table-cell;
-  float: none;
-  }
-.table tr > td.active,
-.table tr > th.active,
-.table tr.active > td,
-.table tr.active > th {
-  background-color: #ffe7bc;
-  }
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #ddf4df;
-  border-color: #bae8b6;
-  }
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #caeecd;
-  border-color: #a8e1a3;
-  }
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #ffe5e0;
-  border-color: #ffc6c7;
-  }
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ffd0c6;
-  border-color: #ffadad;
-  }
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fff0d5;
-  border-color: #ffdcbc;
-  }
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #ffe7bc;
-  border-color: #ffcea2;
-  }
-.table-responsive {
-  min-height: .01%;
-  overflow-x: auto;
-  }
-@media screen and (max-width: 767px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 15px;
-    overflow-y: hidden;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
-    }
-  .table-responsive > .table {
-    margin-bottom: 0;
-    }
-  .table-responsive > .table > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-    }
-  .table-responsive > .table-bordered {
-    border: 0;
-    }
-  .table-responsive > .table-bordered th {
-    border-top: none;
-    }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-    }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-    }
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-    }
-  }
-.list-group {
-  padding-left: 0;
-  margin-bottom: 20px;
-  }
-.list-group-item {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-  margin-bottom: -1px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  }
-.list-group-item:first-child {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  }
-.list-group-item:last-child {
-  margin-bottom: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.list-group-item > .label-badge {
-  float: right;
-  }
-.list-group-item > .label-badge + .label-badge {
-  margin-right: 5px;
-  }
-a.list-group-item {
-  color: #555;
-  }
-a.list-group-item .list-group-item-heading {
-  color: #333;
-  }
-a.list-group-item:hover,
-a.list-group-item:focus {
-  color: #353535;
-  text-decoration: none;
-  background-color: #ebf2f9;
-  }
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  z-index: 2;
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading {
-  color: inherit;
-  }
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text {
-  color: #e6e6e6;
-  }
-.list-group-item-heading {
-  margin-top: 0;
-  margin-bottom: 5px;
-  color: #333;
-  }
-.list-group-item-text {
-  margin-bottom: 0;
-  line-height: 1.3;
-  }
-.panel {
-  margin-bottom: 20px;
-  background-color: #fff;
-  border: 1px solid transparent;
-  border-color: #ddd;
-  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 > .panel-heading {
-  color: #333;
-  background-color: #f5f5f5;
-  border-color: #ddd;
-  }
-.panel > .panel-heading + .panel-collapse .panel-body {
-  border-top-color: #ddd;
-  }
-.panel > .panel-footer + .panel-collapse .panel-body {
-  border-bottom-color: #ddd;
-  }
-.panel-body {
-  padding: 15px;
-  }
-.panel > .table {
-  margin-bottom: 0;
-  }
-.panel > .panel-body + .table {
-  border-top: 1px solid #ddd;
-  }
-.panel-heading {
-  padding: 8px 15px;
-  border-bottom: 1px solid transparent;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-  }
-.panel-title {
-  margin-top: 0;
-  margin-bottom: 0;
-  font-size: 15px;
-  }
-.panel-title > a {
-  color: inherit;
-  }
-.panel-footer {
-  padding: 10px 15px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-  }
-.panel-primary {
-  border-color: #3280fc;
-  }
-.panel-primary > .panel-heading {
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.panel-primary > .panel-heading + .panel-collapse .panel-body {
-  border-top-color: #3280fc;
-  }
-.panel-primary > .panel-footer + .panel-collapse .panel-body {
-  border-bottom-color: #3280fc;
-  }
-.panel-success {
-  border-color: #bae8b6;
-  }
-.panel-success > .panel-heading {
-  color: #38b03f;
-  background-color: #ddf4df;
-  border-color: #bae8b6;
-  }
-.panel-success > .panel-heading + .panel-collapse .panel-body {
-  border-top-color: #bae8b6;
-  }
-.panel-success > .panel-footer + .panel-collapse .panel-body {
-  border-bottom-color: #bae8b6;
-  }
-.panel-warning {
-  border-color: #ffdcbc;
-  }
-.panel-warning > .panel-heading {
-  color: #f1a325;
-  background-color: #fff0d5;
-  border-color: #ffdcbc;
-  }
-.panel-warning > .panel-heading + .panel-collapse .panel-body {
-  border-top-color: #ffdcbc;
-  }
-.panel-warning > .panel-footer + .panel-collapse .panel-body {
-  border-bottom-color: #ffdcbc;
-  }
-.panel-danger {
-  border-color: #ffc6c7;
-  }
-.panel-danger > .panel-heading {
-  color: #ea644a;
-  background-color: #ffe5e0;
-  border-color: #ffc6c7;
-  }
-.panel-danger > .panel-heading + .panel-collapse .panel-body {
-  border-top-color: #ffc6c7;
-  }
-.panel-danger > .panel-footer + .panel-collapse .panel-body {
-  border-bottom-color: #ffc6c7;
-  }
-.panel-info {
-  border-color: #a2e4de;
-  }
-.panel-info > .panel-heading {
-  color: #03b8cf;
-  background-color: #ddf3f5;
-  border-color: #a2e4de;
-  }
-.panel-info > .panel-heading + .panel-collapse .panel-body {
-  border-top-color: #a2e4de;
-  }
-.panel-info > .panel-footer + .panel-collapse .panel-body {
-  border-bottom-color: #a2e4de;
-  }
-.panel-group {
-  margin-bottom: 20px;
-  }
-.panel-group .panel {
-  margin-bottom: 0;
-  border-radius: 4px;
-  }
-.panel-group .panel + .panel {
-  margin-top: 5px;
-  }
-.panel-group .panel-heading {
-  border-bottom: 0;
-  }
-.panel-group .panel-heading + .panel-collapse > .panel-body,
-.panel-group .panel-heading + .panel-collapse > .list-group {
-  border-top: 1px solid #ddd;
-  }
-.panel-group .panel-footer {
-  border-top: 0;
-  }
-.panel-group .panel-footer + .panel-collapse .panel-body {
-  border-bottom: 1px solid #ddd;
-  }
-.panel > .list-group,
-.panel > .panel-collapse > .list-group {
-  margin-bottom: 0;
-  }
-.panel > .list-group .list-group-item,
-.panel > .panel-collapse > .list-group .list-group-item {
-  border-width: 1px 0;
-  border-radius: 0;
-  }
-.panel > .list-group:first-child .list-group-item:first-child,
-.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
-  border-top: 0;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-  }
-.panel > .list-group:last-child .list-group-item:last-child,
-.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
-  border-bottom: 0;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-  }
-.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  }
-.panel-heading + .list-group .list-group-item:first-child {
-  border-top-width: 0;
-  }
-.list-group + .panel-footer {
-  border-top-width: 0;
-  }
-.alert {
-  padding: 15px;
-  margin-bottom: 20px;
-  color: #282828;
-  background-color: #f1f1f1;
-  border-radius: 3px;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.alert hr {
-  border-top-color: #e4e4e4;
-  }
-.alert .alert-link {
-  color: #161616;
-  }
-.alert h4 {
-  margin-top: 0;
-  color: inherit;
-  }
-.alert hr {
-  margin: 10px 0;
-  }
-.alert p,
-.alert ul {
-  margin-bottom: 0;
-  }
-.alert p + p {
-  margin-top: 5px;
-  }
-.alert-link {
-  font-weight: bold;
-  }
-.alert > [class*="icon-"] {
-  float: left;
-  margin-top: -5px;
-  font-size: 42px;
-  opacity: .6;
-  -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.alert > [class*="icon-"] + .content {
-  min-height: 30px;
-  margin-left: 64px;
-  }
-.alert.with-icon {
-  display: table;
-  width: 100%;
-  }
-.alert.with-icon > [class*="icon-"],
-.alert.with-icon > [class*="icon-"] + .content {
-  display: table-cell;
-  float: none;
-  min-height: 0;
-  margin: 0;
-  vertical-align: middle;
-  }
-.alert.with-icon > [class*="icon-"] {
-  width: 48px;
-  text-align: center;
-  }
-.alert.with-icon > [class*="icon-"] + .content {
-  padding-left: 1em;
-  }
-.alert-block {
-  margin: 0;
-  border-radius: 0;
-  }
-.alert-dismissable {
-  padding-right: 35px;
-  }
-.alert-dismissable .close {
-  position: relative;
-  top: -6px;
-  right: -21px;
-  color: inherit;
-  }
-.alert-primary {
-  color: #282828;
-  background-color: #ebf2f9;
-  }
-.alert-primary hr {
-  border-top-color: #d0e0f1;
-  }
-.alert-primary .alert-link {
-  color: #161616;
-  }
-.alert-success {
-  color: #329d38;
-  background-color: #ddf4df;
-  }
-.alert-success hr {
-  border-top-color: #bae8b6;
-  }
-.alert-success .alert-link {
-  color: #29822e;
-  }
-.alert-info {
-  color: #03a2b6;
-  background-color: #ddf3f5;
-  }
-.alert-info hr {
-  border-top-color: #a2e4de;
-  }
-.alert-info .alert-link {
-  color: #028293;
-  }
-.alert-warning {
-  color: #ed980f;
-  background-color: #fff0d5;
-  }
-.alert-warning hr {
-  border-top-color: #ffdcbc;
-  }
-.alert-warning .alert-link {
-  color: #cc830d;
-  }
-.alert-danger {
-  color: #e75033;
-  background-color: #ffe5e0;
-  }
-.alert-danger hr {
-  border-top-color: #ffc6c7;
-  }
-.alert-danger .alert-link {
-  color: #dd391a;
-  }
-.alert-inverse {
-  color: #fff;
-  background-color: #353535;
-  border-color: #353535;
-  }
-.alert-inverse hr {
-  border-top-color: #ddd;
-  border-top-color: rgba(221, 221, 221, .25);
-  }
-.alert-inverse .alert-link {
-  color: rgba(255, 255, 255, .8);
-  }
-.alert-primary-inverse {
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.alert-primary-inverse hr {
-  border-top-color: #ddd;
-  border-top-color: rgba(221, 221, 221, .25);
-  }
-.alert-primary-inverse .alert-link {
-  color: rgba(255, 255, 255, .8);
-  }
-.alert-success-inverse {
-  color: #fff;
-  background-color: #38b03f;
-  border-color: #38b03f;
-  }
-.alert-success-inverse hr {
-  border-top-color: #ddd;
-  border-top-color: rgba(221, 221, 221, .25);
-  }
-.alert-success-inverse .alert-link {
-  color: rgba(255, 255, 255, .8);
-  }
-.alert-info-inverse {
-  color: #fff;
-  background-color: #03b8cf;
-  border-color: #03b8cf;
-  }
-.alert-info-inverse hr {
-  border-top-color: #ddd;
-  border-top-color: rgba(221, 221, 221, .25);
-  }
-.alert-info-inverse .alert-link {
-  color: rgba(255, 255, 255, .8);
-  }
-.alert-warning-inverse {
-  color: #fff;
-  background-color: #f1a325;
-  border-color: #f1a325;
-  }
-.alert-warning-inverse hr {
-  border-top-color: #ddd;
-  border-top-color: rgba(221, 221, 221, .25);
-  }
-.alert-warning-inverse .alert-link {
-  color: rgba(255, 255, 255, .8);
-  }
-.alert-danger-inverse {
-  color: #fff;
-  background-color: #ea644a;
-  border-color: #ea644a;
-  }
-.alert-danger-inverse hr {
-  border-top-color: #ddd;
-  border-top-color: rgba(221, 221, 221, .25);
-  }
-.alert-danger-inverse .alert-link {
-  color: rgba(255, 255, 255, .8);
-  }
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-  }
-.input-group[class*="col-"] {
-  float: none;
-  padding-right: 0;
-  padding-left: 0;
-  }
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0;
-  }
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-  }
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-  }
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-  }
-.input-group-addon {
-  padding: 5px 12px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #222;
-  text-align: center;
-  background-color: #e5e5e5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  }
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-  }
-.input-group-addon.fix-border {
-  border-right: 0;
-  border-left: 0;
-  }
-.input-group-addon:empty,
-.input-group-addon.fix-padding {
-  width: 1px;
-  padding: 0;
-  }
-.input-group-btn.fix-border > .btn {
-  border-right: 0;
-  border-left: 0;
-  border-radius: 0;
-  }
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn,
-.input-group-btn:first-child > .btn-group-vertical > .btn,
-.input-group-btn:last-child > .btn-group-vertical:not(:last-child) > .btn {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-  }
-.input-group-addon:first-child {
-  border-right: 0;
-  }
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn,
-.input-group-btn:last-child > .btn-group-vertical > .btn,
-.input-group-btn:first-child > .btn-group-vertical:not(:first-child) > .btn {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.input-group-addon:last-child {
-  border-left: 0;
-  }
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap;
-  }
-.input-group-btn > .btn {
-  position: relative;
-  }
-.input-group-btn > .btn + .btn {
-  margin-left: -1px;
-  }
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
-  z-index: 2;
-  }
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group,
-.input-group-btn:first-child > .btn-group-vertical {
-  margin-right: -1px;
-  }
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group,
-.input-group-btn:last-child > .btn-group-vertical {
-  margin-left: -1px;
-  }
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 43px;
-  padding: 10px 16px;
-  font-size: 17px;
-  line-height: 1.25;
-  border-radius: 6px;
-  }
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 43px;
-  line-height: 43px;
-  }
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn {
-  height: auto;
-  }
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 24px;
-  padding: 2px 8px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-  }
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 24px;
-  line-height: 24px;
-  }
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn {
-  height: auto;
-  }
-.input-group-addon.input-sm {
-  padding: 2px 8px;
-  font-size: 12px;
-  border-radius: 3px;
-  }
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 17px;
-  border-radius: 6px;
-  }
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-  }
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: inherit;
-  color: #333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-  }
-label {
-  display: inline-block;
-  margin-bottom: 5px;
-  font-weight: bold;
-  }
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  }
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 5px 0 0;
-  margin-top: 0 \9;
-  /* IE8-9 */
-  line-height: normal;
-  }
-input[type="file"] {
-  display: block;
-  }
-select[multiple],
-select[size] {
-  height: auto;
-  }
-select:-moz-focusring {
-  color: transparent;
-  text-shadow: 0 0 0 #000;
-  }
-select optgroup {
-  font-family: inherit;
-  font-size: inherit;
-  font-style: inherit;
-  }
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-  }
-input[type="number"]::-webkit-outer-spin-button,
-input[type="number"]::-webkit-inner-spin-button {
-  height: auto;
-  }
-.form-control::-webkit-input-placeholder {
-  color: #808080;
-  }
-.form-control::-moz-placeholder {
-  color: #808080;
-  }
-.form-control:-ms-input-placeholder {
-  color: #808080;
-  }
-.form-control::placeholder {
-  color: #808080;
-  }
-.form-control {
-  display: block;
-  width: 100%;
-  height: 32px;
-  padding: 5px 8px;
-  font-size: 13px;
-  line-height: 1.53846154;
-  color: #222;
-  vertical-align: middle;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-          transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-          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, -webkit-box-shadow ease-in-out .15s;
-  }
-.form-control:focus {
-  border-color: #145ccd;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
-  }
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-  background-color: #e5e5e5;
-  }
-.form-control[readonly] {
-  cursor: default;
-  }
-textarea.form-control {
-  height: auto;
-  }
-.form-group {
-  margin-bottom: 15px;
-  }
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  margin-top: 10px;
-  margin-bottom: 10px;
-  }
-.radio label,
-.checkbox label {
-  min-height: 20px;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  cursor: pointer;
-  }
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-top: 3px;
-  margin-top: 4px \9;
-  margin-left: -20px;
-  }
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-  }
-.radio-inline,
-.checkbox-inline {
-  position: relative;
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  vertical-align: middle;
-  cursor: pointer;
-  }
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-  }
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
-  cursor: not-allowed;
-  }
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-  }
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
-  cursor: not-allowed;
-  }
-.input-sm {
-  height: 24px;
-  padding: 2px 8px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-  }
-select.input-sm {
-  height: 24px;
-  line-height: 24px;
-  }
-textarea.input-sm {
-  height: auto;
-  }
-.input-lg {
-  height: 43px;
-  padding: 10px 16px;
-  font-size: 17px;
-  line-height: 1.25;
-  border-radius: 6px;
-  }
-select.input-lg {
-  height: 43px;
-  line-height: 43px;
-  }
-textarea.input-lg {
-  height: auto;
-  }
-.has-warning .help-block,
-.has-warning > label {
-  color: #f1a325;
-  }
-.has-warning .form-control {
-  border-color: #f1a325;
-  -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: #d5890e;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85;
-  }
-.has-warning .input-group-addon {
-  color: #f1a325;
-  background-color: #fff0d5;
-  border-color: #f1a325;
-  }
-.has-error .help-block,
-.has-error > label {
-  color: #ea644a;
-  }
-.has-error .form-control {
-  border-color: #ea644a;
-  -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: #e53d1c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5;
-  }
-.has-error .input-group-addon {
-  color: #ea644a;
-  background-color: #ffe5e0;
-  border-color: #ea644a;
-  }
-.has-success .help-block,
-.has-success > label {
-  color: #38b03f;
-  }
-.has-success .form-control {
-  border-color: #38b03f;
-  -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: #2c8931;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f;
-  }
-.has-success .input-group-addon {
-  color: #38b03f;
-  background-color: #ddf4df;
-  border-color: #38b03f;
-  }
-.form-control-static {
-  min-height: 33px;
-  padding-top: 6px;
-  padding-bottom: 6px;
-  margin-bottom: 0;
-  }
-.help-block {
-  display: block;
-  margin: 5px 0;
-  color: #757575;
-  }
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-    }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-    }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    padding-left: 0;
-    margin-top: 0;
-    margin-bottom: 0;
-    }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    float: none;
-    margin-left: 0;
-    }
-  }
-.form-horizontal .form-group > label,
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  padding-top: 6px;
-  margin-top: 0;
-  margin-bottom: 0;
-  }
-.form-horizontal .form-group {
-  margin-right: -10px;
-  margin-left: -10px;
-  }
-@media (min-width: 768px) {
-  .form-horizontal .form-group > label {
-    text-align: right;
-    }
-  }
-.required {
-  position: relative;
-  }
-.required:after {
-  position: absolute;
-  top: 0;
-  right: -10px;
-  display: inline-block;
-  font-size: 17px;
-  color: #ea644a;
-  content: '*';
-  }
-.form-horizontal .required:after {
-  top: 5px;
-  right: -1px;
-  }
-.form-condensed .form-group {
-  margin-bottom: 10px;
-  }
-.form-condensed .form-control {
-  height: 24px;
-  padding: 2px 8px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-  }
-select.form-condensed .form-control {
-  height: 24px;
-  line-height: 24px;
-  }
-textarea.form-condensed .form-control {
-  height: auto;
-  }
-.form-condensed textarea.form-control {
-  height: auto;
-  }
-.form-condensed .btn {
-  padding: 2px 8px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 4px;
-  }
-.form-condensed .input-group > .form-control,
-.form-condensed .input-group > .input-group-addon,
-.form-condensed .input-group > .input-group-btn > .btn {
-  padding: 2px 8px;
-  font-size: 12px;
-  border-top-right-radius: 3px;
-  border-bottom-right-radius: 3px;
-  }
-.form-condensed.form-horizontal .form-group > label,
-.form-condensed.form-horizontal .radio,
-.form-condensed.form-horizontal .checkbox,
-.form-condensed.form-horizontal .radio-inline,
-.form-condensed.form-horizontal .checkbox-inline {
-  padding-top: 1px;
-  }
-.switch {
-  position: relative;
-  }
-.switch > input {
-  position: absolute;
-  top: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 100%;
-  margin: 0;
-  opacity: 0;
-  }
-.switch > label {
-  display: block;
-  padding: 5px 0 5px 35px;
-  margin: 0;
-  font-weight: normal;
-  line-height: 20px;
-  }
-.switch > label:before,
-.switch > label:after {
-  position: absolute;
-  top: 5px;
-  left: 0;
-  display: block;
-  width: 30px;
-  height: 20px;
-  pointer-events: none;
-  content: ' ';
-  border: 1px solid #ddd;
-  border-radius: 10px;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.switch > label:after {
-  top: 6px;
-  width: 18px;
-  height: 18px;
-  background-color: #fff;
-  border-color: #ccc;
-  border-radius: 9px;
-  -webkit-box-shadow: rgba(0, 0, 0, .05) 0 1px 4px, rgba(0, 0, 0, .12) 0 1px 2px;
-          box-shadow: rgba(0, 0, 0, .05) 0 1px 4px, rgba(0, 0, 0, .12) 0 1px 2px;
-  }
-.switch > input:checked + label:before {
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.switch > input:checked + label:after {
-  left: 11px;
-  border-color: #fff;
-  }
-.switch.text-left > label {
-  padding: 5px 35px 5px 0;
-  }
-.switch.text-left > label:before,
-.switch.text-left > label:after {
-  right: 0;
-  left: auto;
-  }
-.switch.text-left > label:after {
-  right: 12px;
-  }
-.switch.text-left > input:checked + label:after {
-  right: 1px;
-  left: auto;
-  }
-.switch.disabled {
-  pointer-events: none;
-  }
-.switch.disabled > label,
-.switch > input[disabled] + label {
-  color: #ddd;
-  pointer-events: none;
-  }
-.switch.disabled > label:before,
-.switch > input[disabled] + label:before {
-  background-color: #fafafa;
-  }
-.switch.disabled > label:after,
-.switch > input[disabled] + label:after {
-  opacity: .7;
-  }
-.switch.disabled > input:checked + label:before,
-.switch > input[disabled]:checked + label:before {
-  background-color: #ccc;
-  border-color: #ccc;
-  }
-.switch input:focus + label {
-  color: #3280fc;
-  }
-.switch input:focus + label:before {
-  border-color: #3280fc;
-  }
-.switch-inline {
-  display: inline-block;
-  }
-.code,
-code,
-kbd,
-pre,
-samp {
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  }
-kbd,
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #ea644a;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-  }
-kbd {
-  padding: 1px 4px;
-  font-weight: bold;
-  color: #666;
-  background-color: #f1f1f1;
-  border: 1px solid #d7d7d7;
-  border-bottom-width: 2px;
-  }
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 1.38461538;
-  color: #333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  }
-pre code {
-  padding: 0;
-  margin: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-  }
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-  }
-.com {
-  color: #93a1a1;
-  }
-.lit {
-  color: #195f91;
-  }
-.pun,
-.opn,
-.clo {
-  color: #93a1a1;
-  }
-.fun {
-  color: #dc322f;
-  }
-.str,
-.atv {
-  color: #d14;
-  }
-.kwd,
-.prettyprint .tag {
-  color: #1e347b;
-  }
-.typ,
-.atn,
-.dec,
-.var {
-  color: teal;
-  }
-.pln {
-  color: #48484c;
-  }
-.prettyprint.linenums {
-  -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-          box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-  }
-.prettyprint ol.linenums {
-  padding-left: 35px;
-  margin-bottom: 0;
-  line-height: 20px;
-  color: #bebec5;
-  text-shadow: 0 1px 0 #fff;
-  }
-.pager {
-  display: inline-block;
-  padding-left: 0;
-  margin: 20px 0;
-  list-style: none;
-  }
-.pager > li {
-  display: inline;
-  }
-.pager > li > a,
-.pager > li > span {
-  position: relative;
-  float: left;
-  padding: 5px 12px;
-  margin-left: -1px;
-  line-height: 1.53846154;
-  text-decoration: none;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  }
-.pager > li:first-child > a,
-.pager > li:first-child > span {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.pager > li:last-child > a,
-.pager > li:last-child > span {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-  }
-.pager > li > a:hover,
-.pager > li > span:hover,
-.pager > li > a:focus,
-.pager > li > span:focus {
-  z-index: 2;
-  background-color: #e5e5e5;
-  }
-.pager > li.active > a,
-.pager > li.active > span,
-.pager > li.active > a:hover,
-.pager > li.active > span:hover {
-  z-index: 3;
-  color: #fff;
-  cursor: default;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.pager > li.disabled > span,
-.pager > li.disabled > span:hover,
-.pager > li.disabled > span:focus,
-.pager > li.disabled > a,
-.pager > li.disabled > a:hover,
-.pager > li.disabled > a:focus {
-  color: #ddd;
-  pointer-events: none;
-  cursor: not-allowed;
-  background-color: #fff;
-  border-color: #ddd;
-  }
-.pager-justify {
-  display: block;
-  }
-.pager-justify .next > a,
-.pager-justify .next > span {
-  float: right;
-  border-radius: 4px;
-  }
-.pager-justify .previous > a,
-.pager-justify .previous > span {
-  float: left;
-  border-radius: 4px;
-  }
-.pager-lg > li > a,
-.pager-lg > li > span {
-  padding: 10px 16px;
-  font-size: 17px;
-  }
-.pager-lg > li:first-child > a,
-.pager-lg > li:first-child > span {
-  border-top-left-radius: 6px;
-  border-bottom-left-radius: 6px;
-  }
-.pager-lg > li:last-child > a,
-.pager-lg > li:last-child > span {
-  border-top-right-radius: 6px;
-  border-bottom-right-radius: 6px;
-  }
-.pager-sm > li > a,
-.pager-sm > li > span {
-  padding: 2px 8px;
-  font-size: 12px;
-  }
-.pager-sm > li:first-child > a,
-.pager-sm > li:first-child > span {
-  border-top-left-radius: 3px;
-  border-bottom-left-radius: 3px;
-  }
-.pager-sm > li:last-child > a,
-.pager-sm > li:last-child > span {
-  border-top-right-radius: 3px;
-  border-bottom-right-radius: 3px;
-  }
-.pager-pills > li:first-child > a,
-.pager-pills > li:first-child > span {
-  border-radius: 16px 0 0 16px;
-  }
-.pager-pills > li:last-child > a,
-.pager-pills > li:last-child > span {
-  border-radius: 0 16px 16px 0;
-  }
-.pager-pills.pager-justify > li > a,
-.pager-pills.pager-justify > li > span {
-  border-radius: 16px;
-  }
-.pager-loose {
-  display: block;
-  margin: 20px 0;
-  }
-.pager-loose.pager-pills > li > a,
-.pager-loose.pager-pills > li > span {
-  border-radius: 16px;
-  }
-.pager-loose > li > a,
-.pager-loose > li > span {
-  margin-left: 5px;
-  border-radius: 4px;
-  }
-.pager-loose > li:first-child > a,
-.pager-loose > li:first-child > span {
-  margin-left: 0;
-  }
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none;
-  }
-.nav > .nav-heading {
-  padding: 8px 15px;
-  font-weight: bold;
-  color: #808080;
-  }
-.nav > li {
-  position: relative;
-  display: block;
-  }
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 8px 15px;
-  color: #353535;
-  }
-.nav > li > a:hover,
-.nav > li > a:focus {
-  color: #0d3d88;
-  text-decoration: none;
-  background-color: #f1f1f1;
-  }
-.nav > li.disabled > a {
-  color: #ddd;
-  }
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #ddd;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  }
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #f1f1f1;
-  border-color: #145ccd;
-  }
-.nav > li > a > img {
-  max-width: none;
-  }
-.nav-pills > li {
-  float: left;
-  }
-.nav-pills > li > a {
-  border-radius: 20px;
-  }
-.nav-pills > li + li {
-  margin-left: 2px;
-  }
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #3280fc;
-  }
-.nav-primary > li {
-  float: left;
-  margin-left: -1px;
-  }
-.nav-primary > li:first-child > a {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.nav-primary > li:last-child > a {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-  }
-.nav-primary > li > a {
-  border: 1px solid #ddd;
-  }
-.nav-primary > li.active > a,
-.nav-primary > li.active > a:hover,
-.nav-primary > li.active > a:focus {
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.nav-secondary > li {
-  float: left;
-  }
-.nav-secondary > li > a {
-  border-bottom: 2px solid #e5e5e5;
-  }
-.nav-secondary > li.active > a,
-.nav-secondary > li.active > a:hover,
-.nav-secondary > li.active > a:focus {
-  color: #3280fc;
-  border-bottom-color: #3280fc;
-  }
-.nav-secondary > li.nav-heading {
-  border-bottom: 2px solid #e5e5e5;
-  }
-.nav-stacked > li {
-  float: none;
-  }
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-  }
-.nav-stacked.nav-primary > li,
-.nav-stacked.nav-primary > li > a {
-  margin-left: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.nav-stacked.nav-primary > li + li {
-  margin-top: -1px;
-  }
-.nav-stacked.nav-primary > li:first-child {
-  margin-top: 0;
-  }
-.nav-stacked.nav-primary > li:first-child > a,
-.nav-stacked.nav-primary > li:first-child.nav-heading {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  }
-.nav-stacked.nav-primary > li:last-child > a {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.nav-stacked.nav-primary > li.nav-heading {
-  background-color: #f1f1f1;
-  border: 1px solid #ddd;
-  }
-.nav-stacked.nav-secondary > li > a {
-  border: none;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-box-shadow: inset 2px 0 0 #f5f5f5;
-          box-shadow: inset 2px 0 0 #f5f5f5;
-  }
-.nav-stacked.nav-secondary > li > a:hover {
-  -webkit-box-shadow: inset 2px 0 0 #e5e5e5;
-          box-shadow: inset 2px 0 0 #e5e5e5;
-  }
-.nav-stacked.nav-secondary > li + li {
-  margin-top: -1px;
-  }
-.nav-stacked.nav-secondary > li:first-child {
-  margin-top: 0;
-  }
-.nav-stacked.nav-secondary > li.active > a,
-.nav-stacked.nav-secondary > li.active > a:hover,
-.nav-stacked.nav-secondary > li.active > a:focus {
-  background-color: #f5f5f5;
-  -webkit-box-shadow: inset 2px 0 0 #3280fc;
-          box-shadow: inset 2px 0 0 #3280fc;
-  }
-.nav-stacked.nav-secondary > li.nav-heading {
-  border-bottom: 1px solid #ddd;
-  }
-.nav-justified {
-  width: 100%;
-  }
-.nav-justified > li {
-  float: none;
-  }
-.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-  }
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-    }
-  .nav-justified > li > a {
-    margin-bottom: 0;
-    }
-  .nav-justified.nav-primary > li + li > a {
-    border-left: 0;
-    }
-  }
-.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.53846154;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-  }
-.nav-tabs > li > a:hover {
-  border-color: #e5e5e5 #e5e5e5 #ddd;
-  }
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #808080;
-  cursor: default;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  }
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-  }
-.nav-tabs.nav-justified > li {
-  float: none;
-  }
-.nav-tabs.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-  }
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-    }
-  .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-    }
-  .nav-tabs.nav-justified.nav-primary > li + li > a {
-    border-left: 0;
-    }
-  }
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-  }
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-  }
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-    }
-  .nav-tabs.nav-justified > .active > a,
-  .nav-tabs.nav-justified > .active > a:hover,
-  .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-    }
-  }
-@-moz-document url-prefix() {
-  .nav-tabs > li.active > a:focus .nav-tabs > li > a:focus {
-    outline: 0;
-    }
-  }
-.nav-tabs.nav-stacked {
-  border-right: 1px solid #ddd;
-  border-bottom: none;
-  }
-.nav-tabs.nav-stacked > li {
-  float: none;
-  margin-right: -1px;
-  margin-bottom: 0;
-  }
-.nav-tabs.nav-stacked > li > a {
-  margin-right: 0;
-  border-radius: 4px 0 0 4px;
-  }
-.nav-tabs.nav-stacked > li.active > a,
-.nav-tabs.nav-stacked > li.active > a:hover,
-.nav-tabs.nav-stacked > li.active > a:focus {
-  border: 1px solid #ddd;
-  border-right-color: transparent;
-  }
-.nav-tabs-justified {
-  border-bottom: 0;
-  }
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-  }
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
-  }
-@media (min-width: 768px) {
-  .nav-tabs-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-    }
-  .nav-tabs-justified > .active > a,
-  .nav-tabs-justified > .active > a:hover,
-  .nav-tabs-justified > .active > a:focus {
-    border-bottom-color: #fff;
-    }
-  }
-.tab-content > .tab-pane {
-  display: none;
-  }
-.tab-content > .active {
-  display: block;
-  }
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  }
-.navbar {
-  position: relative;
-  min-height: 40px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-  }
-@media (min-width: 768px) {
-  .navbar {
-    border-radius: 4px;
-    }
-  }
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left;
-    }
-  }
-.navbar-collapse {
-  padding-right: 10px;
-  padding-left: 10px;
-  overflow-x: visible;
-  -webkit-overflow-scrolling: touch;
-  border-top: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-  }
-.navbar-collapse.in {
-  overflow-y: auto;
-  }
-@media (min-width: 768px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-    }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important;
-    }
-  .navbar-collapse.in {
-    overflow-y: visible;
-    }
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-static-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    padding-right: 0;
-    padding-left: 0;
-    }
-  }
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px;
-  }
-@media (max-device-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px;
-    }
-  }
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -10px;
-  margin-left: -10px;
-  }
-@media (min-width: 768px) {
-  .container > .navbar-header,
-  .container-fluid > .navbar-header,
-  .container > .navbar-collapse,
-  .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-    }
-  }
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-  }
-@media (min-width: 768px) {
-  .navbar-static-top {
-    border-radius: 0;
-    }
-  }
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  }
-@media (min-width: 768px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-    }
-  }
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-  }
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0;
-  }
-.navbar-brand {
-  float: left;
-  height: 40px;
-  padding: 10px 15px;
-  font-size: 17px;
-  line-height: 20px;
-  }
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-  }
-.navbar-brand > img {
-  display: block;
-  }
-@media (min-width: 768px) {
-  .navbar > .container .navbar-brand,
-  .navbar > .container-fluid .navbar-brand {
-    margin-left: -10px;
-    }
-  }
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-top: 3px;
-  margin-right: 3px;
-  margin-bottom: 3px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  }
-.navbar-toggle:focus {
-  outline: 0;
-  }
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-  }
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-  }
-@media (min-width: 768px) {
-  .navbar-toggle {
-    display: none;
-    }
-  }
-.navbar-nav {
-  margin: 5px -10px;
-  }
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-  }
-@media (max-width: 767px) {
-  .navbar-nav .open .dropdown-menu {
-    position: static;
-    float: none;
-    width: auto;
-    margin-top: 0;
-    background-color: transparent;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-    }
-  .navbar-nav .open .dropdown-menu > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-    }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-    }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-    }
-  }
-@media (min-width: 768px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-    }
-  .navbar-nav > li {
-    float: left;
-    }
-  .navbar-nav > li > a {
-    padding-top: 10px;
-    padding-bottom: 10px;
-    }
-  .navbar-nav.nav-justified > li {
-    float: none;
-    }
-  }
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  }
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.navbar-nav.pull-right > li > .dropdown-menu,
-.navbar-nav > li > .dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-  }
-.navbar-btn {
-  margin-top: 4px;
-  margin-bottom: 4px;
-  }
-.navbar-text {
-  float: left;
-  margin-top: 10px;
-  margin-bottom: 10px;
-  }
-@media (min-width: 768px) {
-  .navbar-text {
-    margin-right: 10px;
-    margin-left: 10px;
-    }
-  }
-@media (min-width: 768px) {
-  .navbar-left {
-    float: left !important;
-    }
-  .navbar-right {
-    float: right !important;
-    margin-right: -10px;
-    }
-  .navbar-right ~ .navbar-right {
-    margin-right: 0;
-    }
-  }
-.navbar-default {
-  background-color: #f7f7f7;
-  border-color: #dedede;
-  }
-.navbar-default .navbar-brand {
-  color: #333;
-  }
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-  color: #1a1a1a;
-  background-color: transparent;
-  }
-.navbar-default .navbar-text {
-  color: #333;
-  }
-.navbar-default .navbar-nav > li > a {
-  color: #333;
-  }
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #222;
-  background-color: #e5e5e5;
-  }
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-  }
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent;
-  }
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  background-color: #ddd;
-  }
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #808080;
-  }
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #dedede;
-  }
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-  }
-@media (max-width: 767px) {
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #333;
-    }
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #222;
-    background-color: #e5e5e5;
-    }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
-    background-color: #e7e7e7;
-    }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #ccc;
-    background-color: transparent;
-    }
-  }
-.navbar-default .navbar-link {
-  color: #333;
-  }
-.navbar-default .navbar-link:hover {
-  color: #222;
-  }
-.navbar-default .btn-link {
-  color: #333;
-  }
-.navbar-default .btn-link:hover,
-.navbar-default .btn-link:focus {
-  color: #222;
-  }
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
-  color: #ccc;
-  }
-.navbar-inverse {
-  background-color: #145ccd;
-  border-color: #10479f;
-  }
-.navbar-inverse .navbar-brand {
-  color: #ddd;
-  }
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
-  color: #fff;
-  background-color: transparent;
-  }
-.navbar-inverse .navbar-text {
-  color: #ddd;
-  }
-.navbar-inverse .navbar-nav > li > a {
-  color: #ddd;
-  }
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
-  background-color: #1868e8;
-  }
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
-  background-color: #2a74ea;
-  }
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
-  background-color: transparent;
-  }
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
-  background-color: #1251b6;
-  }
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #fff;
-  }
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
-  border-color: #114dad;
-  }
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  color: #fff;
-  background-color: #2a74ea;
-  }
-@media (max-width: 767px) {
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
-    border-color: #10479f;
-    }
-  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
-    background-color: #10479f;
-    }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
-    color: #ddd;
-    }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #fff;
-    background-color: #1868e8;
-    }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
-    background-color: #2a74ea;
-    }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #444;
-    background-color: transparent;
-    }
-  }
-.navbar-inverse .navbar-link {
-  color: #ddd;
-  }
-.navbar-inverse .navbar-link:hover {
-  color: #fff;
-  }
-.navbar-form {
-  padding: 10px 10px;
-  margin-top: 4px;
-  margin-right: -10px;
-  margin-bottom: 4px;
-  margin-left: -10px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-  }
-@media (min-width: 768px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-    }
-  .navbar-form .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-    }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    padding-left: 0;
-    margin-top: 0;
-    margin-bottom: 0;
-    }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    float: none;
-    margin-left: 0;
-    }
-  }
-@media (max-width: 767px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-    }
-  .navbar-form .form-group:last-child {
-    margin-bottom: 0;
-    }
-  }
-@media (min-width: 768px) {
-  .navbar-form {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-    }
-  }
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity .15s linear;
-       -o-transition: opacity .15s linear;
-          transition: opacity .15s linear;
-  }
-.fade.in {
-  opacity: 1;
-  }
-.scale {
-  -webkit-transition: all .15s ease;
-       -o-transition: all .15s ease;
-          transition: all .15s ease;
-  -webkit-transform: scale(.8);
-      -ms-transform: scale(.8);
-       -o-transform: scale(.8);
-          transform: scale(.8);
-  }
-.scale.in {
-  -webkit-transform: scale(1);
-      -ms-transform: scale(1);
-       -o-transform: scale(1);
-          transform: scale(1);
-  }
-.collapse {
-  display: none;
-  }
-.collapse.in {
-  display: block;
-  }
-tr.collapse.in {
-  display: table-row;
-  }
-tbody.collapse.in {
-  display: table-row-group;
-  }
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height .35s ease;
-       -o-transition: height .35s ease;
-          transition: height .35s ease;
-  }
-.modal-open {
-  overflow: hidden;
-  }
-.modal {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1050;
-  display: none;
-  overflow: hidden;
-  -webkit-overflow-scrolling: touch;
-  outline: 0;
-  }
-.modal.fade .modal-dialog {
-  -webkit-transition: -webkit-transform .3s ease-out;
-       -o-transition:         transform .3s ease-out, -o-transform .3s ease-out;
-          transition: -webkit-transform .3s ease-out;
-          transition:         transform .3s ease-out;
-          transition:         transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out;
-  -webkit-transform: translate(0, -25%);
-      -ms-transform: translate(0, -25%);
-       -o-transform: translate(0, -25%);
-          transform: translate(0, -25%);
-  }
-.modal.in .modal-dialog {
-  -webkit-transform: translate(0, 0);
-      -ms-transform: translate(0, 0);
-       -o-transform: translate(0, 0);
-          transform: translate(0, 0);
-  }
-.modal > .loader {
-  display: none;
-  }
-.modal.modal-loading .modal-dialog {
-  opacity: 0;
-  }
-.modal.modal-loading .loader {
-  position: absolute;
-  top: 35%;
-  left: 50%;
-  display: block;
-  width: 80px;
-  margin-left: -40px;
-  font-size: 56px;
-  color: #fff;
-  text-align: center;
-  }
-.modal-open .modal {
-  overflow-x: hidden;
-  overflow-y: auto;
-  }
-.modal-iframe .modal-body > iframe {
-  border-radius: 0 0 6px 6px;
-  }
-.modal-dialog {
-  position: relative;
-  width: auto;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, .2);
-  border-radius: 6px;
-  outline: 0;
-  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
-          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
-  }
-.modal-dialog.modal-moveable {
-  position: absolute;
-  margin: 0;
-  }
-.modal-dialog.modal-moveable .modal-header {
-  cursor: move;
-  }
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000;
-  }
-.modal-backdrop.fade {
-  filter: alpha(opacity=0);
-  opacity: 0;
-  }
-.modal-backdrop.in {
-  filter: alpha(opacity=50);
-  opacity: .5;
-  }
-.modal-header {
-  min-height: 16.53846154px;
-  padding: 15px;
-  border-bottom: 1px solid #e5e5e5;
-  }
-.modal-header .close {
-  margin-top: -2px;
-  }
-.modal-title {
-  margin: 0;
-  line-height: 1.53846154;
-  }
-.modal-body {
-  position: relative;
-  padding: 15px;
-  }
-.modal-footer {
-  padding: 15px;
-  text-align: right;
-  border-top: 1px solid #e5e5e5;
-  }
-.modal-footer .btn + .btn {
-  margin-bottom: 0;
-  margin-left: 5px;
-  }
-.modal-footer .btn-group .btn + .btn,
-.modal-footer .btn-group-vertical .btn + .btn {
-  margin-left: -1px;
-  }
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-  }
-.modal-scrollbar-measure {
-  position: absolute;
-  top: -9999px;
-  width: 50px;
-  height: 50px;
-  overflow: scroll;
-  }
-@media (min-width: 768px) {
-  .modal-dialog {
-    width: 600px;
-    margin: 30px auto;
-    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
-            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
-    }
-  .modal-sm {
-    width: 300px;
-    }
-  }
-@media (min-width: 992px) {
-  .modal-lg {
-    width: 900px;
-    }
-  }
-/* full screen modal */
-.modal-fullscreen {
-  position: relative;
-  width: 100%!important;
-  height: 100%!important;
-  margin: 0;
-  border-radius: 0;
-  }
-.modal-fullscreen .modal-body {
-  position: absolute;
-  top: 52px;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  overflow-y: auto;
-  }
-.tooltip {
-  position: absolute;
-  z-index: 1030;
-  display: block;
-  font-size: 12px;
-  line-height: 1.4;
-  visibility: visible;
-  filter: alpha(opacity=0);
-  opacity: 0;
-  }
-.tooltip.in {
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.tooltip.top {
-  padding: 5px 0;
-  margin-top: -3px;
-  }
-.tooltip.right {
-  padding: 0 5px;
-  margin-left: 3px;
-  }
-.tooltip.bottom {
-  padding: 5px 0;
-  margin-top: 3px;
-  }
-.tooltip.left {
-  padding: 0 5px;
-  margin-left: -3px;
-  }
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #fff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #353535;
-  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: #353535;
-  }
-.tooltip.top-left .tooltip-arrow {
-  bottom: 0;
-  left: 5px;
-  border-width: 5px 5px 0;
-  border-top-color: #353535;
-  }
-.tooltip.top-right .tooltip-arrow {
-  right: 5px;
-  bottom: 0;
-  border-width: 5px 5px 0;
-  border-top-color: #353535;
-  }
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-width: 5px 5px 5px 0;
-  border-right-color: #353535;
-  }
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #353535;
-  }
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #353535;
-  }
-.tooltip.bottom-left .tooltip-arrow {
-  top: 0;
-  left: 5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #353535;
-  }
-.tooltip.bottom-right .tooltip-arrow {
-  top: 0;
-  right: 5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #353535;
-  }
-.tooltip-primary .tooltip-inner {
-  background-color: #3280fc;
-  }
-.tooltip-primary.tooltip.top .tooltip-arrow {
-  border-top-color: #3280fc;
-  }
-.tooltip-primary.tooltip.top-left .tooltip-arrow {
-  border-top-color: #3280fc;
-  }
-.tooltip-primary.tooltip.top-right .tooltip-arrow {
-  border-top-color: #3280fc;
-  }
-.tooltip-primary.tooltip.right .tooltip-arrow {
-  border-right-color: #3280fc;
-  }
-.tooltip-primary.tooltip.left .tooltip-arrow {
-  border-left-color: #3280fc;
-  }
-.tooltip-primary.tooltip.bottom .tooltip-arrow {
-  border-bottom-color: #3280fc;
-  }
-.tooltip-primary.tooltip.bottom-left .tooltip-arrow {
-  border-bottom-color: #3280fc;
-  }
-.tooltip-primary.tooltip.bottom-right .tooltip-arrow {
-  border-bottom-color: #3280fc;
-  }
-.tooltip-success .tooltip-inner {
-  background-color: #38b03f;
-  }
-.tooltip-success.tooltip.top .tooltip-arrow {
-  border-top-color: #38b03f;
-  }
-.tooltip-success.tooltip.top-left .tooltip-arrow {
-  border-top-color: #38b03f;
-  }
-.tooltip-success.tooltip.top-right .tooltip-arrow {
-  border-top-color: #38b03f;
-  }
-.tooltip-success.tooltip.right .tooltip-arrow {
-  border-right-color: #38b03f;
-  }
-.tooltip-success.tooltip.left .tooltip-arrow {
-  border-left-color: #38b03f;
-  }
-.tooltip-success.tooltip.bottom .tooltip-arrow {
-  border-bottom-color: #38b03f;
-  }
-.tooltip-success.tooltip.bottom-left .tooltip-arrow {
-  border-bottom-color: #38b03f;
-  }
-.tooltip-success.tooltip.bottom-right .tooltip-arrow {
-  border-bottom-color: #38b03f;
-  }
-.tooltip-info .tooltip-inner {
-  background-color: #03b8cf;
-  }
-.tooltip-info.tooltip.top .tooltip-arrow {
-  border-top-color: #03b8cf;
-  }
-.tooltip-info.tooltip.top-left .tooltip-arrow {
-  border-top-color: #03b8cf;
-  }
-.tooltip-info.tooltip.top-right .tooltip-arrow {
-  border-top-color: #03b8cf;
-  }
-.tooltip-info.tooltip.right .tooltip-arrow {
-  border-right-color: #03b8cf;
-  }
-.tooltip-info.tooltip.left .tooltip-arrow {
-  border-left-color: #03b8cf;
-  }
-.tooltip-info.tooltip.bottom .tooltip-arrow {
-  border-bottom-color: #03b8cf;
-  }
-.tooltip-info.tooltip.bottom-left .tooltip-arrow {
-  border-bottom-color: #03b8cf;
-  }
-.tooltip-info.tooltip.bottom-right .tooltip-arrow {
-  border-bottom-color: #03b8cf;
-  }
-.tooltip-warning .tooltip-inner {
-  background-color: #f1a325;
-  }
-.tooltip-warning.tooltip.top .tooltip-arrow {
-  border-top-color: #f1a325;
-  }
-.tooltip-warning.tooltip.top-left .tooltip-arrow {
-  border-top-color: #f1a325;
-  }
-.tooltip-warning.tooltip.top-right .tooltip-arrow {
-  border-top-color: #f1a325;
-  }
-.tooltip-warning.tooltip.right .tooltip-arrow {
-  border-right-color: #f1a325;
-  }
-.tooltip-warning.tooltip.left .tooltip-arrow {
-  border-left-color: #f1a325;
-  }
-.tooltip-warning.tooltip.bottom .tooltip-arrow {
-  border-bottom-color: #f1a325;
-  }
-.tooltip-warning.tooltip.bottom-left .tooltip-arrow {
-  border-bottom-color: #f1a325;
-  }
-.tooltip-warning.tooltip.bottom-right .tooltip-arrow {
-  border-bottom-color: #f1a325;
-  }
-.tooltip-danger .tooltip-inner {
-  background-color: #ea644a;
-  }
-.tooltip-danger.tooltip.top .tooltip-arrow {
-  border-top-color: #ea644a;
-  }
-.tooltip-danger.tooltip.top-left .tooltip-arrow {
-  border-top-color: #ea644a;
-  }
-.tooltip-danger.tooltip.top-right .tooltip-arrow {
-  border-top-color: #ea644a;
-  }
-.tooltip-danger.tooltip.right .tooltip-arrow {
-  border-right-color: #ea644a;
-  }
-.tooltip-danger.tooltip.left .tooltip-arrow {
-  border-left-color: #ea644a;
-  }
-.tooltip-danger.tooltip.bottom .tooltip-arrow {
-  border-bottom-color: #ea644a;
-  }
-.tooltip-danger.tooltip.bottom-left .tooltip-arrow {
-  border-bottom-color: #ea644a;
-  }
-.tooltip-danger.tooltip.bottom-right .tooltip-arrow {
-  border-bottom-color: #ea644a;
-  }
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  max-width: 300px;
-  text-align: left;
-  white-space: normal;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, .2);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
-  }
-.popover.top {
-  margin-top: -10px;
-  }
-.popover.right {
-  margin-left: 10px;
-  }
-.popover.bottom {
-  margin-top: 10px;
-  }
-.popover.left {
-  margin-left: -10px;
-  }
-.popover.no-arrow.top {
-  margin-top: 0;
-  }
-.popover.no-arrow.right {
-  margin-left: 0;
-  }
-.popover.no-arrow.bottom {
-  margin-top: 0;
-  }
-.popover.no-arrow.left {
-  margin-left: 0;
-  }
-.popover-title {
-  padding: 8px 14px;
-  margin: 0;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: #f7f7f7;
-  border-bottom: 1px solid #ebebeb;
-  border-radius: 4px 4px 0 0;
-  }
-.popover-content {
-  padding: 9px 14px;
-  }
-.popover .arrow,
-.popover .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  }
-.popover .arrow {
-  border-width: 11px;
-  }
-.popover .arrow:after {
-  content: "";
-  border-width: 10px;
-  }
-.popover.top .arrow {
-  bottom: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-color: #999;
-  border-top-color: rgba(0, 0, 0, .25);
-  border-bottom-width: 0;
-  }
-.popover.top .arrow:after {
-  bottom: 1px;
-  margin-left: -10px;
-  content: " ";
-  border-top-color: #fff;
-  border-bottom-width: 0;
-  }
-.popover.right .arrow {
-  top: 50%;
-  left: -11px;
-  margin-top: -11px;
-  border-right-color: #999;
-  border-right-color: rgba(0, 0, 0, .25);
-  border-left-width: 0;
-  }
-.popover.right .arrow:after {
-  bottom: -10px;
-  left: 1px;
-  content: " ";
-  border-right-color: #fff;
-  border-left-width: 0;
-  }
-.popover.bottom .arrow {
-  top: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-width: 0;
-  border-bottom-color: #999;
-  border-bottom-color: rgba(0, 0, 0, .25);
-  }
-.popover.bottom .arrow:after {
-  top: 1px;
-  margin-left: -10px;
-  content: " ";
-  border-top-width: 0;
-  border-bottom-color: #fff;
-  }
-.popover.left .arrow {
-  top: 50%;
-  right: -11px;
-  margin-top: -11px;
-  border-right-width: 0;
-  border-left-color: #999;
-  border-left-color: rgba(0, 0, 0, .25);
-  }
-.popover.left .arrow:after {
-  right: 1px;
-  bottom: -10px;
-  content: " ";
-  border-right-width: 0;
-  border-left-color: #fff;
-  }
-.popover-primary {
-  border-color: #3280fc;
-  }
-.popover-primary .popover-title {
-  color: #fff;
-  background-color: #3280fc;
-  }
-.popover-primary.popover.top .arrow {
-  border-top-color: #3280fc;
-  }
-.popover-primary.popover.right .arrow {
-  border-right-color: #3280fc;
-  }
-.popover-primary.popover.left .arrow {
-  border-left-color: #3280fc;
-  }
-.popover-primary.popover.bottom .arrow,
-.popover-primary.popover.bottom .arrow:after {
-  border-bottom-color: #3280fc;
-  }
-.popover-success {
-  border-color: #38b03f;
-  }
-.popover-success .popover-title {
-  color: #fff;
-  background-color: #38b03f;
-  }
-.popover-success.popover.top .arrow {
-  border-top-color: #38b03f;
-  }
-.popover-success.popover.right .arrow {
-  border-right-color: #38b03f;
-  }
-.popover-success.popover.left .arrow {
-  border-left-color: #38b03f;
-  }
-.popover-success.popover.bottom .arrow,
-.popover-success.popover.bottom .arrow:after {
-  border-bottom-color: #38b03f;
-  }
-.popover-info {
-  border-color: #03b8cf;
-  }
-.popover-info .popover-title {
-  color: #fff;
-  background-color: #03b8cf;
-  }
-.popover-info.popover.top .arrow {
-  border-top-color: #03b8cf;
-  }
-.popover-info.popover.right .arrow {
-  border-right-color: #03b8cf;
-  }
-.popover-info.popover.left .arrow {
-  border-left-color: #03b8cf;
-  }
-.popover-info.popover.bottom .arrow,
-.popover-info.popover.bottom .arrow:after {
-  border-bottom-color: #03b8cf;
-  }
-.popover-warning {
-  border-color: #f1a325;
-  }
-.popover-warning .popover-title {
-  color: #fff;
-  background-color: #f1a325;
-  }
-.popover-warning.popover.top .arrow {
-  border-top-color: #f1a325;
-  }
-.popover-warning.popover.right .arrow {
-  border-right-color: #f1a325;
-  }
-.popover-warning.popover.left .arrow {
-  border-left-color: #f1a325;
-  }
-.popover-warning.popover.bottom .arrow,
-.popover-warning.popover.bottom .arrow:after {
-  border-bottom-color: #f1a325;
-  }
-.popover-danger {
-  border-color: #ea644a;
-  }
-.popover-danger .popover-title {
-  color: #fff;
-  background-color: #ea644a;
-  }
-.popover-danger.popover.top .arrow {
-  border-top-color: #ea644a;
-  }
-.popover-danger.popover.right .arrow {
-  border-right-color: #ea644a;
-  }
-.popover-danger.popover.left .arrow {
-  border-left-color: #ea644a;
-  }
-.popover-danger.popover.bottom .arrow,
-.popover-danger.popover.bottom .arrow:after {
-  border-bottom-color: #ea644a;
-  }
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-bottom: 2px;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px dashed;
-  border-top: 4px solid \9;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  }
-.dropup,
-.dropdown {
-  position: relative;
-  }
-.dropdown-toggle:focus {
-  outline: 0;
-  }
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  font-size: 13px;
-  list-style: none;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #cbcbcb;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-  }
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-  }
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  }
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.53846154;
-  color: #353535;
-  white-space: nowrap;
-  }
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  color: #fff;
-  text-decoration: none;
-  background-color: #3280fc;
-  }
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  background-color: #3280fc;
-  outline: 0;
-  }
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #ddd;
-  }
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  }
-.dropdown-hover .dropdown-menu {
-  margin: -1px 0;
-  }
-.dropdown-hover:hover > .dropdown-menu,
-.open > .dropdown-menu {
-  display: block;
-  }
-.dropdown-hover:hover > a,
-.open > a {
-  outline: 0;
-  }
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  font-weight: bold;
-  line-height: 1.53846154;
-  color: #808080;
-  }
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-  }
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-  }
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  content: "";
-  border-top: 0 dotted;
-  border-bottom: 4px solid;
-  }
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-  }
-@media (min-width: 768px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;
-    }
-  }
-.dropdown-submenu {
-  position: relative;
-  }
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  border-radius: 4px;
-  }
-.dropdown-submenu.open > .dropdown-menu,
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-  }
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  border-radius: 4px;
-  }
-.dropdown-submenu > a:after {
-  display: block;
-  float: right;
-  width: 0;
-  height: 0;
-  margin-top: 5px;
-  margin-right: -10px;
-  content: " ";
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #ccc;
-  }
-.dropdown-submenu:hover > a:after {
-  border-left-color: #fff;
-  }
-.dropdown-submenu > a {
-  min-width: 160px;
-  }
-.dropdown-submenu > .dropdown-menu.pull-left {
-  left: -100%;
-  }
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  color: #fff;
-  text-decoration: none;
-  background-color: #3280fc;
-  }
-.carousel {
-  position: relative;
-  }
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-  }
-.carousel-inner > .item {
-  position: relative;
-  display: none;
-  -webkit-transition: .6s ease-in-out left;
-       -o-transition: .6s ease-in-out left;
-          transition: .6s ease-in-out left;
-  }
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  line-height: 1;
-  }
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  display: block;
-  }
-.carousel-inner > .active {
-  left: 0;
-  }
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-  }
-.carousel-inner > .next {
-  left: 100%;
-  }
-.carousel-inner > .prev {
-  left: -100%;
-  }
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
-  left: 0;
-  }
-.carousel-inner > .active.left {
-  left: -100%;
-  }
-.carousel-inner > .active.right {
-  left: 100%;
-  }
-.carousel-control {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 10%;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
-  filter: alpha(opacity=40);
-  outline: none;
-  opacity: .4;
-  }
-.carousel-control > .icon {
-  font-size: 20px;
-  }
-.carousel-control.left {
-  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .3)), to(rgba(0, 0, 0, .0001)));
-  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%);
-  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%);
-  background-image:         linear-gradient(to right, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1);
-  background-repeat: repeat-x;
-  }
-.carousel-control.right {
-  right: 0;
-  left: auto;
-  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .3)));
-  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%);
-  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%);
-  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1);
-  background-repeat: repeat-x;
-  }
-.carousel-control:hover,
-.carousel-control:focus {
-  color: #fff;
-  text-decoration: none;
-  filter: alpha(opacity=100);
-  outline: none;
-  opacity: 1;
-  }
-.carousel-control .icon-prev,
-.carousel-control .icon-next,
-.carousel-control .icon-chevron-left,
-.carousel-control .icon-chevron-right {
-  position: absolute;
-  top: 50%;
-  z-index: 5;
-  display: inline-block;
-  }
-.carousel-control .icon-prev,
-.carousel-control .icon-chevron-left {
-  left: 50%;
-  }
-.carousel-control .icon-next,
-.carousel-control .icon-chevron-right {
-  right: 50%;
-  }
-.carousel-control .icon-prev,
-.carousel-control .icon-next {
-  width: 20px;
-  height: 20px;
-  margin-top: -10px;
-  margin-left: -10px;
-  font-family: serif;
-  }
-.carousel-control .icon-prev:before {
-  content: '\2039';
-  }
-.carousel-control .icon-next:before {
-  content: '\203a';
-  }
-.carousel-caption {
-  position: absolute;
-  right: 15%;
-  bottom: 20px;
-  left: 15%;
-  z-index: 10;
-  padding-top: 20px;
-  padding-bottom: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
-  }
-.carousel-caption .btn {
-  text-shadow: none;
-  }
-@media screen and (min-width: 768px) {
-  .carousel-control .icon-prev,
-  .carousel-control .icon-next {
-    top: 40%;
-    width: 30px;
-    height: 30px;
-    margin-top: -15px;
-    margin-left: -15px;
-    font-size: 80px;
-    }
-  .carousel-control .icon-prev {
-    left: 30%;
-    }
-  .carousel-control .icon-next {
-    right: 25%;
-    }
-  .carousel-caption {
-    right: 20%;
-    left: 20%;
-    padding-bottom: 30px;
-    }
-  .carousel-indicators {
-    bottom: 20px;
-    }
-  }
-.carousel-indicators {
-  position: absolute;
-  bottom: 10px;
-  left: 50%;
-  z-index: 15;
-  width: 60%;
-  padding-left: 0;
-  margin-left: -30%;
-  text-align: center;
-  list-style: none;
-  }
-.carousel-indicators li {
-  display: inline-block;
-  width: 10px;
-  height: 10px;
-  margin: 1px;
-  text-indent: -999px;
-  cursor: pointer;
-  border: 1px solid #fff;
-  border-radius: 10px;
-  }
-.carousel-indicators .active {
-  width: 12px;
-  height: 12px;
-  margin: 0;
-  background-color: #fff;
-  }
-[data-toggle="lightbox"] {
-  cursor: pointer;
-  }
-.modal-lightbox .close {
-  position: absolute;
-  top: 0;
-  right: 0;
-  z-index: 10;
-  display: block;
-  width: 40px;
-  height: 40px;
-  font-size: 14px;
-  color: #fff;
-  text-align: center;
-  background-color: #353535;
-  background-color: rgba(53, 53, 53, .2);
-  filter: alpha(opacity=80);
-  opacity: .8;
-  -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.modal-lightbox .controller {
-  position: absolute;
-  top: 0;
-  display: none;
-  height: 100%;
-  padding: 0;
-  line-height: 100%;
-  color: #fff;
-  cursor: pointer;
-  background-color: transparent;
-  border: none;
-  outline: none;
-  -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: background .2s cubic-bezier(.175, .885, .32, 1);
-          transition: background .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.modal-lightbox .controller.show {
-  display: block;
-  }
-.modal-lightbox .controller > .icon {
-  display: inline-block;
-  width: 60px;
-  height: 50px;
-  line-height: 50px;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
-  background-color: transparent;
-  -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: background .2s cubic-bezier(.175, .885, .32, 1);
-          transition: background .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.modal-lightbox .controller > .icon:before {
-  font-size: 20px;
-  }
-.modal-lightbox .controller.prev {
-  left: 0;
-  }
-.modal-lightbox .controller.next {
-  right: 0;
-  }
-.modal-lightbox .modal-dialog {
-  position: relative;
-  max-width: 100%;
-  max-height: 100%;
-  margin-bottom: 0;
-  background: none;
-  border: none;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.modal-lightbox .modal-dialog:hover .close,
-.modal-lightbox .modal-dialog:focus .close {
-  background-color: rgba(53, 53, 53, .5);
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.modal-lightbox .modal-dialog:hover .close:hover,
-.modal-lightbox .modal-dialog:focus .close:hover {
-  background-color: rgba(53, 53, 53, .9);
-  }
-.modal-lightbox .modal-dialog:hover .controller > .icon,
-.modal-lightbox .modal-dialog:focus .controller > .icon {
-  text-shadow: none;
-  background-color: #353535;
-  background-color: rgba(53, 53, 53, .5);
-  }
-.modal-lightbox .modal-dialog:hover .controller:hover > .icon,
-.modal-lightbox .modal-dialog:focus .controller:hover > .icon {
-  background-color: #353535;
-  background-color: rgba(53, 53, 53, .9);
-  }
-.modal-lightbox .caption {
-  display: none;
-  }
-.modal-lightbox.lightbox-with-caption .caption {
-  position: absolute;
-  bottom: 0;
-  display: block;
-  width: 100%;
-  padding: 10px 15px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 1px 1px 0 rgba(0, 0, 0, .3);
-  background: rgba(0, 0, 0, .15);
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.modal-lightbox.lightbox-with-caption .modal-dialog:hover .caption {
-  background: rgba(0, 0, 0, .6);
-  opacity: 1;
-  }
-.lightbox-img {
-  display: block;
-  width: inherit;
-  max-width: 100%;
-  height: auto;
-  padding: 0;
-  margin: 0 auto;
-  cursor: pointer;
-  -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
-          box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.messager {
-  display: table;
-  margin: 10px;
-  overflow: hidden;
-  color: #fff;
-  pointer-events: auto;
-  background-color: #353535;
-  background-color: rgba(0, 0, 0, .8);
-  border-radius: 20px;
-  }
-.messager-content {
-  display: table-cell;
-  padding: 10px 15px;
-  vertical-align: top;
-  }
-.messager-content > [class^='icon-'] {
-  display: inline-block;
-  margin-right: 8px;
-  }
-.messager-actions {
-  display: table-cell;
-  vertical-align: top;
-  }
-.messager-actions > .action {
-  min-width: 40px;
-  height: 40px;
-  padding: 0 12px;
-  color: #fafafa;
-  color: rgba(255, 255, 255, .6);
-  text-align: center;
-  text-shadow: none;
-  background: none;
-  border: none;
-  }
-.messager-actions > .action.close {
-  padding-bottom: 5px;
-  font-size: 20px;
-  font-weight: normal;
-  opacity: 1;
-  }
-.messager-actions > .action:hover {
-  color: #fff;
-  background: rgba(0, 0, 0, .1);
-  }
-.messager-actions .action-icon + .action-text {
-  margin-left: 8px;
-  }
-.messagers-holder {
-  position: fixed;
-  z-index: 99999;
-  padding: 10px;
-  pointer-events: none;
-  -webkit-transition: top .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: top .2s cubic-bezier(.175, .885, .32, 1);
-          transition: top .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.messagers-holder.top {
-  top: 0;
-  }
-.messagers-holder.top-left {
-  top: 0;
-  left: 0;
-  }
-.messagers-holder.top-right {
-  top: 0;
-  right: 0;
-  }
-.messagers-holder.bottom {
-  bottom: 0;
-  }
-.messagers-holder.bottom-left {
-  bottom: 0;
-  left: 0;
-  }
-.messagers-holder.bottom-right {
-  right: 0;
-  bottom: 0;
-  }
-.messagers-holder.top-right .messager,
-.messagers-holder.bottom-right .messager {
-  margin-left: auto;
-  }
-.messagers-holder.center {
-  top: 0;
-  }
-.messagers-holder.top,
-.messagers-holder.bottom,
-.messagers-holder.center {
-  right: 0;
-  left: 0;
-  }
-.messagers-holder.top .messager,
-.messagers-holder.bottom .messager,
-.messagers-holder.center .messager {
-  margin: 10px auto;
-  }
-.messager-primary {
-  background-color: #3280fc;
-  }
-.messager-success {
-  background-color: #38b03f;
-  }
-.messager-info {
-  background-color: #03b8cf;
-  }
-.messager-warning {
-  background-color: #f1a325;
-  }
-.messager-danger {
-  background-color: #ea644a;
-  }
-.messager-important {
-  background-color: #bd7b46;
-  }
-.messager-special {
-  background-color: #8666b8;
-  }
-.menu > .btn {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-  margin-bottom: 5px;
-  }
-.menu > .btn + .nav {
-  margin-top: 15px;
-  }
-.menu > .nav > li {
-  float: none;
-  }
-.menu > .nav > li.nav-parent > a > .nav-parent-fold-icon {
-  position: absolute;
-  top: 11px;
-  right: 10px;
-  display: block;
-  filter: alpha(opacity=45);
-  opacity: .45;
-  -webkit-transition: all .5s;
-       -o-transition: all .5s;
-          transition: all .5s;
-  }
-.menu > .nav > li.nav-parent > a:hover > .nav-parent-fold-icon {
-  filter: alpha(opacity=75);
-  opacity: .75;
-  }
-.menu > .nav > li > .nav {
-  display: none;
-  background-color: #f6f6f6;
-  }
-.menu > .nav > li > .nav > li > a {
-  padding-left: 35px;
-  margin-top: -1px;
-  border: 1px solid #ddd;
-  }
-.menu > .nav > li > .nav > li > a:hover,
-.menu > .nav > li > .nav > li > a:focus {
-  background-color: #e4e4e4;
-  }
-.menu > .nav > li > .nav > li.active > a,
-.menu > .nav > li > .nav > li.active > a:hover,
-.menu > .nav > li > .nav > li.active > a:focus {
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.menu > .nav > li > .nav > li.active > a [class*='icon-'],
-.menu > .nav > li > .nav > li.active > a:hover [class*='icon-'],
-.menu > .nav > li > .nav > li.active > a:focus [class*='icon-'] {
-  color: #fff;
-  }
-.menu > .nav > li > a > [class*='icon-'],
-.menu > .nav > li > .nav > li > a > [class*='icon-'] {
-  display: inline-block;
-  margin-right: 5px;
-  color: #808080;
-  }
-.menu > .nav > li + li {
-  margin-top: -1px;
-  margin-left: 0;
-  }
-.menu > .nav > li,
-.menu > .nav > li > a {
-  margin-left: 0;
-  }
-.menu > .nav > li:first-child {
-  margin-top: 0;
-  }
-.menu > .nav > li:first-child > a,
-.menu > .nav > li:first-child.nav-heading {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.menu > .nav > li:last-child > a {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.menu > .nav > li:first-child > a,
-.menu > .nav > li:first-child.nav-heading {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  }
-.menu > .nav > li.active > a [class*='icon-'],
-.menu > .nav > li.active > a:hover [class*='icon-'],
-.menu > .nav > li.active > a:focus [class*='icon-'] {
-  color: #fff;
-  }
-.menu > .nav > li.show > a,
-.menu > .nav > li.show > a:hover,
-.menu > .nav > li.show > a:focus {
-  color: #353535;
-  background-color: #fff;
-  border-color: #ddd;
-  }
-.menu > .nav > li.show > a > [class*='icon-'],
-.menu > .nav > li.show > a:hover > [class*='icon-'],
-.menu > .nav > li.show > a:focus > [class*='icon-'] {
-  color: #353535;
-  }
-.menu > .nav > li.show > a:hover {
-  background-color: #f1f1f1;
-  }
-.menu > .nav > li.show:last-child > a {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  }
-.menu > .nav > li.show:last-child > .nav > li:last-child > a {
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  }
-.menu > .nav > li.show > .nav {
-  display: block;
-  }
-.menu > .nav > li.nav-heading {
-  background-color: #f1f1f1;
-  border: 1px solid #ddd;
-  }
-.bootbox.modal .modal-dialog {
-  width: 400px;
-  }
-.article {
-  padding: 20px;
-  }
-.article > header h1,
-.article > header h2,
-.article > header h3 {
-  margin-bottom: 20px;
-  line-height: 1.5;
-  }
-.article > header > .abstract,
-.article > header > dl {
-  padding: 10px 15px;
-  font-size: 12px;
-  color: #686868;
-  background-color: #f1f1f1;
-  }
-.article > header > .abstract > p:last-child,
-.article > header > dl > p:last-child {
-  margin-bottom: 0;
-  }
-.article > header > dl {
-  margin: 0;
-  border-bottom: 1px solid #e9e9e9;
-  }
-.article > header > dl.pull-right {
-  background-color: transparent;
-  border: none;
-  }
-.article > footer {
-  border-top: 1px dashed #d7d7d7;
-  }
-.article > footer > p {
-  padding: 10px 15px;
-  }
-.article > .content,
-.article-content {
-  padding: 20px 0;
-  font-size: 14px;
-  line-height: 1.78571429;
-  }
-.article > .content h1,
-.article-content h1 {
-  font-size: 20px;
-  }
-.article > .content h2,
-.article-content h2 {
-  font-size: 18px;
-  }
-.article > .content h3,
-.article-content h3 {
-  font-size: 16px;
-  }
-.article > .content h4,
-.article-content h4 {
-  margin-top: 15px;
-  font-size: 14px;
-  }
-.article > .content h5,
-.article-content h5 {
-  margin-top: 15px;
-  font-size: 13px;
-  }
-.article > .content h6,
-.article-content h6 {
-  margin-top: 15px;
-  font-size: 11px;
-  }
-.article > .content img,
-.article-content img {
-  margin: 10px 0;
-  }
-.article > .content p > img,
-.article-content p > img {
-  margin-right: 10px;
-  }
-.article > .content p > img[align='right'],
-.article-content p > img[align='right'] {
-  margin-left: 10px;
-  }
-.article > .content dl,
-.article-content dl {
-  padding-right: 2em;
-  padding-left: 2em;
-  }
-.article > .content table,
-.article-content table {
-  margin-bottom: 20px;
-  }
-.article > .content table th,
-.article-content table th,
-.article > .content table td,
-.article-content table td {
-  padding: 8px;
-  line-height: 1.53846154;
-  vertical-align: top;
-  border-bottom: 1px solid #ddd;
-  }
-.article > .content table > thead > tr > th,
-.article-content table > thead > tr > th {
-  vertical-align: bottom;
-  background-color: #f1f1f1;
-  border-bottom: 1px solid #ddd;
-  }
-.article-content p {
-  margin-bottom: 0;
-  }
-.article-content table {
-  width: 100%;
-  }
-.article > .content table th,
-.article > .content table td,
-.article > .content table > thead > tr > th {
-  border: 1px solid #ddd;
-  }
-body.article-content {
-  padding: 8px;
-  }
-.article-condensed {
-  padding: 20px 0;
-  }
-.article-condensed > header {
-  padding: 0 20px;
-  }
-.article-condensed > header > .abstract,
-.article-condensed > header > dl {
-  padding: 10px 15px;
-  margin: 0 -20px;
-  }
-.article-condensed > .content,
-.article-condensed > .article-content {
-  padding: 20px;
-  }
-.article-condensed > .content > img,
-.article-condensed > .article-content > img,
-.article-condensed > .content > pre,
-.article-condensed > .article-content > pre {
-  margin-right: -20px;
-  margin-left: -20px;
-  border-radius: 0;
-  }
-.article-condensed > .content > pre,
-.article-condensed > .article-content > pre {
-  border-right: none;
-  border-left: none;
-  }
-.article-condensed > footer {
-  border-top: 1px dashed #d7d7d7;
-  }
-.article-condensed > footer > p {
-  padding: 10px 15px;
-  }
-.article-condensed > footer > .pager-justify > .previous > a {
-  border-left: none;
-  border-radius: 0;
-  }
-.article-condensed > footer > .pager-justify > .next > a {
-  border-right: none;
-  border-radius: 0;
-  }
-.comments > header {
-  border-bottom: 1px solid #e5e5e5;
-  }
-.comments > header > .alert {
-  padding: 7.5px 15px;
-  margin-bottom: -10px;
-  }
-.comments > header h1,
-.comments > header h2,
-.comments > header h3 {
-  padding: 10px 0;
-  margin: 10px 0;
-  }
-.comments > footer {
-  padding-top: 10px;
-  }
-.comments > footer > .reply-form > .avatar {
-  display: block;
-  float: left;
-  width: 40px;
-  height: 40px;
-  margin-top: 10px;
-  }
-.comments > footer > .reply-form > .avatar + .form {
-  padding-left: 50px;
-  }
-.comment {
-  padding: 10px 0;
-  border-bottom: 1px solid #e5e5e5;
-  }
-.comment:before,
-.comment:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.comment:after {
-  clear: both;
-  }
-.comment:before,
-.comment:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.comment:after {
-  clear: both;
-  }
-.comment > .avatar,
-.comment > .content {
-  display: block;
-  }
-.comment > .avatar {
-  float: left;
-  width: 40px;
-  height: 40px;
-  margin-top: 10px;
-  }
-.comment > .avatar + .content {
-  padding-left: 50px;
-  }
-.comment > .content > .text {
-  margin-top: 5px;
-  }
-.comment > .content > .actions {
-  margin-top: 4px;
-  }
-.comment > .content > .actions > a {
-  display: inline-block;
-  color: #808080;
-  }
-.comment > .content > .actions > a + a {
-  margin-left: 5px;
-  }
-.comment:hover > .content > .actions > a {
-  color: #145ccd;
-  }
-.comment > .comments-list {
-  padding-top: 10px;
-  padding-bottom: 0;
-  padding-left: 30px;
-  margin-left: 20px;
-  border-left: 1px dashed #e5e5e5;
-  }
-.comment > .comments-list > .comment {
-  border: none;
-  border-top: 1px solid #e5e5e5;
-  }
-.comment > .comments-list > .comment:last-child {
-  padding-bottom: 0;
-  }
-.list {
-  padding: 0 15px;
-  }
-.list > header {
-  padding-bottom: 10px;
-  border-bottom: 1px solid #e5e5e5;
-  }
-.items .item {
-  padding: 10px 0;
-  border-bottom: 1px solid #e5e5e5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.items .item-heading > h6,
-.items .item-heading h5,
-.items .item-heading h4,
-.items .item-heading h3,
-.items .item-heading h2,
-.items .item-heading h1 {
-  margin-top: 5px;
-  }
-.items .item-content:before,
-.items .item-content:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.items .item-content:after {
-  clear: both;
-  }
-.items .item-content:before,
-.items .item-content:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.items .item-content:after {
-  clear: both;
-  }
-.items .item-content > .media {
-  max-width: 100%;
-  margin: 5px 0;
-  }
-.items .item-content > .media.pull-left {
-  max-width: 150px;
-  margin: 0;
-  margin-right: 8px;
-  }
-.items .item-content > .media.pull-right {
-  max-width: 150px;
-  margin: 0;
-  margin-left: 8px;
-  }
-.items .item-footer {
-  padding-top: 5px;
-  }
-.items .item-footer > a {
-  color: #808080;
-  }
-.items-hover .item:hover {
-  background-color: #f5f5f5;
-  }
-.list-condensed {
-  padding: 0;
-  }
-.list-condensed > header,
-.list-condensed > footer,
-.list-condensed > .items > .item {
-  padding-right: 15px;
-  padding-left: 15px;
-  }
-.cards {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  margin-right: -10px;
-  margin-left: -10px;
-  }
-.card {
-  position: relative;
-  display: block;
-  padding: 0;
-  margin-bottom: 20px;
-  overflow: hidden;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.card > img {
-  display: block;
-  max-width: 100%;
-  height: auto;
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.card > .media-wrapper {
-  display: block;
-  width: 100%;
-  overflow: hidden;
-  text-align: center;
-  background-color: #f1f1f1;
-  filter: alpha(opacity=100);
-  opacity: 1;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.card > .media-wrapper > img {
-  max-width: 100%;
-  vertical-align: middle;
-  }
-.card .card-heading {
-  display: block;
-  padding: 10px;
-  margin: 0;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  }
-.card .card-content,
-.card .card-actions {
-  padding: 0 10px 10px 10px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  }
-.card .card-actions .btn + .pull-right {
-  padding: 6px 0;
-  line-height: 20px;
-  }
-.card:hover {
-  text-decoration: none;
-  -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .175);
-          box-shadow: 0 1px 5px rgba(0, 0, 0, .175);
-  }
-.card:hover > img,
-.card:hover > .media-wrapper {
-  background-color: #e5e5e5;
-  filter: alpha(opacity=90);
-  opacity: .9;
-  }
-.card:hover > .card-reveal {
-  top: 0;
-  }
-.cards-borderless .card {
-  border: none;
-  border-radius: 0;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  }
-.cards-borderless .card > img,
-.cards-borderless .card > .media-wrapper {
-  overflow: hidden;
-  border-radius: 4px;
-  }
-.cards-borderless .card > .card-heading,
-.cards-borderless .card > .card-actions,
-.cards-borderless .card > .card-content {
-  padding-right: 0;
-  padding-left: 0;
-  }
-.card > .caption {
-  position: absolute;
-  top: -100%;
-  left: 0;
-  display: block;
-  width: 100%;
-  padding: 5px 10px;
-  overflow: hidden;
-  color: #fff;
-  text-align: center;
-  background-color: #666;
-  background-color: rgba(0, 0, 0, .7);
-  filter: alpha(opacity=0);
-  opacity: 0;
-  -webkit-transition: all .8s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .8s cubic-bezier(.175, .885, .32, 1);
-          transition: all .8s cubic-bezier(.175, .885, .32, 1);
-  }
-.card:hover > .caption {
-  top: 0;
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.cards-condensed {
-  padding: 0;
-  border: 1px solid #ddd;
-  border-top: 0;
-  border-left: 0;
-  }
-.cards-condensed > [class^="col-"],
-.cards-condensed > [class*=" col-"] {
-  padding: 0;
-  }
-.cards-condensed .card {
-  padding: 10px;
-  margin: 0;
-  border-right: 0;
-  border-bottom: 0;
-  border-radius: 0;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .015);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, .015);
-  }
-.card > .card-reveal {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: #f1f1f1;
-  -webkit-transition: all .8s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .8s cubic-bezier(.175, .885, .32, 1);
-          transition: all .8s cubic-bezier(.175, .885, .32, 1);
-  }
-.card > .card-reveal > .card-heading {
-  padding: 20px 10px;
-  }
-.card:hover > .card-reveal {
-  top: 0;
-  }
-.dashboard {
-  position: relative;
-  }
-.dashboard .panel {
-  position: relative;
-  }
-.dashboard .panel-actions {
-  position: absolute;
-  top: 0;
-  right: 0;
-  }
-.dashboard .panel-actions .dropdown-menu {
-  min-width: 80px;
-  }
-.dashboard .panel-actions .dropdown-menu > li > a {
-  padding: 3px 10px;
-  }
-.dashboard .panel-actions > a,
-.dashboard .panel-actions > .dropdown > a {
-  color: #808080;
-  text-decoration: none !important;
-  }
-.dashboard .panel-actions > a,
-.dashboard .panel-actions > .btn,
-.dashboard .panel-actions > .dropdown {
-  display: block;
-  float: left;
-  }
-.dashboard .panel-actions > a,
-.dashboard .panel-actions > .btn,
-.dashboard .panel-actions > .dropdown > a,
-.dashboard .panel-actions > .dropdown > .btn {
-  display: block;
-  min-width: 28px;
-  height: 31px;
-  padding: 0 3px;
-  line-height: 30px;
-  text-align: center;
-  filter: alpha(opacity=70);
-  border: none;
-  border-radius: 0;
-  opacity: .7;
-  }
-.dashboard .panel-actions > a:hover,
-.dashboard .panel-actions > .dropdown > a:hover {
-  background-color: rgba(0, 0, 0, .1);
-  }
-.dashboard .panel-heading {
-  height: 32px;
-  padding: 6px 60px 6px 6px;
-  font-weight: bold;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  }
-.dashboard .panel-heading > .icon {
-  filter: alpha(opacity=70);
-  opacity: .7;
-  }
-.dashboard .panel-heading:hover > .panel-actions > .btn,
-.dashboard .panel-heading:hover > .panel-actions > .dropdown > .btn,
-.dashboard .panel-heading:hover > .panel-actions > .dropdown > a,
-.dashboard .panel-heading:hover > .panel-actions > a {
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.dashboard .panel-body {
-  position: absolute;
-  top: 32px;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 10px;
-  overflow: auto;
-  }
-.dashboard .panel-body.no-padding {
-  padding: 0;
-  }
-.dashboard .panel-body > :last-child {
-  margin: 0;
-  }
-.dashboard .panel-body > .list-group .list-group-item {
-  border-right: none;
-  border-left: none;
-  border-radius: 0;
-  }
-.dashboard .panel-body > .list-group .list-group-item:first-child {
-  border-top: none;
-  }
-.dashboard.dashboard-draggable .panel-heading {
-  cursor: move;
-  }
-.dashboard .panel-dragging {
-  color: #fff;
-  background: rgba(0, 0, 0, .1);
-  border: 1px solid #fff;
-  -webkit-box-shadow: none!important;
-          box-shadow: none!important;
-  }
-.dashboard .panel-dragging > * {
-  filter: alpha(opacity=10);
-  opacity: .1;
-  }
-.dashboard .panel-dragging-shadow {
-  position: absolute;
-  cursor: move;
-  background: rgba(255, 255, 255, .5);
-  border: 2px solid rgba(255, 255, 255, .9);
-  -webkit-box-shadow: 1px 5px 15px rgba(0, 0, 0, .5) !important;
-          box-shadow: 1px 5px 15px rgba(0, 0, 0, .5) !important;
-  }
-.dashboard .panel-dragging-shadow > * {
-  filter: alpha(opacity=70);
-  opacity: .7;
-  }
-.dashboard .panel-dragging-shadow.circle {
-  overflow: hidden;
-  border-radius: 50%;
-  -webkit-transition: width .2s, height .2s;
-       -o-transition: width .2s, height .2s;
-          transition: width .2s, height .2s;
-  }
-.dashboard .panel-dragging-shadow.circle .panel-actions {
-  display: none;
-  }
-.dashboard .dragging-col-holder {
-  display: none;
-  }
-.dashboard.dashboard-holding .dragging-col-holder {
-  display: block;
-  }
-.dashboard.dashboard-holding .dragging-col {
-  display: none;
-  }
-.dashboard .resize-handle {
-  position: absolute;
-  top: 0;
-  right: 4px;
-  bottom: 20px;
-  width: 12px;
-  cursor: e-resize;
-  filter: alpha(opacity=0);
-  border-radius: 4px;
-  opacity: 0;
-  -webkit-transition: opacity .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: opacity .4s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.dashboard .resize-handle > .icon {
-  position: absolute;
-  top: 50%;
-  left: 0;
-  display: block;
-  width: 20px;
-  height: 20px;
-  margin-top: -10px;
-  line-height: 20px;
-  color: #3280fc;
-  text-align: center;
-  background-color: rgba(50, 128, 252, .2);
-  -webkit-transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1);
-          transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.dashboard .resize-handle:hover {
-  background-color: rgba(50, 128, 252, .12);
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.dashboard .resize-handle:hover > .icon {
-  left: -4px;
-  }
-.dashboard .resize-handle.resize-vertical {
-  top: auto;
-  right: 10px;
-  bottom: 14px;
-  left: 10px;
-  width: auto;
-  height: 12px;
-  cursor: n-resize;
-  }
-.dashboard .resize-handle.resize-vertical > .icon {
-  top: 0;
-  left: 50%;
-  margin-top: 0;
-  margin-left: -10px;
-  }
-.dashboard .resize-handle.resize-vertical:hover {
-  background-color: rgba(50, 128, 252, .12);
-  filter: alpha(opacity=100);
-  opacity: 1;
-  }
-.dashboard .resize-handle.resize-vertical:hover > .icon {
-  top: -4px;
-  }
-.dashboard .resizing {
-  -webkit-transition: width .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: width .2s cubic-bezier(.175, .885, .32, 1);
-          transition: width .2s cubic-bezier(.175, .885, .32, 1);
-  }
-.dashboard .resizing-v .resize-vertical {
-  opacity: 1;
-  }
-.dashboard .resizing-v .resize-vertical > .icon {
-  top: -4px;
-  }
-.dashboard .resizing-h .resize-horizontal {
-  opacity: 1;
-  }
-.dashboard .resizing-h .resize-horizontal > .icon {
-  left: -4px;
-  }
-.dashboard .resizing .resize-handle {
-  background-color: rgba(50, 128, 252, .12);
-  }
-.dashboard .panel-body:after,
-.dashboard .panel-body:before {
-  display: block;
-  visibility: hidden;
-  content: ' ';
-  opacity: 0;
-  -webkit-transition: visibility .2s, opacity .2s;
-       -o-transition: visibility .2s, opacity .2s;
-          transition: visibility .2s, opacity .2s;
-  }
-.dashboard .panel-body:before {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  background-color: #fff;
-  }
-.dashboard .panel-body:after {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  margin-left: -20px;
-  font-family: ZenIcon;
-  font-size: 14px;
-  font-size: 28px;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  line-height: 1;
-  line-height: 40px;
-  text-align: center;
-  text-transform: none;
-  content: '\e97c';
-  -webkit-animation: spin 2s infinite linear;
-       -o-animation: spin 2s infinite linear;
-          animation: spin 2s infinite linear;
-
-  speak: none;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  }
-.dashboard .panel-loading > .panel-body {
-  overflow: hidden;
-  }
-.dashboard .panel-loading > .panel-body:before,
-.dashboard .panel-loading > .panel-body:after {
-  visibility: visible;
-  opacity: .5;
-  }
-.dashboard-inverse {
-  background-color: #3280fc;
-  }
-.dashboard-inverse .panel {
-  -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .15);
-          box-shadow: 0 1px 5px rgba(0, 0, 0, .15);
-  }
-.dashboard-inverse .panel-dragging {
-  background: rgba(0, 0, 0, .3);
-  }
-.dashboard-inverse .panel-dragging-shadow {
-  -webkit-box-shadow: 1px 2px 15px rgba(0, 0, 0, .5) !important;
-          box-shadow: 1px 2px 15px rgba(0, 0, 0, .5) !important;
-  }
-.board-item {
-  padding: 6px 10px;
-  margin-bottom: 5px;
-  background: #fff;
-  border: 1px solid #ddd;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .05);
-          box-shadow: 0 1px 0 rgba(0, 0, 0, .05);
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.board-item:hover {
-  -webkit-box-shadow: 0 1px 1 rgba(0, 0, 0, .1);
-          box-shadow: 0 1px 1 rgba(0, 0, 0, .1);
-  }
-.board-item.board-item-empty {
-  display: none;
-  color: #808080;
-  border-style: dashed;
-  }
-.board-item.board-item-shadow {
-  display: none;
-  padding: 0;
-  background: #ddd;
-  border: none;
-  border-color: #ddd;
-  -webkit-box-shadow: inset 0 0 4px rgba(0, 0, 0, .1);
-          box-shadow: inset 0 0 4px rgba(0, 0, 0, .1);
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.board-item.drag-shadow {
-  width: 250px;
-  cursor: move;
-  background-color: #fff;
-  border-color: #c4c4c4;
-  -webkit-box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
-          box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
-  opacity: .9;
-  }
-.board-item.drag-from {
-  background-color: #ebf2f9;
-  }
-.board-list .board-item:last-child {
-  margin-bottom: 0;
-  }
-.board {
-  float: left;
-  width: 250px;
-  margin-right: 10px;
-  }
-.board.drop-in-empty .board-item-empty {
-  height: 0;
-  padding: 0;
-  margin: 0;
-  overflow: hidden;
-  border: transparent;
-  }
-.board:last-child {
-  margin-right: 0;
-  }
-.board > .panel-body {
-  padding: 5px;
-  background: #f1f1f1;
-  }
-.boards:before,
-.boards:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.boards:after {
-  clear: both;
-  }
-.boards:before,
-.boards:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.boards:after {
-  clear: both;
-  }
-.boards.dragging .board.drop-in {
-  border-color: #c4c4c4;
-  -webkit-box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
-          box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
-  }
-.boards.dragging .board.drop-in .board-item-shadow {
-  display: block;
-  }
-.boards.dragging .board .board-item.board-item-empty {
-  display: block;
-  }
-.boards.dragging .board-item.disable-drop {
-  display: none;
-  }
-.boards.drop-in .board-item.drag-from {
-  height: 0;
-  padding: 0;
-  margin: 0;
-  overflow: hidden;
-  border: transparent;
-  }
-.datatable-head,
-.datatable-rows {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  }
-.datatable {
-  margin-bottom: 20px;
-  }
-.datatable > .datatable-head {
-  -webkit-transition: -webkit-box-shadow .2s;
-       -o-transition:         box-shadow .2s;
-          transition: -webkit-box-shadow .2s;
-          transition:         box-shadow .2s;
-          transition:         box-shadow .2s, -webkit-box-shadow .2s;
-  }
-.datatable .table {
-  margin: 0;
-  table-layout: fixed;
-  }
-.datatable .table > tbody > tr > td,
-.datatable .table > thead > tr > th {
-  min-width: 20px;
-  }
-.datatable .table > tbody > tr > td.check-btn,
-.datatable .table > thead > tr > th.check-btn {
-  width: 30px;
-  color: #9b9b9b;
-  text-align: center;
-  cursor: pointer;
-  }
-.datatable .table > tbody > tr.hover > td.check-btn,
-.datatable .table > tbody > tr.active > td.check-btn,
-.datatable .table > thead > tr > th.check-btn:hover,
-.datatable .table > tbody > tr > td.check-btn:hover,
-.datatable .table > thead > tr > th.check-btn.checked,
-.datatable .table > tbody > tr > td.check-btn.checked {
-  color: #4f4f4f;
-  }
-.datatable .table > thead > tr > th.check-btn.checked > .icon-check-empty:before,
-.datatable .table > tbody > tr > td.check-btn.checked > .icon-check-empty:before,
-.datatable .table > tbody > tr.active > td.check-btn > .icon-check-empty:before {
-  content: '\e642';
-  }
-.datatable .table > thead > tr > th.col-hover {
-  background-color: #e2e2e2;
-  }
-.datatable .table > tbody > tr > td.col-hover,
-.datatable .table > tbody > tr.hover > td {
-  background-color: #ebf2f9;
-  }
-.datatable .table > tbody > tr.active.hover td {
-  background-color: #ffdea2;
-  }
-.datatable.head-fixed > .datatable-head {
-  position: fixed;
-  z-index: 1030;
-  -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .15);
-          box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .15);
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th {
-  overflow: hidden;
-  white-space: nowrap;
-  cursor: pointer;
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th.text-center {
-  padding-right: 0;
-  padding-left: 0;
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th:after {
-  display: inline-block;
-  margin-left: 5px;
-  font-family: ZenIcon;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  line-height: 1;
-  color: #808080;
-  text-transform: none;
-  content: '\e6bd';
-
-  speak: none;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-down:after {
-  color: #145ccd;
-  content: '\e6b8';
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-up:after {
-  color: #145ccd;
-  content: '\e6b9';
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th.check-btn:after,
-.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-disabled:after {
-  display: none;
-  }
-.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-disabled {
-  cursor: default;
-  }
-.datatable-wrapper {
-  position: relative;
-  }
-.datatable-span {
-  display: table-cell;
-  vertical-align: top;
-  }
-.datatable-span.flexarea {
-  overflow: hidden;
-  }
-.datatable-span.flexarea.datatable-head-span.dragging {
-  cursor: move !important;
-  }
-.datatable-span.flexarea .table {
-  position: relative;
-  top: 0;
-  left: 0;
-  }
-.datatable-span.flexarea .scrolled-shadow {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  display: none;
-  width: 20px;
-  -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .15);
-          box-shadow: 0 0 10px rgba(0, 0, 0, .15);
-  opacity: 0;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.datatable-span.flexarea .scrolled-in-shadow {
-  left: -30px;
-  }
-.datatable-span.flexarea .scrolled-out-shadow {
-  right: -30px;
-  }
-.datatable > .scroll-wrapper {
-  position: relative;
-  width: 100%;
-  }
-.datatable .scroll-slide {
-  position: absolute;
-  right: -1px;
-  bottom: 0;
-  left: -1px;
-  display: none;
-  height: 11px;
-  background: #e5e5e5;
-  background: rgba(128, 128, 128, .1);
-  border: 1px solid #e5e5e5;
-  border-bottom: none;
-  opacity: 0;
-  -webkit-transition: opacity .5s, background .3s;
-       -o-transition: opacity .5s, background .3s;
-          transition: opacity .5s, background .3s;
-  }
-.datatable .scroll-slide > .bar {
-  position: absolute;
-  top: 0;
-  left: 0;
-  min-width: 50px;
-  height: 10px;
-  cursor: move;
-  background-color: #a6a6a6;
-  }
-.datatable .scroll-slide:hover > .bar {
-  background-color: #808080;
-  }
-.datatable .scroll-slide.scroll-pos-out {
-  bottom: -14px;
-  height: 15px;
-  }
-.datatable .scroll-slide.scroll-pos-out > .bar {
-  height: 14px;
-  }
-.datatable.show-scroll-slide:hover .scroll-slide,
-.datatable.show-scroll-slide.scrolling .scroll-slide,
-.datatable.show-scroll-slide:hover .scrolled-shadow,
-.datatable.show-scroll-slide.scrolling .scrolled-shadow {
-  opacity: 1;
-  }
-.datatable.show-scroll-slide .scroll-slide,
-.datatable.show-scroll-slide .scrolled-shadow {
-  display: block;
-  }
-.datatable.show-scroll-slide.scrolled-in .scrolled-in-shadow {
-  left: -20px;
-  }
-.datatable.show-scroll-slide.scrolled-out .scrolled-out-shadow {
-  right: -20px;
-  }
-.calendar {
-  margin-bottom: 20px;
-  }
-.calendar > header {
-  margin-bottom: 10px;
-  }
-.calendar > header .btn-toolbar > .btn-group,
-.calendar > header .btn-toolbar > .btn-group-vertical {
-  margin-right: 10px;
-  }
-.calendar > header .calendar-caption {
-  line-height: 30px;
-  }
-.calendar .table {
-  margin-bottom: 0;
-  table-layout: fixed;
-  }
-.calendar .table > thead > tr > th,
-.calendar .table > tbody > tr > td {
-  width: 14.28571428571429%;
-  padding: 0;
-  }
-.calendar .table > thead > tr > th {
-  color: #808080;
-  text-align: center;
-  background-color: #fff;
-  }
-.calendar .day {
-  opacity: .7;
-  }
-.calendar .day > .heading {
-  padding: 2px 5px;
-  text-align: right;
-  }
-.calendar .day > .heading > .month {
-  padding: 1px 2px;
-  color: #fff;
-  background-color: #b3b3b3;
-  border-radius: 3px;
-  }
-.calendar .day > .content {
-  height: 100%;
-  min-height: 70px;
-  }
-.calendar .day.drop-to {
-  background-color: #fff0d5;
-  opacity: 1;
-  }
-.calendar .cell-day {
-  background-color: #f1f1f1;
-  }
-.calendar .cell-day.past > .day > .content {
-  opacity: .7;
-  }
-.calendar .cell-day.current-month {
-  background: none;
-  }
-.calendar .cell-day.current-month > .day {
-  opacity: 1;
-  }
-.calendar .cell-day.current {
-  background-color: #fff0d5;
-  -webkit-box-shadow: inset 1px 1px 0 #808080, inset -1px -1px 0 #808080;
-          box-shadow: inset 1px 1px 0 #808080, inset -1px -1px 0 #808080;
-  }
-.calendar .cell-day.current > .day > .content {
-  padding: 0;
-  }
-.calendar .cell-day.current > .day > .heading {
-  background-color: rgba(0, 0, 0, .1);
-  }
-.calendar .event {
-  padding: 1px 5px;
-  margin: 0 1px 1px;
-  color: #fff;
-  cursor: pointer;
-  background-color: #3280fc;
-  opacity: .95;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-a.calendar .event:hover {
-  background-color: #0462f7;
-  }
-a.calendar .event:hover {
-  background-color: #0462f7;
-  }
-.calendar .event:hover {
-  opacity: 1;
-  }
-.calendar .event.drag-shadow {
-  cursor: move;
-  }
-.calendar .event.drag-from {
-  opacity: .25;
-  }
-.calendar .event.color-red {
-  color: #fff;
-  background-color: #ea644a;
-  }
-a.calendar .event.color-red:hover {
-  background-color: #e53d1c;
-  }
-a.calendar .event.color-red:hover {
-  background-color: #e53d1c;
-  }
-.calendar .event.color-green {
-  color: #fff;
-  background-color: #38b03f;
-  }
-a.calendar .event.color-green:hover {
-  background-color: #2c8931;
-  }
-a.calendar .event.color-green:hover {
-  background-color: #2c8931;
-  }
-.calendar .event.color-yellow {
-  color: #fff;
-  background-color: #f1a325;
-  }
-a.calendar .event.color-yellow:hover {
-  background-color: #d5890e;
-  }
-a.calendar .event.color-yellow:hover {
-  background-color: #d5890e;
-  }
-.calendar .event.color-blue {
-  color: #fff;
-  background-color: #03b8cf;
-  }
-a.calendar .event.color-blue:hover {
-  background-color: #028b9d;
-  }
-a.calendar .event.color-blue:hover {
-  background-color: #028b9d;
-  }
-.calendar .event.color-brown {
-  color: #fff;
-  background-color: #bd7b46;
-  }
-a.calendar .event.color-brown:hover {
-  background-color: #996337;
-  }
-a.calendar .event.color-brown:hover {
-  background-color: #996337;
-  }
-.calendar .event.color-purple {
-  color: #fff;
-  background-color: #8666b8;
-  }
-a.calendar .event.color-purple:hover {
-  background-color: #6c4aa1;
-  }
-a.calendar .event.color-purple:hover {
-  background-color: #6c4aa1;
-  }
-.calendar.limit-event-title .event {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  }
-.colorset {
-  padding-top: 20px;
-  padding-bottom: 10px;
-  border-bottom: 1px dashed #e6e6e6;
-  }
-.colorset:before,
-.colorset:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.colorset:after {
-  clear: both;
-  }
-.colorset:before,
-.colorset:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.colorset:after {
-  clear: both;
-  }
-.color-tile {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  border: 1px solid rgba(0, 0, 0, .5);
-  }
-.color-tile:after,
-.color-tile:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.color-tile:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.color-tile:hover:after,
-.color-tile:hover:before {
-  opacity: 1;
-  }
-.colorset .color-primary {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #3280fc;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #0462f7;
-  }
-.colorset .color-primary:after,
-.colorset .color-primary:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-primary:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-primary:hover:after,
-.colorset .color-primary:hover:before {
-  opacity: 1;
-  }
-.colorset .color-primary:after,
-.colorset .color-primary:before {
-  color: #fff;
-  }
-.colorset .color-primary:after {
-  content: "#3280fc";
-  }
-.colorset .color-primary:before {
-  content: "color-primary";
-  }
-.colorset .color-primary:hover:before {
-  content: "217,97%,59%";
-  }
-.colorset .color-secondary {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #145ccd;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #10479f;
-  }
-.colorset .color-secondary:after,
-.colorset .color-secondary:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-secondary:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-secondary:hover:after,
-.colorset .color-secondary:hover:before {
-  opacity: 1;
-  }
-.colorset .color-secondary:after,
-.colorset .color-secondary:before {
-  color: #fff;
-  }
-.colorset .color-secondary:after {
-  content: "#145ccd";
-  }
-.colorset .color-secondary:before {
-  content: "color-secondary";
-  }
-.colorset .color-secondary:hover:before {
-  content: "217,82%,44%";
-  }
-.colorset .color-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ebf2f9;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #c4d8ed;
-  }
-.colorset .color-pale:after,
-.colorset .color-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-pale:hover:after,
-.colorset .color-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-pale:after,
-.colorset .color-pale:before {
-  color: #353535;
-  }
-.colorset .color-pale:after {
-  content: "#ebf2f9";
-  }
-.colorset .color-pale:before {
-  content: "color-pale";
-  }
-.colorset .color-pale:hover:before {
-  content: "210,54%,95%";
-  }
-.colorset .color-fore {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #353535;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #1c1c1c;
-  }
-.colorset .color-fore:after,
-.colorset .color-fore:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-fore:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-fore:hover:after,
-.colorset .color-fore:hover:before {
-  opacity: 1;
-  }
-.colorset .color-fore:after,
-.colorset .color-fore:before {
-  color: #fff;
-  }
-.colorset .color-fore:after {
-  content: "#353535";
-  }
-.colorset .color-fore:before {
-  content: "color-fore";
-  }
-.colorset .color-fore:hover:before {
-  content: "0,0%,21%";
-  }
-.colorset .color-back {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #fff;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #e6e6e6;
-  }
-.colorset .color-back:after,
-.colorset .color-back:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-back:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-back:hover:after,
-.colorset .color-back:hover:before {
-  opacity: 1;
-  }
-.colorset .color-back:after,
-.colorset .color-back:before {
-  color: #353535;
-  }
-.colorset .color-back:after {
-  content: "#fff";
-  }
-.colorset .color-back:before {
-  content: "color-back";
-  }
-.colorset .color-back:hover:before {
-  content: "0,0%,100%";
-  }
-.colorset .color-gray-darker {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #222;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #090909;
-  }
-.colorset .color-gray-darker:after,
-.colorset .color-gray-darker:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-gray-darker:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-gray-darker:hover:after,
-.colorset .color-gray-darker:hover:before {
-  opacity: 1;
-  }
-.colorset .color-gray-darker:after,
-.colorset .color-gray-darker:before {
-  color: #fff;
-  }
-.colorset .color-gray-darker:after {
-  content: "#222222";
-  }
-.colorset .color-gray-darker:before {
-  content: "color-gray-darker";
-  }
-.colorset .color-gray-darker:hover:before {
-  content: "0,0%,14%";
-  }
-.colorset .color-gray-dark {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #333;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #1a1a1a;
-  }
-.colorset .color-gray-dark:after,
-.colorset .color-gray-dark:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-gray-dark:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-gray-dark:hover:after,
-.colorset .color-gray-dark:hover:before {
-  opacity: 1;
-  }
-.colorset .color-gray-dark:after,
-.colorset .color-gray-dark:before {
-  color: #fff;
-  }
-.colorset .color-gray-dark:after {
-  content: "#333333";
-  }
-.colorset .color-gray-dark:before {
-  content: "color-gray-dark";
-  }
-.colorset .color-gray-dark:hover:before {
-  content: "0,0%,20%";
-  }
-.colorset .color-gray {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #808080;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #666;
-  }
-.colorset .color-gray:after,
-.colorset .color-gray:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-gray:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-gray:hover:after,
-.colorset .color-gray:hover:before {
-  opacity: 1;
-  }
-.colorset .color-gray:after,
-.colorset .color-gray:before {
-  color: #fff;
-  }
-.colorset .color-gray:after {
-  content: "#808080";
-  }
-.colorset .color-gray:before {
-  content: "color-gray";
-  }
-.colorset .color-gray:hover:before {
-  content: "0,0%,50%";
-  }
-.colorset .color-gray-light {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ddd;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #c4c4c4;
-  }
-.colorset .color-gray-light:after,
-.colorset .color-gray-light:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-gray-light:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-gray-light:hover:after,
-.colorset .color-gray-light:hover:before {
-  opacity: 1;
-  }
-.colorset .color-gray-light:after,
-.colorset .color-gray-light:before {
-  color: #353535;
-  }
-.colorset .color-gray-light:after {
-  content: "#dddddd";
-  }
-.colorset .color-gray-light:before {
-  content: "color-gray-light";
-  }
-.colorset .color-gray-light:hover:before {
-  content: "0,0%,87%";
-  }
-.colorset .color-gray-lighter {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #e5e5e5;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #cbcbcb;
-  }
-.colorset .color-gray-lighter:after,
-.colorset .color-gray-lighter:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-gray-lighter:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-gray-lighter:hover:after,
-.colorset .color-gray-lighter:hover:before {
-  opacity: 1;
-  }
-.colorset .color-gray-lighter:after,
-.colorset .color-gray-lighter:before {
-  color: #353535;
-  }
-.colorset .color-gray-lighter:after {
-  content: "#e5e5e5";
-  }
-.colorset .color-gray-lighter:before {
-  content: "color-gray-lighter";
-  }
-.colorset .color-gray-lighter:hover:before {
-  content: "0,0%,90%";
-  }
-.colorset .color-gray-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f1f1f1;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #d7d7d7;
-  }
-.colorset .color-gray-pale:after,
-.colorset .color-gray-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-gray-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-gray-pale:hover:after,
-.colorset .color-gray-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-gray-pale:after,
-.colorset .color-gray-pale:before {
-  color: #353535;
-  }
-.colorset .color-gray-pale:after {
-  content: "#f1f1f1";
-  }
-.colorset .color-gray-pale:before {
-  content: "color-gray-pale";
-  }
-.colorset .color-gray-pale:hover:before {
-  content: "0,0%,95%";
-  }
-.colorset .color-white {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #fff;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #e6e6e6;
-  }
-.colorset .color-white:after,
-.colorset .color-white:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-white:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-white:hover:after,
-.colorset .color-white:hover:before {
-  opacity: 1;
-  }
-.colorset .color-white:after,
-.colorset .color-white:before {
-  color: #353535;
-  }
-.colorset .color-white:after {
-  content: "#fff";
-  }
-.colorset .color-white:before {
-  content: "color-white";
-  }
-.colorset .color-white:hover:before {
-  content: "0,0%,100%";
-  }
-.colorset .color-black {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #000;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #000;
-  }
-.colorset .color-black:after,
-.colorset .color-black:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-black:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-black:hover:after,
-.colorset .color-black:hover:before {
-  opacity: 1;
-  }
-.colorset .color-black:after,
-.colorset .color-black:before {
-  color: #fff;
-  }
-.colorset .color-black:after {
-  content: "#000";
-  }
-.colorset .color-black:before {
-  content: "color-black";
-  }
-.colorset .color-black:hover:before {
-  content: "0,0%,0%";
-  }
-.colorset .color-red {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ea644a;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #e53d1c;
-  }
-.colorset .color-red:after,
-.colorset .color-red:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-red:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-red:hover:after,
-.colorset .color-red:hover:before {
-  opacity: 1;
-  }
-.colorset .color-red:after,
-.colorset .color-red:before {
-  color: #fff;
-  }
-.colorset .color-red:after {
-  content: "#ea644a";
-  }
-.colorset .color-red:before {
-  content: "color-red";
-  }
-.colorset .color-red:hover:before {
-  content: "10,79%,60%";
-  }
-.colorset .color-yellow {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f1a325;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #d5890e;
-  }
-.colorset .color-yellow:after,
-.colorset .color-yellow:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-yellow:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-yellow:hover:after,
-.colorset .color-yellow:hover:before {
-  opacity: 1;
-  }
-.colorset .color-yellow:after,
-.colorset .color-yellow:before {
-  color: #fff;
-  }
-.colorset .color-yellow:after {
-  content: "#f1a325";
-  }
-.colorset .color-yellow:before {
-  content: "color-yellow";
-  }
-.colorset .color-yellow:hover:before {
-  content: "37,88%,55%";
-  }
-.colorset .color-green {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #38b03f;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #2c8931;
-  }
-.colorset .color-green:after,
-.colorset .color-green:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-green:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-green:hover:after,
-.colorset .color-green:hover:before {
-  opacity: 1;
-  }
-.colorset .color-green:after,
-.colorset .color-green:before {
-  color: #fff;
-  }
-.colorset .color-green:after {
-  content: "#38b03f";
-  }
-.colorset .color-green:before {
-  content: "color-green";
-  }
-.colorset .color-green:hover:before {
-  content: "124,52%,45%";
-  }
-.colorset .color-blue {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #03b8cf;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #028b9d;
-  }
-.colorset .color-blue:after,
-.colorset .color-blue:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-blue:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-blue:hover:after,
-.colorset .color-blue:hover:before {
-  opacity: 1;
-  }
-.colorset .color-blue:after,
-.colorset .color-blue:before {
-  color: #fff;
-  }
-.colorset .color-blue:after {
-  content: "#03b8cf";
-  }
-.colorset .color-blue:before {
-  content: "color-blue";
-  }
-.colorset .color-blue:hover:before {
-  content: "187,97%,41%";
-  }
-.colorset .color-brown {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #bd7b46;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #996337;
-  }
-.colorset .color-brown:after,
-.colorset .color-brown:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-brown:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-brown:hover:after,
-.colorset .color-brown:hover:before {
-  opacity: 1;
-  }
-.colorset .color-brown:after,
-.colorset .color-brown:before {
-  color: #fff;
-  }
-.colorset .color-brown:after {
-  content: "#bd7b46";
-  }
-.colorset .color-brown:before {
-  content: "color-brown";
-  }
-.colorset .color-brown:hover:before {
-  content: "27,47%,51%";
-  }
-.colorset .color-purple {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #8666b8;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #6c4aa1;
-  }
-.colorset .color-purple:after,
-.colorset .color-purple:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-purple:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-purple:hover:after,
-.colorset .color-purple:hover:before {
-  opacity: 1;
-  }
-.colorset .color-purple:after,
-.colorset .color-purple:before {
-  color: #fff;
-  }
-.colorset .color-purple:after {
-  content: "#8666b8";
-  }
-.colorset .color-purple:before {
-  content: "color-purple";
-  }
-.colorset .color-purple:hover:before {
-  content: "263,37%,56%";
-  }
-.colorset .color-light {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #fff;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #e6e6e6;
-  }
-.colorset .color-light:after,
-.colorset .color-light:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-light:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-light:hover:after,
-.colorset .color-light:hover:before {
-  opacity: 1;
-  }
-.colorset .color-light:after,
-.colorset .color-light:before {
-  color: #353535;
-  }
-.colorset .color-light:after {
-  content: "#fff";
-  }
-.colorset .color-light:before {
-  content: "color-light";
-  }
-.colorset .color-light:hover:before {
-  content: "0,0%,100%";
-  }
-.colorset .color-dark {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #353535;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #1c1c1c;
-  }
-.colorset .color-dark:after,
-.colorset .color-dark:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-dark:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-dark:hover:after,
-.colorset .color-dark:hover:before {
-  opacity: 1;
-  }
-.colorset .color-dark:after,
-.colorset .color-dark:before {
-  color: #fff;
-  }
-.colorset .color-dark:after {
-  content: "#353535";
-  }
-.colorset .color-dark:before {
-  content: "color-dark";
-  }
-.colorset .color-dark:hover:before {
-  content: "0,0%,21%";
-  }
-.colorset .color-success {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #38b03f;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #2c8931;
-  }
-.colorset .color-success:after,
-.colorset .color-success:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-success:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-success:hover:after,
-.colorset .color-success:hover:before {
-  opacity: 1;
-  }
-.colorset .color-success:after,
-.colorset .color-success:before {
-  color: #fff;
-  }
-.colorset .color-success:after {
-  content: "#38b03f";
-  }
-.colorset .color-success:before {
-  content: "color-success";
-  }
-.colorset .color-success:hover:before {
-  content: "124,52%,45%";
-  }
-.colorset .color-warning {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f1a325;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #d5890e;
-  }
-.colorset .color-warning:after,
-.colorset .color-warning:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-warning:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-warning:hover:after,
-.colorset .color-warning:hover:before {
-  opacity: 1;
-  }
-.colorset .color-warning:after,
-.colorset .color-warning:before {
-  color: #fff;
-  }
-.colorset .color-warning:after {
-  content: "#f1a325";
-  }
-.colorset .color-warning:before {
-  content: "color-warning";
-  }
-.colorset .color-warning:hover:before {
-  content: "37,88%,55%";
-  }
-.colorset .color-danger {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ea644a;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #e53d1c;
-  }
-.colorset .color-danger:after,
-.colorset .color-danger:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-danger:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-danger:hover:after,
-.colorset .color-danger:hover:before {
-  opacity: 1;
-  }
-.colorset .color-danger:after,
-.colorset .color-danger:before {
-  color: #fff;
-  }
-.colorset .color-danger:after {
-  content: "#ea644a";
-  }
-.colorset .color-danger:before {
-  content: "color-danger";
-  }
-.colorset .color-danger:hover:before {
-  content: "10,79%,60%";
-  }
-.colorset .color-info {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #03b8cf;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #028b9d;
-  }
-.colorset .color-info:after,
-.colorset .color-info:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-info:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-info:hover:after,
-.colorset .color-info:hover:before {
-  opacity: 1;
-  }
-.colorset .color-info:after,
-.colorset .color-info:before {
-  color: #fff;
-  }
-.colorset .color-info:after {
-  content: "#03b8cf";
-  }
-.colorset .color-info:before {
-  content: "color-info";
-  }
-.colorset .color-info:hover:before {
-  content: "187,97%,41%";
-  }
-.colorset .color-important {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #bd7b46;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #996337;
-  }
-.colorset .color-important:after,
-.colorset .color-important:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-important:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-important:hover:after,
-.colorset .color-important:hover:before {
-  opacity: 1;
-  }
-.colorset .color-important:after,
-.colorset .color-important:before {
-  color: #fff;
-  }
-.colorset .color-important:after {
-  content: "#bd7b46";
-  }
-.colorset .color-important:before {
-  content: "color-important";
-  }
-.colorset .color-important:hover:before {
-  content: "27,47%,51%";
-  }
-.colorset .color-special {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #8666b8;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #6c4aa1;
-  }
-.colorset .color-special:after,
-.colorset .color-special:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-special:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-special:hover:after,
-.colorset .color-special:hover:before {
-  opacity: 1;
-  }
-.colorset .color-special:after,
-.colorset .color-special:before {
-  color: #fff;
-  }
-.colorset .color-special:after {
-  content: "#8666b8";
-  }
-.colorset .color-special:before {
-  content: "color-special";
-  }
-.colorset .color-special:hover:before {
-  content: "263,37%,56%";
-  }
-.colorset .color-success-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ddf4df;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #b6e8bb;
-  }
-.colorset .color-success-pale:after,
-.colorset .color-success-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-success-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-success-pale:hover:after,
-.colorset .color-success-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-success-pale:after,
-.colorset .color-success-pale:before {
-  color: #353535;
-  }
-.colorset .color-success-pale:after {
-  content: "#ddf4df";
-  }
-.colorset .color-success-pale:before {
-  content: "color-success-pale";
-  }
-.colorset .color-success-pale:hover:before {
-  content: "125,51%,91%";
-  }
-.colorset .color-warning-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #fff0d5;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #ffdea2;
-  }
-.colorset .color-warning-pale:after,
-.colorset .color-warning-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-warning-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-warning-pale:hover:after,
-.colorset .color-warning-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-warning-pale:after,
-.colorset .color-warning-pale:before {
-  color: #353535;
-  }
-.colorset .color-warning-pale:after {
-  content: "#fff0d5";
-  }
-.colorset .color-warning-pale:before {
-  content: "color-warning-pale";
-  }
-.colorset .color-warning-pale:hover:before {
-  content: "39,100%,92%";
-  }
-.colorset .color-danger-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ffe5e0;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #ffbaad;
-  }
-.colorset .color-danger-pale:after,
-.colorset .color-danger-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-danger-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-danger-pale:hover:after,
-.colorset .color-danger-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-danger-pale:after,
-.colorset .color-danger-pale:before {
-  color: #353535;
-  }
-.colorset .color-danger-pale:after {
-  content: "#ffe5e0";
-  }
-.colorset .color-danger-pale:before {
-  content: "color-danger-pale";
-  }
-.colorset .color-danger-pale:hover:before {
-  content: "10,100%,94%";
-  }
-.colorset .color-info-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #ddf3f5;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #b6e5e9;
-  }
-.colorset .color-info-pale:after,
-.colorset .color-info-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-info-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-info-pale:hover:after,
-.colorset .color-info-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-info-pale:after,
-.colorset .color-info-pale:before {
-  color: #353535;
-  }
-.colorset .color-info-pale:after {
-  content: "#ddf3f5";
-  }
-.colorset .color-info-pale:before {
-  content: "color-info-pale";
-  }
-.colorset .color-info-pale:hover:before {
-  content: "185,55%,91%";
-  }
-.colorset .color-important-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f7ebe1;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #ecd0b9;
-  }
-.colorset .color-important-pale:after,
-.colorset .color-important-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-important-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-important-pale:hover:after,
-.colorset .color-important-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-important-pale:after,
-.colorset .color-important-pale:before {
-  color: #353535;
-  }
-.colorset .color-important-pale:after {
-  content: "#f7ebe1";
-  }
-.colorset .color-important-pale:before {
-  content: "color-important-pale";
-  }
-.colorset .color-important-pale:hover:before {
-  content: "27,58%,93%";
-  }
-.colorset .color-special-pale {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f5eeff;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #d7bbff;
-  }
-.colorset .color-special-pale:after,
-.colorset .color-special-pale:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-special-pale:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-special-pale:hover:after,
-.colorset .color-special-pale:hover:before {
-  opacity: 1;
-  }
-.colorset .color-special-pale:after,
-.colorset .color-special-pale:before {
-  color: #353535;
-  }
-.colorset .color-special-pale:after {
-  content: "#f5eeff";
-  }
-.colorset .color-special-pale:before {
-  content: "color-special-pale";
-  }
-.colorset .color-special-pale:hover:before {
-  content: "265,100%,97%";
-  }
-.colorset .color-1 {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f9f9f9;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #dfdfdf;
-  }
-.colorset .color-1:after,
-.colorset .color-1:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-1:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-1:hover:after,
-.colorset .color-1:hover:before {
-  opacity: 1;
-  }
-.colorset .color-1:after,
-.colorset .color-1:before {
-  color: #353535;
-  }
-.colorset .color-1:after {
-  content: "#f9f9f9";
-  }
-.colorset .color-1:before {
-  content: "color-1";
-  }
-.colorset .color-1:hover:before {
-  content: "0,0%,98%";
-  }
-.colorset .color-2 {
-  position: relative;
-  display: block;
-  float: left;
-  width: 160px;
-  height: 160px;
-  margin-right: 10px;
-  margin-bottom: 10px;
-  color: #fff;
-  background-color: #f5f5f5;
-  border: 1px solid rgba(0, 0, 0, .5);
-  border-color: #dcdcdc;
-  }
-.colorset .color-2:after,
-.colorset .color-2:before {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  display: block;
-  width: 100%;
-  height: 24px;
-  padding: 0 5px;
-  font-size: 12px;
-  line-height: 24px;
-  color: rgba(255, 255, 255, .7);
-  text-align: left;
-  opacity: .5;
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.colorset .color-2:after {
-  top: 0;
-  bottom: auto;
-  color: rgba(255, 255, 255, .9);
-  text-align: right;
-  text-transform: uppercase;
-  background-color: transparent;
-  }
-.colorset .color-2:hover:after,
-.colorset .color-2:hover:before {
-  opacity: 1;
-  }
-.colorset .color-2:after,
-.colorset .color-2:before {
-  color: #353535;
-  }
-.colorset .color-2:after {
-  content: "#f5f5f5";
-  }
-.colorset .color-2:before {
-  content: "color-2";
-  }
-.colorset .color-2:hover:before {
-  content: "0,0%,96%";
-  }
-/*!
- * Chosen, a Select Box Enhancer for jQuery and Prototype
- * by Patrick Filler for Harvest, http://getharvest.com
- *
- * Copyright (c) 2011-2016 Harvest http://getharvest.com 
- * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
-*/
-.chosen-container {
-  position: relative;
-  display: inline-block;
-  font-size: 13px;
-  vertical-align: middle;
-  zoom: 1;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-
-  *display: inline;
-  }
-.chosen-container .chosen-drop {
-  position: absolute;
-  top: 100%;
-  left: -9999px;
-  z-index: 1010;
-  width: 100%;
-  background: #fff;
-  border: 1px solid #cbcbcb;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-top: 0;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-  }
-.chosen-container .chosen-drop.chosen-drop-size-limited {
-  border-top: 1px solid rgba(0, 0, 0, .15);
-  }
-.chosen-container.chosen-with-drop .chosen-drop {
-  left: 0;
-  }
-.chosen-container a {
-  cursor: pointer;
-  }
-.chosen-container.chosen-up .chosen-drop {
-  top: inherit;
-  bottom: 100%;
-  margin-top: auto;
-  margin-bottom: -1px;
-  border-radius: 2px 2px 0 0;
-  -webkit-box-shadow: 0 -3px 5px rgba(0, 0, 0, .175);
-          box-shadow: 0 -3px 5px rgba(0, 0, 0, .175);
-  }
-.chosen-container-single .chosen-single {
-  display: block;
-  width: 100%;
-  height: 32px;
-  padding: 5px 8px;
-  overflow: hidden;
-  line-height: 1.53846154;
-  color: #222;
-  text-decoration: none;
-  white-space: nowrap;
-  vertical-align: middle;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-          transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-          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, -webkit-box-shadow ease-in-out .15s;
-  }
-.chosen-container-single .chosen-default {
-  color: #808080;
-  }
-.chosen-container-single .chosen-single > span {
-  display: block;
-  margin-right: 26px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  }
-.chosen-container-single .chosen-single-with-deselect span {
-  margin-right: 38px;
-  }
-.chosen-container-single .chosen-single abbr {
-  position: absolute;
-  top: 7px;
-  right: 24px;
-  display: block;
-  width: 20px;
-  height: 20px;
-  font-size: 19.5px;
-  font-weight: bold;
-  line-height: 14px;
-  color: #000;
-  text-align: center;
-  text-shadow: 0 1px 0 #fff;
-  filter: alpha(opacity=20);
-  opacity: .2;
-  }
-.chosen-container-single .chosen-single abbr:before {
-  content: '×';
-  }
-.chosen-container-single .chosen-single abbr:hover,
-.chosen-container-single .chosen-single abbr:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  filter: alpha(opacity=50);
-  opacity: .5;
-  }
-.chosen-container-single .chosen-single div {
-  position: absolute;
-  top: 0;
-  right: 0;
-  display: block;
-  height: 100%;
-  padding: 5px 8px;
-  }
-.chosen-container-single .chosen-single div b {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-bottom: 2px;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px dashed;
-  border-top: 4px solid \9;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  }
-.chosen-container-single .chosen-search {
-  position: relative;
-  z-index: 1010;
-  padding: 3px 4px;
-  margin: 0;
-  white-space: nowrap;
-  }
-.chosen-container-single .chosen-search input[type="text"] {
-  width: 100%;
-  height: 27px;
-  padding: 2px 26px 2px 8px;
-  margin: 1px 0;
-  font-size: 12px;
-  line-height: 1.5;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  outline: 0;
-  }
-.chosen-container-single .chosen-search input[type="text"]:focus {
-  border-color: #145ccd;
-  }
-.chosen-container-single .chosen-search:before {
-  position: absolute;
-  top: 10px;
-  right: 10px;
-  display: block;
-  font-family: ZenIcon;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  line-height: 1;
-  color: #808080;
-  text-transform: none;
-  content: '\e603';
-
-  speak: none;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  }
-.chosen-container-single .chosen-drop {
-  margin-top: -1px;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border-radius: 0 0 4px 4px;
-  }
-.chosen-container-single.chosen-container-single-nosearch .chosen-search {
-  position: absolute;
-  left: -9999px;
-  }
-.chosen-container .chosen-results {
-  position: relative;
-  max-height: 240px;
-  padding: 0;
-  margin: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  }
-.chosen-container .chosen-results li {
-  display: none;
-  padding: 5px 10px;
-  margin: 0;
-  line-height: 15px;
-  list-style: none;
-  -webkit-transition: background-color .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: background-color .2s cubic-bezier(.175, .885, .32, 1);
-          transition: background-color .2s cubic-bezier(.175, .885, .32, 1);
-
-  -webkit-touch-callout: none;
-  }
-.chosen-container .chosen-results li.active-result {
-  display: list-item;
-  cursor: pointer;
-  }
-.chosen-container .chosen-results li.disabled-result {
-  display: list-item;
-  color: #ccc;
-  cursor: default;
-  }
-.chosen-container .chosen-results li.highlighted {
-  color: #fff;
-  background-color: #3280fc;
-  }
-.chosen-container .chosen-results li.no-results {
-  display: list-item;
-  background: #f4f4f4;
-  }
-.chosen-container .chosen-results li.group-result {
-  display: list-item;
-  font-weight: bold;
-  cursor: default;
-  }
-.chosen-container .chosen-results li.group-option {
-  padding-left: 15px;
-  }
-.chosen-container .chosen-results li em {
-  font-style: normal;
-  text-decoration: underline;
-  }
-.chosen-container-multi .chosen-choices {
-  position: relative;
-  width: 100%;
-  min-height: 32px;
-  min-height: 30px \0;
-  padding: 0;
-  margin: 0;
-  overflow: hidden;
-  cursor: text;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-          transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-          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, -webkit-box-shadow ease-in-out .15s;
-  }
-.chosen-container-multi .chosen-choices:before,
-.chosen-container-multi .chosen-choices:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.chosen-container-multi .chosen-choices:after {
-  clear: both;
-  }
-.chosen-container-multi .chosen-choices:before,
-.chosen-container-multi .chosen-choices:after {
-  /* 1 */
-  display: table;
-  content: " ";
-  /* 2 */
-  }
-.chosen-container-multi .chosen-choices:after {
-  clear: both;
-  }
-.chosen-container-multi .chosen-choices li {
-  display: block;
-  float: left;
-  padding: 0 6px;
-  margin: 5px 0 0 6px;
-  list-style: none;
-  }
-.chosen-container-multi .chosen-choices li.search-field {
-  padding: 0;
-  margin-bottom: 4px;
-  white-space: nowrap;
-  }
-.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
-  height: 20px;
-  font-size: 100%;
-  color: #808080;
-  background: transparent !important;
-  border: 0 !important;
-  border-radius: 0;
-  outline: 0;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  }
-.chosen-container-multi .chosen-choices li.search-field .default {
-  color: #999;
-  }
-.chosen-container-multi .chosen-choices li.search-field:before {
-  position: absolute;
-  right: 8px;
-  bottom: 8px;
-  display: block;
-  font-family: ZenIcon;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  line-height: 1;
-  color: #808080;
-  text-transform: none;
-  content: '\e603';
-  opacity: 0;
-  -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .2s cubic-bezier(.175, .885, .32, 1);
-
-  speak: none;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  }
-.chosen-container-multi .chosen-choices li.search-choice {
-  position: relative;
-  padding: 3px 20px 3px 5px;
-  line-height: 12px;
-  cursor: default;
-  background-color: #f1f1f1;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ddd;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, .05);
-          box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, .05);
-  -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
-          transition: all .4s cubic-bezier(.175, .885, .32, 1);
-  }
-.chosen-container-multi .chosen-choices li.search-choice:hover {
-  background-color: #fff;
-  border-color: #c4c4c4;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .1);
-          box-shadow: 0 1px 0 rgba(0, 0, 0, .1);
-  }
-.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
-  position: absolute;
-  top: 0;
-  right: 0;
-  display: block;
-  width: 20px;
-  height: 20px;
-  font-size: 15.6px;
-  font-weight: bold;
-  line-height: 14px;
-  color: #000;
-  text-align: center;
-  text-shadow: 0 1px 0 #fff;
-  filter: alpha(opacity=20);
-  opacity: .2;
-  }
-.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before {
-  content: '×';
-  }
-.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover,
-.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  filter: alpha(opacity=50);
-  opacity: .5;
-  }
-.chosen-container-multi .chosen-choices li.search-choice-disabled {
-  padding-right: 5px;
-  color: #666;
-  background-color: #e4e4e4;
-  border: 1px solid #ccc;
-  }
-.chosen-container-multi .chosen-choices li.search-choice-focus {
-  background: #d4d4d4;
-  }
-.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
-  background-position: -42px -10px;
-  }
-.chosen-container-multi .chosen-results {
-  padding: 5px 0;
-  margin: 0;
-  }
-.chosen-container-multi .chosen-drop .result-selected {
-  display: list-item;
-  color: #ccc;
-  cursor: default;
-  }
-.chosen-container-active .chosen-single {
-  border-color: #145ccd;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
-  }
-.chosen-container-active.chosen-with-drop .chosen-single {
-  border: 1px solid #cbcbcb;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-  }
-.chosen-container-active.chosen-with-drop .chosen-single div {
-  background: transparent;
-  border-left: none;
-  }
-.chosen-container-active.chosen-with-drop .chosen-single div b {
-  content: "";
-  border-top: 0 dotted;
-  border-bottom: 4px solid;
-  }
-.chosen-container-active.chosen-with-drop.chosen-up .chosen-single {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-  }
-.chosen-container-active .chosen-choices {
-  border-color: #145ccd;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6);
-  }
-.chosen-container-active .chosen-choices li.search-field input[type="text"] {
-  color: #111 !important;
-  }
-.chosen-container-active .chosen-choices li.search-field:before {
-  opacity: 1;
-  }
-.chosen-disabled {
-  cursor: default;
-  opacity: .5 !important;
-  }
-.chosen-disabled .chosen-single {
-  cursor: default;
-  }
-.chosen-disabled .chosen-choices .search-choice .search-choice-close {
-  cursor: default;
-  }
-.chosen-container.chosen-icons .chosen-results {
-  padding: 5px;
-  }
-.chosen-container.chosen-icons .chosen-results li {
-  border-radius: 4px;
-  }
-.chosen-container.chosen-icons .chosen-results li.group-result {
-  padding: 5px 0;
-  font-size: 12px;
-  color: #666;
-  border-radius: 0;
-  }
-.chosen-container.chosen-icons .chosen-results li.group-option {
-  display: inline-block;
-  width: 30px;
-  padding: 8px;
-  font-size: 14px;
-  line-height: 14px;
-  text-align: center;
-  }
-/**(function($) {
-    'use strict';
-
-    var nextColorIndex = 0;
-    var presetColors = ['primary', 'red', 'yellow', 'green', 'blue', 'purple', 'brown', 'dark'];
-
-    var colorset = {**/
-.color-primary {
-  color: #3280fc;
-  }
-.color-secondary {
-  color: #145ccd;
-  }
-.color-pale {
-  color: #ebf2f9;
-  }
-.color-fore {
-  color: #353535;
-  }
-.color-back {
-  color: #fff;
-  }
-.color-grayDarker {
-  color: #222;
-  }
-.color-grayDark {
-  color: #333;
-  }
-.color-gray {
-  color: #808080;
-  }
-.color-grayLight {
-  color: #ddd;
-  }
-.color-grayLighter {
-  color: #e5e5e5;
-  }
-.color-grayPale {
-  color: #f1f1f1;
-  }
-.color-white {
-  color: #fff;
-  }
-.color-black {
-  color: #000;
-  }
-.color-red {
-  color: #ea644a;
-  }
-.color-yellow {
-  color: #f1a325;
-  }
-.color-green {
-  color: #38b03f;
-  }
-.color-blue {
-  color: #03b8cf;
-  }
-.color-purple {
-  color: #8666b8;
-  }
-.color-brown {
-  color: #bd7b46;
-  }
-.color-greenPale {
-  color: #ddf4df;
-  }
-.color-yellowPale {
-  color: #fff0d5;
-  }
-.color-redPale {
-  color: #ffe5e0;
-  }
-.color-bluePale {
-  color: #ddf3f5;
-  }
-.color-brownPale {
-  color: #f7ebe1;
-  }
-.color-purplePale {
-  color: #f5eeff;
-  }
-.color-light {
-  color: #fff;
-  }
-.color-dark {
-  color: #353535;
-  }
-.color-success {
-  color: #38b03f;
-  }
-.color-warning {
-  color: #f1a325;
-  }
-.color-danger {
-  color: #ea644a;
-  }
-.color-info {
-  color: #03b8cf;
-  }
-.color-important {
-  color: #bd7b46;
-  }
-.color-special {
-  color: #8666b8;
-  }
-.color-successPale {
-  color: #ddf4df;
-  }
-.color-warningPale {
-  color: #fff0d5;
-  }
-.color-dangerPale {
-  color: #ffe5e0;
-  }
-.color-infoPale {
-  color: #ddf3f5;
-  }
-.color-importantPale {
-  color: #f7ebe1;
-  }
-.color-specialPale {
-  color: #f5eeff;
-  }
-/**    };
-    
-    colorset.get = function(colorName) {
-        if(typeof colorName === 'undefined' || colorName === 'random') {
-            colorName = presetColors[(nextColorIndex++) % presetColors.length];
-        }
-        var color = colorset[colorName] ? colorset[colorName] : colorName;
-        return $.zui.Color ? new $.zui.Color(color) : color;
-    }
-
-    $.zui({colorset: colorset});
-    if($.zui.Color) $.extend($.zui.Color, colorset);
-}(jQuery));**/
-.tree {
-  padding-left: 0;
-  }
-.tree ul {
-  position: relative;
-  display: none;
-  padding-left: 0;
-  }
-.tree li {
-  position: relative;
-  padding: 2px 0 2px 20px;
-  list-style: none;
-  }
-.tree li:before {
-  position: absolute;
-  top: 10px;
-  left: 8px;
-  display: block;
-  width: 3px;
-  height: 3px;
-  content: ' ';
-  background-color: #999;
-  }
-.tree li.has-list:before {
-  display: none;
-  }
-.tree li > .list-toggle {
-  position: absolute;
-  top: -1px;
-  left: 0;
-  z-index: 10;
-  width: 20px;
-  line-height: 24px;
-  color: #808080;
-  text-align: center;
-  cursor: pointer;
-  }
-.tree li > .list-toggle:before {
-  content: '\e6f1';
-  }
-.tree li > .list-toggle:hover,
-.tree li > .list-toggle:active {
-  color: #0d3d88;
-  }
-.tree li.open > ul {
-  display: block;
-  }
-.tree li.open > .list-toggle:before {
-  content: '\e6f2';
-  }
-.tree-actions {
-  display: inline-block;
-  margin-left: 5px;
-  opacity: 0;
-  -webkit-transition: opacity .1s;
-       -o-transition: opacity .1s;
-          transition: opacity .1s;
-  }
-.tree-action {
-  display: inline-block;
-  margin-left: 5px;
-  color: #808080;
-  }
-.tree-action:hover,
-.tree-action:active {
-  text-decoration: none;
-  }
-.tree li:hover > .tree-actions,
-.tree-item-wrapper:hover > .tree-actions {
-  opacity: 1;
-  }
-.tree-drag-holder {
-  background-color: #ebf2f9;
-  opacity: .4;
-  }
-.tree .sort-handler {
-  cursor: move;
-  }
-.tree-animate ul {
-  opacity: 0;
-  -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1);
-       -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1);
-          transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1);
-  -webkit-transform: scale(1, .5);
-      -ms-transform: scale(1, .5);
-       -o-transform: scale(1, .5);
-          transform: scale(1, .5);
-  }
-.tree-animate li.open.in > ul {
-  opacity: 1;
-  -webkit-transform: scale(1, 1);
-      -ms-transform: scale(1, 1);
-       -o-transform: scale(1, 1);
-          transform: scale(1, 1);
-  }
-.tree-animate.tree-lines li.has-list.open > ul:after {
-  top: -5px;
-  bottom: 12px;
-  left: -11px;
-  }
-.tree-lines ul > li:after {
-  position: absolute;
-  top: 11px;
-  left: -10px;
-  z-index: 1;
-  display: block;
-  width: 22px;
-  content: ' ';
-  border-top: 1px dotted #999;
-  }
-.tree-lines ul > li:before,
-.tree-lines ul > li.has-list:before {
-  position: absolute;
-  top: -12px;
-  bottom: 13px;
-  left: -11px;
-  display: block;
-  width: auto;
-  height: auto;
-  content: ' ';
-  background: none;
-  border: none;
-  border-left: 1px dotted #999;
-  }
-.tree-lines ul > li:last-child:before {
-  bottom: auto;
-  height: 23px;
-  }
-.tree-lines ul > li:first-child:before {
-  top: -7px;
-  }
-.tree-lines ul > li.tree-single-item:before {
-  height: 19px;
-  }
-.tree-lines ul > li.has-list:after {
-  width: 14px;
-  }
-.tree-lines ul > li.drag-shadow:after {
-  display: none;
-  }
-.tree-folders li > .list-toggle:before {
-  content: '\e6ef';
-  }
-.tree-folders li.open > .list-toggle:before {
-  content: '\e6f0';
-  }
-.tree-folders.tree-lines ul > li:first-child:before {
-  top: -6px;
-  }
-.tree-folders.tree-lines li.has-list.open > ul:after {
-  top: 16px;
-  }
-.tree-folders ul > li.has-list:after {
-  width: 13px;
-  }
-.tree-folders ul > li.has-list.open:after {
-  width: 15px;
-  }
-.tree-chevrons li > .list-toggle:before {
-  content: '\e710';
-  }
-.tree-chevrons li.open > .list-toggle:before {
-  content: '\e712';
-  }
-.tree-chevrons li:before {
-  top: 6px;
-  left: 4px;
-  width: 10px;
-  height: 10px;
-  background-color: #ddd;
-  border-radius: 5px;
-  }
-.tree-chevrons ul > li:after {
-  width: 13px;
-  }
-.tree-angles li > .list-toggle:before {
-  content: '\e6e1';
-  }
-.tree-angles li.open > .list-toggle:before {
-  content: '\e6e3';
-  }
-.tree-angles ul > li.has-list:after {
-  width: 15px;
-  }
-.tree-menu {
-  overflow: hidden;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  }
-.tree-menu li {
-  padding: 0;
-  }
-.tree-menu li:before {
-  display: none;
-  }
-.tree-menu li > a {
-  display: block;
-  padding: 8px;
-  margin-bottom: -1px;
-  color: #353535;
-  }
-.tree-menu li > a > .icon {
-  display: inline-block;
-  width: 20px;
-  color: inherit;
-  text-align: left;
-  opacity: .6;
-  }
-.tree-menu li > a:hover,
-.tree-menu li > a:active,
-.tree-menu li > a:focus {
-  color: #0d3d88;
-  text-decoration: none;
-  background-color: rgba(0, 0, 0, .04);
-  }
-.tree-menu li > a:hover > .icon,
-.tree-menu li > a:active > .icon,
-.tree-menu li > a:focus > .icon {
-  opacity: .9;
-  }
-.tree-menu li .list-toggle {
-  top: 6px;
-  right: 4px;
-  left: auto;
-  width: 24px;
-  height: 24px;
-  filter: alpha(opacity=45);
-  opacity: .45;
-  -webkit-transition: all .3s;
-       -o-transition: all .3s;
-          transition: all .3s;
-  }
-.tree-menu li .list-toggle:before {
-  content: '\e64f';
-  }
-.tree-menu li.open > .list-toggle {
-  filter: alpha(opacity=75);
-  opacity: .75;
-  -webkit-transform: rotate(90deg);
-      -ms-transform: rotate(90deg);
-       -o-transform: rotate(90deg);
-          transform: rotate(90deg);
-  }
-.tree-menu li.open > .list-toggle:before {
-  content: '\e64f';
-  }
-.tree-menu li > ul {
-  background-color: rgba(0, 0, 0, .04);
-  }
-.tree-menu li li a {
-  padding-left: 28px;
-  border-top-color: transparent;
-  border-bottom-color: transparent;
-  }
-.tree-menu li li li a {
-  padding-left: 48px;
-  }
-.tree-menu li li li li a {
-  padding-left: 68px;
-  }
-.tree-menu li.active > a {
-  color: #fff;
-  background-color: #3280fc;
-  border-color: #3280fc;
-  }
-.tree-menu li.active > .list-toggle {
-  color: #fff;
-  }
-.tree-menu > li > a {
-  border: 1px solid transparent;
-  border-bottom-color: #ddd;
-  }
-.tree-menu > li.open + li > a {
-  border-top-color: #ddd;
-  }
-.colorpicker .dropdown-menu {
-  min-width: 0;
-  padding: 2px;
-  }
-.colorpicker .dropdown-menu > li {
-  display: block;
-  float: left;
-  padding: 2px;
-  }
-.colorpicker .dropdown-menu > li > a {
-  position: relative;
-  display: block;
-  width: 100%;
-  height: 100%;
-  padding: 0;
-  font-family: ZenIcon;
-  font-size: 14px;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  line-height: 1;
-  text-align: center;
-  text-transform: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-
-  speak: none;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  }
-.colorpicker .dropdown-menu > li > a:before {
-  position: absolute;
-  top: 50%;
-  display: block;
-  width: 100%;
-  height: 20px;
-  margin-top: -8px;
-  }
-.colorpicker .dropdown-menu > li > a:hover {
-  border-color: #333;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, .25);
-          box-shadow: 0 1px 4px rgba(0, 0, 0, .25);
-  }
-.colorpicker .dropdown-menu > li > a.active:before {
-  content: '\e60d';
-  }
-.colorpicker .dropdown-menu > li > a.empty {
-  color: #666;
-  background: #f2f2f2;
-  }
-.colorpicker .dropdown-menu > li > a.empty:before {
-  content: '\d7';
-  }
-.colorpicker .btn {
-  text-shadow: none;
-  }
-.colorpicker .btn .cp-title {
-  display: inline-block;
-  margin-right: 5px;
-  }
-.colorpicker.btn-wrapper {
-  position: relative;
-  display: inline-block;
-  }

File diff suppressed because it is too large
+ 0 - 5
VisualInspection/node_modules/zui/docs/css/zui.min.css


BIN
VisualInspection/node_modules/zui/docs/download/zui-1.7.0-dist.zip


BIN
VisualInspection/node_modules/zui/docs/download/zui-1.8.0-dist.zip


BIN
VisualInspection/node_modules/zui/docs/download/zui-1.8.1-dist.zip


+ 79 - 0
VisualInspection/node_modules/zui/docs/examples/contextmenu.html

@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="ZUI,一个简单灵活的前端框架。">
+<meta name="author" content="Zentao">
+<title>ZUI - 右键菜单例子</title>
+<link href="../../dist/css/zui.css" rel="stylesheet">
+</head>
+
+<body style="padding: 20px">
+  <div class="has-padding" id="contextmenuExample">
+    在此点击右键弹出右键菜单。
+    <br>
+    在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>在此点击右键弹出右键菜单。
+    <br>
+  </div>
+
+<script src="../../assets/jquery.js"></script>
+<script src="../../dist/js/zui.js"></script>
+<script>
+$(function() {
+    $('#contextmenuExample').contextmenu({
+        items: [
+            '测试',
+            '-',
+            '哈哈'
+        ],
+        onClickItem: function(item) {
+            console.log('you click', item);
+        }
+    });
+});
+</script>
+</body>
+</html>

+ 282 - 0
VisualInspection/node_modules/zui/docs/examples/datagrid.html

@@ -0,0 +1,282 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="ZUI,一个简单灵活的前端框架。">
+<meta name="author" content="Zentao">
+<title>ZUI - 数据表格例子</title>
+<link href="../../dist/css/zui.css" rel="stylesheet">
+<link href="../../dist/lib/datagrid/zui.datagrid.css" rel="stylesheet">
+</head>
+
+<body style="padding: 20px">
+  <div id="dataGrid2" class="datagrid">
+    <header>
+      <div class="input-control search-box search-box-circle has-icon-left has-icon-right pull-right" id="searchboxExample">
+        <input id="inputSearchExample1" type="search" class="form-control search-input" placeholder="搜索">
+        <label for="inputSearchExample1" class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label>
+        <a href="#" class="input-control-icon-right search-clear-btn"><i class="icon icon-remove"></i></a>
+      </div>
+      <h1>数据表格功能综合演示</h1>
+    </header>
+    <div class="datagrid-container"></div>
+    <div class="pager"></div>
+  </div>
+  <div id="dataGrid" class="datagrid">
+    <header>
+      <h1>数据表格海量数据测试</h1>
+      <p class="small">全新的数据表格视图组件可以流畅显示上亿的动态数据,完整功能包括自动分页、搜索、远程数据加载、行选择、跨行跨列、行列固定、排序等。此组件将于ZUI 1.8中发布。</p>
+    </header>
+  </div>
+  <div id="remoteDataGridExample" class="datagrid"></div>
+
+<script src="../../assets/jquery.js"></script>
+<script src="../../dist/js/zui.js"></script>
+<script src="../../dist/lib/selectable/zui.selectable.js"></script>
+<script src="../../dist/lib/datagrid/zui.datagrid.js"></script>
+<script>
+$(function() {
+    // Returns a random integer between min (included) and max (included)
+    var getRandomInt = function(min, max) {
+        return Math.floor(Math.random() * (max - min + 1)) + min;
+    };
+    var getRandomData = function(arr, start, end) {
+        if (start === undefined) {
+            start = 0;
+        }
+        if (end === undefined) {
+            end = arr.length;
+        }
+        return arr[getRandomInt(start, end - 1)];
+    };
+    var getLuckInt = window.getLuckInt = function(min, max, luck) {
+        return (luck % (max - min) + min);
+    };
+    var getLuckData = window.getLuckData = function(arr, start, end, luck) {
+        if (start === undefined || start === null) {
+            start = 0;
+        }
+        if (end === undefined || end === null) {
+            end = arr.length;
+        }
+        return arr[getLuckInt(start, end - 1, luck)];
+    };
+    var nowTime = new Date().getTime();
+    var createDataSample = function(size) {
+        size = size || 100;
+        var heros = ['力丸', '幻影刺客', '祈求者', '斧王', '巫医', '天辉防御塔', 'Roshan', '嗜血狂魔', '宙斯', '影魔', '米波', '树精卫士'];
+        var actions = ['击杀', '拾取', '购买', '治疗'];
+        var items = ['圣剑', '虚灵之刃', '真视宝石', '恐鳌之心', '远行鞋', '治疗指环', '黑皇杖', '刷新球', '金箍棒', '蝴蝶', '诡计之雾', '显影之尘', '侦查守卫', '岗哨守卫', '漩涡', '天堂之戟', '刃甲', '希瓦的守护', '强袭胸甲', '阿托斯之棍', '银月之晶', '斯嘉蒂之眼', '玲珑心', '撒旦之邪力', '否决挂饰', '隐刀', '血棘', '邪恶镰刀', '白银之锋', '辉耀', '代达罗斯之殇', '幻影斧', '林肯法球', '阿哈利姆神杖', '死灵书'];
+        var runes = ['赏金神符', '双倍神符', '魔法神符', '极速神符', '不朽之守护', '奶酪'];
+        var cols = [
+            {label: '时间', name: 'time', width: 130, valueType: 'gametime', sort: true},
+            {label: '英雄', name: 'hero', width: 80},
+            {label: '动作', name: 'action', width: 60},
+            {label: '队友', name: 'teammate', width: 80},
+            {label: '敌人', name: 'enemy', width: 80},
+            {label: 'date', name: 'date', width: 100, valueType: 'date'},
+            {label: '物品/神符', name: 'item', width: 80},
+            {label: '获得经验', name: 'gotexps', width: 80, valueType: 'number'},
+            {label: '获得金钱', name: 'gotgolds', width: 80, valueType: 'number'},
+            {label: '累计经验', name: 'exps', width: 80, valueType: 'number'},
+            {label: '剩余金钱', name: 'golds', width: 80, valueType: 'number'},
+            {label: '描述', name: 'desc', width: 'auto', minWidth: 200},
+            {label: '累计人头', name: 'kills', width: 110, valueType: 'number', valueOperator: {getter: function(value, cell, dg) {
+                return '[' + value + ']';
+            }}},
+        ];
+
+        var createDataItem = function(index) {
+            var luckNumber = parseInt((Math.sin(index + 1) + '').substr(3));
+            var time = 600 + 5*index + getLuckInt(0, 5, luckNumber);
+            var action = getLuckData(actions, null, null, luckNumber);
+            var heroIndex = getLuckInt(0, action === '击杀' ? 6 : 4, luckNumber);
+            var hero = heros[heroIndex];
+            var teammate, enemy, item;
+            var heroData = {
+                golds: heroIndex*500*heroIndex + 71*index + getLuckInt(0, 71, luckNumber),
+                exps: heroIndex*300*heroIndex + 43*index + getLuckInt(0, 43, luckNumber),
+                kills: heroIndex + Math.floor(index/10)
+            };
+            var gotExps = 0;
+            var gotGolds = 0;
+            switch (action) {
+                case '击杀':
+                    enemy = getLuckData(heros, 6, 9, luckNumber);
+                    gotExps += getLuckInt(0, 1000 + index * 10, luckNumber);
+                    gotGolds += getLuckInt(0, 200 + index * 8, luckNumber);
+                    if (hero === '力丸') {
+                        action = '偷摸';
+                    } else if (hero === '斧王') {
+                        action = '斩杀';
+                    }
+                    break;
+                case '购买':
+                    item = getLuckData(items, null, null, luckNumber);
+                    break;
+                case '拾取':
+                    item = getLuckData(runes, null, null, luckNumber);
+                    if (item === '赏金神符') {
+                        gotExps += getLuckInt(0, 50 + index, luckNumber);
+                        gotGolds += getLuckInt(0, 50 + index * 2, luckNumber);
+                    }
+                    break;
+                case '治疗':
+                    teammate = getLuckData(heros, 0, 4, luckNumber);
+                    if (hero === '巫医') {
+                        action = '奶';
+                    }
+                    break;
+            }
+            heroData.golds += gotGolds;
+            heroData.exps += gotExps;
+            var desc = hero + action + '了“' + (item || teammate || enemy) + '”';
+            if (gotGolds) {
+                desc += ',获得了金钱 ' + gotGolds;
+            }
+            if (gotExps) {
+                desc += ',' + (gotGolds ? '并' : '') + '获得了经验 ' + gotExps;
+            }
+            desc += '。';
+            var dataItem = {
+                id: time,
+                time: time,
+                hero: hero,
+                action: action,
+                teammate: teammate || '',
+                enemy: enemy || '',
+                item: item || '',
+                gotgolds: gotGolds || '',
+                gotexps: gotExps || '',
+                exps: heroData.exps,
+                golds: heroData.golds,
+                kills: heroData.kills,
+                desc: desc,
+                date: nowTime + time*1000
+            };
+            return dataItem;
+        };
+
+        return {
+            dataSource: {
+                cols: cols,
+                length: size,
+                getByIndex: createDataItem
+            },
+            valueOperator: {
+                gametime: {
+                    getter: function(time) {
+                        var hours = Math.floor(time/3600);
+                        if (hours < 10) {
+                            hours = '0' + hours;
+                        }
+                        var mins = Math.floor(time/60)%60;
+                        if (mins < 10) {
+                            mins = '0' + mins;
+                        }
+                        var secs = time%60;
+                        if (secs < 10) {
+                            secs = '0' + secs;
+                        }
+                        return hours + ':' + mins + ':' + secs;
+                    }
+                }
+            },
+            generate: function (size) {
+                var result = [];
+                for(var i = 0; i < size; ++i) {
+                    result.push(createDataItem(i));
+                }
+                return result;
+            }
+        };
+    };
+    var sampleSize = 10000000000000;
+    var sampleData = createDataSample(sampleSize);
+
+    var options1 = $.extend(sampleData, {
+        borderWidth: 1,
+        height: 500,
+        defaultDateFormater: 'hh:mm:ss',
+        states: {
+            fixedTopUntil: 0,
+            fixedBottomFrom: sampleSize,
+            fixedRightFrom: 12,
+            pager: {page: 0}
+        },
+        configs: {
+            'C1': {
+              style: {textAlign: 'right'}
+            },
+            'C2': {
+              style: {fontWeight: 'bold'}
+            }
+        },
+        renderDelay: 200,
+        // checkable: true,
+        sortable: false,
+        // rowDefaultHeight: 50,
+    });
+    var options2 = {
+        configs: {
+            'R0C0': {
+              label: '#'
+            },
+            'C1': {
+              style: {textAlign: 'right'}
+            },
+            'C2': {
+              style: {fontWeight: 'bold'}
+            }
+        },
+        dataSource: {
+            cols: sampleData.dataSource.cols,
+            data: sampleData.generate(20000),
+            cache: true,
+        },
+        valueOperator: sampleData.valueOperator,
+        states: {
+            pager: {page: 1, recPerPage: 12},
+        },
+        height: 300,
+        renderDelay: 200,
+        checkable: true,
+        checkByClickRow: false,
+    }
+    // var datagrid = $('#dataGrid').datagrid(options1).data('zui.datagrid');
+    // console.log('datagrid1', datagrid);
+
+    var datagrid2 = $('#dataGrid2').datagrid(options2).data('zui.datagrid');
+    console.log('datagrid2', datagrid2);
+
+    // var datagrid3 = $('#remoteDataGridExample').datagrid({
+    //     states: {
+    //         pager: {page: 1, recPerPage: 5},
+    //     },
+    //     dataSource: {
+    //         cols:[
+    //             {name: 'time', label: '时间', width: 132},
+    //             {name: 'hera', label: '英雄', width: 134},
+    //             {name: 'action', label: '动作', width: 109},
+    //             {name: 'target', label: '目标', width: 109},
+    //             {name: 'desc', label: '描述', width: 287}
+    //         ],
+    //         remote: function(params) {
+    //             return {
+    //                 // 原创请求地址
+    //                 url: '../partial/remote-data-' + params.page + '.json',
+    //                 // 请求类型
+    //                 type: 'GET',
+    //                 // 数据类型
+    //                 dataType: 'json'
+    //             };
+    //         }
+    //     }
+    // }).data('zui.datagrid');
+    // console.log('datagrid3', datagrid3);
+});
+</script>
+</body>
+</html>

+ 93 - 0
VisualInspection/node_modules/zui/docs/examples/datatable.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="ZUI,一个简单灵活的前端框架。">
+<meta name="author" content="Zentao">
+<title>ZUI - 数据表格例子</title>
+<link href="../../dist/css/zui.css" rel="stylesheet">
+<link href="../../dist/lib/datatable/zui.datatable.css" rel="stylesheet">
+</head>
+
+<body style="padding: 20px">
+  <div id="datatable" class="datatable">
+  </div>
+
+<script src="../../assets/jquery.js"></script>
+<script src="../../dist/js/zui.js"></script>
+<script src="../../dist/lib/selectable/zui.selectable.js"></script>
+<script src="../../dist/lib/datatable/zui.datatable.js"></script>
+<script>
+$(function() {
+  var now = new Date();
+  var start = now.getSeconds(),
+      calendars = ['success', 'danger', 'important', 'warning', 'info', 'specail', 'primary'],
+      rooms = ['A003', 'A004', 'A010', 'A143', 'B008', 'B098', 'B487', 'B340', 'Z000', 'Z431', 'Z018', 'Z864'],
+      peoples = ['奥特曼', '行者孙', '地卜师', '绿巨人', 'Catouse', '路人丙'],
+      events = ['进食', '喝水', '交谈', '睡觉', '捶打墙壁', '自言自语', '搬动椅子', '唱歌', '上网', '梦游', '观望天花板'],
+      eventsTypes = ['happy', 'sad', ':]'],
+      tools = ['桌子', '椅子', '水杯', '枪', '随从'],
+      descs = ['没有完成', '这次失败了', '徒劳', '很满意', '禁止再次发生', '也行', '情况不明', '发现未知征兆'];
+  var dtDataGenerater = function(rowsCount) {
+      var data = {
+          cols: [
+              {width: 100, text: '#', type: 'number', flex: false, colClass: 'text-center'},
+              {sort: 'down', width: 160, text: '时间', type: 'date', flex: false, colClass: ''},
+              {width: 80, text: '房间', type: 'string', flex: false, colClass: ''},
+              {width: 100, text: '人物', type: 'string', flex: false, colClass: ''},
+              {width: 'auto', text: '事件', type: 'string', flex: false, colClass: ''},
+              {width: 100, text: '事件类型', type: 'string', flex: true, colClass: 'text-center'},
+              {sort: false, width: 200, text: '描述', type: 'string', flex: true, colClass: ''},
+              {width: 100, text: '相关人物', type: 'string', flex: true, colClass: ''},
+              {width: 100, text: '相关物品', type: 'string', flex: true, colClass: ''},
+              {width: 60, text: '评分', type: 'number', flex: false, colClass: 'text-center text-important'},
+              {sort: false, width: 'auto', text: '操作', type: 'string', flex: false, colClass: ''},
+          ],
+          rows: []
+      };
+
+      for (var i = 0; i < rowsCount; i++) {
+          var row = {checked: Math.random() > 0.9, data: [
+              start + i + 101000,
+              now.format('yyyy-MM-dd hh:mm:ss'),
+              rooms[Math.floor(Math.random()*rooms.length)],
+              peoples[Math.floor(Math.random()*peoples.length)],
+              events[Math.floor(Math.random()*events.length)],
+              eventsTypes[Math.floor(Math.random()*eventsTypes.length)],
+              descs[Math.floor(Math.random()*descs.length)],
+              peoples[Math.floor(Math.random()*peoples.length)],
+              tools[Math.floor(Math.random()*tools.length)],
+              Math.floor(Math.random()*100)/10,
+              "<a href='###'><i class='icon-ok-sign'></i></a> &nbsp; <a href='###' class='text-danger'><i class='icon-trash'></i></a> "
+          ]};
+          data.rows.push(row);
+          now = new Date(now.getTime() - (Math.random()*1000*60*60));
+      };
+
+      return data;
+  };
+
+  var datatable = $('.datatable').each(function() {
+      var $this = $(this);
+      var data = dtDataGenerater($this.data('rows') || 5);
+      if($this.attr('id') === 'datatableChangeExample') {
+          $this.data('origin-data', data);
+      }
+      $this.datatable({
+        fixedLeftWidth: '60%',
+        fixedRightWidth: '15%',
+        data: data,
+        scrollContainer: '#pageBody',
+        fixedHeaderOffset: 60,
+        sortable: true,
+        checkable: true
+      });
+  }).data('zui.datatable');
+
+  console.log('datatable', datatable);
+});
+</script>
+</body>
+</html>

Some files were not shown because too many files changed in this diff