Visitors Traffic Real Time Statistics - Version 3.5

Version Description

  1. Bug fixing in the Statistics widget
Download this release

Release Info

Developer osamaesh
Plugin Icon 128x128 Visitors Traffic Real Time Statistics
Version 3.5
Comparing to
See all releases

Code changes from version 2.13 to 3.5

Files changed (59) hide show
  1. Visitors-Traffic-Real-Time-Statistics.php +1 -1
  2. WPHitsCounter.php +1 -1
  3. ahc_about.php +1 -6
  4. ahc_help.php +0 -4
  5. ahc_settings.php +9 -9
  6. ajaxpages/getUsersOnline.php +0 -13
  7. css/jquery.jqplot.min.css +0 -1
  8. css/slimselect.min.css +1 -0
  9. css/{vtrtspro_css_stylesheet.css → vtrts_css_stylesheet.css} +6 -12
  10. functions.php +346 -369
  11. images/flags/wf.png +0 -0
  12. images/geomap_pro.jpg +0 -0
  13. images/map_pro.jpg +0 -0
  14. init.php +10 -5
  15. js/ahcfree_js_scripts.js +3 -81
  16. js/jqplot.canvasAxisLabelRenderer.min.js +0 -3
  17. js/jqplot.canvasAxisTickRenderer.min.js +0 -3
  18. js/jqplot.canvasTextRenderer.min.js +0 -3
  19. js/jqplot.dateAxisRenderer.min.js +0 -3
  20. js/jqplot.enhancedLegendRenderer.min.js +0 -3
  21. js/jqplot.highlighter.min.js +0 -3
  22. js/jqplot.pieRenderer.min.js +0 -3
  23. js/jquery.jqplot.min.js +0 -5
  24. js/slimselect.min.js +1 -0
  25. lib/Chart_js/.gitignore +0 -7
  26. lib/Chart_js/CONTRIBUTING.md +0 -20
  27. lib/Chart_js/Chart.js +0 -3379
  28. lib/Chart_js/Chart.min.js +0 -11
  29. lib/Chart_js/LICENSE.md +0 -7
  30. lib/Chart_js/README.md +0 -20
  31. lib/Chart_js/bower.json +0 -11
  32. lib/Chart_js/docs/00-Getting-Started.md +0 -200
  33. lib/Chart_js/docs/01-Line-Chart.md +0 -160
  34. lib/Chart_js/docs/02-Bar-Chart.md +0 -143
  35. lib/Chart_js/docs/03-Radar-Chart.md +0 -177
  36. lib/Chart_js/docs/04-Polar-Area-Chart.md +0 -172
  37. lib/Chart_js/docs/05-Pie-Doughnut-Chart.md +0 -158
  38. lib/Chart_js/docs/06-Advanced.md +0 -152
  39. lib/Chart_js/docs/07-Notes.md +0 -42
  40. lib/Chart_js/gulpfile.js +0 -131
  41. lib/Chart_js/package.json +0 -24
  42. lib/Chart_js/samples/bar.html +0 -48
  43. lib/Chart_js/samples/doughnut.html +0 -67
  44. lib/Chart_js/samples/line.html +0 -54
  45. lib/Chart_js/samples/pie.html +0 -58
  46. lib/Chart_js/samples/polar-area.html +0 -60
  47. lib/Chart_js/samples/radar.html +0 -53
  48. lib/Chart_js/src/Chart.Bar.js +0 -294
  49. lib/Chart_js/src/Chart.Core.js +0 -1943
  50. lib/Chart_js/src/Chart.Doughnut.js +0 -184
  51. lib/Chart_js/src/Chart.Line.js +0 -366
  52. lib/Chart_js/src/Chart.PolarArea.js +0 -248
  53. lib/Chart_js/src/Chart.Radar.js +0 -343
  54. lib/Chart_js/utils.js +0 -147
  55. lib/bootstrap/css/bootstrap-rtl.min.css +0 -9
  56. lib/bootstrap/css/bootstrap-theme.css +0 -457
  57. lib/bootstrap/css/bootstrap-theme.css.map +0 -1
  58. lib/bootstrap/css/bootstrap-theme.min.css +0 -5
  59. lib/bootstrap/css/bootstrap.css +6 -6358
Visitors-Traffic-Real-Time-Statistics.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Visitor Traffic Real Time Statistics
4
  Description: Hits counter that shows analytical numbers of your WordPress site visitors and hits.
5
  Author: wp-buy
6
  Author URI: https://www.wp-buy.com/
7
- Version: 2.13
8
  Text Domain: visitors-traffic-real-time-statistics
9
  Domain Path: /languages
10
  */
4
  Description: Hits counter that shows analytical numbers of your WordPress site visitors and hits.
5
  Author: wp-buy
6
  Author URI: https://www.wp-buy.com/
7
+ Version: 3.5
8
  Text Domain: visitors-traffic-real-time-statistics
9
  Domain Path: /languages
10
  */
WPHitsCounter.php CHANGED
@@ -51,7 +51,7 @@ class WPHitsCounter {
51
 
52
  $this->userAgent = $_SERVER['HTTP_USER_AGENT'];
53
 
54
- $this->pageId = (isset($page_id)) ? $page_id : $_GET['page_id'];
55
 
56
  $this->pageTitle = $page_title;
57
 
51
 
52
  $this->userAgent = $_SERVER['HTTP_USER_AGENT'];
53
 
54
+ $this->pageId = (isset($page_id)) ? $page_id : ahc_free_sanitize_text_or_array_field($_GET['page_id']);
55
 
56
  $this->pageTitle = $page_title;
57
 
ahc_about.php CHANGED
@@ -1,12 +1,7 @@
1
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
2
-
3
- <!-- Latest compiled and minified JavaScript -->
4
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
5
-
6
  <script language="javascript" type="text/javascript">
7
  function imgFlagError(image){
8
  image.onerror = "";
9
- image.src = "<?php echo plugins_url('/images/flags/noFlag.png', AHCFREE_PLUGIN_MAIN_FILE) ?>";
10
  return true;
11
  }
12
  </script>
 
 
 
 
 
1
  <script language="javascript" type="text/javascript">
2
  function imgFlagError(image){
3
  image.onerror = "";
4
+ image.src = "<?php echo plugins_url('/images/flags/noFlag.png', AHCFREE_PLUGIN_MAIN_FILE); ?>";
5
  return true;
6
  }
7
  </script>
ahc_help.php CHANGED
@@ -1,7 +1,3 @@
1
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
2
-
3
- <!-- Latest compiled and minified JavaScript -->
4
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
5
 
6
  <script language="javascript" type="text/javascript">
7
  function imgFlagError(image){
 
 
 
 
1
 
2
  <script language="javascript" type="text/javascript">
3
  function imgFlagError(image){
ahc_settings.php CHANGED
@@ -1,16 +1,13 @@
1
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
2
- <!-- Latest compiled and minified JavaScript -->
3
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
4
-
5
- <script src="https://cdnjs.cloudflare.com/ajax/libs/slim-select/1.25.0/slimselect.min.js"></script>
6
- <link href="https://cdnjs.cloudflare.com/ajax/libs/slim-select/1.25.0/slimselect.min.css" rel="stylesheet"></link>
7
-
8
  <?php
9
  if(!current_user_can('manage_options'))
10
  {
11
  die('Sorry, you are not allowed to access this page.' );
12
  return;
13
  }
 
 
 
 
14
  ?>
15
  <script language="javascript" type="text/javascript">
16
 
@@ -90,7 +87,7 @@ $ahcproUserRoles = get_option('ahcproUserRoles');
90
  $ahcproRobots = get_option('ahcproRobots');
91
  ?>
92
  <div class="ahc_main_container" >
93
- <h1><img width="40px" src="<?php echo plugins_url('/images/logo.png', AHCFREE_PLUGIN_MAIN_FILE) ?>">&nbsp;Visitor Traffic Real Time Statistics Free <a title="change settings" href="admin.php?page=ahc_hits_counter_settings"><img src="<?php echo plugins_url('/images/settings.jpg', AHCFREE_PLUGIN_MAIN_FILE) ?>" /></a></h1><br />
94
  <div class="panel">
95
  <h2 class="box-heading">Settings</h2><hr>
96
  <div class="panelcontent">
@@ -188,9 +185,12 @@ $ahcproRobots = get_option('ahcproRobots');
188
  ?>
189
 
190
  <script language="javascript" type="text/javascript">
191
- new SlimSelect({
 
192
  select: '#ahcproUserRoles'
193
  })
 
 
194
 
195
  </script>
196
  </div></div>
 
 
 
 
 
 
 
1
  <?php
2
  if(!current_user_can('manage_options'))
3
  {
4
  die('Sorry, you are not allowed to access this page.' );
5
  return;
6
  }
7
+
8
+
9
+
10
+
11
  ?>
12
  <script language="javascript" type="text/javascript">
13
 
87
  $ahcproRobots = get_option('ahcproRobots');
88
  ?>
89
  <div class="ahc_main_container" >
90
+ <h3><img width="40px" src="<?php echo plugins_url('/images/logo.png', AHCFREE_PLUGIN_MAIN_FILE) ?>">&nbsp;Visitor Traffic Real Time Statistics Free <a title="change settings" href="admin.php?page=ahc_hits_counter_settings"><img src="<?php echo plugins_url('/images/settings.jpg', AHCFREE_PLUGIN_MAIN_FILE) ?>" /></a></h3><br />
91
  <div class="panel">
92
  <h2 class="box-heading">Settings</h2><hr>
93
  <div class="panelcontent">
185
  ?>
186
 
187
  <script language="javascript" type="text/javascript">
188
+ jQuery(document).ready(function() {
189
+ new SlimSelect({
190
  select: '#ahcproUserRoles'
191
  })
192
+ });
193
+
194
 
195
  </script>
196
  </div></div>
ajaxpages/getUsersOnline.php DELETED
@@ -1,13 +0,0 @@
1
- <?php ob_start(); session_start();
2
- header ('Content-Type: text/html; charset=utf-8');
3
- header("Cache-Control: no-cache, must-revalidate");
4
-
5
- require_once('../../../../wp-load.php');
6
- $ahcfree_countOnlineusers = ahcfree_countOnlineusers();
7
- if(strlen($ahcfree_countOnlineusers) > 10)
8
- {
9
- echo 'x';
10
- }else{
11
- echo $ahcfree_countOnlineusers;
12
- }
13
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
css/jquery.jqplot.min.css DELETED
@@ -1 +0,0 @@
1
- .jqplot-target{position:relative;color:#666;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:1em}.jqplot-axis{font-size:.75em}.jqplot-xaxis{margin-top:10px}.jqplot-x2axis{margin-bottom:10px}.jqplot-yaxis{margin-right:10px}.jqplot-y2axis,.jqplot-y3axis,.jqplot-y4axis,.jqplot-y5axis,.jqplot-y6axis,.jqplot-y7axis,.jqplot-y8axis,.jqplot-y9axis,.jqplot-yMidAxis{margin-left:10px;margin-right:10px}.jqplot-axis-tick,.jqplot-xaxis-tick,.jqplot-yaxis-tick,.jqplot-x2axis-tick,.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick,.jqplot-yMidAxis-tick{position:absolute;white-space:pre}.jqplot-xaxis-tick{top:0;left:15px;vertical-align:top}.jqplot-x2axis-tick{bottom:0;left:15px;vertical-align:bottom}.jqplot-yaxis-tick{right:0;top:15px;text-align:right}.jqplot-yaxis-tick.jqplot-breakTick{right:-20px;margin-right:0;padding:1px 5px 1px 5px;z-index:2;font-size:1.5em}.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{left:0;top:15px;text-align:left}.jqplot-yMidAxis-tick{text-align:center;white-space:nowrap}.jqplot-xaxis-label{margin-top:10px;font-size:11pt;position:absolute}.jqplot-x2axis-label{margin-bottom:10px;font-size:11pt;position:absolute}.jqplot-yaxis-label{margin-right:10px;font-size:11pt;position:absolute}.jqplot-yMidAxis-label{font-size:11pt;position:absolute}.jqplot-y2axis-label,.jqplot-y3axis-label,.jqplot-y4axis-label,.jqplot-y5axis-label,.jqplot-y6axis-label,.jqplot-y7axis-label,.jqplot-y8axis-label,.jqplot-y9axis-label{font-size:11pt;margin-left:10px;position:absolute}.jqplot-meterGauge-tick{font-size:.75em;color:#999}.jqplot-meterGauge-label{font-size:1em;color:#999}table.jqplot-table-legend{margin-top:12px;margin-bottom:12px;margin-left:12px;margin-right:12px}table.jqplot-table-legend,table.jqplot-cursor-legend{background-color:rgba(255,255,255,0.6);border:1px solid #ccc;position:absolute;font-size:.75em}td.jqplot-table-legend{vertical-align:middle}td.jqplot-seriesToggle:hover,td.jqplot-seriesToggle:active{cursor:pointer}.jqplot-table-legend .jqplot-series-hidden{text-decoration:line-through}div.jqplot-table-legend-swatch-outline{border:1px solid #ccc;padding:1px}div.jqplot-table-legend-swatch{width:0;height:0;border-top-width:5px;border-bottom-width:5px;border-left-width:6px;border-right-width:6px;border-top-style:solid;border-bottom-style:solid;border-left-style:solid;border-right-style:solid}.jqplot-title{top:0;left:0;padding-bottom:.5em;font-size:1.2em}table.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em}.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px}.jqplot-highlighter-tooltip,.jqplot-canvasOverlay-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px}.jqplot-point-label{font-size:.75em;z-index:2}td.jqplot-cursor-legend-swatch{vertical-align:middle;text-align:center}div.jqplot-cursor-legend-swatch{width:1.2em;height:.7em}.jqplot-error{text-align:center}.jqplot-error-message{position:relative;top:46%;display:inline-block}div.jqplot-bubble-label{font-size:.8em;padding-left:2px;padding-right:2px;color:rgb(20%,20%,20%)}div.jqplot-bubble-label.jqplot-bubble-label-highlight{background:rgba(90%,90%,90%,0.7)}div.jqplot-noData-container{text-align:center;background-color:rgba(96%,96%,96%,0.3)}
 
css/slimselect.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ss-main{position:relative;display:inline-block;user-select:none;color:#666;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:30px;padding:6px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{flex:1 1 100%;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder,.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-main .ss-single-selected .placeholder *{width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px;font-weight:700}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:30px;width:100%;padding:0 0 0 3px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#dedede;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#5897fb;border-radius:4px;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#666;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:1px solid #dcdee2;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px}.ss-content .ss-search.ss-hide,.ss-content .ss-search.ss-hide input{height:0;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0;height:30px;padding:6px 8px;margin:0;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #5897fb}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option.ss-highlighted,.ss-content .ss-list .ss-option:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#dedede;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#666;background-color:rgba(88,151,251,.1)}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}
css/{vtrtspro_css_stylesheet.css → vtrts_css_stylesheet.css} RENAMED
@@ -1,3 +1,5 @@
 
 
1
 
2
  #ahcfree_currenttime{
3
  color:gray;
@@ -91,12 +93,9 @@ float:left;
91
  .leftPanelsContainer{float: right; /* ## */ margin: 0; padding: 0;}
92
  .cleaner{clear: both;}
93
  .panel, .panelcollapsed{
94
- background: #eee;
95
- border:#dfdfdf solid 1px;
96
  margin: 10px 0px;
97
- /*padding: 0px 0px 5px;*/
98
- -moz-border-radius: 4px;
99
- -webkit-border-radius: 4px;
100
 
101
  }
102
  .panel h2, .panelcollapsed h2{
@@ -128,11 +127,7 @@ float:left;
128
  border-bottom: 1px solid #dddddd !important;
129
  border-radius: 0 !important;
130
  }
131
- .panel{
132
- border-radius:0 !important;
133
- border: 1px solid #e5e5e5 !important;
134
- box-shadow: 0 1px 1px rgba(0,0,0,.04) !important;
135
- }
136
 
137
  .panelcollapsed h2{
138
  background: #FFF url(../images/arrow_down.png) no-repeat 99% 50% !important;; /* ## */
@@ -141,7 +136,6 @@ float:left;
141
  .panelcontent{
142
  padding: 10px !important;
143
  background: #FFF;
144
- overflow:hidden
145
  }
146
  .panelcontent table {
147
  width: 100% !important;
@@ -385,7 +379,7 @@ span.search_data {
385
  display: block;
386
  }
387
  .ahc_main_container .row {
388
- display: revert;
389
  align-items: stretch;
390
  clear: both;
391
  }
1
+ body { background:#F1F1F1 !important}
2
+
3
 
4
  #ahcfree_currenttime{
5
  color:gray;
93
  .leftPanelsContainer{float: right; /* ## */ margin: 0; padding: 0;}
94
  .cleaner{clear: both;}
95
  .panel, .panelcollapsed{
96
+
 
97
  margin: 10px 0px;
98
+
 
 
99
 
100
  }
101
  .panel h2, .panelcollapsed h2{
127
  border-bottom: 1px solid #dddddd !important;
128
  border-radius: 0 !important;
129
  }
130
+
 
 
 
 
131
 
132
  .panelcollapsed h2{
133
  background: #FFF url(../images/arrow_down.png) no-repeat 99% 50% !important;; /* ## */
136
  .panelcontent{
137
  padding: 10px !important;
138
  background: #FFF;
 
139
  }
140
  .panelcontent table {
141
  width: 100% !important;
379
  display: block;
380
  }
381
  .ahc_main_container .row {
382
+
383
  align-items: stretch;
384
  clear: both;
385
  }
functions.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  function vtrts_free_top_bar_enqueue_style() {
3
 
4
  echo '<style>
@@ -11,6 +12,29 @@ echo '<style>
11
 
12
  }
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  function vtrts_free_add_items($admin_bar)
16
  {
@@ -143,13 +167,13 @@ function ahcfree_savesettings() {
143
  $set_hits_days = intval($_POST['set_hits_days']);
144
  $set_ajax_check = intval($_POST['set_ajax_check']);
145
  $posts_type = '';
146
- $set_ips = esc_html($_POST['set_ips']);
147
  $set_google_map = '';
148
  $ahcfree_hide_top_bar_icon = isset($_POST['ahcfree_hide_top_bar_icon']) ? intval($_POST['ahcfree_hide_top_bar_icon']) : '0';
149
  $ahcfree_ahcfree_haships = isset($_POST['ahcfree_ahcfree_haships']) ? intval($_POST['ahcfree_ahcfree_haships']) : '0';
150
  $delete_plugin_data = isset($_POST['delete_plugin_data']) ? intval($_POST['delete_plugin_data']) : '';
151
 
152
- $custom_timezone_offset = sanitize_text_field($_POST['set_custom_timezone']);
153
  if ($custom_timezone_offset && $custom_timezone_offset != '') {
154
  update_option('ahcfree_custom_timezone', $custom_timezone_offset);
155
  }
@@ -160,12 +184,12 @@ function ahcfree_savesettings() {
160
  update_option('ahcfree_hide_top_bar_icon', $ahcfree_hide_top_bar_icon);
161
 
162
 
163
- $ahcproUserRoles = isset($_POST['ahcproUserRoles']) ? $_POST['ahcproUserRoles'] : '';
164
  if(isset($ahcproUserRoles))
165
  {
166
  foreach ($ahcproUserRoles as $v)
167
  {
168
- $ahcproUserRoles .= sanitize_text_field($v).",";
169
  }
170
 
171
  $ahcproUserRoles = substr($ahcproUserRoles,0,-1);
@@ -185,35 +209,6 @@ function ahcfree_savesettings() {
185
  }
186
 
187
  //--------------------------------------------
188
- function ahcfree_sanitizing($unsafe_val,$type='text')
189
- {
190
-
191
-
192
- switch ($type) {
193
- case 'text': return sanitize_text_field($unsafe_val);
194
- break;
195
-
196
- case 'int': return intval($unsafe_val);
197
- break;
198
-
199
- case 'email': return sanitize_email($unsafe_val);
200
- break;
201
-
202
- case 'filename': return sanitize_file_name($unsafe_val);
203
- break;
204
-
205
- case 'title': return sanitize_title($unsafe_val);
206
- break;
207
-
208
- case 'url': return esc_url($unsafe_val);
209
- break;
210
-
211
- default:
212
- return sanitize_text_field($unsafe_val);
213
-
214
- }
215
- }
216
-
217
 
218
  function ahcfree_rate_us($plugin_url, $box_color = '#1D1F21') {
219
 
@@ -522,7 +517,7 @@ function ahcfree_create_admin_menu_link() {
522
  if( !$ahcfree_custom_timezone ){
523
  add_action('admin_notices', 'ahcfree_admin_notice_to_set_timezone');
524
  }
525
- $page = isset($_GET['page']) ? ahcfree_sanitizing($_GET['page']) : '';
526
 
527
 
528
 
@@ -537,7 +532,7 @@ function ahcfree_create_admin_menu_link() {
537
  *
538
  * @return number
539
  */
540
- function ahc_free_NumFormat($num) {
541
  if ($num > 1000) {
542
  return number_format($num, 0, ',', ',');
543
  } else {
@@ -545,38 +540,10 @@ function ahc_free_NumFormat($num) {
545
  }
546
  }
547
 
548
- //------
549
- function ahcfree_countOnlineusers() {
550
- global $wpdb;
551
- $custom_timezone_offset = ahcfree_get_current_timezone_offset();
552
-
553
-
554
- //$sql = "SELECT id FROM ahc_online_users WHERE `date` >= '". ahcfree_localtime("Y-m-d H:i:s", strtotime('-1 minute') ) ."' GROUP BY hit_ip_address";
555
-
556
- $sql = "SELECT DISTINCT hit_ip_address FROM `ahc_online_users` WHERE `date` >= DATE_ADD('". ahcfree_localtime("Y-m-d H:i:s" ) ."', INTERVAL -2 MINUTE) ";
557
-
558
-
559
- $result = $wpdb->get_results($sql, OBJECT);
560
- $online_users = "0";
561
- if ($result !== false) {
562
- $online_users = count($result);
563
- //return $result[0]->onlineusers;
564
- //echo json_encode($result[0]->onlineusers);
565
- }
566
- if( is_admin() ){
567
- echo json_encode($online_users);
568
- die;
569
- }else{
570
- return $online_users;
571
- }
572
-
573
- //return '0';
574
-
575
- }
576
 
577
  function ahcfree_init()
578
  {
579
- add_action('wp_ajax_ahcfree_countOnlineusers','ahcfree_countOnlineusers');
580
  add_action('wp_ajax_ahcfree_track_visitor','ahcfree_track_visitor');
581
  add_action('wp_ajax_nopriv_ahcfree_track_visitor','ahcfree_track_visitor');
582
  }
@@ -1450,21 +1417,21 @@ function ahcfree_get_serch_visits_by_date() {
1450
  $results = $wpdb->get_results($sql, OBJECT);
1451
 
1452
 
1453
- if ($results !== false) {
1454
-
1455
- $response['success'] = true;
1456
- $response['data']['dates'] = array();
1457
-
1458
- foreach ($results as $r) {
1459
-
1460
- $response['data']['search_engines'][$r->srh_name][] = $r->vtsh_visits;
1461
-
1462
- }
1463
  } else {
1464
- $response['success'] = false;
1465
  }
1466
-
1467
- return $response;
1468
  }
1469
 
1470
 
@@ -1596,18 +1563,17 @@ function ahcfree_get_browsers_hits_counts() {
1596
  $response = array();
1597
  if ($results !== false) {
1598
  $response['success'] = true;
1599
- $response['data'] = array();
1600
  $c = 0;
1601
  foreach ($results as $bsr) {
1602
- $response['data'][$c]['bsr_id'] = $bsr->bsr_id;
1603
- $response['data'][$c]['bsr_name'] = $bsr->bsr_name;
1604
- $response['data'][$c]['hits'] = $bsr->bsr_visits;
1605
  $c++;
1606
  }
1607
  } else {
1608
- $response['success'] = false;
1609
  }
1610
- return $response;
 
1611
  }
1612
 
1613
  //--------------------------------------------
@@ -1755,13 +1721,13 @@ function ahcfree_get_vsitors_by_country($all,$cnt=true,$start='',$limit='',$fdt=
1755
  $cond="";
1756
  if(isset($_POST['t_from_dt']) && $_POST['t_from_dt']!='' && isset($_POST['t_to_dt']) && $_POST['t_to_dt']!='' && isset($_POST['section']) && $_POST['section']=="traffic_index_country")
1757
  {
1758
- $fdt = $_POST['t_from_dt'];
1759
- $tdt = $_POST['t_to_dt'];
1760
  }
1761
  else if(isset($_POST['t_from_dt']) && $_POST['t_from_dt']!='' && isset($_POST['section']) && $_POST['section']=="traffic_index_country")
1762
  {
1763
- $fdt = $_POST['t_from_dt'];
1764
- $fromdt = ahcfree_getFormattedDate($_POST['t_from_dt'],'yymmdd');
1765
  $cond =" and vtr_date ='$fromdt'";
1766
  }
1767
 
@@ -1908,17 +1874,17 @@ function ahcfree_get_recent_visitors($all,$cnt=true,$start='',$limit='',$fdt='',
1908
 
1909
  if(isset($_POST['r_from_dt']) && $_POST['r_from_dt']!='' && isset($_POST['r_to_dt']) && $_POST['r_to_dt']!='' && isset($_POST['section']) && $_POST['section']=='recent_visitor_by_ip')
1910
  {
1911
- $fdt = $_POST['r_from_dt'];
1912
- $tdt = $_POST['r_to_dt'];
1913
  }
1914
  else if(isset($_POST['r_from_dt']) && $_POST['r_from_dt']!='')
1915
  {
1916
- $fdt = $_POST['r_from_dt'];
1917
 
1918
  }
1919
  if(isset($_POST['ip_addr']) && $_POST['ip_addr']!='' && isset($_POST['section']) && $_POST['section']=='recent_visitor_by_ip')
1920
  {
1921
- $ip =$_POST['ip_addr'];
1922
  }
1923
 
1924
  if($ip!='')
@@ -2054,8 +2020,8 @@ function ahcfree_get_latest_search_key_words_used($all,$cnt=true,$start='',$limi
2054
 
2055
  if(isset($_POST['from_dt']) && $_POST['from_dt']!='' && isset($_POST['to_dt']) && $_POST['to_dt']!='' && isset($_POST['section']) && $_POST['section']=="lastest_search")
2056
  {
2057
- $fdt = $_POST['from_dt'];
2058
- $tdt = $_POST['to_dt'];
2059
  }
2060
 
2061
  if($fdt!='' && $tdt!='')
@@ -2125,12 +2091,12 @@ function ahcfree_get_latest_search_key_words_used($all,$cnt=true,$start='',$limi
2125
  $img .= '<img src="'.$imgurl.'" border="0" width="22" height="18" title="'.$re->ctr_name.'" onerror="imgFlagError(this)" />';
2126
  }
2127
  $img.='</span>';
2128
- $eurl=plugins_url('/images/search_engines/' . $re->srh_icon, AHCFREE_PLUGIN_MAIN_FILE);
2129
  $img.='<span><img src="'.$eurl.'" border="0" width="22" height="22" title="'.$re->srh_name.'" /></span>';
2130
 
2131
  $burl=plugins_url('/images/browsers/' . $re->bsr_icon, AHCFREE_PLUGIN_MAIN_FILE);
2132
  $img.='<span><img src="'.$burl.'" border="0" width="20" height="20" title="'.$re->bsr_name.'" /></span>';
2133
-
2134
  $arr[$c]['img']=$img;
2135
  $arr[$c]['csb']=$re->ctr_name."/".$re->srh_name."/".$re->bsr_name;
2136
 
@@ -2396,11 +2362,11 @@ function ahcfree_get_subpage_name($page_name) {
2396
  */
2397
  /*function ahcfree_track_visitor($query) {
2398
 
2399
- $exclude_ips = EXCLUDE_IPS;
2400
  if ($exclude_ips == '' or $exclude_ips == '') {
2401
  $exclude_ips = array();
2402
  }
2403
- if (EXCLUDE_IPS != NULL && EXCLUDE_IPS != '') {
2404
  $exclude_ips = explode("\n", $exclude_ips);
2405
  }
2406
 
@@ -2425,7 +2391,7 @@ function ahcfree_get_subpage_name($page_name) {
2425
  function ahcfree_track_visitor()
2426
  {
2427
  $exclude_ips_arr = array();
2428
- $exclude_ips = EXCLUDE_IPS;
2429
  if ($exclude_ips == '' or empty($exclude_ips)) {
2430
  $exclude_ips = array();
2431
  }else{
@@ -2450,14 +2416,14 @@ function ahcfree_track_visitor()
2450
  if (!ahcfree_is_login_page() && !ahcfree_is_search_engine_bot() && !ahcfree_is_wordpress_bot()) {
2451
  if (!in_array($client_ip_address, $exclude_ips_arr)) {
2452
 
2453
- $page_id = $_POST['page_id'];
2454
- $page_title = $_POST['page_title'];
2455
- $post_type = $_POST['post_type'];
2456
- $_SERVER['HTTP_REFERER'] = $_POST['referer'];
2457
- $_SERVER['HTTP_USER_AGENT'] = $_POST['useragent'];
2458
- $_SERVER['SERVER_NAME'] = $_POST['servername'];
2459
- $_SERVER['HTTP_HOST'] = $_POST['hostname'];
2460
- $_SERVER['REQUEST_URI'] = $_POST['request_uri'];
2461
 
2462
  $hitsCounter = new WPHitsCounter($page_id, $page_title, $post_type);
2463
  $hitsCounter->traceVisitorHit();
@@ -2559,7 +2525,7 @@ function ahcfree_get_traffic_by_title($all,$cnt=false, $start='0', $limit='10',$
2559
  $arr[$c]['til_page_title'] = "<a href='".get_permalink($r->til_page_id)."' target='_blank'>".$r->til_page_title."</a>";
2560
  $arr[$c]['til_hits'] = $r->til_hits;
2561
  $ans = ($total > 0) ? ahcfree_ceil_dec((($r->til_hits / $total) * 100), 2, ".") . ' %' : 0;
2562
- $arr[$c]['percent'] = ahc_free_NumFormat($ans);
2563
  $c++;
2564
  $no++;
2565
  }
@@ -2587,12 +2553,12 @@ function ahcfree_get_time_visits($all,$start='',$limit='',$fdt='',$tdt='') {
2587
 
2588
  if(isset($_POST['vfrom_dt']) && $_POST['vfrom_dt']!='' && isset($_POST['vto_dt']) && $_POST['vto_dt']!='' && isset($_POST['section']) && $_POST['section']=="visit_time")
2589
  {
2590
- $fdt = $_POST['vfrom_dt'];
2591
- $tdt = $_POST['vto_dt'];
2592
  }
2593
  else if(isset($_POST['vfrom_dt']) && $_POST['vfrom_dt']!='' && isset($_POST['section']) && $_POST['section']=="visit_time")
2594
  {
2595
- $fdt = $_POST['vfrom_dt'];
2596
  }
2597
  if($fdt!='' && $tdt!='')
2598
  {
@@ -2794,9 +2760,17 @@ function ahcfree_get_client_ip_address() {
2794
  * @return void
2795
  */
2796
  function ahcfree_include_scripts() {
2797
- wp_register_style('ahc_lang_css', plugins_url('/css/vtrtspro_css_stylesheet.css', AHCFREE_PLUGIN_MAIN_FILE), '', '1.22');
2798
  wp_enqueue_style('ahc_lang_css');
2799
 
 
 
 
 
 
 
 
 
2800
  wp_register_style('ahc_bootstrap_css', plugins_url('/lib/bootstrap/css/bootstrap.min.css',AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2801
  wp_enqueue_style('ahc_bootstrap_css');
2802
 
@@ -2828,56 +2802,47 @@ function ahcfree_include_scripts() {
2828
  wp_register_style('jquery_date_css', plugins_url('/css/datepicker.css', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2829
  wp_enqueue_style('jquery_date_css');
2830
 
2831
- /* map */
2832
- wp_register_style('jquery_leaflet_css', plugins_url('/css/leaflet.css', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2833
- wp_enqueue_style('jquery_leaflet_css');
2834
- wp_register_script('ahc_leaflet_js', plugins_url('/js/leaflet.js', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2835
- wp_enqueue_script('ahc_leaflet_js');
2836
 
2837
  wp_enqueue_script( 'jquery-ui-datepicker', array( 'jquery' ) );
2838
- wp_register_script('ahc_main_js', plugins_url('/js/ahcfree_js_scripts.js', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2839
  wp_enqueue_script('ahc_main_js');
2840
 
2841
  wp_localize_script('ahc_main_js', 'ahc_ajax', array('ajax_url' => admin_url('admin-ajax.php')));
2842
 
2843
- wp_register_script('ahc_Chart_js', plugins_url('/lib/Chart_js/Chart.min.js', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2844
- wp_enqueue_script('ahc_Chart_js');
2845
-
2846
- /*wp_register_script('ahc_google_maps', 'https://maps.googleapis.com/maps/api/js?key=AIzaSyB0fRgC_3Wmp1PY5ZsuzK8VEooiUvVQq3Q&sensor=false');
2847
- wp_enqueue_script('ahc_google_maps');*/
2848
 
 
 
2849
 
2850
- // jqplot
2851
- wp_register_style('jqueryjqplotmincss', plugins_url('/css/jquery.jqplot.min.css?ver=1.0.8', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2852
- wp_enqueue_style('jqueryjqplotmincss');
2853
 
2854
- wp_register_script('jqueryjqplotmin', plugins_url('/js/jquery.jqplot.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2855
- wp_enqueue_script('jqueryjqplotmin');
2856
 
2857
- wp_register_script('jqplotdateAxisRenderermin', plugins_url('/js/jqplot.dateAxisRenderer.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2858
- wp_enqueue_script('jqplotdateAxisRenderermin');
2859
 
2860
- wp_register_script('jqplotcanvasAxisTickRenderermin', plugins_url('/js/jqplot.canvasAxisTickRenderer.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2861
- wp_enqueue_script('jqplotcanvasAxisTickRenderermin');
2862
 
2863
- wp_register_script('jqplotcanvasAxisLabelRenderermin', plugins_url('/js/jqplot.canvasAxisLabelRenderer.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2864
- wp_enqueue_script('jqplotcanvasAxisLabelRenderermin');
2865
 
2866
- wp_register_script('jqplot.canvasTextRenderer.min', plugins_url('/js/jqplot.canvasTextRenderer.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2867
- wp_enqueue_script('jqplot.canvasTextRenderer.min');
2868
 
 
2869
 
 
 
2870
 
2871
- wp_register_script('jqplothighlightermin', plugins_url('/js/jqplot.highlighter.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2872
- wp_enqueue_script('jqplothighlightermin');
2873
 
2874
- wp_register_script('jqplot.pieRenderer.min', plugins_url('/js/jqplot.pieRenderer.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2875
- wp_enqueue_script('jqplot.pieRenderer.min');
2876
 
2877
- wp_register_script('jqplot.enhancedLegendRenderer.min', plugins_url('/js/jqplot.enhancedLegendRenderer.min.js?ver=0.8.3', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2878
- wp_enqueue_script('jqplot.enhancedLegendRenderer.min');
 
 
 
2879
  }
2880
 
 
 
2881
  //--------------------------------------------
2882
  //---------------------------------------------Add button to the admin bar
2883
  function ahcfree_vtrts_add_items($admin_bar) {
@@ -2903,223 +2868,12 @@ function ahcfree_vtrtsp_plugin_add_settings_link($links) {
2903
  return $links;
2904
  }
2905
 
2906
- //------------------------------------------------------------------------
2907
- // --------------------------------------- Create front-end widget
2908
- // Creating the widget
2909
- class vtrtsfree_widget extends WP_Widget {
2910
-
2911
- function __construct() {
2912
- parent::__construct(
2913
- // Base ID of your widget
2914
- 'vtrtsfree_widget',
2915
- // Widget name will appear in UI
2916
- __('Visitor Traffic', 'wpb_widget_domain'),
2917
- // Widget description
2918
- array('description' => __('Display your site statistics', 'wpb_widget_domain'),)
2919
- );
2920
- }
2921
-
2922
- // Creating widget front-end
2923
- // This is where the action happens
2924
- public function widget($args, $instance) {
2925
- $title = apply_filters('widget_title', $instance['title']);
2926
- // before and after widget arguments are defined by themes
2927
- echo $args['before_widget'];
2928
- if (!empty($title))
2929
- echo $args['before_title'] . $title . $args['after_title'];
2930
-
2931
-
2932
- $ahc_sum_stats = ahcfree_get_summary_statistics();
2933
-
2934
-
2935
- // This is where you run the code and display the output
2936
- echo '<ul style="list-style:none; ' . $instance['fontTypeCombo'] . '; font-size:' . $instance['fontSizeCombo'] . 'px">';
2937
- if ($instance['display_onlineusers'] == 1 or $instance['display_onlineusers'] == '1') {
2938
- $online_img_path = plugins_url('/images/live.gif', AHCFREE_PLUGIN_MAIN_FILE);
2939
- echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Users online: </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahcfree_countOnlineusers() . '</span>&nbsp;<img src="' . $online_img_path . '" /></li>';
2940
- }
2941
- if ($instance['display_visitorstoday'] == 1 or $instance['display_visitorstoday'] == '1') {
2942
- echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Visitors today : </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahc_free_NumFormat($ahc_sum_stats['today']['visitors']) . '</span></li>';
2943
- }
2944
- if ($instance['display_pageviewtoday'] == 1 or $instance['display_pageviewtoday'] == '1') {
2945
- echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Page views today : </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahc_free_NumFormat($ahc_sum_stats['today']['visits']) . '</span></li>';
2946
- }
2947
-
2948
- if ($instance['display_totalvisitors'] == 1 or $instance['display_totalvisitors'] == '1') {
2949
- echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Total visitors : </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahc_free_NumFormat($ahc_sum_stats['total']['visitors']) . '</span></li>';
2950
- }
2951
-
2952
- if ($instance['display_totalpageview'] == 1 or $instance['display_totalpageview'] == '1') {
2953
- echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Total page view: </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahc_free_NumFormat($ahc_sum_stats['total']['visits']) . '</span></li>';
2954
- }
2955
-
2956
-
2957
- echo '</ul>';
2958
- echo $args['after_widget'];
2959
- }
2960
-
2961
- // Widget Backend
2962
- public function form($instance) {
2963
- extract($instance);
2964
-
2965
- if (isset($instance['title'])) {
2966
- $title = $instance['title'];
2967
- } else {
2968
- $title = __('Site Statistics', 'wpb_widget_domain');
2969
- }
2970
- // Widget admin form
2971
-
2972
-
2973
- $fontTypeCombo = (isset($fontTypeCombo)) ? $fontTypeCombo : '';
2974
- $display_valuescolor = (isset($display_valuescolor)) ? $display_valuescolor : '';
2975
- $display_titlecolor = (isset($display_titlecolor)) ? $display_titlecolor : '';
2976
-
2977
-
2978
- ?>
2979
-
2980
- <link href='https://fonts.googleapis.com/css?family=Allura' rel='stylesheet' type='text/css'>
2981
- <link href='https://fonts.googleapis.com/css?family=Dynalight' rel='stylesheet' type='text/css'>
2982
-
2983
- <script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
2984
- <script type="text/javascript" src="<?php echo plugins_url('/lib/jscolor/jscolor.js', AHCFREE_PLUGIN_MAIN_FILE) ?>"></script>
2985
- <script>
2986
- WebFont.load({
2987
- google: {
2988
- families: ['Allura', 'Dynalight']
2989
- }
2990
- });
2991
-
2992
-
2993
-
2994
- </script>
2995
-
2996
- <style type="text/css">
2997
- .Allura { font-family: Allura, cursive ; }
2998
- .Dynalight { font-family: Dynalight, cursive; }
2999
- .verdana{ font-family:Verdana, Geneva, sans-serif;}
3000
- .TimesNew{ font-family:"Times New Roman", Times, serif;}
3001
- .Arial{font-family:Arial, Helvetica, sans-serif;}
3002
- .Courier{font-family:"Courier New", Courier, monospace;}
3003
- .TrebuchetMS{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;}
3004
- .Tahoma{font-family:Tahoma, Geneva, sans-serif}
3005
-
3006
- #picker {
3007
- margin:0;
3008
- padding:0;
3009
- border:0;
3010
- width:70px;
3011
- height:20px;
3012
- border-right:20px solid green;
3013
- line-height:20px;
3014
- }
3015
-
3016
- </style>
3017
- <p>
3018
- <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget Title:'); ?></label>
3019
- <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
3020
- </p>
3021
-
3022
- <p>
3023
- <label for="<?php echo $this->get_field_id('display_titlecolor'); ?>"><?php _e('Title Color:'); ?></label>
3024
- <input class="color widefat" id="<?php echo $this->get_field_id('display_titlecolor'); ?>" name="<?php echo $this->get_field_name('display_titlecolor'); ?>" style="border:#CCC solid 1px" value="<?php echo esc_attr($display_titlecolor); ?>" >
3025
- </p>
3026
-
3027
- <p>
3028
- <label for="<?php echo $this->get_field_id('display_valuescolor'); ?>"><?php _e('Value Color:'); ?></label>
3029
- <input class="color widefat" style="border:#CCC solid 1px" id="<?php echo $this->get_field_id('display_valuescolor'); ?>" name="<?php echo $this->get_field_name('display_valuescolor'); ?>" value="<?php echo esc_attr($display_valuescolor); ?>" >
3030
- </p>
3031
-
3032
-
3033
- <p>
3034
- <label for="<?php echo $this->get_field_id('fontTypeCombo'); ?>"><?php _e('Font Type:'); ?></label>
3035
- <select class="widefat" id="<?php echo $this->get_field_id('fontTypeCombo'); ?>" name="<?php echo $this->get_field_name('fontTypeCombo'); ?>">
3036
- <optgroup class='verdana'>
3037
- <option <?php selected($fontTypeCombo, 'font-family:Verdana, Geneva, sans-serif'); ?> value="font-family:Verdana, Geneva, sans-serif">Verdana</option>
3038
- </optgroup>
3039
-
3040
- <optgroup class='TimesNew'>
3041
- <option <?php selected($fontTypeCombo, "font-family:'Times New Roman', Times, serif"); ?> value="font-family:'Times New Roman', Times, serif">Times New Roman</option>
3042
- </optgroup>
3043
-
3044
- <optgroup class='Arial'>
3045
- <option <?php selected($fontTypeCombo, "font-family:Arial, Helvetica, sans-serif"); ?> value="font-family:Arial, Helvetica, sans-serif">Arial</option>
3046
- </optgroup>
3047
-
3048
- <optgroup class='Tahoma'>
3049
- <option <?php selected($fontTypeCombo, "font-family:Tahoma, Geneva, sans-serif"); ?> value="font-family:Tahoma, Geneva, sans-serif">Tahoma</option>
3050
- </optgroup>
3051
-
3052
- <optgroup class='Courier'>
3053
- <option <?php selected($fontTypeCombo, "font-family:'Courier New', Courier, monospace"); ?> value="font-family:'Courier New', Courier, monospace">Courier</option>
3054
- </optgroup>
3055
-
3056
- <optgroup class='TrebuchetMS'>
3057
- <option <?php selected($fontTypeCombo, "font-family:'Trebuchet MS', Arial, Helvetica, sans-serif"); ?> value="font-family:'Trebuchet MS', Arial, Helvetica, sans-serif">Trebuchet MS</option>
3058
- </optgroup>
3059
-
3060
-
3061
- </select>
3062
-
3063
- </p>
3064
- <label for="<?php echo $this->get_field_id('fontSizeCombo'); ?>"><?php _e('Font Size:'); ?></label>
3065
- <select class="widefat" id="<?php echo $this->get_field_id('fontSizeCombo'); ?>" name="<?php echo $this->get_field_name('fontSizeCombo'); ?>">
3066
- <?php
3067
- for ($fs = 8; $fs <= 22; $fs++) {
3068
- $fontSizeCombo = (isset($fontSizeCombo)) ? $fontSizeCombo : '';
3069
- ?>
3070
- <option value="<?php echo $fs ?>" <?php selected($fontSizeCombo, $fs); ?>><?php echo $fs; ?>px</option>
3071
- <?php } ?>
3072
- </select>
3073
- <p>
3074
-
3075
- </p>
3076
-
3077
- <p><em>Display :</em></p>
3078
- <?php
3079
- $display_onlineusers = isset($display_onlineusers) ? $display_onlineusers : '0';
3080
- $display_visitorstoday = isset($display_visitorstoday) ? $display_visitorstoday : '0';
3081
- $display_pageviewtoday = isset($display_pageviewtoday) ? $display_pageviewtoday : '0';
3082
- $display_totalpageview = isset($display_totalpageview) ? $display_totalpageview : '0';
3083
- $display_totalvisitors = isset($display_totalvisitors) ? $display_totalvisitors : '0';
3084
- ?>
3085
-
3086
- <p>
3087
- <input class="widefat" id="<?php echo $this->get_field_id('display_onlineusers'); ?>" name="<?php echo $this->get_field_name('display_onlineusers'); ?>" type="checkbox" value="1" <?php checked($display_onlineusers, '1'); ?> />&nbsp;<label for="<?php echo $this->get_field_id('display_onlineusers'); ?>">Users Online</label>
3088
- </p>
3089
- <p>
3090
- <input class="widefat" id="<?php echo $this->get_field_id('display_visitorstoday'); ?>" name="<?php echo $this->get_field_name('display_visitorstoday'); ?>" type="checkbox" value="1" <?php checked($display_visitorstoday, '1'); ?>/>&nbsp;<label for="<?php echo $this->get_field_id('display_visitorstoday'); ?>">Visitors Today</label>
3091
- </p>
3092
- <p>
3093
- <input class="widefat" id="<?php echo $this->get_field_id('display_pageviewtoday'); ?>" name="<?php echo $this->get_field_name('display_pageviewtoday'); ?>" type="checkbox" value="1" <?php checked($display_pageviewtoday, '1'); ?>/>&nbsp;<label for="<?php echo $this->get_field_id('display_pageviewtoday'); ?>">Page Views Today</label>
3094
- </p>
3095
- <p>
3096
- <input class="widefat" id="<?php echo $this->get_field_id('display_totalpageview'); ?>" name="<?php echo $this->get_field_name('display_totalpageview'); ?>" type="checkbox" value="1" <?php checked($display_totalpageview, '1'); ?> />&nbsp;<label for="<?php echo $this->get_field_id('display_totalpageview'); ?>">Total Page Views</label>
3097
- </p>
3098
- <p>
3099
- <input class="widefat" id="<?php echo $this->get_field_id('display_totalvisitors'); ?>" name="<?php echo $this->get_field_name('display_totalvisitors'); ?>" type="checkbox" value="1" <?php checked($display_totalvisitors, '1'); ?>/>&nbsp;<label for="<?php echo $this->get_field_id('display_totalvisitors'); ?>">Total Visitors</label>
3100
- </p>
3101
- </p>
3102
- <?php
3103
- }
3104
-
3105
- // Updating widget replacing old instances with new
3106
- public function update($new_instance, $old_instance) {
3107
 
3108
- return $new_instance;
3109
- }
3110
 
3111
- }
3112
 
3113
- // Class vtrtsfree_widget ends here
3114
- // Register and load the widget
3115
- function ahcfree_wpb_load_widget() {
3116
- register_widget('vtrtsfree_widget');
3117
- }
3118
-
3119
- add_action('widgets_init', 'ahcfree_wpb_load_widget');
3120
 
3121
  function ahcfree_get_hits_by_custom_duration_callback(){
3122
- $hits_duration = intval($_POST['hits_duration']);
3123
  $custom_timezone_offset = ahcfree_get_current_timezone_offset();
3124
  $custom_timezone = new DateTimeZone(ahcfree_get_timezone_string());
3125
 
@@ -3408,16 +3162,26 @@ function ahcfree_getFormattedDate($date,$format="")
3408
  add_action("wp_ajax_traffic_by_title","ahcfree_traffic_by_title_callback");
3409
  function ahcfree_traffic_by_title_callback()
3410
  {
3411
- if(isset($_REQUEST['page']) &&$_REQUEST['page']=="all")
3412
  {
3413
- $res =ahcfree_get_traffic_by_title(1,false,"","",$_REQUEST['search']['value']);
 
 
 
 
 
3414
  echo json_encode($res);
3415
  exit;
3416
  }
3417
  else
3418
  {
3419
- $cnt = ahcfree_get_traffic_by_title("",true,"","",$_REQUEST['search']['value']);
3420
- $tTitles = ahcfree_get_traffic_by_title("",false,$_REQUEST['start'],$_REQUEST['length'],$_REQUEST['search']['value']);
 
 
 
 
 
3421
 
3422
  $arr["draw"]= 0;
3423
  $arr["recordsTotal"]= $cnt;
@@ -3439,7 +3203,12 @@ function ahcfree_traffic_by_countries_callback()
3439
  }
3440
  else
3441
  {
3442
- $tTitles = ahcfree_get_top_countries(0,$_REQUEST['start'],$_REQUEST['length'],"",false);
 
 
 
 
 
3443
  $cnt = ahcfree_get_top_countries(0,"","","",true);
3444
 
3445
  $arr["draw"]= 0;
@@ -3456,14 +3225,25 @@ function ahcfree_recent_visitor_by_ip_callback()
3456
  {
3457
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3458
  {
3459
- $res = ahcfree_get_recent_visitors(1,false,"","",$_REQUEST['fdt'],$_REQUEST['tdt'],$_REQUEST['ip']);
 
 
 
 
 
3460
  echo json_encode($res);
3461
  exit;
3462
  }
3463
  else
3464
  {
3465
- $cnt = ahcfree_get_recent_visitors("",true,"","",$_REQUEST['fdt'],$_REQUEST['tdt'],$_REQUEST['ip']);
3466
- $recentVisitors = ahcfree_get_recent_visitors("",false,$_REQUEST['start'],$_REQUEST['length'],$_REQUEST['fdt'],$_REQUEST['tdt'],$_REQUEST['ip']);
 
 
 
 
 
 
3467
 
3468
 
3469
  $arr["draw"]= 0;
@@ -3479,14 +3259,26 @@ function ahcfree_latest_search_words_callback()
3479
  {
3480
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3481
  {
3482
- $res = ahcfree_get_latest_search_key_words_used(1,false,"","",$_REQUEST['fdt'],$_REQUEST['tdt']);
 
 
 
 
 
3483
  echo json_encode($res);
3484
  exit;
3485
  }
3486
  else
3487
  {
3488
- $cnt = ahcfree_get_latest_search_key_words_used("",true,"","",$_REQUEST['fdt'],$_REQUEST['tdt']);
3489
- $recentVisitors = ahcfree_get_latest_search_key_words_used("",false,$_REQUEST['start'],$_REQUEST['length'],$_REQUEST['fdt'],$_REQUEST['tdt']);
 
 
 
 
 
 
 
3490
 
3491
  $arr["draw"]= 0;
3492
  $arr["recordsTotal"]= $cnt;
@@ -3501,14 +3293,23 @@ function ahcfree_today_traffic_index_callback()
3501
  {
3502
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3503
  {
3504
- $res = ahcfree_get_vsitors_by_country(1,false,"","",$_REQUEST['fdt'],$_REQUEST['tdt']);
 
 
 
 
3505
  echo json_encode($res);
3506
  exit;
3507
  }
3508
  else
3509
  {
3510
- $cnt = ahcfree_get_vsitors_by_country("",true,"","",$_REQUEST['fdt'],$_REQUEST['tdt']);
3511
- $countries = ahcfree_get_vsitors_by_country("",false,$_REQUEST['start'],$_REQUEST['length'],$_REQUEST['fdt'],$_REQUEST['tdt']);
 
 
 
 
 
3512
 
3513
  $arr["draw"]= 0;
3514
  $arr["recordsTotal"]= $cnt;
@@ -3523,15 +3324,24 @@ function ahcfree_visits_time_graph_callback()
3523
  {
3524
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3525
  {
 
 
3526
 
3527
- $times = ahcfree_get_time_visits(1,"","",$_REQUEST['fdt'],$_REQUEST['tdt']);
 
3528
  echo json_encode($times);
3529
  exit;
3530
  }
3531
  else
3532
  {
3533
 
3534
- $times = ahcfree_get_time_visits("",$_REQUEST['start'],$_REQUEST['length'],$_REQUEST['fdt'],$_REQUEST['tdt']);
 
 
 
 
 
 
3535
  //$res = ahcfree_get_time_visits("","","",$_REQUEST['fdt'],$_REQUEST['tdt']);
3536
  $cnt = 24;
3537
  $arr["draw"]= 0;
@@ -3542,4 +3352,171 @@ function ahcfree_visits_time_graph_callback()
3542
  exit;
3543
  }
3544
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3545
  ?>
1
  <?php
2
+
3
  function vtrts_free_top_bar_enqueue_style() {
4
 
5
  echo '<style>
12
 
13
  }
14
 
15
+ /**
16
+ * Recursive sanitation for text or array
17
+ *
18
+ * @param $array_or_string (array|string)
19
+ * @since 0.1
20
+ * @return mixed
21
+ */
22
+ function ahc_free_sanitize_text_or_array_field($array_or_string) {
23
+ if( is_string($array_or_string) ){
24
+ $array_or_string = sanitize_text_field($array_or_string);
25
+ }elseif( is_array($array_or_string) ){
26
+ foreach ( $array_or_string as $key => &$value ) {
27
+ if ( is_array( $value ) ) {
28
+ $value = ahc_free_sanitize_text_or_array_field($value);
29
+ }
30
+ else {
31
+ $value = sanitize_text_field( $value );
32
+ }
33
+ }
34
+ }
35
+
36
+ return $array_or_string;
37
+ }
38
 
39
  function vtrts_free_add_items($admin_bar)
40
  {
167
  $set_hits_days = intval($_POST['set_hits_days']);
168
  $set_ajax_check = intval($_POST['set_ajax_check']);
169
  $posts_type = '';
170
+ $set_ips = ahc_free_sanitize_text_or_array_field($_POST['set_ips']);
171
  $set_google_map = '';
172
  $ahcfree_hide_top_bar_icon = isset($_POST['ahcfree_hide_top_bar_icon']) ? intval($_POST['ahcfree_hide_top_bar_icon']) : '0';
173
  $ahcfree_ahcfree_haships = isset($_POST['ahcfree_ahcfree_haships']) ? intval($_POST['ahcfree_ahcfree_haships']) : '0';
174
  $delete_plugin_data = isset($_POST['delete_plugin_data']) ? intval($_POST['delete_plugin_data']) : '';
175
 
176
+ $custom_timezone_offset = ahc_free_sanitize_text_or_array_field($_POST['set_custom_timezone']);
177
  if ($custom_timezone_offset && $custom_timezone_offset != '') {
178
  update_option('ahcfree_custom_timezone', $custom_timezone_offset);
179
  }
184
  update_option('ahcfree_hide_top_bar_icon', $ahcfree_hide_top_bar_icon);
185
 
186
 
187
+ $ahcproUserRoles = (isset($_POST['ahcproUserRoles']) && is_array($_POST['ahcproUserRoles'])) ? $_POST['ahcproUserRoles'] : ''; // sanitize inside the loop
188
  if(isset($ahcproUserRoles))
189
  {
190
  foreach ($ahcproUserRoles as $v)
191
  {
192
+ $ahcproUserRoles .= $v.",";
193
  }
194
 
195
  $ahcproUserRoles = substr($ahcproUserRoles,0,-1);
209
  }
210
 
211
  //--------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
 
213
  function ahcfree_rate_us($plugin_url, $box_color = '#1D1F21') {
214
 
517
  if( !$ahcfree_custom_timezone ){
518
  add_action('admin_notices', 'ahcfree_admin_notice_to_set_timezone');
519
  }
520
+ $page = isset($_GET['page']) ? ahc_free_sanitize_text_or_array_field($_GET['page']) : '';
521
 
522
 
523
 
532
  *
533
  * @return number
534
  */
535
+ function ahcfree_NumFormat($num) {
536
  if ($num > 1000) {
537
  return number_format($num, 0, ',', ',');
538
  } else {
540
  }
541
  }
542
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
543
 
544
  function ahcfree_init()
545
  {
546
+ //add_action('wp_ajax_ahcfree_countOnlineusers','ahcfree_countOnlineusers');
547
  add_action('wp_ajax_ahcfree_track_visitor','ahcfree_track_visitor');
548
  add_action('wp_ajax_nopriv_ahcfree_track_visitor','ahcfree_track_visitor');
549
  }
1417
  $results = $wpdb->get_results($sql, OBJECT);
1418
 
1419
 
1420
+
1421
+
1422
+ if ($results !== false) {
1423
+ $response['success'] = true;
1424
+ $data = '';
1425
+ $c = 0;
1426
+ foreach ($results as $r) {
1427
+ $data .= "['".$r->srh_name."', ".$r->vtsh_visits."],";
1428
+ $c++;
1429
+ }
1430
  } else {
1431
+ $data = '';
1432
  }
1433
+ $data = substr($data,0,-1);
1434
+ return $data;
1435
  }
1436
 
1437
 
1563
  $response = array();
1564
  if ($results !== false) {
1565
  $response['success'] = true;
1566
+ $data = '';
1567
  $c = 0;
1568
  foreach ($results as $bsr) {
1569
+ $data .= "['".$bsr->bsr_name."', ".$bsr->bsr_visits."],";
 
 
1570
  $c++;
1571
  }
1572
  } else {
1573
+ $data = '';
1574
  }
1575
+ $data = substr($data,0,-1);
1576
+ return $data;
1577
  }
1578
 
1579
  //--------------------------------------------
1721
  $cond="";
1722
  if(isset($_POST['t_from_dt']) && $_POST['t_from_dt']!='' && isset($_POST['t_to_dt']) && $_POST['t_to_dt']!='' && isset($_POST['section']) && $_POST['section']=="traffic_index_country")
1723
  {
1724
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['t_from_dt']);
1725
+ $tdt = ahc_free_sanitize_text_or_array_field($_POST['t_to_dt']);
1726
  }
1727
  else if(isset($_POST['t_from_dt']) && $_POST['t_from_dt']!='' && isset($_POST['section']) && $_POST['section']=="traffic_index_country")
1728
  {
1729
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['t_from_dt']);
1730
+ $fromdt = ahcfree_getFormattedDate($fdt,'yymmdd');
1731
  $cond =" and vtr_date ='$fromdt'";
1732
  }
1733
 
1874
 
1875
  if(isset($_POST['r_from_dt']) && $_POST['r_from_dt']!='' && isset($_POST['r_to_dt']) && $_POST['r_to_dt']!='' && isset($_POST['section']) && $_POST['section']=='recent_visitor_by_ip')
1876
  {
1877
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['r_from_dt']);
1878
+ $tdt = ahc_free_sanitize_text_or_array_field($_POST['r_to_dt']);
1879
  }
1880
  else if(isset($_POST['r_from_dt']) && $_POST['r_from_dt']!='')
1881
  {
1882
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['r_from_dt']);
1883
 
1884
  }
1885
  if(isset($_POST['ip_addr']) && $_POST['ip_addr']!='' && isset($_POST['section']) && $_POST['section']=='recent_visitor_by_ip')
1886
  {
1887
+ $ip = ahc_free_sanitize_text_or_array_field($_POST['ip_addr']);
1888
  }
1889
 
1890
  if($ip!='')
2020
 
2021
  if(isset($_POST['from_dt']) && $_POST['from_dt']!='' && isset($_POST['to_dt']) && $_POST['to_dt']!='' && isset($_POST['section']) && $_POST['section']=="lastest_search")
2022
  {
2023
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['from_dt']);
2024
+ $tdt = ahc_free_sanitize_text_or_array_field($_POST['to_dt']);
2025
  }
2026
 
2027
  if($fdt!='' && $tdt!='')
2091
  $img .= '<img src="'.$imgurl.'" border="0" width="22" height="18" title="'.$re->ctr_name.'" onerror="imgFlagError(this)" />';
2092
  }
2093
  $img.='</span>';
2094
+ /*$eurl=plugins_url('/images/search_engines/' . $re->srh_icon, AHCFREE_PLUGIN_MAIN_FILE);
2095
  $img.='<span><img src="'.$eurl.'" border="0" width="22" height="22" title="'.$re->srh_name.'" /></span>';
2096
 
2097
  $burl=plugins_url('/images/browsers/' . $re->bsr_icon, AHCFREE_PLUGIN_MAIN_FILE);
2098
  $img.='<span><img src="'.$burl.'" border="0" width="20" height="20" title="'.$re->bsr_name.'" /></span>';
2099
+ */
2100
  $arr[$c]['img']=$img;
2101
  $arr[$c]['csb']=$re->ctr_name."/".$re->srh_name."/".$re->bsr_name;
2102
 
2362
  */
2363
  /*function ahcfree_track_visitor($query) {
2364
 
2365
+ $exclude_ips = AHCFREE_AHCFREE_EXCLUDE_IPS;
2366
  if ($exclude_ips == '' or $exclude_ips == '') {
2367
  $exclude_ips = array();
2368
  }
2369
+ if (AHCFREE_AHCFREE_EXCLUDE_IPS != NULL && AHCFREE_AHCFREE_EXCLUDE_IPS != '') {
2370
  $exclude_ips = explode("\n", $exclude_ips);
2371
  }
2372
 
2391
  function ahcfree_track_visitor()
2392
  {
2393
  $exclude_ips_arr = array();
2394
+ $exclude_ips = '';
2395
  if ($exclude_ips == '' or empty($exclude_ips)) {
2396
  $exclude_ips = array();
2397
  }else{
2416
  if (!ahcfree_is_login_page() && !ahcfree_is_search_engine_bot() && !ahcfree_is_wordpress_bot()) {
2417
  if (!in_array($client_ip_address, $exclude_ips_arr)) {
2418
 
2419
+ $page_id = intval($_POST['page_id']);
2420
+ $page_title = ahc_free_sanitize_text_or_array_field($_POST['page_title']);
2421
+ $post_type = ahc_free_sanitize_text_or_array_field($_POST['post_type']);
2422
+ $_SERVER['HTTP_REFERER'] = ahc_free_sanitize_text_or_array_field($_POST['referer']);
2423
+ $_SERVER['HTTP_USER_AGENT'] = ahc_free_sanitize_text_or_array_field($_POST['useragent']);
2424
+ $_SERVER['SERVER_NAME'] = ahc_free_sanitize_text_or_array_field($_POST['servername']);
2425
+ $_SERVER['HTTP_HOST'] = ahc_free_sanitize_text_or_array_field($_POST['hostname']);
2426
+ $_SERVER['REQUEST_URI'] = ahc_free_sanitize_text_or_array_field($_POST['request_uri']);
2427
 
2428
  $hitsCounter = new WPHitsCounter($page_id, $page_title, $post_type);
2429
  $hitsCounter->traceVisitorHit();
2525
  $arr[$c]['til_page_title'] = "<a href='".get_permalink($r->til_page_id)."' target='_blank'>".$r->til_page_title."</a>";
2526
  $arr[$c]['til_hits'] = $r->til_hits;
2527
  $ans = ($total > 0) ? ahcfree_ceil_dec((($r->til_hits / $total) * 100), 2, ".") . ' %' : 0;
2528
+ $arr[$c]['percent'] = ahcfree_NumFormat($ans);
2529
  $c++;
2530
  $no++;
2531
  }
2553
 
2554
  if(isset($_POST['vfrom_dt']) && $_POST['vfrom_dt']!='' && isset($_POST['vto_dt']) && $_POST['vto_dt']!='' && isset($_POST['section']) && $_POST['section']=="visit_time")
2555
  {
2556
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['vfrom_dt']);
2557
+ $tdt = ahc_free_sanitize_text_or_array_field($_POST['vto_dt']);
2558
  }
2559
  else if(isset($_POST['vfrom_dt']) && $_POST['vfrom_dt']!='' && isset($_POST['section']) && $_POST['section']=="visit_time")
2560
  {
2561
+ $fdt = ahc_free_sanitize_text_or_array_field($_POST['vfrom_dt']);
2562
  }
2563
  if($fdt!='' && $tdt!='')
2564
  {
2760
  * @return void
2761
  */
2762
  function ahcfree_include_scripts() {
2763
+ wp_register_style('ahc_lang_css', plugins_url('/css/vtrts_css_stylesheet.css', AHCFREE_PLUGIN_MAIN_FILE), '', '1.4');
2764
  wp_enqueue_style('ahc_lang_css');
2765
 
2766
+
2767
+ wp_register_script( 'slimselect_js', plugins_url('js/slimselect.min.js',AHCFREE_PLUGIN_MAIN_FILE), null, null, true );
2768
+ wp_enqueue_script('slimselect_js');
2769
+
2770
+
2771
+ wp_register_style( 'slimselect', plugins_url('css/slimselect.min.css',AHCFREE_PLUGIN_MAIN_FILE));
2772
+ wp_enqueue_style('slimselect');
2773
+
2774
  wp_register_style('ahc_bootstrap_css', plugins_url('/lib/bootstrap/css/bootstrap.min.css',AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2775
  wp_enqueue_style('ahc_bootstrap_css');
2776
 
2802
  wp_register_style('jquery_date_css', plugins_url('/css/datepicker.css', AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2803
  wp_enqueue_style('jquery_date_css');
2804
 
2805
+
 
 
 
 
2806
 
2807
  wp_enqueue_script( 'jquery-ui-datepicker', array( 'jquery' ) );
2808
+ wp_register_script('ahc_main_js', plugins_url('/js/ahcfree_js_scripts.js', AHCFREE_PLUGIN_MAIN_FILE), '', '2.5');
2809
  wp_enqueue_script('ahc_main_js');
2810
 
2811
  wp_localize_script('ahc_main_js', 'ahc_ajax', array('ajax_url' => admin_url('admin-ajax.php')));
2812
 
2813
+
 
 
 
 
2814
 
2815
+
2816
+
2817
 
2818
+ }
 
 
2819
 
 
 
2820
 
 
 
2821
 
2822
+ function ahcfree_settings_scripts() {
 
2823
 
 
 
2824
 
2825
+ wp_register_style('ahc_bootstrap_css', plugins_url('/lib/bootstrap/css/bootstrap.min.css',AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2826
+ wp_enqueue_style('ahc_bootstrap_css');
2827
 
2828
+ wp_enqueue_script('jquery');
2829
 
2830
+ wp_register_script('ahc_bootstrap_js', plugins_url('/lib/bootstrap/js/bootstrap.min.js',AHCFREE_PLUGIN_MAIN_FILE), '', '1.21');
2831
+ wp_enqueue_script('ahc_bootstrap_js');
2832
 
2833
+ wp_register_script( 'slimselect_js', plugins_url('js/slimselect.min.js',AHCFREE_PLUGIN_MAIN_FILE), null, null, true );
2834
+ wp_enqueue_script('slimselect_js');
2835
 
 
 
2836
 
2837
+ wp_register_style( 'slimselect', plugins_url('css/slimselect.min.css',AHCFREE_PLUGIN_MAIN_FILE));
2838
+ wp_enqueue_style('slimselect');
2839
+
2840
+
2841
+
2842
  }
2843
 
2844
+
2845
+
2846
  //--------------------------------------------
2847
  //---------------------------------------------Add button to the admin bar
2848
  function ahcfree_vtrts_add_items($admin_bar) {
2868
  return $links;
2869
  }
2870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2871
 
 
 
2872
 
 
2873
 
 
 
 
 
 
 
 
2874
 
2875
  function ahcfree_get_hits_by_custom_duration_callback(){
2876
+ $hits_duration = ahc_free_sanitize_text_or_array_field($_POST['hits_duration']);
2877
  $custom_timezone_offset = ahcfree_get_current_timezone_offset();
2878
  $custom_timezone = new DateTimeZone(ahcfree_get_timezone_string());
2879
 
3162
  add_action("wp_ajax_traffic_by_title","ahcfree_traffic_by_title_callback");
3163
  function ahcfree_traffic_by_title_callback()
3164
  {
3165
+ if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3166
  {
3167
+
3168
+ $search_value = ahc_free_sanitize_text_or_array_field($_REQUEST['search']['value']);
3169
+
3170
+ $search_page = ahc_free_sanitize_text_or_array_field($search_value);
3171
+
3172
+ $res =ahcfree_get_traffic_by_title(1,false,"","",$search_page);
3173
  echo json_encode($res);
3174
  exit;
3175
  }
3176
  else
3177
  {
3178
+ $search_page = ahc_free_sanitize_text_or_array_field($_REQUEST['search']['value']);
3179
+ $search_start = ahc_free_sanitize_text_or_array_field($_REQUEST['start']);
3180
+ $search_length = ahc_free_sanitize_text_or_array_field($_REQUEST['length']);
3181
+
3182
+ $cnt = ahcfree_get_traffic_by_title("",true,"","",$search_page);
3183
+
3184
+ $tTitles = ahcfree_get_traffic_by_title("",false,$search_start,$search_length,$search_page);
3185
 
3186
  $arr["draw"]= 0;
3187
  $arr["recordsTotal"]= $cnt;
3203
  }
3204
  else
3205
  {
3206
+
3207
+ $search_start = ahc_free_sanitize_text_or_array_field($_REQUEST['start']);
3208
+ $search_length = ahc_free_sanitize_text_or_array_field($_REQUEST['length']);
3209
+
3210
+
3211
+ $tTitles = ahcfree_get_top_countries(0,$search_start,$search_length,"",false);
3212
  $cnt = ahcfree_get_top_countries(0,"","","",true);
3213
 
3214
  $arr["draw"]= 0;
3225
  {
3226
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3227
  {
3228
+
3229
+ $ip = ahc_free_sanitize_text_or_array_field($_REQUEST['ip']);
3230
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3231
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3232
+
3233
+ $res = ahcfree_get_recent_visitors(1,false,"","",$fdt,$tdt,$ip);
3234
  echo json_encode($res);
3235
  exit;
3236
  }
3237
  else
3238
  {
3239
+ $ip = ahc_free_sanitize_text_or_array_field($_REQUEST['ip']);
3240
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3241
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3242
+ $start = ahc_free_sanitize_text_or_array_field($_REQUEST['start']);
3243
+ $length = ahc_free_sanitize_text_or_array_field($_REQUEST['length']);
3244
+
3245
+ $cnt = ahcfree_get_recent_visitors("",true,"","",$fdt,$tdt,$ip);
3246
+ $recentVisitors = ahcfree_get_recent_visitors("",false,$start,$length,$fdt,$tdt,$ip);
3247
 
3248
 
3249
  $arr["draw"]= 0;
3259
  {
3260
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3261
  {
3262
+
3263
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3264
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3265
+
3266
+
3267
+ $res = ahcfree_get_latest_search_key_words_used(1,false,"","",$fdt,$tdt);
3268
  echo json_encode($res);
3269
  exit;
3270
  }
3271
  else
3272
  {
3273
+
3274
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3275
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3276
+ $start = ahc_free_sanitize_text_or_array_field($_REQUEST['start']);
3277
+ $length = ahc_free_sanitize_text_or_array_field($_REQUEST['length']);
3278
+
3279
+
3280
+ $cnt = ahcfree_get_latest_search_key_words_used("",true,"","",$fdt,$tdt);
3281
+ $recentVisitors = ahcfree_get_latest_search_key_words_used("",false,$start,$length,$fdt,$tdt);
3282
 
3283
  $arr["draw"]= 0;
3284
  $arr["recordsTotal"]= $cnt;
3293
  {
3294
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3295
  {
3296
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3297
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3298
+
3299
+
3300
+ $res = ahcfree_get_vsitors_by_country(1,false,"","",$fdt,$tdt);
3301
  echo json_encode($res);
3302
  exit;
3303
  }
3304
  else
3305
  {
3306
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3307
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3308
+ $start = ahc_free_sanitize_text_or_array_field($_REQUEST['start']);
3309
+ $length = ahc_free_sanitize_text_or_array_field($_REQUEST['length']);
3310
+
3311
+ $cnt = ahcfree_get_vsitors_by_country("",true,"","",$fdt,$tdt);
3312
+ $countries = ahcfree_get_vsitors_by_country("",false,$start,$length,$fdt,$tdt);
3313
 
3314
  $arr["draw"]= 0;
3315
  $arr["recordsTotal"]= $cnt;
3324
  {
3325
  if(isset($_REQUEST['page']) && $_REQUEST['page']=="all")
3326
  {
3327
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3328
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3329
 
3330
+
3331
+ $times = ahcfree_get_time_visits(1,"","",$fdt,$tdt);
3332
  echo json_encode($times);
3333
  exit;
3334
  }
3335
  else
3336
  {
3337
 
3338
+ $fdt = ahc_free_sanitize_text_or_array_field($_REQUEST['fdt']);
3339
+ $tdt = ahc_free_sanitize_text_or_array_field($_REQUEST['tdt']);
3340
+ $start = ahc_free_sanitize_text_or_array_field($_REQUEST['start']);
3341
+ $length = ahc_free_sanitize_text_or_array_field($_REQUEST['length']);
3342
+
3343
+
3344
+ $times = ahcfree_get_time_visits("",$start,$length,$fdt,$tdt);
3345
  //$res = ahcfree_get_time_visits("","","",$_REQUEST['fdt'],$_REQUEST['tdt']);
3346
  $cnt = 24;
3347
  $arr["draw"]= 0;
3352
  exit;
3353
  }
3354
  }
3355
+
3356
+ //------------------------------------------------------------------------
3357
+ // --------------------------------------- Create front-end widget
3358
+ // Creating the widget
3359
+ class ahcfree_vtrts_widget extends WP_Widget {
3360
+
3361
+ function __construct() {
3362
+ parent::__construct(
3363
+ // Base ID of your widget
3364
+ 'ahcfree_vtrts_widget',
3365
+ // Widget name will appear in UI
3366
+ __('Visitor Traffic', 'wpb_widget_domain'),
3367
+ // Widget description
3368
+ array('description' => __('Display your site statistics', 'wpb_widget_domain'),)
3369
+ );
3370
+ }
3371
+
3372
+ // Creating widget front-end
3373
+ // This is where the action happens
3374
+ public function widget($args, $instance) {
3375
+ $title = apply_filters('widget_title', $instance['title']);
3376
+ // before and after widget arguments are defined by themes
3377
+ echo $args['before_widget'];
3378
+ if (!empty($title))
3379
+ echo $args['before_title'] . $title . $args['after_title'];
3380
+
3381
+
3382
+ $ahc_sum_stats = ahcfree_get_summary_statistics();
3383
+
3384
+
3385
+ // This is where you run the code and display the output
3386
+ echo '<ul style="list-style:none; ' . $instance['fontTypeCombo'] . '; font-size:' . $instance['fontSizeCombo'] . 'px">';
3387
+
3388
+ if ($instance['display_visitorstoday'] == 1 or $instance['display_visitorstoday'] == '1') {
3389
+ echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Visitors today : </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahcfree_NumFormat($ahc_sum_stats['today']['visitors']) . '</span></li>';
3390
+ }
3391
+ if ($instance['display_pageviewtoday'] == 1 or $instance['display_pageviewtoday'] == '1') {
3392
+ echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Page views today : </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahcfree_NumFormat($ahc_sum_stats['today']['visits']) . '</span></li>';
3393
+ }
3394
+
3395
+ if ($instance['display_totalvisitors'] == 1 or $instance['display_totalvisitors'] == '1') {
3396
+ echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Total visitors : </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahcfree_NumFormat($ahc_sum_stats['total']['visitors']) . '</span></li>';
3397
+ }
3398
+
3399
+ if ($instance['display_totalpageview'] == 1 or $instance['display_totalpageview'] == '1') {
3400
+ echo '<li><b style="color:#' . $instance['display_titlecolor'] . '">Total page view: </b><span style="color:#' . $instance['display_valuescolor'] . '">' . ahcfree_NumFormat($ahc_sum_stats['total']['visits']) . '</span></li>';
3401
+ }
3402
+
3403
+
3404
+ echo '</ul>';
3405
+ echo $args['after_widget'];
3406
+ }
3407
+
3408
+ // Widget Backend
3409
+ public function form($instance) {
3410
+ extract($instance);
3411
+
3412
+ if (isset($instance['title'])) {
3413
+ $title = $instance['title'];
3414
+ } else {
3415
+ $title = __('Site Statistics', 'wpb_widget_domain');
3416
+ }
3417
+ // Widget admin form
3418
+
3419
+ $fontTypeCombo = (isset($fontTypeCombo)) ? $fontTypeCombo : '';
3420
+ $display_valuescolor = (isset($display_valuescolor)) ? $display_valuescolor : '';
3421
+ $display_titlecolor = (isset($display_titlecolor)) ? $display_titlecolor : '';
3422
+
3423
+
3424
+ ?>
3425
+
3426
+
3427
+ <p>
3428
+ <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget Title:'); ?></label>
3429
+ <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
3430
+ </p>
3431
+
3432
+
3433
+
3434
+
3435
+
3436
+ <p>
3437
+ <label for="<?php echo $this->get_field_id('fontTypeCombo'); ?>"><?php _e('Font Type:'); ?></label>
3438
+ <select class="widefat" id="<?php echo $this->get_field_id('fontTypeCombo'); ?>" name="<?php echo $this->get_field_name('fontTypeCombo'); ?>">
3439
+ <optgroup class='verdana'>
3440
+ <option <?php selected($fontTypeCombo, 'font-family:Verdana, Geneva, sans-serif'); ?> value="font-family:Verdana, Geneva, sans-serif">Verdana</option>
3441
+ </optgroup>
3442
+
3443
+ <optgroup class='TimesNew'>
3444
+ <option <?php selected($fontTypeCombo, "font-family:'Times New Roman', Times, serif"); ?> value="font-family:'Times New Roman', Times, serif">Times New Roman</option>
3445
+ </optgroup>
3446
+
3447
+ <optgroup class='Arial'>
3448
+ <option <?php selected($fontTypeCombo, "font-family:Arial, Helvetica, sans-serif"); ?> value="font-family:Arial, Helvetica, sans-serif">Arial</option>
3449
+ </optgroup>
3450
+
3451
+ <optgroup class='Tahoma'>
3452
+ <option <?php selected($fontTypeCombo, "font-family:Tahoma, Geneva, sans-serif"); ?> value="font-family:Tahoma, Geneva, sans-serif">Tahoma</option>
3453
+ </optgroup>
3454
+
3455
+ <optgroup class='Courier'>
3456
+ <option <?php selected($fontTypeCombo, "font-family:'Courier New', Courier, monospace"); ?> value="font-family:'Courier New', Courier, monospace">Courier</option>
3457
+ </optgroup>
3458
+
3459
+ <optgroup class='TrebuchetMS'>
3460
+ <option <?php selected($fontTypeCombo, "font-family:'Trebuchet MS', Arial, Helvetica, sans-serif"); ?> value="font-family:'Trebuchet MS', Arial, Helvetica, sans-serif">Trebuchet MS</option>
3461
+ </optgroup>
3462
+
3463
+
3464
+ </select>
3465
+
3466
+ </p>
3467
+ <label for="<?php echo $this->get_field_id('fontSizeCombo'); ?>"><?php _e('Font Size:'); ?></label>
3468
+ <select class="widefat" id="<?php echo $this->get_field_id('fontSizeCombo'); ?>" name="<?php echo $this->get_field_name('fontSizeCombo'); ?>">
3469
+ <?php
3470
+ for ($fs = 8; $fs <= 22; $fs++) {
3471
+ $fontSizeCombo = (isset($fontSizeCombo)) ? $fontSizeCombo : '';
3472
+ ?>
3473
+ <option value="<?php echo $fs ?>" <?php selected($fontSizeCombo, $fs); ?>><?php echo $fs; ?>px</option>
3474
+ <?php } ?>
3475
+ </select>
3476
+ <p>
3477
+
3478
+ </p>
3479
+
3480
+ <p><em>Display :</em></p>
3481
+ <?php
3482
+ $display_onlineusers = isset($display_onlineusers) ? $display_onlineusers : '0';
3483
+ $display_visitorstoday = isset($display_visitorstoday) ? $display_visitorstoday : '0';
3484
+ $display_pageviewtoday = isset($display_pageviewtoday) ? $display_pageviewtoday : '0';
3485
+ $display_totalpageview = isset($display_totalpageview) ? $display_totalpageview : '0';
3486
+ $display_totalvisitors = isset($display_totalvisitors) ? $display_totalvisitors : '0';
3487
+ ?>
3488
+
3489
+
3490
+ <p>
3491
+ <input class="widefat" id="<?php echo $this->get_field_id('display_visitorstoday'); ?>" name="<?php echo $this->get_field_name('display_visitorstoday'); ?>" type="checkbox" value="1" <?php checked($display_visitorstoday, '1'); ?>/>&nbsp;<label for="<?php echo $this->get_field_id('display_visitorstoday'); ?>">Visitors Today</label>
3492
+ </p>
3493
+ <p>
3494
+ <input class="widefat" id="<?php echo $this->get_field_id('display_pageviewtoday'); ?>" name="<?php echo $this->get_field_name('display_pageviewtoday'); ?>" type="checkbox" value="1" <?php checked($display_pageviewtoday, '1'); ?>/>&nbsp;<label for="<?php echo $this->get_field_id('display_pageviewtoday'); ?>">Page Views Today</label>
3495
+ </p>
3496
+ <p>
3497
+ <input class="widefat" id="<?php echo $this->get_field_id('display_totalpageview'); ?>" name="<?php echo $this->get_field_name('display_totalpageview'); ?>" type="checkbox" value="1" <?php checked($display_totalpageview, '1'); ?> />&nbsp;<label for="<?php echo $this->get_field_id('display_totalpageview'); ?>">Total Page Views</label>
3498
+ </p>
3499
+ <p>
3500
+ <input class="widefat" id="<?php echo $this->get_field_id('display_totalvisitors'); ?>" name="<?php echo $this->get_field_name('display_totalvisitors'); ?>" type="checkbox" value="1" <?php checked($display_totalvisitors, '1'); ?>/>&nbsp;<label for="<?php echo $this->get_field_id('display_totalvisitors'); ?>">Total Visitors</label>
3501
+ </p>
3502
+
3503
+ <?php
3504
+ }
3505
+
3506
+ // Updating widget replacing old instances with new
3507
+ public function update($new_instance, $old_instance) {
3508
+
3509
+ return $new_instance;
3510
+ }
3511
+
3512
+ }
3513
+
3514
+ // Class ahcfree_vtrts_widget ends here
3515
+ // Register and load the widget
3516
+ function ahcfree_wpb_load_widget() {
3517
+ register_widget('ahcfree_vtrts_widget');
3518
+ }
3519
+
3520
+ add_action('widgets_init', 'ahcfree_wpb_load_widget');
3521
+
3522
  ?>
images/flags/wf.png CHANGED
Binary file
images/geomap_pro.jpg ADDED
Binary file
images/map_pro.jpg DELETED
Binary file
init.php CHANGED
@@ -10,7 +10,7 @@ define('AHCFREE_TOP_COUNTRIES_LIMIT', 20); // used in ahcfree_get_top_countries
10
 
11
 
12
  define('AHCFREE_TRAFFIC_BY_TITLE_LIMIT', 20);
13
- define('IS_DEMO', true);
14
 
15
  require_once("WPHitsCounter.php");
16
  require_once("geoip".AHCFREE_DS."src".AHCFREE_DS."geoip.inc");
@@ -55,19 +55,24 @@ $set_google_map = 'today_visitors';
55
 
56
 
57
  define('AHCFREE_VISITORS_VISITS_LIMIT', $hits_days );
58
- define('AHC_AJAX_CHECK', $ajax_check);
59
- define('EXCLUDE_IPS', $set_ips);
60
- define('SET_GOOGLE_MAP', $set_google_map);
61
 
62
 
63
 
64
  $admincore = '';
65
- if (isset($_GET['page'])) $admincore = $_GET['page'];
66
  if( is_admin() && $admincore == 'ahc_hits_counter_menu_free')
67
  {
68
  add_action('admin_enqueue_scripts', 'ahcfree_include_scripts',99);
69
  }
70
 
 
 
 
 
 
 
71
 
72
  add_action('admin_menu', 'ahcfree_create_admin_menu_link');
73
  add_shortcode('ahcfree_show_google_map', 'ahcfree_google_map' );
10
 
11
 
12
  define('AHCFREE_TRAFFIC_BY_TITLE_LIMIT', 20);
13
+
14
 
15
  require_once("WPHitsCounter.php");
16
  require_once("geoip".AHCFREE_DS."src".AHCFREE_DS."geoip.inc");
55
 
56
 
57
  define('AHCFREE_VISITORS_VISITS_LIMIT', $hits_days );
58
+ define('AHCFREE_EXCLUDE_IPS', $set_ips);
59
+
 
60
 
61
 
62
 
63
  $admincore = '';
64
+ if (isset($_GET['page'])) $admincore = ahc_free_sanitize_text_or_array_field($_GET['page']);
65
  if( is_admin() && $admincore == 'ahc_hits_counter_menu_free')
66
  {
67
  add_action('admin_enqueue_scripts', 'ahcfree_include_scripts',99);
68
  }
69
 
70
+ if( is_admin() && $admincore == 'ahc_hits_counter_settings')
71
+ {
72
+ add_action('admin_enqueue_scripts', 'ahcfree_settings_scripts');
73
+ }
74
+
75
+
76
 
77
  add_action('admin_menu', 'ahcfree_create_admin_menu_link');
78
  add_shortcode('ahcfree_show_google_map', 'ahcfree_google_map' );
js/ahcfree_js_scripts.js CHANGED
@@ -70,81 +70,9 @@ function drawVisitsLineChart(visitsData){
70
  //------------------------------------------------------------------------------
71
 
72
 
73
- function drawBrowsersBieChart(browsersData){
74
- var brsBieChartData = [];
75
- var container = jQuery('#browsersLegContainer');
76
- var html = '';
77
-
78
- if(browsersData.length == 0)
79
- {
80
- document.getElementById('browsersLegContainer').style.display = 'none';
81
- }else{
82
- document.getElementById('browsersLegContainer').style.display = 'block';
83
- }
84
-
85
- for(var i = 0; i < browsersData.length; i++){
86
- var color = getRandomElementFromArray(colors);
87
- var value = Number(browsersData[i].hits);
88
- brsBieChartData[i] = {label: browsersData[i].bsr_name, value: value, color: color};
89
- html += (isEmpty(value))? '' : '<div class="legend">' +
90
- '<span class="color" style="background-color: ' + color + ';">&nbsp;&nbsp;</span>' +
91
- '<span class="name">' + browsersData[i].bsr_name + '</span>' +
92
- '<span class="value">' + value + '</span>' +
93
- '</div>';
94
- }
95
- html += '<div class="cleaner"></div>';
96
- container.html(html);
97
- var ctx = document.getElementById("brsBiechartContainer").getContext("2d");
98
- /*var myPie = new Chart(ctx,{
99
- type: 'pie',
100
- data: brsBieChartData,
101
- options: {responsive : true}
102
- });*/
103
- window.myPie = new Chart(ctx).Pie(brsBieChartData, {responsive : true});
104
- }
105
 
106
 
107
 
108
- //------------------------------------------------------------------------------
109
- function drawSrhEngVstLineChart(f){
110
- var srh_series = [];
111
- var container = jQuery('#srchEngLegContainer');
112
- var html = '';
113
- document.getElementById('srchEngLegContainer').style.display = 'none';
114
-
115
- for(var index in srhEngVisitsData.data.search_engines){
116
- var color = getRandomElementFromArray(colors);
117
- var value = countVisits(srhEngVisitsData.data.search_engines[index]);
118
-
119
- if(parseFloat(value) !=0)
120
- {
121
- document.getElementById('srchEngLegContainer').style.display = 'block';
122
- }
123
-
124
- srh_series[srh_series.length] = {
125
- "label": index,
126
- "value": value,
127
- "color": color
128
- }
129
-
130
- html += (isEmpty(value))? '' : '<div class="legend">' +
131
- '<span class="color" style="background-color: ' + color + ';">&nbsp;&nbsp;</span>' +
132
- '<span class="name">' + index + '</span>' +
133
- '<span class="value">' + value + '</span>' +
134
- '</div>';
135
- }
136
- html += '<div class="cleaner"></div>';
137
- container.html(html);
138
- var ctx = document.getElementById("srhEngBieChartContainer").getContext("2d");
139
- /*var myPie = new Chart(ctx,{
140
- type: 'pie',
141
- data: srh_series,
142
- options: {responsive : true}
143
- });*/
144
- window.myPie = new Chart(ctx).Pie(srh_series, {responsive : true});
145
- }
146
-
147
-
148
  function isEmpty(val){
149
  return (val == null || val == 0 || val == '' || val == '0');
150
  }
@@ -163,17 +91,11 @@ jQuery(document).ready(function () {
163
 
164
  //------------------------------------------
165
  //if(visitsData.success && typeof visitsData.data != 'undefined'){
166
- var duration = jQuery('#hits-duration').val();
167
- drawVisitsLineChart( mystart_date, myend_date, '1 day', visitors_data, visits_data, duration );
168
  //}
169
  //------------------------------------------
170
- if (browsersData.success && typeof browsersData.data != 'undefined' && typeof drawBrowsersBieChart === "function") {
171
- drawBrowsersBieChart(browsersData.data);
172
- }
173
- //------------------------------------------
174
- if (srhEngVisitsData.success && typeof srhEngVisitsData.data != 'undefined' && typeof drawSrhEngVstLineChart === "function") {
175
- drawSrhEngVstLineChart(srhEngVisitsData);
176
- }
177
  //------------------------------------------
178
 
179
  //------------------------------------------
70
  //------------------------------------------------------------------------------
71
 
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
 
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  function isEmpty(val){
77
  return (val == null || val == 0 || val == '' || val == '0');
78
  }
91
 
92
  //------------------------------------------
93
  //if(visitsData.success && typeof visitsData.data != 'undefined'){
94
+ //var duration = jQuery('#hits-duration').val();
95
+ //drawVisitsLineChart( mystart_date, myend_date, '1 day', visitors_data, visits_data, duration );
96
  //}
97
  //------------------------------------------
98
+
 
 
 
 
 
 
99
  //------------------------------------------
100
 
101
  //------------------------------------------
js/jqplot.canvasAxisLabelRenderer.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(a){a.jqplot.CanvasAxisLabelRenderer=function(b){this.angle=0;this.axis;this.show=true;this.showLabel=true;this.label="";this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif';this.fontSize="11pt";this.fontWeight="normal";this.fontStretch=1;this.textColor="#666666";this.enableFontSupport=true;this.pt2px=null;this._elem;this._ctx;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null};a.extend(true,this,b);if(b.angle==null&&this.axis!="xaxis"&&this.axis!="x2axis"){this.angle=-90}var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};if(this.pt2px){c.pt2px=this.pt2px}if(this.enableFontSupport){if(a.jqplot.support_canvas_text()){this._textRenderer=new a.jqplot.CanvasFontRenderer(c)}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}};a.jqplot.CanvasAxisLabelRenderer.prototype.init=function(b){a.extend(true,this,b);this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})};a.jqplot.CanvasAxisLabelRenderer.prototype.getWidth=function(d){if(this._elem){return this._elem.outerWidth(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.sin(f.angle)*e)+Math.abs(Math.cos(f.angle)*c);return b}};a.jqplot.CanvasAxisLabelRenderer.prototype.getHeight=function(d){if(this._elem){return this._elem.outerHeight(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.cos(f.angle)*e)+Math.abs(Math.sin(f.angle)*c);return b}};a.jqplot.CanvasAxisLabelRenderer.prototype.getAngleRad=function(){var b=this.angle*Math.PI/180;return b};a.jqplot.CanvasAxisLabelRenderer.prototype.draw=function(c,f){if(this._elem){if(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==undefined){window.G_vmlCanvasManager.uninitElement(this._elem.get(0))}this._elem.emptyForce();this._elem=null}var e=f.canvasManager.getCanvas();this._textRenderer.setText(this.label,c);var b=this.getWidth(c);var d=this.getHeight(c);e.width=b;e.height=d;e.style.width=b;e.style.height=d;e=f.canvasManager.initCanvas(e);this._elem=a(e);this._elem.css({position:"absolute"});this._elem.addClass("jqplot-"+this.axis+"-label");e=null;return this._elem};a.jqplot.CanvasAxisLabelRenderer.prototype.pack=function(){this._textRenderer.draw(this._elem.get(0).getContext("2d"),this.label)}})(jQuery);
 
 
 
js/jqplot.canvasAxisTickRenderer.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(a){a.jqplot.CanvasAxisTickRenderer=function(b){this.mark="outside";this.showMark=true;this.showGridline=true;this.isMinorTick=false;this.angle=0;this.markSize=4;this.show=true;this.showLabel=true;this.labelPosition="auto";this.label="";this.value=null;this._styles={};this.formatter=a.jqplot.DefaultTickFormatter;this.formatString="";this.prefix="";this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif';this.fontSize="10pt";this.fontWeight="normal";this.fontStretch=1;this.textColor="#666666";this.enableFontSupport=true;this.pt2px=null;this._elem;this._ctx;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null};a.extend(true,this,b);var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};if(this.pt2px){c.pt2px=this.pt2px}if(this.enableFontSupport){if(a.jqplot.support_canvas_text()){this._textRenderer=new a.jqplot.CanvasFontRenderer(c)}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}};a.jqplot.CanvasAxisTickRenderer.prototype.init=function(b){a.extend(true,this,b);this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})};a.jqplot.CanvasAxisTickRenderer.prototype.getWidth=function(d){if(this._elem){return this._elem.outerWidth(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.sin(f.angle)*e)+Math.abs(Math.cos(f.angle)*c);return b}};a.jqplot.CanvasAxisTickRenderer.prototype.getHeight=function(d){if(this._elem){return this._elem.outerHeight(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.cos(f.angle)*e)+Math.abs(Math.sin(f.angle)*c);return b}};a.jqplot.CanvasAxisTickRenderer.prototype.getTop=function(b){if(this._elem){return this._elem.position().top}else{return null}};a.jqplot.CanvasAxisTickRenderer.prototype.getAngleRad=function(){var b=this.angle*Math.PI/180;return b};a.jqplot.CanvasAxisTickRenderer.prototype.setTick=function(b,d,c){this.value=b;if(c){this.isMinorTick=true}return this};a.jqplot.CanvasAxisTickRenderer.prototype.draw=function(c,f){if(!this.label){this.label=this.prefix+this.formatter(this.formatString,this.value)}if(this._elem){if(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==undefined){window.G_vmlCanvasManager.uninitElement(this._elem.get(0))}this._elem.emptyForce();this._elem=null}var e=f.canvasManager.getCanvas();this._textRenderer.setText(this.label,c);var b=this.getWidth(c);var d=this.getHeight(c);e.width=b;e.height=d;e.style.width=b;e.style.height=d;e.style.textAlign="left";e.style.position="absolute";e=f.canvasManager.initCanvas(e);this._elem=a(e);this._elem.css(this._styles);this._elem.addClass("jqplot-"+this.axis+"-tick");e=null;return this._elem};a.jqplot.CanvasAxisTickRenderer.prototype.pack=function(){this._textRenderer.draw(this._elem.get(0).getContext("2d"),this.label)}})(jQuery);
 
 
 
js/jqplot.canvasTextRenderer.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(a){a.jqplot.CanvasTextRenderer=function(b){this.fontStyle="normal";this.fontVariant="normal";this.fontWeight="normal";this.fontSize="10px";this.fontFamily="sans-serif";this.fontStretch=1;this.fillStyle="#666666";this.angle=0;this.textAlign="start";this.textBaseline="alphabetic";this.text;this.width;this.height;this.pt2px=1.28;a.extend(true,this,b);this.normalizedFontSize=this.normalizeFontSize(this.fontSize);this.setHeight()};a.jqplot.CanvasTextRenderer.prototype.init=function(b){a.extend(true,this,b);this.normalizedFontSize=this.normalizeFontSize(this.fontSize);this.setHeight()};a.jqplot.CanvasTextRenderer.prototype.normalizeFontSize=function(b){b=String(b);var c=parseFloat(b);if(b.indexOf("px")>-1){return c/this.pt2px}else{if(b.indexOf("pt")>-1){return c}else{if(b.indexOf("em")>-1){return c*12}else{if(b.indexOf("%")>-1){return c*12/100}else{return c/this.pt2px}}}}};a.jqplot.CanvasTextRenderer.prototype.fontWeight2Float=function(b){if(Number(b)){return b/400}else{switch(b){case"normal":return 1;break;case"bold":return 1.75;break;case"bolder":return 2.25;break;case"lighter":return 0.75;break;default:return 1;break}}};a.jqplot.CanvasTextRenderer.prototype.getText=function(){return this.text};a.jqplot.CanvasTextRenderer.prototype.setText=function(c,b){this.text=c;this.setWidth(b);return this};a.jqplot.CanvasTextRenderer.prototype.getWidth=function(b){return this.width};a.jqplot.CanvasTextRenderer.prototype.setWidth=function(c,b){if(!b){this.width=this.measure(c,this.text)}else{this.width=b}return this};a.jqplot.CanvasTextRenderer.prototype.getHeight=function(b){return this.height};a.jqplot.CanvasTextRenderer.prototype.setHeight=function(b){if(!b){this.height=this.normalizedFontSize*this.pt2px}else{this.height=b}return this};a.jqplot.CanvasTextRenderer.prototype.letter=function(b){return this.letters[b]};a.jqplot.CanvasTextRenderer.prototype.ascent=function(){return this.normalizedFontSize};a.jqplot.CanvasTextRenderer.prototype.descent=function(){return 7*this.normalizedFontSize/25};a.jqplot.CanvasTextRenderer.prototype.measure=function(d,g){var f=0;var b=g.length;for(var e=0;e<b;e++){var h=this.letter(g.charAt(e));if(h){f+=h.width*this.normalizedFontSize/25*this.fontStretch}}return f};a.jqplot.CanvasTextRenderer.prototype.draw=function(s,n){var r=0;var o=this.height*0.72;var p=0;var l=n.length;var k=this.normalizedFontSize/25;s.save();var h,f;if((-Math.PI/2<=this.angle&&this.angle<=0)||(Math.PI*3/2<=this.angle&&this.angle<=Math.PI*2)){h=0;f=-Math.sin(this.angle)*this.width}else{if((0<this.angle&&this.angle<=Math.PI/2)||(-Math.PI*2<=this.angle&&this.angle<=-Math.PI*3/2)){h=Math.sin(this.angle)*this.height;f=0}else{if((-Math.PI<this.angle&&this.angle<-Math.PI/2)||(Math.PI<=this.angle&&this.angle<=Math.PI*3/2)){h=-Math.cos(this.angle)*this.width;f=-Math.sin(this.angle)*this.width-Math.cos(this.angle)*this.height}else{if((-Math.PI*3/2<this.angle&&this.angle<Math.PI)||(Math.PI/2<this.angle&&this.angle<Math.PI)){h=Math.sin(this.angle)*this.height-Math.cos(this.angle)*this.width;f=-Math.cos(this.angle)*this.height}}}}s.strokeStyle=this.fillStyle;s.fillStyle=this.fillStyle;s.translate(h,f);s.rotate(this.angle);s.lineCap="round";var t=(this.normalizedFontSize>30)?2:2+(30-this.normalizedFontSize)/20;s.lineWidth=t*k*this.fontWeight2Float(this.fontWeight);for(var g=0;g<l;g++){var m=this.letter(n.charAt(g));if(!m){continue}s.beginPath();var e=1;var b=0;for(var d=0;d<m.points.length;d++){var q=m.points[d];if(q[0]==-1&&q[1]==-1){e=1;continue}if(e){s.moveTo(r+q[0]*k*this.fontStretch,o-q[1]*k);e=false}else{s.lineTo(r+q[0]*k*this.fontStretch,o-q[1]*k)}}s.stroke();r+=m.width*k*this.fontStretch}s.restore();return p};a.jqplot.CanvasTextRenderer.prototype.letters={" ":{width:16,points:[]},"!":{width:10,points:[[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},'"':{width:16,points:[[4,21],[4,14],[-1,-1],[12,21],[12,14]]},"#":{width:21,points:[[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]]},"$":{width:20,points:[[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},"%":{width:24,points:[[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]]},"&":{width:26,points:[[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]]},"'":{width:10,points:[[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]]},"(":{width:14,points:[[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]]},")":{width:14,points:[[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]]},"*":{width:16,points:[[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]]},"+":{width:26,points:[[13,18],[13,0],[-1,-1],[4,9],[22,9]]},",":{width:10,points:[[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},"-":{width:18,points:[[6,9],[12,9]]},".":{width:10,points:[[5,2],[4,1],[5,0],[6,1],[5,2]]},"/":{width:22,points:[[20,25],[2,-7]]},"0":{width:20,points:[[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]]},"1":{width:20,points:[[6,17],[8,18],[11,21],[11,0]]},"2":{width:20,points:[[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]]},"3":{width:20,points:[[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},"4":{width:20,points:[[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]]},"5":{width:20,points:[[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},"6":{width:20,points:[[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]]},"7":{width:20,points:[[17,21],[7,0],[-1,-1],[3,21],[17,21]]},"8":{width:20,points:[[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]]},"9":{width:20,points:[[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]]},":":{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},";":{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},"<":{width:24,points:[[20,18],[4,9],[20,0]]},"=":{width:26,points:[[4,12],[22,12],[-1,-1],[4,6],[22,6]]},">":{width:24,points:[[4,18],[20,9],[4,0]]},"?":{width:18,points:[[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]]},"@":{width:27,points:[[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]]},A:{width:18,points:[[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]]},B:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]]},C:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]]},D:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]]},E:{width:19,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]]},F:{width:18,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]]},G:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]]},H:{width:22,points:[[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]]},I:{width:8,points:[[4,21],[4,0]]},J:{width:16,points:[[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]]},K:{width:21,points:[[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]]},L:{width:17,points:[[4,21],[4,0],[-1,-1],[4,0],[16,0]]},M:{width:24,points:[[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]]},N:{width:22,points:[[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]]},O:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]]},P:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]]},Q:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]]},R:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]]},S:{width:20,points:[[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},T:{width:16,points:[[8,21],[8,0],[-1,-1],[1,21],[15,21]]},U:{width:22,points:[[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]]},V:{width:18,points:[[1,21],[9,0],[-1,-1],[17,21],[9,0]]},W:{width:24,points:[[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]]},X:{width:20,points:[[3,21],[17,0],[-1,-1],[17,21],[3,0]]},Y:{width:18,points:[[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]]},Z:{width:20,points:[[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]]},"[":{width:14,points:[[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]]},"\\":{width:14,points:[[0,21],[14,-3]]},"]":{width:14,points:[[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]]},"^":{width:16,points:[[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]]},_:{width:16,points:[[0,-2],[16,-2]]},"`":{width:10,points:[[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]]},a:{width:19,points:[[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},b:{width:19,points:[[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},c:{width:18,points:[[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},d:{width:19,points:[[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},e:{width:18,points:[[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},f:{width:12,points:[[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]]},g:{width:19,points:[[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},h:{width:19,points:[[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},i:{width:8,points:[[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]]},j:{width:10,points:[[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]]},k:{width:17,points:[[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]]},l:{width:8,points:[[4,21],[4,0]]},m:{width:30,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]]},n:{width:19,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},o:{width:19,points:[[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]]},p:{width:19,points:[[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},q:{width:19,points:[[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},r:{width:13,points:[[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]]},s:{width:17,points:[[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]]},t:{width:12,points:[[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]]},u:{width:19,points:[[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]]},v:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0]]},w:{width:22,points:[[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]]},x:{width:17,points:[[3,14],[14,0],[-1,-1],[14,14],[3,0]]},y:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]]},z:{width:17,points:[[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]]},"{":{width:14,points:[[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]]},"|":{width:8,points:[[4,25],[4,-7]]},"}":{width:14,points:[[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]]},"~":{width:24,points:[[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]]}};a.jqplot.CanvasFontRenderer=function(b){b=b||{};if(!b.pt2px){b.pt2px=1.5}a.jqplot.CanvasTextRenderer.call(this,b)};a.jqplot.CanvasFontRenderer.prototype=new a.jqplot.CanvasTextRenderer({});a.jqplot.CanvasFontRenderer.prototype.constructor=a.jqplot.CanvasFontRenderer;a.jqplot.CanvasFontRenderer.prototype.measure=function(c,e){var d=this.fontSize+" "+this.fontFamily;c.save();c.font=d;var b=c.measureText(e).width;c.restore();return b};a.jqplot.CanvasFontRenderer.prototype.draw=function(e,g){var c=0;var h=this.height*0.72;e.save();var d,b;if((-Math.PI/2<=this.angle&&this.angle<=0)||(Math.PI*3/2<=this.angle&&this.angle<=Math.PI*2)){d=0;b=-Math.sin(this.angle)*this.width}else{if((0<this.angle&&this.angle<=Math.PI/2)||(-Math.PI*2<=this.angle&&this.angle<=-Math.PI*3/2)){d=Math.sin(this.angle)*this.height;b=0}else{if((-Math.PI<this.angle&&this.angle<-Math.PI/2)||(Math.PI<=this.angle&&this.angle<=Math.PI*3/2)){d=-Math.cos(this.angle)*this.width;b=-Math.sin(this.angle)*this.width-Math.cos(this.angle)*this.height}else{if((-Math.PI*3/2<this.angle&&this.angle<Math.PI)||(Math.PI/2<this.angle&&this.angle<Math.PI)){d=Math.sin(this.angle)*this.height-Math.cos(this.angle)*this.width;b=-Math.cos(this.angle)*this.height}}}}e.strokeStyle=this.fillStyle;e.fillStyle=this.fillStyle;var f=this.fontSize+" "+this.fontFamily;e.font=f;e.translate(d,b);e.rotate(this.angle);e.fillText(g,c,h);e.restore()}})(jQuery);
 
 
 
js/jqplot.dateAxisRenderer.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(h){h.jqplot.DateAxisRenderer=function(){h.jqplot.LinearAxisRenderer.call(this);this.date=new h.jsDate()};var c=1000;var e=60*c;var f=60*e;var l=24*f;var b=7*l;var j=30.4368499*l;var k=365.242199*l;var g=[31,28,31,30,31,30,31,30,31,30,31,30];var i=["%M:%S.%#N","%M:%S.%#N","%M:%S.%#N","%M:%S","%M:%S","%M:%S","%M:%S","%H:%M:%S","%H:%M:%S","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%a %H:%M","%a %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%v","%v","%v","%v","%v","%v","%v"];var m=[0.1*c,0.2*c,0.5*c,c,2*c,5*c,10*c,15*c,30*c,e,2*e,5*e,10*e,15*e,30*e,f,2*f,4*f,6*f,8*f,12*f,l,2*l,3*l,4*l,5*l,b,2*b];var d=[];function a(p,s,t){var o=Number.MAX_VALUE;var u,r,v;for(var q=0,n=m.length;q<n;q++){u=Math.abs(t-m[q]);if(u<o){o=u;r=m[q];v=i[q]}}return[r,v]}h.jqplot.DateAxisRenderer.prototype=new h.jqplot.LinearAxisRenderer();h.jqplot.DateAxisRenderer.prototype.constructor=h.jqplot.DateAxisRenderer;h.jqplot.DateTickFormatter=function(n,o){if(!n){n="%Y/%m/%d"}return h.jsDate.strftime(o,n)};h.jqplot.DateAxisRenderer.prototype.init=function(E){this.tickOptions.formatter=h.jqplot.DateTickFormatter;this.tickInset=0;this.drawBaseline=true;this.baselineWidth=null;this.baselineColor=null;this.daTickInterval=null;this._daTickInterval=null;h.extend(true,this,E);var C=this._dataBounds,u,x,D,y,A,z,o;for(var t=0;t<this._series.length;t++){u={intervals:[],frequencies:{},sortedIntervals:[],min:null,max:null,mean:null};x=0;D=this._series[t];y=D.data;A=D._plotData;z=D._stackData;o=0;for(var r=0;r<y.length;r++){if(this.name=="xaxis"||this.name=="x2axis"){y[r][0]=new h.jsDate(y[r][0]).getTime();A[r][0]=new h.jsDate(y[r][0]).getTime();z[r][0]=new h.jsDate(y[r][0]).getTime();if((y[r][0]!=null&&y[r][0]<C.min)||C.min==null){C.min=y[r][0]}if((y[r][0]!=null&&y[r][0]>C.max)||C.max==null){C.max=y[r][0]}if(r>0){o=Math.abs(y[r][0]-y[r-1][0]);u.intervals.push(o);if(u.frequencies.hasOwnProperty(o)){u.frequencies[o]+=1}else{u.frequencies[o]=1}}x+=o}else{y[r][1]=new h.jsDate(y[r][1]).getTime();A[r][1]=new h.jsDate(y[r][1]).getTime();z[r][1]=new h.jsDate(y[r][1]).getTime();if((y[r][1]!=null&&y[r][1]<C.min)||C.min==null){C.min=y[r][1]}if((y[r][1]!=null&&y[r][1]>C.max)||C.max==null){C.max=y[r][1]}if(r>0){o=Math.abs(y[r][1]-y[r-1][1]);u.intervals.push(o);if(u.frequencies.hasOwnProperty(o)){u.frequencies[o]+=1}else{u.frequencies[o]=1}}}x+=o}if(D.renderer.bands){if(D.renderer.bands.hiData.length){var w=D.renderer.bands.hiData;for(var r=0,q=w.length;r<q;r++){if(this.name==="xaxis"||this.name==="x2axis"){w[r][0]=new h.jsDate(w[r][0]).getTime();if((w[r][0]!=null&&w[r][0]>C.max)||C.max==null){C.max=w[r][0]}}else{w[r][1]=new h.jsDate(w[r][1]).getTime();if((w[r][1]!=null&&w[r][1]>C.max)||C.max==null){C.max=w[r][1]}}}}if(D.renderer.bands.lowData.length){var w=D.renderer.bands.lowData;for(var r=0,q=w.length;r<q;r++){if(this.name==="xaxis"||this.name==="x2axis"){w[r][0]=new h.jsDate(w[r][0]).getTime();if((w[r][0]!=null&&w[r][0]<C.min)||C.min==null){C.min=w[r][0]}}else{w[r][1]=new h.jsDate(w[r][1]).getTime();if((w[r][1]!=null&&w[r][1]<C.min)||C.min==null){C.min=w[r][1]}}}}}var B=0,v=0;for(var p in u.frequencies){u.sortedIntervals.push({interval:p,frequency:u.frequencies[p]})}u.sortedIntervals.sort(function(s,n){return n.frequency-s.frequency});u.min=h.jqplot.arrayMin(u.intervals);u.max=h.jqplot.arrayMax(u.intervals);u.mean=x/y.length;this._intervalStats.push(u);u=x=D=y=A=z=null}C=null};h.jqplot.DateAxisRenderer.prototype.reset=function(){this.min=this._options.min;this.max=this._options.max;this.tickInterval=this._options.tickInterval;this.numberTicks=this._options.numberTicks;this._autoFormatString="";if(this._overrideFormatString&&this.tickOptions&&this.tickOptions.formatString){this.tickOptions.formatString=""}this.daTickInterval=this._daTickInterval};h.jqplot.DateAxisRenderer.prototype.createTicks=function(p){var X=this._ticks;var L=this.ticks;var F=this.name;var H=this._dataBounds;var M=this._intervalStats;var n=(this.name.charAt(0)==="x")?this._plotDimensions.width:this._plotDimensions.height;var w;var ae,J;var y,x;var ad,aa;var s=30;var O=1;var U=null;if(this.tickInterval!=null){if(Number(this.tickInterval)){U=[Number(this.tickInterval),"seconds"]}else{if(typeof this.tickInterval=="string"){var ac=this.tickInterval.split(" ");if(ac.length==1){U=[1,ac[0]]}else{if(ac.length==2){U=[ac[0],ac[1]]}}}}}var v=this.tickInterval;ae=new h.jsDate((this.min!=null)?this.min:H.min).getTime();J=new h.jsDate((this.max!=null)?this.max:H.max).getTime();var A=p.plugins.cursor;if(A&&A._zoom&&A._zoom.zooming){this.min=null;this.max=null}var B=J-ae;if(this.tickOptions==null||!this.tickOptions.formatString){this._overrideFormatString=true}if(L.length){for(aa=0;aa<L.length;aa++){var P=L[aa];var Y=new this.tickRenderer(this.tickOptions);if(P.constructor==Array){Y.value=new h.jsDate(P[0]).getTime();Y.label=P[1];if(!this.showTicks){Y.showLabel=false;Y.showMark=false}else{if(!this.showTickMarks){Y.showMark=false}}Y.setTick(Y.value,this.name);this._ticks.push(Y)}else{Y.value=new h.jsDate(P).getTime();if(!this.showTicks){Y.showLabel=false;Y.showMark=false}else{if(!this.showTickMarks){Y.showMark=false}}Y.setTick(Y.value,this.name);this._ticks.push(Y)}}this.numberTicks=L.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value;this.daTickInterval=[(this.max-this.min)/(this.numberTicks-1)/1000,"seconds"]}else{if(this.min==null&&this.max==null&&H.min==H.max){var E=h.extend(true,{},this.tickOptions,{name:this.name,value:null});var T=300000;this.min=H.min-T;this.max=H.max+T;this.numberTicks=3;for(var aa=this.min;aa<=this.max;aa+=T){E.value=aa;var Y=new this.tickRenderer(E);if(this._overrideFormatString&&this._autoFormatString!=""){Y.formatString=this._autoFormatString}Y.showLabel=false;Y.showMark=false;this._ticks.push(Y)}if(this.showTicks){this._ticks[1].showLabel=true}if(this.showTickMarks){this._ticks[1].showTickMarks=true}}else{if(this.min==null&&this.max==null){var N=h.extend(true,{},this.tickOptions,{name:this.name,value:null});var ab,I;if(!this.tickInterval&&!this.numberTicks){var R=Math.max(n,s+1);var Z=115;if(this.tickRenderer===h.jqplot.CanvasAxisTickRenderer&&this.tickOptions.angle){Z=115-40*Math.abs(Math.sin(this.tickOptions.angle/180*Math.PI))}ab=Math.ceil((R-s)/Z+1);I=(J-ae)/(ab-1)}else{if(this.tickInterval){I=new h.jsDate(0).add(U[0],U[1]).getTime()}else{if(this.numberTicks){ab=this.numberTicks;I=(J-ae)/(ab-1)}}}if(I<=19*l){var Q=a(ae,J,I);var r=Q[0];this._autoFormatString=Q[1];ae=new h.jsDate(ae);ae=Math.floor((ae.getTime()-ae.getUtcOffset())/r)*r+ae.getUtcOffset();ab=Math.ceil((J-ae)/r)+1;this.min=ae;this.max=ae+(ab-1)*r;if(this.max<J){this.max+=r;ab+=1}this.tickInterval=r;this.numberTicks=ab;for(var aa=0;aa<ab;aa++){N.value=this.min+aa*r;Y=new this.tickRenderer(N);if(this._overrideFormatString&&this._autoFormatString!=""){Y.formatString=this._autoFormatString}if(!this.showTicks){Y.showLabel=false;Y.showMark=false}else{if(!this.showTickMarks){Y.showMark=false}}this._ticks.push(Y)}O=this.tickInterval}else{if(I<=9*j){this._autoFormatString="%v";var D=Math.round(I/j);if(D<1){D=1}else{if(D>6){D=6}}var V=new h.jsDate(ae).setDate(1).setHours(0,0,0,0);var q=new h.jsDate(J);var z=new h.jsDate(J).setDate(1).setHours(0,0,0,0);if(q.getTime()!==z.getTime()){z=z.add(1,"month")}var S=z.diff(V,"month");ab=Math.ceil(S/D)+1;this.min=V.getTime();this.max=V.clone().add((ab-1)*D,"month").getTime();this.numberTicks=ab;for(var aa=0;aa<ab;aa++){if(aa===0){N.value=V.getTime()}else{N.value=V.add(D,"month").getTime()}Y=new this.tickRenderer(N);if(this._overrideFormatString&&this._autoFormatString!=""){Y.formatString=this._autoFormatString}if(!this.showTicks){Y.showLabel=false;Y.showMark=false}else{if(!this.showTickMarks){Y.showMark=false}}this._ticks.push(Y)}O=D*j}else{this._autoFormatString="%v";var D=Math.round(I/k);if(D<1){D=1}var V=new h.jsDate(ae).setMonth(0,1).setHours(0,0,0,0);var z=new h.jsDate(J).add(1,"year").setMonth(0,1).setHours(0,0,0,0);var K=z.diff(V,"year");ab=Math.ceil(K/D)+1;this.min=V.getTime();this.max=V.clone().add((ab-1)*D,"year").getTime();this.numberTicks=ab;for(var aa=0;aa<ab;aa++){if(aa===0){N.value=V.getTime()}else{N.value=V.add(D,"year").getTime()}Y=new this.tickRenderer(N);if(this._overrideFormatString&&this._autoFormatString!=""){Y.formatString=this._autoFormatString}if(!this.showTicks){Y.showLabel=false;Y.showMark=false}else{if(!this.showTickMarks){Y.showMark=false}}this._ticks.push(Y)}O=D*k}}}else{if(F=="xaxis"||F=="x2axis"){n=this._plotDimensions.width}else{n=this._plotDimensions.height}if(this.min!=null&&this.max!=null&&this.numberTicks!=null){this.tickInterval=null}if(this.tickInterval!=null&&U!=null){this.daTickInterval=U}if(ae==J){var o=24*60*60*500;ae-=o;J+=o}B=J-ae;var G=2+parseInt(Math.max(0,n-100)/100,10);var W,C;W=(this.min!=null)?new h.jsDate(this.min).getTime():ae-B/2*(this.padMin-1);C=(this.max!=null)?new h.jsDate(this.max).getTime():J+B/2*(this.padMax-1);this.min=W;this.max=C;B=this.max-this.min;if(this.numberTicks==null){if(this.daTickInterval!=null){var u=new h.jsDate(this.max).diff(this.min,this.daTickInterval[1],true);this.numberTicks=Math.ceil(u/this.daTickInterval[0])+1;this.max=new h.jsDate(this.min).add((this.numberTicks-1)*this.daTickInterval[0],this.daTickInterval[1]).getTime()}else{if(n>200){this.numberTicks=parseInt(3+(n-200)/100,10)}else{this.numberTicks=2}}}O=B/(this.numberTicks-1)/1000;if(this.daTickInterval==null){this.daTickInterval=[O,"seconds"]}for(var aa=0;aa<this.numberTicks;aa++){var ae=new h.jsDate(this.min);ad=ae.add(aa*this.daTickInterval[0],this.daTickInterval[1]).getTime();var Y=new this.tickRenderer(this.tickOptions);if(!this.showTicks){Y.showLabel=false;Y.showMark=false}else{if(!this.showTickMarks){Y.showMark=false}}Y.setTick(ad,this.name);this._ticks.push(Y)}}}}if(this.tickInset){this.min=this.min-this.tickInset*O;this.max=this.max+this.tickInset*O}if(this._daTickInterval==null){this._daTickInterval=this.daTickInterval}X=null}})(jQuery);
 
 
 
js/jqplot.enhancedLegendRenderer.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(c){c.jqplot.EnhancedLegendRenderer=function(){c.jqplot.TableLegendRenderer.call(this)};c.jqplot.EnhancedLegendRenderer.prototype=new c.jqplot.TableLegendRenderer();c.jqplot.EnhancedLegendRenderer.prototype.constructor=c.jqplot.EnhancedLegendRenderer;c.jqplot.EnhancedLegendRenderer.prototype.init=function(d){this.numberRows=null;this.numberColumns=null;this.seriesToggle="normal";this.seriesToggleReplot=false;this.disableIEFading=true;c.extend(true,this,d);if(this.seriesToggle){c.jqplot.postDrawHooks.push(b)}};c.jqplot.EnhancedLegendRenderer.prototype.draw=function(m,y){var f=this;if(this.show){var r=this._series;var u;var w="position:absolute;";w+=(this.background)?"background:"+this.background+";":"";w+=(this.border)?"border:"+this.border+";":"";w+=(this.fontSize)?"font-size:"+this.fontSize+";":"";w+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";w+=(this.textColor)?"color:"+this.textColor+";":"";w+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";w+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";w+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";w+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=c('<table class="jqplot-table-legend" style="'+w+'"></table>');if(this.seriesToggle){this._elem.css("z-index","3")}var C=false,q=false,d,o;if(this.numberRows){d=this.numberRows;if(!this.numberColumns){o=Math.ceil(r.length/d)}else{o=this.numberColumns}}else{if(this.numberColumns){o=this.numberColumns;d=Math.ceil(r.length/this.numberColumns)}else{d=r.length;o=1}}var B,z,e,l,k,n,p,t,h,g;var v=0;for(B=r.length-1;B>=0;B--){if(o==1&&r[B]._stack||r[B].renderer.constructor==c.jqplot.BezierCurveRenderer){q=true}}for(B=0;B<d;B++){e=c(document.createElement("tr"));e.addClass("jqplot-table-legend");if(q){e.prependTo(this._elem)}else{e.appendTo(this._elem)}for(z=0;z<o;z++){if(v<r.length&&(r[v].show||r[v].showLabel)){u=r[v];n=this.labels[v]||u.label.toString();if(n){var x=u.color;if(!q){if(B>0){C=true}else{C=false}}else{if(B==d-1){C=false}else{C=true}}p=(C)?this.rowSpacing:"0";l=c(document.createElement("td"));l.addClass("jqplot-table-legend jqplot-table-legend-swatch");l.css({textAlign:"center",paddingTop:p});h=c(document.createElement("div"));h.addClass("jqplot-table-legend-swatch-outline");g=c(document.createElement("div"));g.addClass("jqplot-table-legend-swatch");g.css({backgroundColor:x,borderColor:x});l.append(h.append(g));k=c(document.createElement("td"));k.addClass("jqplot-table-legend jqplot-table-legend-label");k.css("paddingTop",p);if(this.escapeHtml){k.text(n)}else{k.html(n)}if(q){if(this.showLabels){k.prependTo(e)}if(this.showSwatches){l.prependTo(e)}}else{if(this.showSwatches){l.appendTo(e)}if(this.showLabels){k.appendTo(e)}}if(this.seriesToggle){var A;if(typeof(this.seriesToggle)==="string"||typeof(this.seriesToggle)==="number"){if(!c.jqplot.use_excanvas||!this.disableIEFading){A=this.seriesToggle}}if(this.showSwatches){l.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);l.addClass("jqplot-seriesToggle")}if(this.showLabels){k.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);k.addClass("jqplot-seriesToggle")}if(!u.show&&u.showLabel){l.addClass("jqplot-series-hidden");k.addClass("jqplot-series-hidden")}}C=true}}v++}l=k=h=g=null}}return this._elem};var a=function(j){var i=j.data,m=i.series,k=i.replot,h=i.plot,f=i.speed,l=m.index,g=false;if(m.canvas._elem.is(":hidden")||!m.show){g=true}var e=function(){if(k){var n={};if(c.isPlainObject(k)){c.extend(true,n,k)}h.replot(n);if(g&&f){var d=h.series[l];if(d.shadowCanvas._elem){d.shadowCanvas._elem.hide().fadeIn(f)}d.canvas._elem.hide().fadeIn(f);d.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+d.index).hide().fadeIn(f)}}else{var d=h.series[l];if(d.canvas._elem.is(":hidden")||!d.show){if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).addClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).addClass("jqplot-series-hidden")}}else{if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).removeClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).removeClass("jqplot-series-hidden")}}}};m.toggleDisplay(j,e)};var b=function(){if(this.legend.renderer.constructor==c.jqplot.EnhancedLegendRenderer&&this.legend.seriesToggle){var d=this.legend._elem.detach();this.eventCanvas._elem.after(d)}}})(jQuery);
 
 
 
js/jqplot.highlighter.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(d){d.jqplot.eventListenerHooks.push(["jqplotMouseMove",f]);d.jqplot.Highlighter=function(h){this.show=d.jqplot.config.enablePlugins;this.markerRenderer=new d.jqplot.MarkerRenderer({shadow:false});this.showMarker=true;this.lineWidthAdjust=2.5;this.sizeAdjust=5;this.showTooltip=true;this.tooltipLocation="nw";this.fadeTooltip=true;this.tooltipFadeSpeed="fast";this.tooltipOffset=2;this.tooltipAxes="both";this.tooltipSeparator=", ";this.tooltipContentEditor=null;this.useAxesFormatters=true;this.tooltipFormatString="%.5P";this.formatString=null;this.yvalues=1;this.bringSeriesToFront=false;this._tooltipElem;this.isHighlighting=false;this.currentNeighbor=null;d.extend(true,this,h)};var b=["nw","n","ne","e","se","s","sw","w"];var e={nw:0,n:1,ne:2,e:3,se:4,s:5,sw:6,w:7};var c=["se","s","sw","w","nw","n","ne","e"];d.jqplot.Highlighter.init=function(k,j,i){var h=i||{};this.plugins.highlighter=new d.jqplot.Highlighter(h.highlighter)};d.jqplot.Highlighter.parseOptions=function(i,h){this.showHighlight=true};d.jqplot.Highlighter.postPlotDraw=function(){if(this.plugins.highlighter&&this.plugins.highlighter.highlightCanvas){this.plugins.highlighter.highlightCanvas.resetCanvas();this.plugins.highlighter.highlightCanvas=null}if(this.plugins.highlighter&&this.plugins.highlighter._tooltipElem){this.plugins.highlighter._tooltipElem.emptyForce();this.plugins.highlighter._tooltipElem=null}this.plugins.highlighter.highlightCanvas=new d.jqplot.GenericCanvas();this.eventCanvas._elem.before(this.plugins.highlighter.highlightCanvas.createElement(this._gridPadding,"jqplot-highlight-canvas",this._plotDimensions,this));this.plugins.highlighter.highlightCanvas.setContext();var h=document.createElement("div");this.plugins.highlighter._tooltipElem=d(h);h=null;this.plugins.highlighter._tooltipElem.addClass("jqplot-highlighter-tooltip");this.plugins.highlighter._tooltipElem.css({position:"absolute",display:"none"});this.eventCanvas._elem.before(this.plugins.highlighter._tooltipElem)};d.jqplot.preInitHooks.push(d.jqplot.Highlighter.init);d.jqplot.preParseSeriesOptionsHooks.push(d.jqplot.Highlighter.parseOptions);d.jqplot.postDrawHooks.push(d.jqplot.Highlighter.postPlotDraw);function a(m,o){var j=m.plugins.highlighter;var p=m.series[o.seriesIndex];var h=p.markerRenderer;var i=j.markerRenderer;i.style=h.style;i.lineWidth=h.lineWidth+j.lineWidthAdjust;i.size=h.size+j.sizeAdjust;var l=d.jqplot.getColorComponents(h.color);var n=[l[0],l[1],l[2]];var k=(l[3]>=0.6)?l[3]*0.6:l[3]*(2-l[3]);i.color="rgba("+n[0]+","+n[1]+","+n[2]+","+k+")";i.init();i.draw(p.gridData[o.pointIndex][0],p.gridData[o.pointIndex][1],j.highlightCanvas._ctx)}function g(A,q,m){var k=A.plugins.highlighter;var D=k._tooltipElem;var r=q.highlighter||{};var t=d.extend(true,{},k,r);if(t.useAxesFormatters){var w=q._xaxis._ticks[0].formatter;var h=q._yaxis._ticks[0].formatter;var E=q._xaxis._ticks[0].formatString;var s=q._yaxis._ticks[0].formatString;var z;var u=w(E,m.data[0]);var l=[];for(var B=1;B<t.yvalues+1;B++){l.push(h(s,m.data[B]))}if(typeof t.formatString==="string"){switch(t.tooltipAxes){case"both":case"xy":l.unshift(u);l.unshift(t.formatString);z=d.jqplot.sprintf.apply(d.jqplot.sprintf,l);break;case"yx":l.push(u);l.unshift(t.formatString);z=d.jqplot.sprintf.apply(d.jqplot.sprintf,l);break;case"x":z=d.jqplot.sprintf.apply(d.jqplot.sprintf,[t.formatString,u]);break;case"y":l.unshift(t.formatString);z=d.jqplot.sprintf.apply(d.jqplot.sprintf,l);break;default:l.unshift(u);l.unshift(t.formatString);z=d.jqplot.sprintf.apply(d.jqplot.sprintf,l);break}}else{switch(t.tooltipAxes){case"both":case"xy":z=u;for(var B=0;B<l.length;B++){z+=t.tooltipSeparator+l[B]}break;case"yx":z="";for(var B=0;B<l.length;B++){z+=l[B]+t.tooltipSeparator}z+=u;break;case"x":z=u;break;case"y":z=l.join(t.tooltipSeparator);break;default:z=u;for(var B=0;B<l.length;B++){z+=t.tooltipSeparator+l[B]}break}}}else{var z;if(typeof t.formatString==="string"){z=d.jqplot.sprintf.apply(d.jqplot.sprintf,[t.formatString].concat(m.data))}else{if(t.tooltipAxes=="both"||t.tooltipAxes=="xy"){z=d.jqplot.sprintf(t.tooltipFormatString,m.data[0])+t.tooltipSeparator+d.jqplot.sprintf(t.tooltipFormatString,m.data[1])}else{if(t.tooltipAxes=="yx"){z=d.jqplot.sprintf(t.tooltipFormatString,m.data[1])+t.tooltipSeparator+d.jqplot.sprintf(t.tooltipFormatString,m.data[0])}else{if(t.tooltipAxes=="x"){z=d.jqplot.sprintf(t.tooltipFormatString,m.data[0])}else{if(t.tooltipAxes=="y"){z=d.jqplot.sprintf(t.tooltipFormatString,m.data[1])}}}}}}if(d.isFunction(t.tooltipContentEditor)){z=t.tooltipContentEditor(z,m.seriesIndex,m.pointIndex,A)}D.html(z);var C={x:m.gridData[0],y:m.gridData[1]};var v=0;var j=0.707;if(q.markerRenderer.show==true){v=(q.markerRenderer.size+t.sizeAdjust)/2}var o=b;if(q.fillToZero&&q.fill&&m.data[1]<0){o=c}switch(o[e[t.tooltipLocation]]){case"nw":var p=C.x+A._gridPadding.left-D.outerWidth(true)-t.tooltipOffset-j*v;var n=C.y+A._gridPadding.top-t.tooltipOffset-D.outerHeight(true)-j*v;break;case"n":var p=C.x+A._gridPadding.left-D.outerWidth(true)/2;var n=C.y+A._gridPadding.top-t.tooltipOffset-D.outerHeight(true)-v;break;case"ne":var p=C.x+A._gridPadding.left+t.tooltipOffset+j*v;var n=C.y+A._gridPadding.top-t.tooltipOffset-D.outerHeight(true)-j*v;break;case"e":var p=C.x+A._gridPadding.left+t.tooltipOffset+v;var n=C.y+A._gridPadding.top-D.outerHeight(true)/2;break;case"se":var p=C.x+A._gridPadding.left+t.tooltipOffset+j*v;var n=C.y+A._gridPadding.top+t.tooltipOffset+j*v;break;case"s":var p=C.x+A._gridPadding.left-D.outerWidth(true)/2;var n=C.y+A._gridPadding.top+t.tooltipOffset+v;break;case"sw":var p=C.x+A._gridPadding.left-D.outerWidth(true)-t.tooltipOffset-j*v;var n=C.y+A._gridPadding.top+t.tooltipOffset+j*v;break;case"w":var p=C.x+A._gridPadding.left-D.outerWidth(true)-t.tooltipOffset-v;var n=C.y+A._gridPadding.top-D.outerHeight(true)/2;break;default:var p=C.x+A._gridPadding.left-D.outerWidth(true)-t.tooltipOffset-j*v;var n=C.y+A._gridPadding.top-t.tooltipOffset-D.outerHeight(true)-j*v;break}D.css("left",p);D.css("top",n);if(t.fadeTooltip){D.stop(true,true).fadeIn(t.tooltipFadeSpeed)}else{D.show()}D=null}function f(n,j,i,p,l){var h=l.plugins.highlighter;var m=l.plugins.cursor;if(h.show){if(p==null&&h.isHighlighting){var o=jQuery.Event("jqplotHighlighterUnhighlight");l.target.trigger(o);var q=h.highlightCanvas._ctx;q.clearRect(0,0,q.canvas.width,q.canvas.height);if(h.fadeTooltip){h._tooltipElem.fadeOut(h.tooltipFadeSpeed)}else{h._tooltipElem.hide()}if(h.bringSeriesToFront){l.restorePreviousSeriesOrder()}h.isHighlighting=false;h.currentNeighbor=null;q=null}else{if(p!=null&&l.series[p.seriesIndex].showHighlight&&!h.isHighlighting){var o=jQuery.Event("jqplotHighlighterHighlight");o.which=n.which;o.pageX=n.pageX;o.pageY=n.pageY;var k=[p.seriesIndex,p.pointIndex,p.data,l];l.target.trigger(o,k);h.isHighlighting=true;h.currentNeighbor=p;if(h.showMarker){a(l,p)}if(l.series[p.seriesIndex].show&&h.showTooltip&&(!m||!m._zoom.started)){g(l,l.series[p.seriesIndex],p)}if(h.bringSeriesToFront){l.moveSeriesToFront(p.seriesIndex)}}else{if(p!=null&&h.isHighlighting&&h.currentNeighbor!=p){if(l.series[p.seriesIndex].showHighlight){var q=h.highlightCanvas._ctx;q.clearRect(0,0,q.canvas.width,q.canvas.height);h.isHighlighting=true;h.currentNeighbor=p;if(h.showMarker){a(l,p)}if(l.series[p.seriesIndex].show&&h.showTooltip&&(!m||!m._zoom.started)){g(l,l.series[p.seriesIndex],p)}if(h.bringSeriesToFront){l.moveSeriesToFront(p.seriesIndex)}}}}}}}})(jQuery);
 
 
 
js/jqplot.pieRenderer.min.js DELETED
@@ -1,3 +0,0 @@
1
- /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- */(function(e){e.jqplot.PieRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.PieRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.PieRenderer.prototype.constructor=e.jqplot.PieRenderer;e.jqplot.PieRenderer.prototype.init=function(q,u){this.diameter=null;this.padding=20;this.sliceMargin=0;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this.dataLabelPositionFactor=0.52;this.dataLabelNudge=2;this.dataLabelCenterOn=true;this.startAngle=0;this.tickRenderer=e.jqplot.PieTickRenderer;this._drawData=true;this._type="pie";if(q.highlightMouseDown&&q.highlightMouseOver==null){q.highlightMouseOver=false}e.extend(true,this,q);if(this.sliceMargin<0){this.sliceMargin=0}this._diameter=null;this._radius=null;this._sliceAngles=[];this._highlightedPoint=null;if(this.highlightColors.length==0){for(var s=0;s<this.seriesColors.length;s++){var r=e.jqplot.getColorComponents(this.seriesColors[s]);var o=[r[0],r[1],r[2]];var t=o[0]+o[1]+o[2];for(var p=0;p<3;p++){o[p]=(t>570)?o[p]*0.8:o[p]+0.3*(255-o[p]);o[p]=parseInt(o[p],10)}this.highlightColors.push("rgb("+o[0]+","+o[1]+","+o[2]+")")}}this.highlightColorGenerator=new e.jqplot.ColorGenerator(this.highlightColors);u.postParseOptionsHooks.addOnce(m);u.postInitHooks.addOnce(g);u.eventListenerHooks.addOnce("jqplotMouseMove",b);u.eventListenerHooks.addOnce("jqplotMouseDown",a);u.eventListenerHooks.addOnce("jqplotMouseUp",l);u.eventListenerHooks.addOnce("jqplotClick",f);u.eventListenerHooks.addOnce("jqplotRightClick",n);u.postDrawHooks.addOnce(i)};e.jqplot.PieRenderer.prototype.setGridData=function(t){var p=[];var u=[];var o=this.startAngle/180*Math.PI;var s=0;this._drawData=false;for(var r=0;r<this.data.length;r++){if(this.data[r][1]!=0){this._drawData=true}p.push(this.data[r][1]);u.push([this.data[r][0]]);if(r>0){p[r]+=p[r-1]}s+=this.data[r][1]}var q=Math.PI*2/p[p.length-1];for(var r=0;r<p.length;r++){u[r][1]=p[r]*q;u[r][2]=this.data[r][1]/s}this.gridData=u};e.jqplot.PieRenderer.prototype.makeGridData=function(t,u){var p=[];var v=[];var s=0;var o=this.startAngle/180*Math.PI;this._drawData=false;for(var r=0;r<t.length;r++){if(this.data[r][1]!=0){this._drawData=true}p.push(t[r][1]);v.push([t[r][0]]);if(r>0){p[r]+=p[r-1]}s+=t[r][1]}var q=Math.PI*2/p[p.length-1];for(var r=0;r<p.length;r++){v[r][1]=p[r]*q;v[r][2]=t[r][1]/s}return v};function h(o){return Math.sin((o-(o-Math.PI)/8/Math.PI)/2)}function j(u,t,o,v,r){var w=0;var q=t-u;var s=Math.abs(q);var p=o;if(v==false){p+=r}if(p>0&&s>0.01&&s<6.282){w=parseFloat(p)/2/h(q)}return w}e.jqplot.PieRenderer.prototype.drawSlice=function(B,z,y,u,w){if(this._drawData){var p=this._radius;var A=this.fill;var x=this.lineWidth;var s=this.sliceMargin;if(this.fill==false){s+=this.lineWidth}B.save();B.translate(this._center[0],this._center[1]);var D=j(z,y,this.sliceMargin,this.fill,this.lineWidth);var o=D*Math.cos((z+y)/2);var C=D*Math.sin((z+y)/2);if((y-z)<=Math.PI){p-=D}else{p+=D}B.translate(o,C);if(w){for(var v=0,t=this.shadowDepth;v<t;v++){B.save();B.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));q(p)}for(var v=0,t=this.shadowDepth;v<t;v++){B.restore()}}else{q(p)}B.restore()}function q(r){if(y>6.282+this.startAngle){y=6.282+this.startAngle;if(z>y){z=6.281+this.startAngle}}if(z>=y){return}B.beginPath();B.fillStyle=u;B.strokeStyle=u;B.lineWidth=x;B.arc(0,0,r,z,y,false);B.lineTo(0,0);B.closePath();if(A){B.fill()}else{B.stroke()}}};e.jqplot.PieRenderer.prototype.draw=function(B,z,E,o){var W;var H=(E!=undefined)?E:{};var t=0;var s=0;var N=1;var L=new e.jqplot.ColorGenerator(this.seriesColors);if(E.legendInfo&&E.legendInfo.placement=="insideGrid"){var J=E.legendInfo;switch(J.location){case"nw":t=J.width+J.xoffset;break;case"w":t=J.width+J.xoffset;break;case"sw":t=J.width+J.xoffset;break;case"ne":t=J.width+J.xoffset;N=-1;break;case"e":t=J.width+J.xoffset;N=-1;break;case"se":t=J.width+J.xoffset;N=-1;break;case"n":s=J.height+J.yoffset;break;case"s":s=J.height+J.yoffset;N=-1;break;default:break}}var K=(H.shadow!=undefined)?H.shadow:this.shadow;var A=(H.fill!=undefined)?H.fill:this.fill;var C=B.canvas.width;var I=B.canvas.height;var Q=C-t-2*this.padding;var X=I-s-2*this.padding;var M=Math.min(Q,X);var Y=M;this._sliceAngles=[];var v=this.sliceMargin;if(this.fill==false){v+=this.lineWidth}var q;var G=0;var R,aa,Z,ab;var D=this.startAngle/180*Math.PI;for(var W=0,V=z.length;W<V;W++){aa=(W==0)?D:z[W-1][1]+D;Z=z[W][1]+D;this._sliceAngles.push([aa,Z]);q=j(aa,Z,this.sliceMargin,this.fill,this.lineWidth);if(Math.abs(Z-aa)>Math.PI){G=Math.max(q,G)}}if(this.diameter!=null&&this.diameter>0){this._diameter=this.diameter-2*G}else{this._diameter=Y-2*G}if(this._diameter<6){e.jqplot.log("Diameter of pie too small, not rendering.");return}var S=this._radius=this._diameter/2;this._center=[(C-N*t)/2+N*t+G*Math.cos(D),(I-N*s)/2+N*s+G*Math.sin(D)];if(this.shadow){for(var W=0,V=z.length;W<V;W++){ab="rgba(0,0,0,"+this.shadowAlpha+")";this.renderer.drawSlice.call(this,B,this._sliceAngles[W][0],this._sliceAngles[W][1],ab,true)}}for(var W=0;W<z.length;W++){this.renderer.drawSlice.call(this,B,this._sliceAngles[W][0],this._sliceAngles[W][1],L.next(),false);if(this.showDataLabels&&z[W][2]*100>=this.dataLabelThreshold){var F,U=(this._sliceAngles[W][0]+this._sliceAngles[W][1])/2,T;if(this.dataLabels=="label"){F=this.dataLabelFormatString||"%s";T=e.jqplot.sprintf(F,z[W][0])}else{if(this.dataLabels=="value"){F=this.dataLabelFormatString||"%d";T=e.jqplot.sprintf(F,this.data[W][1])}else{if(this.dataLabels=="percent"){F=this.dataLabelFormatString||"%d%%";T=e.jqplot.sprintf(F,z[W][2]*100)}else{if(this.dataLabels.constructor==Array){F=this.dataLabelFormatString||"%s";T=e.jqplot.sprintf(F,this.dataLabels[W])}}}}var p=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var P=this._center[0]+Math.cos(U)*p+this.canvas._offsets.left;var O=this._center[1]+Math.sin(U)*p+this.canvas._offsets.top;var u=e('<div class="jqplot-pie-series jqplot-data-label" style="position:absolute;">'+T+"</div>").insertBefore(o.eventCanvas._elem);if(this.dataLabelCenterOn){P-=u.width()/2;O-=u.height()/2}else{P-=u.width()*Math.sin(U/2);O-=u.height()/2}P=Math.round(P);O=Math.round(O);u.css({left:P,top:O})}}};e.jqplot.PieAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.PieAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.PieAxisRenderer.prototype.constructor=e.jqplot.PieAxisRenderer;e.jqplot.PieAxisRenderer.prototype.init=function(o){this.tickRenderer=e.jqplot.PieTickRenderer;e.extend(true,this,o);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.PieLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.PieLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.PieLegendRenderer.prototype.constructor=e.jqplot.PieLegendRenderer;e.jqplot.PieLegendRenderer.prototype.init=function(o){this.numberRows=null;this.numberColumns=null;e.extend(true,this,o)};e.jqplot.PieLegendRenderer.prototype.draw=function(){var r=this;if(this.show){var B=this._series;this._elem=e(document.createElement("table"));this._elem.addClass("jqplot-table-legend");var E={position:"absolute"};if(this.background){E.background=this.background}if(this.border){E.border=this.border}if(this.fontSize){E.fontSize=this.fontSize}if(this.fontFamily){E.fontFamily=this.fontFamily}if(this.textColor){E.textColor=this.textColor}if(this.marginTop!=null){E.marginTop=this.marginTop}if(this.marginBottom!=null){E.marginBottom=this.marginBottom}if(this.marginLeft!=null){E.marginLeft=this.marginLeft}if(this.marginRight!=null){E.marginRight=this.marginRight}this._elem.css(E);var I=false,A=false,o,y;var C=B[0];var p=new e.jqplot.ColorGenerator(C.seriesColors);if(C.show){var J=C.data;if(this.numberRows){o=this.numberRows;if(!this.numberColumns){y=Math.ceil(J.length/o)}else{y=this.numberColumns}}else{if(this.numberColumns){y=this.numberColumns;o=Math.ceil(J.length/this.numberColumns)}else{o=J.length;y=1}}var H,G;var q,w,v;var x,z,F;var D=0;var u,t;for(H=0;H<o;H++){q=e(document.createElement("tr"));q.addClass("jqplot-table-legend");if(A){q.prependTo(this._elem)}else{q.appendTo(this._elem)}for(G=0;G<y;G++){if(D<J.length){x=this.labels[D]||J[D][0].toString();F=p.next();if(!A){if(H>0){I=true}else{I=false}}else{if(H==o-1){I=false}else{I=true}}z=(I)?this.rowSpacing:"0";w=e(document.createElement("td"));w.addClass("jqplot-table-legend jqplot-table-legend-swatch");w.css({textAlign:"center",paddingTop:z});u=e(document.createElement("div"));u.addClass("jqplot-table-legend-swatch-outline");t=e(document.createElement("div"));t.addClass("jqplot-table-legend-swatch");t.css({backgroundColor:F,borderColor:F});w.append(u.append(t));v=e(document.createElement("td"));v.addClass("jqplot-table-legend jqplot-table-legend-label");v.css("paddingTop",z);if(this.escapeHtml){v.text(x)}else{v.html(x)}if(A){v.prependTo(q);w.prependTo(q)}else{w.appendTo(q);v.appendTo(q)}I=true}D++}}}}return this._elem};e.jqplot.PieRenderer.prototype.handleMove=function(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];r.target.trigger("jqplotDataMouseOver",o);if(r.series[o[0]].highlightMouseOver&&!(o[0]==r.plugins.pieRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){r.target.trigger("jqplotDataHighlight",o);d(r,o[0],o[1])}}else{if(s==null){k(r)}}};function c(s,r,p){p=p||{};p.axesDefaults=p.axesDefaults||{};p.legend=p.legend||{};p.seriesDefaults=p.seriesDefaults||{};var o=false;if(p.seriesDefaults.renderer==e.jqplot.PieRenderer){o=true}else{if(p.series){for(var q=0;q<p.series.length;q++){if(p.series[q].renderer==e.jqplot.PieRenderer){o=true}}}}if(o){p.axesDefaults.renderer=e.jqplot.PieAxisRenderer;p.legend.renderer=e.jqplot.PieLegendRenderer;p.legend.preDraw=true;p.seriesDefaults.pointLabels={show:false}}}function g(r,q,o){for(var p=0;p<this.series.length;p++){if(this.series[p].renderer.constructor==e.jqplot.PieRenderer){if(this.series[p].highlightMouseOver){this.series[p].highlightMouseDown=false}}}}function m(o){for(var p=0;p<this.series.length;p++){this.series[p].seriesColors=this.seriesColors;this.series[p].colorGenerator=e.jqplot.colorGenerator}}function d(t,r,q){var p=t.series[r];var o=t.plugins.pieRenderer.highlightCanvas;o._ctx.clearRect(0,0,o._ctx.canvas.width,o._ctx.canvas.height);p._highlightedPoint=q;t.plugins.pieRenderer.highlightedSeriesIndex=r;p.renderer.drawSlice.call(p,o._ctx,p._sliceAngles[q][0],p._sliceAngles[q][1],p.highlightColorGenerator.get(q),false)}function k(q){var o=q.plugins.pieRenderer.highlightCanvas;o._ctx.clearRect(0,0,o._ctx.canvas.width,o._ctx.canvas.height);for(var p=0;p<q.series.length;p++){q.series[p]._highlightedPoint=null}q.plugins.pieRenderer.highlightedSeriesIndex=null;q.target.trigger("jqplotDataUnhighlight")}function b(s,r,v,u,t){if(u){var q=[u.seriesIndex,u.pointIndex,u.data];var p=jQuery.Event("jqplotDataMouseOver");p.pageX=s.pageX;p.pageY=s.pageY;t.target.trigger(p,q);if(t.series[q[0]].highlightMouseOver&&!(q[0]==t.plugins.pieRenderer.highlightedSeriesIndex&&q[1]==t.series[q[0]]._highlightedPoint)){var o=jQuery.Event("jqplotDataHighlight");o.which=s.which;o.pageX=s.pageX;o.pageY=s.pageY;t.target.trigger(o,q);d(t,q[0],q[1])}}else{if(u==null){k(t)}}}function a(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];if(s.series[p[0]].highlightMouseDown&&!(p[0]==s.plugins.pieRenderer.highlightedSeriesIndex&&p[1]==s.series[p[0]]._highlightedPoint)){var o=jQuery.Event("jqplotDataHighlight");o.which=r.which;o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p);d(s,p[0],p[1])}}else{if(t==null){k(s)}}}function l(q,p,t,s,r){var o=r.plugins.pieRenderer.highlightedSeriesIndex;if(o!=null&&r.series[o].highlightMouseDown){k(r)}}function f(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var o=jQuery.Event("jqplotDataClick");o.which=r.which;o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p)}}function n(s,r,v,u,t){if(u){var q=[u.seriesIndex,u.pointIndex,u.data];var o=t.plugins.pieRenderer.highlightedSeriesIndex;if(o!=null&&t.series[o].highlightMouseDown){k(t)}var p=jQuery.Event("jqplotDataRightClick");p.which=s.which;p.pageX=s.pageX;p.pageY=s.pageY;t.target.trigger(p,q)}}function i(){if(this.plugins.pieRenderer&&this.plugins.pieRenderer.highlightCanvas){this.plugins.pieRenderer.highlightCanvas.resetCanvas();this.plugins.pieRenderer.highlightCanvas=null}this.plugins.pieRenderer={highlightedSeriesIndex:null};this.plugins.pieRenderer.highlightCanvas=new e.jqplot.GenericCanvas();var p=e(this.targetId+" .jqplot-data-label");if(p.length){e(p[0]).before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-pieRenderer-highlight-canvas",this._plotDimensions,this))}else{this.eventCanvas._elem.before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-pieRenderer-highlight-canvas",this._plotDimensions,this))}var o=this.plugins.pieRenderer.highlightCanvas.setContext();this.eventCanvas._elem.bind("mouseleave",{plot:this},function(q){k(q.data.plot)})}e.jqplot.preInitHooks.push(c);e.jqplot.PieTickRenderer=function(){e.jqplot.AxisTickRenderer.call(this)};e.jqplot.PieTickRenderer.prototype=new e.jqplot.AxisTickRenderer();e.jqplot.PieTickRenderer.prototype.constructor=e.jqplot.PieTickRenderer})(jQuery);
 
 
 
js/jquery.jqplot.min.js DELETED
@@ -1,5 +0,0 @@
1
- /* jqPlot 1.0.8r1250.1 | (c) 2009-2013 Chris Leonello | jplot.com
2
- jsDate | (c) 2010-2013 Chris Leonello
3
- DST Patched for add/diff date functions.
4
- */
5
- eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(26($){14 322;$.348.574=26(){51(14 17=0,132;(132=$(13)[17])!=18;17++){15(132.1182===1){$.1672(132.936("*"))}15($.22.553){132.1678=""}27{869(132.886){132.1361(132.886)}}132=18}37 $(13)};$.348.1343=26(484){869(484.886){13.1343(484.886);484.1361(484.886)}};$.348.22=26(){14 891=[];14 39=[];51(14 17=0,94=261.41;17<94;17++){15($.462(261[17])){891.103(261[17])}27 15($.723(261[17])){39.103(261[17])}}37 13.580(26(198){14 780,67,$13=$(13),1002=891.41,965=39.41,44,58;15(198<1002){44=891[198]}27{44=1002?891[1002-1]:18}15(198<965){58=39[198]}27{58=965?39[965-1]:18}780=$13.506(\'1285\');15(780===322){780=\'1664\'+$.22.1497++;$13.506(\'1285\',780)}67=$.22(780,44,58);$13.44(\'22\',67)})};$.22=26(91,44,39){14 738=18,368=18;15(261.41===3){738=44;368=39}27 15(261.41===2){15($.462(44)){738=44}27 15($.723(44)){368=44}}15(738===18&&368!==18&&368.44){738=368.44}14 67=86 1172();$(\'#\'+91).925(\'22-991\');15($.22.271.1424){1653{67.231(91,738,368);67.129();67.701.231.108(67);37 67}1644(202){14 1279=$.22.271.1418||202.1294;$(\'#\'+91).419(\'<409 900="22-991-1294">\'+1279+\'</409>\');$(\'#\'+91).401(\'22-991\');276.765(91).311.473=$.22.271.1393;276.765(91).311.551=$.22.271.1395;276.765(91).311.308=$.22.271.1390;276.765(91).311.296=$.22.271.1397;276.765(91).311.1498=$.22.271.1404;276.765(91).311.1184=$.22.271.1402}}27{67.231(91,738,368);67.129();67.701.231.108(67);37 67}};$.22.1292="1.0.8";$.22.1641="1250";$.22.1497=1;$.22.415=26(){15(266 $.22.415.612==\'322\'){$.22.415.612=[];$.22.415.833=[]}14 766=[];13.1082=26(){14 120;14 1096=52;15(!$.22.553){51(14 17=0,94=$.22.415.612.41;17<94;17++){15($.22.415.833[17]===52){1096=56;120=$.22.415.612[17];$.22.415.833[17]=56;766.103(17);83}}}15(1096){120=276.309(\'120\');766.103($.22.415.612.41);$.22.415.612.103(120);$.22.415.833.103(56)}37 120};13.1101=26(120){15($.22.553){37 345.471.1650(120)}37 120};13.1079=26(){51(14 17=0,94=766.41;17<94;17++){13.1470(766[17])}766=[]};13.1470=26(194){15($.22.553&&345.471.560!==322){345.471.560($.22.415.612[194]);$.22.415.612[194]=18}27{14 120=$.22.415.612[194];120.680(\'859\').427(0,0,120.137,120.141);$(120).1105().1410(\'900\').1410(\'311\');$(120).68({97:\'\',115:\'\',274:\'\'});120.137=0;120.141=0;$.22.415.833[194]=52}}};$.22.522=26(){15(345.1048){345.1048.522.422(345.1048,261)}};$.22.271={1485:56,1198:56,1453:300,1452:400,1627:56,1630:86 277(86 277().564()*1017),1418:\'\',1393:\'\',1395:\'\',1390:\'\',1397:\'\',1404:\'\',1402:\'\',1424:56,956:"%.1449",1138:["#1699","#1708","#1674","#1670","#1671","#1689","#1690","#1691","#1692","#1617","#1666","#1703","#1696","#1654","#1710","#1681"],1411:["#1677","#1626","#1623","#1658","#1657","#1642","#1646","#1648","#1647","#1649","#1652","#1663","#1638","#1619","#1618","#1714"],1117:4,1120:4,1374:2.5,1712:\'22/745/\',1713:\'22/745/356/\'};$.22.1388=26(607){37 55.111.422(55,607)};$.22.1391=26(607){37 55.98.422(55,607)};$.22.1198=$.22.271.1198;$.22.849=26(){15(266 $.22.849.483==\'322\'){$.22.849.483=!!276.309(\'120\').680}37 $.22.849.483};$.22.853=26(){15(266 $.22.853.483==\'322\'){15(345.471!==322&&345.471.1673>887){$.22.853.483=52}27{$.22.853.483=!!(276.309(\'120\').680&&266 276.309(\'120\').680(\'859\').817==\'26\')}}37 $.22.853.483};$.22.553=((!$.1203.1669||!$.1203.1679||!$1203.1628)&&!$.22.849())?52:56;$.22.545=[];$.22.529=[];$.22.809=[];$.22.807=[];$.22.811=[];$.22.590=[];$.22.831=[];$.22.1040=[];$.22.1032=[];$.22.952=[];$.22.534=[];$.22.536=[];$.22.808=[];$.22.812=[];$.22.472=[];$.22.1035=[];$.22.1025=[];$.22.321=26(){13.48;13.613;13.950;13.117={141:18,137:18}};$.22.321.62.309=26(166,125,840,1239,1405){13.378=125;14 837=840||\'22\';14 132=276.309(166);13.48=$(132);13.48.401(837);13.48.68(1239);13.48.506(1405);132=18;37 13.48};$.22.321.62.340=26(){15(13.48){37 13.48.716(52)}27{37 18}};$.22.321.62.327=26(){15(13.48){37 13.48.713(52)}27{37 18}};$.22.321.62.1189=26(){15(13.48){37 13.48.274()}27{37{115:18,97:18,172:18,163:18}}};$.22.321.62.1053=26(){37 13.1189().115};$.22.321.62.1303=26(){37 13.1189().97};$.22.321.62.1695=26(){37 13.48.68(\'172\')};$.22.321.62.1698=26(){37 13.48.68(\'163\')};26 320(88){$.22.321.108(13);13.88=88;13.448=[];13.89=56;13.874=$.22.623;13.364={};13.1467=$.22.566;13.744={};13.162=18;13.468=52;13.98=18;13.111=18;13.979=56;13.325=1.2;13.597=18;13.481=18;13.291=[];13.190;13.223;13.49=$.22.517;13.479={};13.1213=52;13.1415=52;13.1174=52;13.912=52;13.911=56;13.915=52;13.881=52;13.1161=56;13.318=18;13.267=18;13.947=56;13.514={98:18,111:18};13.1682=[];13.378={98:18,111:18};13.269=[];13.263=18;13.867=18;13.689=75;13.417=18;13.436=18;13.1216=18;13.739=18;13.1028=18;13.368={}}320.62=86 $.22.321();320.62.281=320;320.62.231=26(){15($.533(13.49)){13.49=86 13.49()}13.364.116=13.88;15(13.364.475==18){13.364.475=13.1213}15(13.364.475==18){13.364.475=13.1415}15(13.364.468==18){13.364.468=13.1213}15(13.162==18||13.162==\'\'){13.468=56}27{13.744.162=13.162}15(13.468==56){13.744.89=56}15(13.325==0){13.325=1.0}15(13.597==0){13.597=1.0}15(13.481==0){13.481=1.0}15(13.597==18){13.597=(13.325-1)/2+1}15(13.481==18){13.481=(13.325-1)/2+1}13.325=13.597+13.481-1;15(13.98!=18||13.111!=18){13.979=56}15(13.867==18&&13.88.435(\'76\')>-1){13.867=52}27 15(13.867==18){13.867=56}13.49.231.108(13,13.479)};320.62.129=26(59,67){15(13.1028){13.1028=18}37 13.49.129.108(13,59,67)};320.62.399=26(){13.49.399.108(13)};320.62.329=26(207,125){15(13.89){13.49.329.108(13,207,125)}15(13.417==18){13.417=13.98;13.436=13.111;13.1216=13.223;13.739=13.190;13.1028=13.269}};320.62.972=26(){13.49.972.108(13)};320.62.1095=26(58){$.177(52,13,{98:18,111:18,190:18,223:18,269:[],291:[]},58);13.1057()};320.62.1057=26(){14 381=13.514;381.98=18;381.111=18;14 94,33,57;14 620=(13.89)?52:56;51(14 17=0;17<13.448.41;17++){33=13.448[17];15(33.89||13.947){57=33.316;15(33.387===\'420\'&&33.49.118.89&&13.88.404(0)!==\'77\'){57=[[0,33.49.118.417],[1,33.49.118.436]]}14 870=1,872=1;15(33.387!=18&&33.387==\'1716\'){870=3;872=2}51(14 36=0,94=57.41;36<94;36++){15(13.88==\'243\'||13.88==\'282\'){15((57[36][0]!=18&&57[36][0]<381.98)||381.98==18){381.98=57[36][0]}15((57[36][0]!=18&&57[36][0]>381.111)||381.111==18){381.111=57[36][0]}}27{15((57[36][870]!=18&&57[36][870]<381.98)||381.98==18){381.98=57[36][870]}15((57[36][872]!=18&&57[36][872]>381.111)||381.111==18){381.111=57[36][872]}}}15(620&&33.49.281!==$.22.801){620=56}27 15(620&&13.368.439(\'826\')&&13.368.826==56){620=56}27 15(620&&33.49.281===$.22.801){15(33.1212==\'486\'&&13.88!=\'243\'&&13.88!=\'282\'){15(13.368.325!=18||13.368.481!=18){620=56}}27 15(33.1212==\'922\'&&(13.88==\'243\'||13.88==\'282\')){15(13.368.325!=18||13.368.481!=18){620=56}}}}}15(620&&13.49.281===$.22.517&&381.98>=0){13.481=1.0;13.826=52}};26 581(39){$.22.321.108(13);13.89=56;13.460=\'596\';13.1443=[];13.1432=52;13.1434=52;13.474="847";13.582=0;13.589=0;13.551;13.473;13.299;13.308;13.296;13.1389=\'0.1515\';13.49=$.22.790;13.479={};13.1330=56;13.511=18;13.568=18;13.575=18;13.507=18;13.918=56;13.448=[];$.177(52,13,39)}581.62=86 $.22.321();581.62.281=581;581.62.1296=26(39){$.177(52,13,39);15(13.474==\'539\'){13.474=\'847\'}15(13.582>0){15(13.474==\'847\'){317(13.460){74\'659\':74\'174\':74\'644\':15(13.507==18){13.507=13.582+\'265\'}13.568=\'336\';83;74\'596\':74\'202\':74\'652\':355:15(13.568==18){13.568=13.582+\'265\'}13.507=\'336\';83}}27 15(13.474==\'592\'){317(13.460){74\'659\':74\'174\':74\'644\':15(13.568==18){13.568=13.582+\'265\'}13.507=\'336\';83;74\'596\':74\'202\':74\'652\':355:15(13.507==18){13.507=13.582+\'265\'}13.568=\'336\';83}}13.582=0}15(13.589>0){15(13.474==\'592\'){317(13.460){74\'644\':74\'33\':74\'652\':15(13.511==18){13.511=13.589+\'265\'}13.575=\'336\';83;74\'596\':74\'81\':74\'659\':355:15(13.575==18){13.575=13.589+\'265\'}13.511=\'336\';83}}27 15(13.474==\'847\'){317(13.460){74\'644\':74\'33\':74\'652\':15(13.575==18){13.575=13.589+\'265\'}13.511=\'336\';83;74\'596\':74\'81\':74\'659\':355:15(13.511==18){13.511=13.589+\'265\'}13.575=\'336\';83}}13.589=0}};581.62.231=26(){15($.533(13.49)){13.49=86 13.49()}13.49.231.108(13,13.479)};581.62.129=26(125,67){51(14 17=0;17<$.22.1032.41;17++){$.22.1032[17].108(13,125)}37 13.49.129.108(13,125,67)};581.62.329=26(125){13.49.329.108(13,125)};26 669(357){$.22.321.108(13);13.357=357;13.89=52;13.308;13.296;13.463;13.299;13.49=$.22.893;13.479={};13.918=56}669.62=86 $.22.321();669.62.281=669;669.62.231=26(){15($.533(13.49)){13.49=86 13.49()}13.49.231.108(13,13.479)};669.62.129=26(137){37 13.49.129.108(13,137)};669.62.329=26(){13.49.329.108(13)};26 538(39){39=39||{};$.22.321.108(13);13.89=52;13.243=\'243\';13.326;13.301=\'301\';13.280;13.1356=2.0;13.49=$.22.516;13.479={};13.44=[];13.187=[];13.162=\'\';13.468=52;13.157;13.657;13.217=2.5;13.418=\'382\';13.305=\'382\';13.392=\'1085\';13.260=52;13.800=45;13.761=1.25;13.798=3;13.799=\'0.1\';13.1438=56;13.504=$.22.518;13.496={};13.774=52;13.937=52;13.198;13.156=56;13.443;13.1099;13.661=56;13.1043=56;13.593=56;13.1192=4;13.767=56;13.1171=0;13.968=\'76\';13.1218=52;13.394=[];13.316=[];13.827={77:[],76:[]};13.1676={77:{},76:{}};13.890=[];13.721=[];13.868=\'76\';13.1430=\'326\';13.120=86 $.22.498();13.289=86 $.22.498();13.356={};13.389=0;13.395=0;13.387=\'\'}538.62=86 $.22.321();538.62.281=538;538.62.231=26(198,1423,67){13.198=198;13.1356=1423;14 57=13.44;14 78=[],17,94;51(17=0,94=57.41;17<94;17++){15(!13.1438){15(57[17]==18||57[17][0]==18||57[17][1]==18){1193}27{78.103(57[17])}}27{78.103(57[17])}}13.44=78;15(!13.157){13.157=67.1090.449(13.198)}15(!13.657){13.657=67.1089.449(13.198)}15(!13.443){13.443=13.157}15(13.1099){14 752=$.22.1086(13.443);14 752=$.22.914(752);13.443=\'354(\'+752[0]+\',\'+752[1]+\',\'+752[2]+\',\'+13.1099+\')\'}15($.533(13.49)){13.49=86 13.49()}13.49.231.108(13,13.479,67);13.504=86 13.504();15(!13.496.157){13.496.157=13.157}15(13.496.89==18){13.496.89=13.937}13.937=13.496.89;13.504.231(13.496)};538.62.129=26(410,58,67){14 39=(58==322)?{}:58;410=(410==322)?13.120.314:410;14 36,44,187;51(36=0;36<$.22.831.41;36++){$.22.831[36].108(13,410,39)}15(13.89){13.49.1119.108(13,67);15(!39.1680){$(410.120).346(\'1667\',[13.44,13.187])}44=[];15(39.44){44=39.44}27 15(!13.593){44=13.44}27{44=13.316}187=39.187||13.49.1141.108(13,44,67);15(13.387===\'420\'&&13.49.333&&13.49.376.41){187=13.49.376}13.49.129.108(13,410,187,39,67)}51(36=0;36<$.22.1040.41;36++){$.22.1040[36].108(13,410,39,67)}410=58=67=36=44=187=18};538.62.879=26(410,58,67){14 39=(58==322)?{}:58;410=(410==322)?13.289.314:410;14 36,44,187;51(36=0;36<$.22.1035.41;36++){$.22.1035[36].108(13,410,39)}15(13.260){13.49.1119.108(13,67);44=[];15(39.44){44=39.44}27 15(!13.593){44=13.44}27{44=13.316}187=39.187||13.49.1141.108(13,44,67);13.49.879.108(13,410,187,39,67)}51(36=0;36<$.22.1025.41;36++){$.22.1025[36].108(13,410,39)}410=58=67=36=44=187=18};538.62.1668=26(126,497){14 33,247;15(126.44.40){33=126.44.40}27{33=13}15(126.44.247){247=126.44.247}15(247){15(33.120.48.588(\':591\')||!33.89){33.89=52;33.120.48.925(\'22-40-591\');15(33.289.48){33.289.48.1014(247)}33.120.48.1014(247,497);33.120.48.1031(\'.22-909-162.22-40-\'+33.198).1014(247)}27{33.89=56;33.120.48.401(\'22-40-591\');15(33.289.48){33.289.48.1094(247)}33.120.48.1094(247,497);33.120.48.1031(\'.22-909-162.22-40-\'+33.198).1094(247)}}27{15(33.120.48.588(\':591\')||!33.89){33.89=52;33.120.48.925(\'22-40-591\');15(33.289.48){33.289.48.89()}33.120.48.89(0,497);33.120.48.1031(\'.22-909-162.22-40-\'+33.198).89()}27{33.89=56;33.120.48.401(\'22-40-591\');15(33.289.48){33.289.48.505()}33.120.48.505(0,497);33.120.48.1031(\'.22-909-162.22-40-\'+33.198).505()}}};26 670(){$.22.321.108(13);13.759=52;13.1194=\'#1694\';13.467=1.0;13.473=\'#1700\';13.267=\'#1084\';13.318=2.0;13.1313=52;13.260=52;13.800=45;13.761=1.5;13.1342=3;13.798=3;13.1339=18;13.799=\'0.1088\';13.337;13.365;13.341;13.319;13.292;13.323;13.913=[];13.49=$.22.916;13.479={};13.378={115:18,172:18,97:18,163:18}}670.62=86 $.22.321();670.62.281=670;670.62.231=26(){15($.533(13.49)){13.49=86 13.49()}13.49.231.108(13,13.479)};670.62.309=26(125,67){13.378=125;37 13.49.309.108(13,67)};670.62.129=26(){13.49.129.108(13)};$.22.498=26(){$.22.321.108(13);13.314};$.22.498.62=86 $.22.321();$.22.498.62.281=$.22.498;$.22.498.62.309=26(125,840,1052,67){13.378=125;14 837=\'22\';15(840!=322){837=840}14 132;132=67.712.1082();15(1052!=18){13.117=1052}132.137=13.117.137-13.378.97-13.378.163;132.141=13.117.141-13.378.115-13.378.172;13.48=$(132);13.48.68({274:\'454\',97:13.378.97,115:13.378.115});13.48.401(837);132=67.712.1101(132);132=18;37 13.48};$.22.498.62.771=26(){13.314=13.48.449(0).680("859");37 13.314};$.22.498.62.1295=26(){15(13.48){15($.22.553&&345.471.560!==322){345.471.560(13.48.449(0))}13.48.574()}13.314=18};$.22.377=26(){13.234=[];13.287=[]};$.22.377.62.587=26(348,287){287=287||[];14 756=56;51(14 17=0,94=13.234.41;17<94;17++){15(13.234[17]==348){756=52}}15(!756){13.234.103(348);13.287.103(287)}};$.22.377.62.464=26(348,287){287=287||[];13.234.103(348);13.287.103(287)};$.22.1033=26(){13.234=[]};$.22.1033.62.587=26(126,348){14 756=56,201,17;51(14 17=0,94=13.234.41;17<94;17++){201=13.234[17];15(201[0]==126&&201[1]==348){756=52}}15(!756){13.234.103([126,348])}};$.22.1033.62.464=26(126,348){13.234.103([126,348])};14 426=[\'569\',\'243\',\'301\',\'282\',\'433\',\'548\',\'543\',\'542\',\'544\',\'547\',\'546\',\'571\'];26 1172(){13.882=56;13.1022=56;13.146={243:86 320(\'243\'),301:86 320(\'301\'),282:86 320(\'282\'),433:86 320(\'433\'),548:86 320(\'548\'),543:86 320(\'543\'),542:86 320(\'542\'),544:86 320(\'544\'),547:86 320(\'547\'),546:86 320(\'546\'),571:86 320(\'571\'),569:86 320(\'569\')};13.740=86 $.22.498();13.802=56;13.44=[];13.520;13.583;13.1427={1076:{},146:{243:{},301:{},282:{},433:{},548:{},543:{},542:{},544:{},547:{},546:{},571:{},569:{}},444:{},40:[]};13.804=1;13.1472=56;13.264=86 $.22.498();13.730={513:18,562:18,157:18,755:0,156:52};13.308;13.296;13.268=86 670();13.168=86 581();13.549={89:56,1377:\'1636 1633...\',146:{243:{98:0,111:10,223:2,89:52},301:{98:0,111:12,223:3,89:52}}};13.703=$.22.271.1411;13.39={};13.453=[];13.356={};13.40=[];13.298=[];13.488=$.22.271.1138;13.495=52;13.873=56;13.1612=52;13.1621=52;13.91=18;13.1049=18;13.299;13.258=86 669();13.1116=0;13.389=0;13.395=0;13.394=[];13.316=[];13.292=18;13.323=18;13.117={141:18,137:18};13.275={115:18,163:18,172:18,97:18};13.1364={115:10,163:10,172:23,97:10};13.1463=$.22.271.1485;13.545=86 $.22.377();13.529=86 $.22.377();13.809=86 $.22.377();13.807=86 $.22.377();13.811=86 $.22.377();13.590=86 $.22.377();13.831=86 $.22.377();13.1040=86 $.22.377();13.1032=86 $.22.377();13.952=86 $.22.377();13.534=86 $.22.377();13.536=86 $.22.377();13.808=86 $.22.377();13.812=86 $.22.377();13.472=86 $.22.1033();13.1035=86 $.22.377();13.1025=86 $.22.377();13.1090=86 $.22.1139();13.1089=86 $.22.1139();13.712=86 $.22.415();13.701=86 $.22.379();14 1651=0;13.231=26(91,44,39){39=39||{};51(14 17=0;17<$.22.545.41;17++){$.22.545[17].108(13,91,44,39)}51(14 17=0;17<13.545.234.41;17++){13.545.234[17].108(13,91,44,39)}13.1049=\'#\'+91;13.91=$(\'#\'+91);15(13.1463){13.91.44(\'22\',13)}13.91.925(\'22-991\');15(!13.91.449(0)){438 86 343("1175 67 91 1280")}15(13.91.68(\'274\')==\'1257\'){13.91.68(\'274\',\'885\')}15(!13.91.1051(\'22-91\')){13.91.401(\'22-91\')}15(!13.91.141()){14 201;15(39&&39.141){201=200(39.141,10)}27 15(13.91.506(\'44-141\')){201=200(13.91.506(\'44-141\'),10)}27{201=200($.22.271.1453,10)}13.323=201;13.91.68(\'141\',201+\'265\')}27{13.323=201=13.91.141()}15(!13.91.137()){14 174;15(39&&39.137){174=200(39.137,10)}27 15(13.91.506(\'44-137\')){174=200(13.91.506(\'44-137\'),10)}27{174=200($.22.271.1452,10)}13.292=174;13.91.68(\'137\',174+\'265\')}27{13.292=174=13.91.137()}51(14 17=0,94=426.41;17<94;17++){13.146[426[17]]=86 320(426[17])}13.117.141=13.323;13.117.137=13.292;13.268.117=13.117;13.258.117=13.117;13.740.117=13.117;13.264.117=13.117;13.168.117=13.117;15(13.323<=0||13.292<=0||!13.323||!13.292){438 86 343("1719 1160 1166 399")}15(39.520&&$.533(39.520)){15(39.583){13.583=39.583}13.520=39.520;44=13.520(44,13,13.583)}15(39.549&&$.723(39.549)){$.177(52,13.549,39.549)}15(44==18||$.462(44)==56||44.41==0||$.462(44[0])==56||44[0].41==0){15(13.549.89==56){438 86 343("1175 44 1280")}27{51(14 159 262 13.549.146){51(14 1111 262 13.549.146[159]){13.146[159][1111]=13.549.146[159][1111]}}13.590.464(26(){14 1077=13.264.327();14 1300=13.264.340();14 78=$(\'<409 900="22-1358-1665" 311="274:454;"></409>\');13.91.419(78);78.141(1077);78.137(1300);78.68(\'115\',13.264.378.115);78.68(\'97\',13.264.378.97);14 627=$(\'<409 900="22-1358-1289" 311="357-1705:662; 274:885; 777-97:728; 777-163:728;"></409>\');78.419(627);627.614(13.549.1377);14 145=627.141();14 1231=627.137();627.141(145);627.137(1231);627.68(\'115\',(1077-145)/2+\'265\')})}}13.44=$.177(52,[],44);13.1100(39);15(13.299){13.91.68(\'157\',13.299)}15(13.308){13.91.68(\'407-751\',13.308)}15(13.296){13.91.68(\'407-313\',13.296)}13.258.231();13.168.231();13.389=0;13.395=0;13.836();51(14 17=0;17<13.40.41;17++){13.298.103(17);13.453.103(17);13.40[17].289.117=13.117;13.40[17].120.117=13.117;51(14 36=0;36<$.22.534.41;36++){$.22.534[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}51(14 36=0;36<13.534.234.41;36++){13.534.234[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}13.40[17].117=13.117;13.40[17].231(17,13.268.318,13);51(14 36=0;36<$.22.536.41;36++){$.22.536[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}51(14 36=0;36<13.536.234.41;36++){13.536.234[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}13.389+=13.40[17].389;13.395+=13.40[17].395}14 88,116;51(14 17=0,94=426.41;17<94;17++){88=426[17];116=13.146[88];116.117=13.117;116.231();15(13.146[88].267==18){15(88.404(0)!==\'77\'&&116.1161===52&&116.89){116.267=116.448[0].157}27{116.267=13.268.267}}}15(13.495){495(13.40)}13.268.231();13.268.913=13.146;13.168.448=13.40;51(14 17=0;17<$.22.529.41;17++){$.22.529[17].108(13,91,13.44,39)}51(14 17=0;17<13.529.234.41;17++){13.529.234[17].108(13,91,13.44,39)}};13.1368=26(146,39){14 58=39||{};14 159=146||13.146;15(159===52){159=13.146}15($.462(159)){51(14 17=0;17<159.41;17++){13.146[159[17]].1095(58[159[17]])}}27 15(266(159)===\'416\'){51(14 88 262 159){13.146[88].1095(58[88])}}};13.1351=26(44,58){14 39=$.177(52,{},13.39,58);14 91=13.1049.1709(1);14 1130=(44==18)?13.44:44;51(14 17=0;17<$.22.545.41;17++){$.22.545[17].108(13,91,1130,39)}51(14 17=0;17<13.545.234.41;17++){13.545.234[17].108(13,91,1130,39)}13.323=13.91.141();13.292=13.91.137();15(13.323<=0||13.292<=0||!13.323||!13.292){438 86 343("1207 1160 1166 399")}13.117.141=13.323;13.117.137=13.292;13.268.117=13.117;13.258.117=13.117;13.740.117=13.117;13.264.117=13.117;13.168.117=13.117;14 88,54,36,116;51(14 17=0,94=426.41;17<94;17++){88=426[17];116=13.146[88];54=116.269;51(14 36=0,1348=54.41;36<1348;36++){14 166=54[36].48;15(166){15($.22.553&&345.471.560!==322){345.471.560(166.449(0))}166.574();166=18;54.48=18}}54=18;598 116.291;598 116.269;13.146[88]=86 320(88);13.146[88].613=13.292;13.146[88].950=13.323}15(44){15(39.520&&$.533(39.520)){15(39.583){13.583=39.583}13.520=39.520;44=13.520(44,13,13.583)}13.44=$.177(52,[],44)}15(58){13.1100(39)}13.258.613=13.292;15(13.299){13.91.68(\'157\',13.299)}15(13.308){13.91.68(\'407-751\',13.308)}15(13.296){13.91.68(\'407-313\',13.296)}13.258.231();13.168.231();13.389=0;13.395=0;13.298=[];13.453=[];13.836();51(14 17=0,94=13.40.41;17<94;17++){13.298.103(17);13.453.103(17);13.40[17].289.117=13.117;13.40[17].120.117=13.117;51(14 36=0;36<$.22.534.41;36++){$.22.534[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}51(14 36=0;36<13.534.234.41;36++){13.534.234[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}13.40[17].117=13.117;13.40[17].231(17,13.268.318,13);51(14 36=0;36<$.22.536.41;36++){$.22.536[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}51(14 36=0;36<13.536.234.41;36++){13.536.234[36].108(13.40[17],91,13.44,13.39.444,13.39.40[17],13)}13.389+=13.40[17].389;13.395+=13.40[17].395}51(14 17=0,94=426.41;17<94;17++){88=426[17];116=13.146[88];116.117=13.117;116.231();15(116.267==18){15(88.404(0)!==\'77\'&&116.1161===52&&116.89){116.267=116.448[0].157}27{116.267=13.268.267}}}15(13.495){495(13.40)}13.268.231();13.268.913=13.146;13.168.448=13.40;51(14 17=0,94=$.22.529.41;17<94;17++){$.22.529[17].108(13,91,13.44,39)}51(14 17=0,94=13.529.234.41;17<94;17++){13.529.234[17].108(13,91,13.44,39)}};13.1383=26(){13.323=13.91.141();13.292=13.91.137();15(13.323<=0||13.292<=0||!13.323||!13.292){438 86 343("1207 1160 1166 399")}13.117.141=13.323;13.117.137=13.292;13.268.117=13.117;13.258.117=13.117;13.740.117=13.117;13.264.117=13.117;13.168.117=13.117;51(14 81 262 13.146){13.146[81].613=13.292;13.146[81].950=13.323}13.258.613=13.292;15(13.299){13.91.68(\'157\',13.299)}15(13.308){13.91.68(\'407-751\',13.308)}15(13.296){13.91.68(\'407-313\',13.296)}13.389=0;13.395=0;13.836();51(14 17=0;17<13.40.41;17++){15(13.40[17].387===\'420\'&&13.40[17].49.118.89){13.40[17].49.1128.108(13.40[17],13.40[17].49.39,13)}13.40[17].117=13.117;13.40[17].120.117=13.117;13.389+=13.40[17].389;13.395+=13.40[17].395}14 88;51(14 36=0;36<12;36++){88=426[36];14 54=13.146[88].269;51(14 17=0;17<54.41;17++){14 166=54[17].48;15(166){15($.22.553&&345.471.560!==322){345.471.560(166.449(0))}166.574();166=18;54.48=18}}54=18;13.146[88].117=13.117;13.146[88].269=[]}15(13.495){495(13.40)}13.268.913=13.146;13.168.448=13.40};26 495(40){14 57,383,773,1622,171;51(14 17=0;17<40.41;17++){14 806;14 1219=[40[17].44,40[17].394,40[17].316,40[17].890];51(14 81=0;81<4;81++){806=52;57=1219[81];15(40[17].868==\'77\'){51(14 36=0;36<57.41;36++){15(266(57[36][1])!="195"){806=56;83}}15(806){57.951(26(84,109){37 84[1]-109[1]})}}27{51(14 36=0;36<57.41;36++){15(266(57[36][0])!="195"){806=56;83}}15(806){57.951(26(84,109){37 84[0]-109[0]})}}}}}13.836=26(){13.316=[];13.394=[];14 40,198,94;51(198=0,94=13.40.41;198<94;198++){40=13.40[198];13.316.103([]);13.394.103([]);14 633=40.44;13.316[198]=$.177(52,[],633);13.394[198]=$.177(52,[],633);40.316=13.316[198];40.394=13.394[198];14 524={77:[],76:[]};15(13.873&&!40.1043){40.593=52;14 445=(40.868===\'77\')?0:1;51(14 347=0,1412=633.41;347<1412;347++){14 78=633[347][445];15(78==18){78=0}13.316[198][347][445]=78;13.394[198][347][445]=78;15(198>0){51(14 36=198;36--;){14 957=13.316[36][347][445];15(78*957>=0){13.316[198][347][445]+=957;13.394[198][347][445]+=957;83}}}}}27{51(14 17=0;17<40.44.41;17++){524.77.103(40.44[17][0]);524.76.103(40.44[17][1])}13.394.103(40.44);13.40[198].394=40.44;13.316.103(40.44);40.316=40.44;40.827=524}15(198>0){40.890=13.40[198-1].316}40.389=0;40.395=0;51(17=40.44.41-1;17>-1;17--){40.389+=40.44[17][1];40.395+=40.44[17][0]}}};13.1635=26(40,198){13.316=[];13.394=[];40.394=[];40.316=[];14 524={77:[],76:[]};15(13.873&&!40.1043){40.593=52;14 445=(40.868===\'77\')?0:1;14 78=$.177(52,[],40.44);14 682=$.177(52,[],40.44);14 559,1004,803,1009,1697;51(14 36=0;36<198;36++){14 633=13.40[36].44;51(14 347=0;347<633.41;347++){803=633[347];559=(803[0]!=18)?803[0]:0;1004=(803[1]!=18)?803[1]:0;78[347][0]+=559;78[347][1]+=1004;1009=(445)?1004:559;15(40.44[347][445]*1009>=0){682[347][445]+=1009}}}51(14 17=0;17<682.41;17++){524.77.103(682[17][0]);524.76.103(682[17][1])}13.316.103(682);13.394.103(78);40.394=78;40.316=682;40.827=524}27{51(14 17=0;17<40.44.41;17++){524.77.103(40.44[17][0]);524.76.103(40.44[17][1])}13.394.103(40.44);13.40[198].394=40.44;13.316.103(40.44);40.316=40.44;40.827=524}15(198>0){40.890=13.40[198-1].316}40.389=0;40.395=0;51(17=40.44.41-1;17>-1;17--){40.389+=40.44[17][1];40.395+=40.44[17][0]}};13.1687=(26(54){14 194=0;14 953=54.488;37 26(){15(194<953.41){37 953[194++]}27{194=0;37 953[194++]}}})(13);13.1100=26(39){51(14 17=0;17<13.809.234.41;17++){13.809.234[17].108(13,39)}51(14 17=0;17<$.22.809.41;17++){$.22.809[17].108(13,39)}13.39=$.177(52,{},13.1427,39);14 58=13.39;13.882=58.882;13.1022=58.1022;13.873=58.873;15($.723(58.730)){14 78=[\'513\',\'562\',\'157\',\'755\',\'156\'],862;51(14 17=0,94=78.41;17<94;17++){862=78[17];15(58.730[862]!=18){13.730[862]=58.730[862]}}}15(58.488){13.488=58.488}15(58.703){13.703=58.703}15(58.802){13.802=58.802}13.804=(39&&39.804!=18)?39.804:13.804;13.1090.1133(13.488);13.1089.1133(13.703);$.177(52,13.275,58.344);13.495=(58.495!=18)?58.495:13.495;51(14 17=0;17<12;17++){14 81=426[17];14 116=13.146[81];116.368=$.177(52,{},58.1076,58.146[81]);$.177(52,116,58.1076,58.146[81]);116.613=13.292;116.950=13.323}14 1392=26(44,698,823){14 78=[];14 17,94;698=698||\'486\';15(!$.462(44[0])){51(17=0,94=44.41;17<94;17++){15(698==\'486\'){78.103([823+17,44[17]])}27{78.103([44[17],823+17])}}}27{$.177(52,78,44)}37 78};14 1704=0;13.40=[];51(14 17=0;17<13.44.41;17++){14 679=$.177(52,{198:17},{488:13.488,703:13.703},13.39.444,13.39.40[17],{479:{440:{89:13.882}}});14 78=86 538(679);51(14 36=0;36<$.22.808.41;36++){$.22.808[36].108(78,13.39.444,13.39.40[17])}51(14 36=0;36<13.808.234.41;36++){13.808.234[36].108(78,13.39.444,13.39.40[17])}$.177(52,78,679);14 698=\'486\';15(78.49===$.22.801&&78.479&&78.479.1212==\'922\'){698=\'922\';78.868=\'77\';78.1430=\'280\'}78.44=1392(13.44[17],698,13.804);317(78.243){74\'243\':78.326=13.146.243;83;74\'282\':78.326=13.146.282;83;355:83}78.280=13.146[78.301];78.326.448.103(78);78.280.448.103(78);15(78.89){78.326.89=52;78.280.89=52}27{15(78.326.947){78.326.89=52}15(78.280.947){78.280.89=52}}15(!78.162){78.162=\'538 \'+(17+1).452()}13.40.103(78);51(14 36=0;36<$.22.812.41;36++){$.22.812[36].108(13.40[17],13.39.444,13.39.40[17])}51(14 36=0;36<13.812.234.41;36++){13.812.234[36].108(13.40[17],13.39.444,13.39.40[17])}}$.177(52,13.268,13.39.268);51(14 17=0,94=426.41;17<94;17++){14 81=426[17];14 116=13.146[81];15(116.318==18){116.318=13.268.318}}15(266 13.39.258==\'906\'){13.258.357=13.39.258}27 15(266 13.39.258==\'416\'){$.177(52,13.258,13.39.258)}13.258.613=13.292;13.168.1296(13.39.168);51(14 17=0;17<$.22.807.41;17++){$.22.807[17].108(13,39)}51(14 17=0;17<13.807.234.41;17++){13.807.234[17].108(13,39)}};13.1249=26(){13.712.1079();15(13.264&&13.264.48){13.264.48.1105()}13.91.1180();13.91[0].1613=\'\'};13.1614=26(39){14 58=39||{};14 44=58.44||18;14 585=(58.585===56)?56:52;14 854=58.854||56;598 58.44;598 58.585;598 58.854;13.91.346(\'1616\');15(585){13.1249()}15(44||!$.1625(58)){13.1351(44,58)}27{13.1383()}15(854){13.1368(854,58.146)}13.129();13.91.346(\'1632\')};13.1624=26(585){585=(585!=18)?585:52;13.91.346(\'1645\');15(585){13.712.1079();13.264.48.1105();13.91.1180()}51(14 159 262 13.146){13.146[159].269=[]}13.836();13.389=0;13.395=0;51(14 17=0,1431=13.40.41;17<1431;17++){13.389+=13.40[17].389;13.395+=13.40[17].395}13.129();13.91.346(\'1629\')};13.129=26(){15(13.1472||13.91.588(\':1243\')){13.91.346(\'1659\');14 17,36,94,1660;51(17=0,94=$.22.811.41;17<94;17++){$.22.811[17].108(13)}51(17=0,94=13.811.234.41;17<94;17++){13.811.234[17].422(13,13.831.287[17])}13.91.419(13.740.309({97:0,163:0,115:0,172:0},\'22-981-120\',18,13));13.740.771();13.91.419(13.258.129());13.258.329({115:0,97:0});14 793=13.168.129({},13);14 344={115:0,97:0,172:0,163:0};15(13.168.474=="1355"){13.91.419(793);317(13.168.460){74\'81\':344.115+=13.168.327();83;74\'33\':344.172+=13.168.327();83;74\'596\':74\'202\':74\'652\':344.163+=13.168.340();83;74\'659\':74\'174\':74\'644\':344.97+=13.168.340();83;355:344.163+=13.168.340();83}793=793.626()}14 159=13.146;14 88;51(17=0;17<12;17++){88=426[17];13.91.419(159[88].129(13.740.314,13));159[88].399()}15(159.301.89){344.97+=159.301.340()}14 1038=[\'433\',\'548\',\'543\',\'542\',\'544\',\'547\',\'546\',\'571\'];14 1122=[0,0,0,0,0,0,0,0];14 1016=0;14 81;51(81=0;81<8;81++){15(159[1038[81]].89){1016+=159[1038[81]].340();1122[81]=1016}}344.163+=1016;15(159.282.89){344.115+=159.282.327()}15(13.258.89){344.115+=13.258.327()}15(159.243.89){344.172+=159.243.327()}15(13.39.1015&&$.723(13.39.1015)){14 1287=200(13.39.1015.137,10)||0;14 1233=200(13.39.1015.141,10)||0;14 1021=(13.292-344.97-344.163-1287)/2;14 1013=(13.323-344.115-344.172-1233)/2;15(1013>=0&&1021>=0){344.115+=1013;344.172+=1013;344.97+=1021;344.163+=1021}}14 424=[\'115\',\'172\',\'97\',\'163\'];51(14 81 262 424){15(13.275[424[81]]==18&&344[424[81]]>0){13.275[424[81]]=344[424[81]]}27 15(13.275[424[81]]==18){13.275[424[81]]=13.1364[424[81]]}}14 760=13.275;15(13.168.474===\'1355\'){760={115:13.258.327(),97:0,163:0,172:0};15(13.168.460===\'33\'){760.97=13.275.97;760.163=13.275.163}}159.243.329({274:\'454\',172:13.275.172-159.243.327(),97:0,137:13.292},{98:13.275.97,111:13.292-13.275.163});159.301.329({274:\'454\',115:0,97:13.275.97-159.301.340(),141:13.323},{98:13.323-13.275.172,111:13.275.115});159.282.329({274:\'454\',115:13.275.115-159.282.327(),97:0,137:13.292},{98:13.275.97,111:13.292-13.275.163});51(17=8;17>0;17--){159[1038[17-1]].329({274:\'454\',115:0,163:13.275.163-1122[17-1]},{98:13.323-13.275.172,111:13.275.115})}14 1444=(13.292-13.275.97-13.275.163)/2.0+13.275.97-159.569.340()/2.0;159.569.329({274:\'454\',115:0,97:1444,1227:9,463:\'662\'},{98:13.323-13.275.172,111:13.275.115});13.91.419(13.268.309(13.275,13));13.268.129();14 40=13.40;14 650=40.41;51(17=0,94=650;17<94;17++){36=13.298[17];13.91.419(40[36].289.309(13.275,\'22-40-289\',18,13));40[36].289.771();40[36].289.48.44(\'332\',36)}51(17=0,94=650;17<94;17++){36=13.298[17];13.91.419(40[36].120.309(13.275,\'22-40-120\',18,13));40[36].120.771();40[36].120.48.44(\'332\',36)}13.91.419(13.264.309(13.275,\'22-1521-120\',18,13));13.264.771();13.264.314.297=\'354(0,0,0,0)\';13.264.314.369(0,0,13.264.314.120.137,13.264.314.120.141);13.1482();15(13.168.1330){13.264.48.959(793);13.168.329(760);15(13.168.48){13.825({1720:{460:13.168.460,474:13.168.474,137:13.168.340(),141:13.168.327(),582:13.168.582,589:13.168.589}})}27{13.825()}}27{13.825();15(650){$(40[650-1].120.48).732(793)}13.168.329(760)}51(14 17=0,94=$.22.472.41;17<94;17++){13.264.48.508($.22.472[17][0],{67:13},$.22.472[17][1])}51(14 17=0,94=13.472.234.41;17<94;17++){13.264.48.508(13.472.234[17][0],{67:13},13.472.234[17][1])}14 432=13.730;15(432.156&&432.513!==432.562&&432.513<650&&432.562<650&&40[432.513].387===\'420\'&&40[432.562].387===\'420\'){13.1224()}51(14 17=0,94=$.22.590.41;17<94;17++){$.22.590[17].108(13)}51(14 17=0,94=13.590.234.41;17<94;17++){13.590.234[17].422(13,13.590.287[17])}15(13.91.588(\':1243\')){13.1116+=1}14 714,338,1118,892;51(17=0,94=650;17<94;17++){714=40[17];338=714.49;1118=\'.22-909-162.22-40-\'+17;15(338.440&&338.440.1369&&338.440.89&&(13.1116<2||13.1022)){892=13.91.1034(1118);892.1140(52,52).505();714.120.48.1140(52,52).505();714.289.48.1140(52,52).505();714.120.48.1110(\'1127\',{370:\'89\',584:338.440.584},338.440.247);714.289.48.1110(\'1127\',{370:\'89\',584:338.440.584},338.440.247);892.1014(338.440.247*0.8)}}892=18;13.91.346(\'1639\',[13])}};1172.62.1224=26(){14 432=13.730;14 757=432.513;14 897=432.562;14 1173=(757<897)?757:897;14 1262=(897>757)?897:757;14 513=13.40[1173];14 562=13.40[1262];15(562.49.333){14 437=562.49.376.279(0).521()}27{14 437=562.187.279(0).521()}15(513.49.333){14 110=513.49.376.852(437)}27{14 110=513.187.852(437)}14 157=(432.157!==18)?432.157:13.40[757].443;14 755=(432.755!==18)?432.755:1173;14 1477=13.40[755].49.303;14 58={297:157,156:52,229:52};1477.129(513.289.314,110,58)};13.1482=26(){13.264.48.508(\'1662\',{67:13},13.1502);13.264.48.508(\'1656\',{67:13},13.1488);13.264.48.508(\'1707\',{67:13},13.1478);13.264.48.508(\'1717\',{67:13},13.1293);13.264.48.508(\'1611\',{67:13},13.1408);13.264.48.508(\'1264\',{67:13},13.1394);15(13.802){13.264.48.508(\'1445\',{67:13},13.1366);13.264.48.449(0).1693=26(){37 56}}27{13.264.48.508(\'1445\',{67:13},13.1436)}};26 604(126){14 67=126.44.67;14 1026=67.264.48.386();14 391={77:126.288-1026.97,76:126.284-1026.115};14 480={243:18,301:18,282:18,433:18,548:18,543:18,542:18,544:18,547:18,546:18,571:18,569:18};14 1457=[\'243\',\'301\',\'282\',\'433\',\'548\',\'543\',\'542\',\'544\',\'547\',\'546\',\'571\',\'569\'];14 159=67.146;14 81,116;51(81=11;81>0;81--){116=1457[81-1];15(159[116].89){480[116]=159[116].595(391[116.404(0)])}}37{125:1026,391:391,480:480}}26 784(315,67){14 40=67.40;14 17,36,347,33,151,77,76,307,704,705,842,850;14 578,57,93,1685,121,1686,1012;14 636,54;51(347=67.298.41-1;347>=0;347--){17=67.298[347];33=40[17];1012=33.1711;317(33.49.281){74 $.22.801:77=315.77;76=315.76;51(36=0;36<33.754.41;36++){121=33.754[36];93=33.187[36];15(77>121[0][0]&&77<121[2][0]&&76>121[2][1]&&76<121[0][1]){37{332:33.198,362:36,187:93,44:33.44[36],121:33.754[36]}}}83;74 $.22.1661:77=315.77;76=315.76;51(36=0;36<33.754.41;36++){121=33.754[36];93=33.187[36];15(77>121[0][0]+1012[0][0]&&77<121[2][0]+1012[2][0]&&76>121[2][1]&&76<121[0][1]){37{332:33.198,362:36,187:93,44:33.44[36],121:33.754[36]}}}83;74 $.22.1471:705=33.1042/180*55.367;77=315.77-33.1018[0];76=315.76-33.1018[1];151=55.722(55.257(77,2)+55.257(76,2));15(77>0&&-76>=0){307=2*55.367-55.653(-76/77)}27 15(77>0&&-76<0){307=-55.653(-76/77)}27 15(77<0){307=55.367-55.653(-76/77)}27 15(77==0&&-76>0){307=3*55.367/2}27 15(77==0&&-76<0){307=55.367/2}27 15(77==0&&76==0){307=0}15(705){307-=705;15(307<0){307+=2*55.367}27 15(307>2*55.367){307-=2*55.367}}704=33.1039/180*55.367;15(151<33.1246&&151>33.1615){51(36=0;36<33.187.41;36++){842=(36>0)?33.187[36-1][1]+704:704;850=33.187[36][1];15(307>842&&307<850){37{332:33.198,362:36,187:[315.77,315.76],44:33.44[36]}}}}83;74 $.22.1468:705=33.1042/180*55.367;77=315.77-33.1018[0];76=315.76-33.1018[1];151=55.722(55.257(77,2)+55.257(76,2));15(77>0&&-76>=0){307=2*55.367-55.653(-76/77)}27 15(77>0&&-76<0){307=-55.653(-76/77)}27 15(77<0){307=55.367-55.653(-76/77)}27 15(77==0&&-76>0){307=3*55.367/2}27 15(77==0&&-76<0){307=55.367/2}27 15(77==0&&76==0){307=0}15(705){307-=705;15(307<0){307+=2*55.367}27 15(307>2*55.367){307-=2*55.367}}704=33.1039/180*55.367;15(151<33.1246){51(36=0;36<33.187.41;36++){842=(36>0)?33.187[36-1][1]+704:704;850=33.187[36][1];15(307>842&&307<850){37{332:33.198,362:36,187:[315.77,315.76],44:33.44[36]}}}}83;74 $.22.1702:77=315.77;76=315.76;14 171=18;15(33.89){51(14 36=0;36<33.187.41;36++){93=33.187[36];57=55.722((77-93[0])*(77-93[0])+(76-93[1])*(76-93[1]));15(57<=93[2]&&(57<=578||578==18)){578=57;171={332:17,362:36,187:93,44:33.44[36]}}}15(171!=18){37 171}}83;74 $.22.1473:77=315.77;76=315.76;14 668=33.1701,1199=668[0],1059=668[668.41-1],1206,1204,960;26 1197(94,637,861){14 197=(637[1]-861[1])/(637[0]-861[0]);14 109=637[1]-197*637[0];14 76=94+637[1];37[(76-109)/197,76]}1206=1197(76,1199[0],1059[3]);1204=1197(76,1199[1],1059[2]);51(36=0;36<668.41;36++){960=668[36];15(76>=960[0][1]&&76<=960[3][1]&&77>=1206[0]&&77<=1204[0]){37{332:33.198,362:36,187:18,44:33.44[36]}}}83;74 $.22.516:77=315.77;76=315.76;151=33.49;15(33.89){15((33.156||(33.49.118.89&&33.49.118.156))&&(!67.356.813||!67.356.813.89)){14 539=56;15(77>33.779[0][0]&&77<33.779[1][0]&&76>33.779[1][1]&&76<33.779[0][1]){14 1205=33.408.41;14 702;14 36=1205-1;51(14 702=0;702<1205;702++){14 710=[33.408[702][0],33.408[702][1]];14 843=[33.408[36][0],33.408[36][1]];15(710[1]<76&&843[1]>=76||843[1]<76&&710[1]>=76){15(710[0]+(76-710[1])/(843[1]-710[1])*(843[0]-710[0])<77){539=!539}}36=702}}15(539){37{332:17,362:18,187:33.187,44:33.44,121:33.408}}83}27{54=33.504.313/2+33.1192;636=(54>0)?54:0;51(14 36=0;36<33.187.41;36++){93=33.187[36];15(151.281==$.22.1215){15(151.1387){14 249=33.280.398;15(77>=93[0]-151.949/2&&77<=93[0]+151.949/2&&76>=249(33.44[36][2])&&76<=249(33.44[36][3])){37{332:17,362:36,187:93,44:33.44[36]}}}27 15(!151.1271){14 249=33.280.398;15(77>=93[0]-151.648&&77<=93[0]+151.648&&76>=249(33.44[36][2])&&76<=249(33.44[36][3])){37{332:17,362:36,187:93,44:33.44[36]}}}27{14 249=33.280.398;15(77>=93[0]-151.648&&77<=93[0]+151.648&&76>=249(33.44[36][1])&&76<=249(33.44[36][2])){37{332:17,362:36,187:93,44:33.44[36]}}}}27 15(93[0]!=18&&93[1]!=18){57=55.722((77-93[0])*(77-93[0])+(76-93[1])*(76-93[1]));15(57<=636&&(57<=578||578==18)){578=57;37{332:17,362:36,187:93,44:33.44[36]}}}}}}83;355:77=315.77;76=315.76;151=33.49;15(33.89){54=33.504.313/2+33.1192;636=(54>0)?54:0;51(14 36=0;36<33.187.41;36++){93=33.187[36];15(151.281==$.22.1215){15(151.1387){14 249=33.280.398;15(77>=93[0]-151.949/2&&77<=93[0]+151.949/2&&76>=249(33.44[36][2])&&76<=249(33.44[36][3])){37{332:17,362:36,187:93,44:33.44[36]}}}27 15(!151.1271){14 249=33.280.398;15(77>=93[0]-151.648&&77<=93[0]+151.648&&76>=249(33.44[36][2])&&76<=249(33.44[36][3])){37{332:17,362:36,187:93,44:33.44[36]}}}27{14 249=33.280.398;15(77>=93[0]-151.648&&77<=93[0]+151.648&&76>=249(33.44[36][1])&&76<=249(33.44[36][2])){37{332:17,362:36,187:93,44:33.44[36]}}}}27{57=55.722((77-93[0])*(77-93[0])+(76-93[1])*(76-93[1]));15(57<=636&&(57<=578||578==18)){578=57;37{332:17,362:36,187:93,44:33.44[36]}}}}}83}}37 18}13.1502=26(126){14 278=604(126);14 93=126.44.67;14 236=784(278.391,93);14 167=$.447(\'1365\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,236,93])};13.1488=26(126){14 278=604(126);14 93=126.44.67;14 236=784(278.391,93);14 167=$.447(\'1640\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,236,93])};13.1478=26(126){14 278=604(126);14 93=126.44.67;14 236=784(278.391,93);14 167=$.447(\'1380\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,236,93])};13.1436=26(126){14 278=604(126);14 167=$.447(\'1131\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,18,126.44.67])};13.1366=26(126){14 278=604(126);14 93=126.44.67;14 236=784(278.391,93);15(93.802){15(126.616==3){14 167=$.447(\'1353\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,236,93])}27{14 167=$.447(\'1131\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,236,93])}}};13.1293=26(126){14 278=604(126);14 93=126.44.67;14 236=784(278.391,93);14 167=$.447(\'1379\');167.288=126.288;167.284=126.284;$(13).346(167,[278.391,278.480,236,93])};13.1408=26(126){14 278=604(126);14 93=126.44.67;14 167=$.447(\'1634\');167.288=126.288;167.284=126.284;167.1007=126.1007;$(13).346(167,[278.391,278.480,18,93])};13.1394=26(126){14 278=604(126);14 93=126.44.67;14 167=$.447(\'1683\');167.288=126.288;167.284=126.284;167.1007=126.1007;$(13).346(167,[278.391,278.480,18,93])};13.825=26(39,194){14 17,40,59;194=(266(39)==="195"&&194==18)?39:194;39=(266(39)==="416")?39:{};15(194!=322){40=13.40[194];59=40.289.314;59.427(0,0,59.120.137,59.120.141);40.879(59,39,13);59=40.120.314;59.427(0,0,59.120.137,59.120.141);40.129(59,39,13);15(40.49.281==$.22.1450){15(194<13.40.41-1){13.825(194+1)}}}27{51(17=0;17<13.40.41;17++){40=13.40[17];59=40.289.314;59.427(0,0,59.120.137,59.120.141);40.879(59,39,13);59=40.120.314;59.427(0,0,59.120.137,59.120.141);40.129(59,39,13)}}39=194=17=40=59=18};13.1631=26(194){194=200(194,10);14 628=$.816(194,13.298);15(628==-1){37}15(628==13.298.41-1){13.453=13.298.279(0);37}14 768=13.298[13.298.41-1];14 572=13.40[194].120.48.626();14 573=13.40[194].289.48.626();13.40[768].289.48.732(573);13.40[768].120.48.732(572);13.453=13.298.279(0);13.298.1409(628,1);13.298.103(194)};13.1637=26(194){194=200(194,10);14 628=$.816(194,13.298);15(628==0||628==-1){37}14 768=13.298[0];14 572=13.40[194].120.48.626();14 573=13.40[194].289.48.626();13.40[768].289.48.959(573);13.40[768].120.48.959(572);13.453=13.298.279(0);13.298.1409(628,1);13.298.1229(194)};13.1655=26(){14 17,36,572,573,78,490,978;15(13.298==13.453){37}51(17=1;17<13.453.41;17++){490=13.453[17];978=13.453[17-1];572=13.40[490].120.48.626();573=13.40[490].289.48.626();13.40[978].289.48.732(573);13.40[978].120.48.732(572)}78=13.298.279(0);13.298=13.453.279(0);13.453=78};13.1643=26(){14 17,36,424=[],572,573;51(17=0;17<13.40.41;17++){424.103(17)}15(13.298==424){37}13.453=13.298.279(0);13.298=424;51(17=1;17<13.298.41;17++){572=13.40[17].120.48.626();573=13.40[17].289.48.626();13.40[17-1].289.48.732(573);13.40[17-1].120.48.732(572)}};13.1620=26(88){13.701.1490(13,88)}}$.22.1384=26(393){14 171;15($.462(393)){171=[];51(14 17=0;17<393.41;17++){14 354=$.22.914(393[17]);14 270=[354[0],354[1],354[2]];14 1003=270[0]+270[1]+270[2];51(14 36=0;36<3;36++){270[36]=(1003>660)?270[36]*0.85:0.73*270[36]+90;270[36]=200(270[36],10);(270[36]>255)?255:270[36]}270[3]=0.3+0.35*354[3];171.103(\'354(\'+270[0]+\',\'+270[1]+\',\'+270[2]+\',\'+270[3]+\')\')}}27{14 354=$.22.914(393);14 270=[354[0],354[1],354[2]];14 1003=270[0]+270[1]+270[2];51(14 36=0;36<3;36++){270[36]=(1003>660)?270[36]*0.85:0.73*270[36]+90;270[36]=200(270[36],10);(270[36]>255)?255:270[36]}270[3]=0.3+0.35*354[3];171=\'354(\'+270[0]+\',\'+270[1]+\',\'+270[2]+\',\'+270[3]+\')\'}37 171};$.22.1139=26(393){393=393||$.22.271.1138;14 194=0;13.904=26(){15(194<393.41){37 393[194++]}27{194=0;37 393[194++]}};13.1706=26(){15(194>0){37 393[194--]}27{194=393.41-1;37 393[194]}};13.449=26(17){14 194=17-393.41*55.390(17/393.41);37 393[194]};13.1133=26(482){393=482};13.972=26(){194=0};13.1718=26(){37 194};13.1715=26(198){194=198}};$.22.1332=26(201,84){201=201.528(\'#\',\'\');15(201.41==3){201=201.404(0)+201.404(0)+201.404(1)+201.404(1)+201.404(2)+201.404(2)}14 66;66=\'354(\'+200(201.279(0,2),16)+\', \'+200(201.279(2,4),16)+\', \'+200(201.279(4,6),16);15(84){66+=\', \'+84}66+=\')\';37 66};$.22.1675=26(33){14 938=/354?\\( *([0-9]{1,3}\\.?[0-9]*%?) *, *([0-9]{1,3}\\.?[0-9]*%?) *, *([0-9]{1,3}\\.?[0-9]*%?) *(?:, *[0-9.]*)?\\)/;14 197=33.155(938);14 201=\'#\';51(14 17=1;17<4;17++){14 78;15(197[17].781(/%/)!=-1){78=200(255*197[17]/100,10).452(16);15(78.41==1){78=\'0\'+78}}27{78=200(197[17],10).452(16);15(78.41==1){78=\'0\'+78}}201+=78}37 201};$.22.1086=26(33,84){15(33.781(/^ *354?\\(/)!=-1){37 33}27 15(33.781(/^ *#?[0-1373-1340-711]?[0-1373-1340-711]/)!=-1){37 $.22.1332(33,84)}27{438 86 343(\'1684 157 1579\')}};$.22.914=26(33){33=$.22.1329[33]||33;14 66=$.22.1086(33);14 938=/354?\\( *([0-9]{1,3}\\.?[0-9]*%?) *, *([0-9]{1,3}\\.?[0-9]*%?) *, *([0-9]{1,3}\\.?[0-9]*%?) *,? *([0-9.]* *)?\\)/;14 197=66.155(938);14 171=[];51(14 17=1;17<4;17++){15(197[17].781(/%/)!=-1){171[17-1]=200(255*197[17]/100,10)}27{171[17-1]=200(197[17],10)}}171[3]=350(197[4])?350(197[4]):1.0;37 171};$.22.1329={1541:\'66(240, 248, 255)\',1544:\'66(250, 235, 215)\',1525:\'66( 0, 255, 255)\',1530:\'66(127, 255, 212)\',1539:\'66(240, 255, 255)\',1529:\'66(245, 245, 220)\',1531:\'66(255, 228, 196)\',1532:\'66( 0, 0, 0)\',1527:\'66(255, 235, 205)\',1522:\'66( 0, 0, 255)\',1524:\'66(138, 43, 226)\',1533:\'66(165, 42, 42)\',1543:\'66(222, 184, 135)\',1545:\'66( 95, 158, 160)\',1540:\'66(127, 255, 0)\',1537:\'66(210, 105, 30)\',1538:\'66(255, 127, 80)\',1546:\'66(100, 149, 237)\',1516:\'66(255, 248, 220)\',1505:\'66(220, 20, 60)\',1506:\'66( 0, 255, 255)\',1520:\'66( 0, 0, 139)\',1507:\'66( 0, 139, 139)\',1517:\'66(184, 134, 11)\',1518:\'66(169, 169, 169)\',1513:\'66( 0, 100, 0)\',1509:\'66(169, 169, 169)\',1508:\'66(189, 183, 107)\',1510:\'66(139, 0, 139)\',1511:\'66( 85, 107, 47)\',1534:\'66(255, 140, 0)\',1610:\'66(153, 50, 204)\',1589:\'66(139, 0, 0)\',1588:\'66(233, 150, 122)\',1591:\'66(143, 188, 143)\',1593:\'66( 72, 61, 139)\',1592:\'66( 47, 79, 79)\',1587:\'66( 47, 79, 79)\',1586:\'66( 0, 206, 209)\',1547:\'66(148, 0, 211)\',1583:\'66(255, 20, 147)\',1594:\'66( 0, 191, 255)\',1605:\'66(105, 105, 105)\',1607:\'66(105, 105, 105)\',1609:\'66( 30, 144, 255)\',1608:\'66(178, 34, 34)\',1603:\'66(255, 250, 240)\',1602:\'66( 34, 139, 34)\',1597:\'66(255, 0, 255)\',1601:\'66(220, 220, 220)\',1600:\'66(248, 248, 255)\',1578:\'66(255, 215, 0)\',1557:\'66(218, 165, 32)\',1556:\'66(128, 128, 128)\',1558:\'66(128, 128, 128)\',1559:\'66( 0, 128, 0)\',1560:\'66(173, 255, 47)\',1555:\'66(240, 255, 240)\',1554:\'66(255, 105, 180)\',1548:\'66(205, 92, 92)\',1551:\'66( 75, 0, 130)\',1553:\'66(255, 255, 240)\',1552:\'66(240, 230, 140)\',1562:\'66(230, 230, 250)\',1563:\'66(255, 240, 245)\',1577:\'66(124, 252, 0)\',1576:\'66(255, 250, 205)\',1571:\'66(173, 216, 230)\',1570:\'66(240, 128, 128)\',1565:\'66(224, 255, 255)\',1564:\'66(250, 250, 210)\',1566:\'66(211, 211, 211)\',1567:\'66(144, 238, 144)\',1569:\'66(211, 211, 211)\',1581:\'66(255, 182, 193)\',1568:\'66(255, 160, 122)\',1575:\'66( 32, 178, 170)\',1574:\'66(135, 206, 250)\',1572:\'66(119, 136, 153)\',1573:\'66(119, 136, 153)\',1550:\'66(176, 196, 222)\',1549:\'66(255, 255, 224)\',1561:\'66( 0, 255, 0)\',1599:\'66( 50, 205, 50)\',1598:\'66(250, 240, 230)\',1596:\'66(255, 0, 255)\',1606:\'66(128, 0, 0)\',1604:\'66(102, 205, 170)\',1595:\'66( 0, 0, 205)\',1584:\'66(186, 85, 211)\',1585:\'66(147, 112, 219)\',1582:\'66( 60, 179, 113)\',1580:\'66(123, 104, 238)\',1590:\'66( 0, 250, 154)\',1512:\'66( 72, 209, 204)\',1536:\'66(199, 21, 133)\',1542:\'66( 25, 25, 112)\',1523:\'66(245, 255, 250)\',1528:\'66(255, 228, 225)\',1526:\'66(255, 228, 181)\',1535:\'66(255, 222, 173)\',1504:\'66( 0, 0, 128)\',1519:\'66(253, 245, 230)\',1514:\'66(128, 128, 0)\',1688:\'66(107, 142, 35)\',2021:\'66(255, 165, 0)\',2020:\'66(255, 69, 0)\',2022:\'66(218, 112, 214)\',2023:\'66(238, 232, 170)\',2025:\'66(152, 251, 152)\',2024:\'66(175, 238, 238)\',2019:\'66(219, 112, 147)\',2018:\'66(255, 239, 213)\',2013:\'66(255, 218, 185)\',2012:\'66(205, 133, 63)\',2011:\'66(255, 192, 203)\',2014:\'66(221, 160, 221)\',2015:\'66(176, 224, 230)\',2017:\'66(128, 0, 128)\',2016:\'66(255, 0, 0)\',2026:\'66(188, 143, 143)\',2027:\'66( 65, 105, 225)\',2037:\'66(139, 69, 19)\',2036:\'66(250, 128, 114)\',2038:\'66(244, 164, 96)\',2039:\'66( 46, 139, 87)\',2041:\'66(255, 245, 238)\',2040:\'66(160, 82, 45)\',2035:\'66(192, 192, 192)\',2034:\'66(135, 206, 235)\',2029:\'66(106, 90, 205)\',2028:\'66(112, 128, 144)\',2030:\'66(112, 128, 144)\',2031:\'66(255, 250, 250)\',2043:\'66( 0, 255, 127)\',2032:\'66( 70, 130, 180)\',2010:\'66(210, 180, 140)\',2009:\'66( 0, 128, 128)\',1988:\'66(216, 191, 216)\',1987:\'66(255, 99, 71)\',1989:\'66( 64, 224, 208)\',1990:\'66(238, 130, 238)\',1992:\'66(245, 222, 179)\',1331:\'66(255, 255, 255)\',1991:\'66(245, 245, 245)\',1986:\'66(255, 255, 0)\',1985:\'66(154, 205, 50)\'};$.22.566=26(39){$.22.321.108(13);13.116;13.89=52;13.162=\'\';13.308=18;13.296=18;13.299=18;13.48;13.939=56;$.177(52,13,39)};$.22.566.62=86 $.22.321();$.22.566.62.281=$.22.566;$.22.566.62.231=26(39){$.177(52,13,39)};$.22.566.62.129=26(59,67){15(13.48){13.48.574();13.48=18}13.48=$(\'<409 311="274:454;" 900="22-\'+13.116+\'-162"></409>\');15(731(13.162)){13.48.68(\'1331-1980\',\'1324\')}15(!13.939){13.48.614(13.162)}27{13.48.357(13.162)}15(13.308){13.48.68(\'407-751\',13.308)}15(13.296){13.48.68(\'407-313\',13.296)}15(13.299){13.48.68(\'157\',13.299)}37 13.48};$.22.566.62.329=26(){};$.22.623=26(39){$.22.321.108(13);13.531=\'592\';13.116;13.475=52;13.552=52;13.360=56;13.313=4;13.746=6;13.89=52;13.468=52;13.162=18;13.161=18;13.1087={};13.1050=$.22.1333;13.295=\'\';13.1323=\'\';13.256=\'\';13.308;13.296;13.299;13.939=56;13.48;13.830=56;$.177(52,13,39)};$.22.623.62.231=26(39){$.177(52,13,39)};$.22.623.62=86 $.22.321();$.22.623.62.281=$.22.623;$.22.623.62.955=26(161,1328,1327){13.161=161;13.116=1328;15(1327){13.360=52}37 13};$.22.623.62.129=26(){15(13.162===18){13.162=13.295+13.1050(13.256,13.161)+13.1323}14 311={274:\'454\'};15(731(13.162)){311[\'1979\']=\'1324\'}15(13.48){13.48.574();13.48=18}13.48=$(276.309(\'409\'));13.48.401("22-"+13.116+"-294");15(!13.939){13.48.614(13.162)}27{13.48.357(13.162)}13.48.68(311);51(14 33 262 13.1087){13.48.68(33,13.1087[33])}15(13.308){13.48.68(\'407-751\',13.308)}15(13.296){13.48.68(\'407-313\',13.296)}15(13.299){13.48.68(\'157\',13.299)}15(13.830){13.48.401(\'22-1978\')}37 13.48};$.22.1333=26(487,259){15(266 259==\'195\'){15(!487){487=$.22.271.956}37 $.22.509(487,259)}27{37 385(259)}};$.22.1981=26(487,259){15(266 259==\'195\'){259=100*259;15(!487){487=$.22.271.956}37 $.22.509(487,259)}27{37 385(259)}};$.22.623.62.329=26(){};$.22.916=26(){13.302=86 $.22.783()};$.22.916.62.231=26(39){13.314;$.177(52,13,39);14 679={418:\'924\',305:\'382\',156:56,396:56,366:13.800,386:13.761,550:13.799,523:13.798,217:13.1342,229:56,312:13.1339};13.49.302.231(679)};$.22.916.62.309=26(67){14 132;15(13.48){15($.22.553&&345.471.560!==322){132=13.48.449(0);345.471.560(132);132=18}13.48.574();13.48=18}132=67.712.1082();14 174=13.117.137;14 201=13.117.141;132.137=174;132.141=201;13.48=$(132);13.48.401(\'22-268-120\');13.48.68({274:\'454\',97:0,115:0});132=67.712.1101(132);13.365=13.378.115;13.319=201-13.378.172;13.337=13.378.97;13.341=174-13.378.163;13.292=13.341-13.337;13.323=13.319-13.365;132=18;37 13.48};$.22.916.62.129=26(){13.314=13.48.449(0).680("859");14 59=13.314;14 146=13.913;59.540();59.427(0,0,13.117.137,13.117.141);59.297=13.503||13.473;59.369(13.337,13.365,13.292,13.323);59.540();59.418=\'924\';59.305=\'643\';59.217=13.467;59.312=13.1194;14 109,202,33,197;14 159=[\'243\',\'301\',\'282\',\'433\'];51(14 17=4;17>0;17--){14 88=159[17-1];14 116=146[88];14 291=116.269;14 1309=291.41;15(116.89){15(116.1469){14 466={};15(116.1061!==18){466.217=116.1061}15(116.1060!==18){466.312=116.1060}317(88){74\'243\':363(13.337,13.319,13.341,13.319,466);83;74\'301\':363(13.337,13.319,13.337,13.365,466);83;74\'282\':363(13.337,13.319,13.341,13.319,466);83;74\'433\':363(13.341,13.319,13.341,13.365,466);83}}51(14 36=1309;36>0;36--){14 54=291[36-1];15(54.89){14 207=55.382(116.535(54.161))+0.5;317(88){74\'243\':15(54.552&&13.759&&((!54.360&&116.912)||(54.360&&116.911))){363(207,13.365,207,13.319)}15(54.475&&54.531&&((!54.360&&116.915)||(54.360&&116.881))){33=54.746;197=54.531;14 207=55.382(116.535(54.161))+0.5;317(197){74\'592\':109=13.319;202=13.319+33;83;74\'539\':109=13.319-33;202=13.319;83;74\'877\':109=13.319-33;202=13.319+33;83;355:109=13.319;202=13.319+33;83}15(13.260){13.49.302.129(59,[[207,109],[207,202]],{305:\'643\',217:13.467,386:13.467*0.75,523:2,156:56,229:56})}363(207,109,207,202)}83;74\'301\':15(54.552&&13.759&&((!54.360&&116.912)||(54.360&&116.911))){363(13.341,207,13.337,207)}15(54.475&&54.531&&((!54.360&&116.915)||(54.360&&116.881))){33=54.746;197=54.531;14 207=55.382(116.535(54.161))+0.5;317(197){74\'592\':109=13.337-33;202=13.337;83;74\'539\':109=13.337;202=13.337+33;83;74\'877\':109=13.337-33;202=13.337+33;83;355:109=13.337-33;202=13.337;83}15(13.260){13.49.302.129(59,[[109,207],[202,207]],{305:\'643\',217:13.467*1.5,386:13.467*0.75,156:56,229:56})}363(109,207,202,207,{312:116.267})}83;74\'282\':15(54.552&&13.759&&((!54.360&&116.912)||(54.360&&116.911))){363(207,13.319,207,13.365)}15(54.475&&54.531&&((!54.360&&116.915)||(54.360&&116.881))){33=54.746;197=54.531;14 207=55.382(116.535(54.161))+0.5;317(197){74\'592\':109=13.365-33;202=13.365;83;74\'539\':109=13.365;202=13.365+33;83;74\'877\':109=13.365-33;202=13.365+33;83;355:109=13.365-33;202=13.365;83}15(13.260){13.49.302.129(59,[[207,109],[207,202]],{305:\'643\',217:13.467,386:13.467*0.75,523:2,156:56,229:56})}363(207,109,207,202)}83;74\'433\':15(54.552&&13.759&&((!54.360&&116.912)||(54.360&&116.911))){363(13.337,207,13.341,207)}15(54.475&&54.531&&((!54.360&&116.915)||(54.360&&116.881))){33=54.746;197=54.531;14 207=55.382(116.535(54.161))+0.5;317(197){74\'592\':109=13.341;202=13.341+33;83;74\'539\':109=13.341-33;202=13.341;83;74\'877\':109=13.341-33;202=13.341+33;83;355:109=13.341;202=13.341+33;83}15(13.260){13.49.302.129(59,[[109,207],[202,207]],{305:\'643\',217:13.467*1.5,386:13.467*0.75,156:56,229:56})}363(109,207,202,207,{312:116.267})}83;355:83}}}54=18}116=18;291=18}159=[\'548\',\'543\',\'542\',\'544\',\'547\',\'546\',\'571\',\'569\'];51(14 17=7;17>0;17--){14 116=146[159[17-1]];14 291=116.269;15(116.89){14 525=291[116.190-1];14 948=291[0];14 97=116.1303();14 121=[[97,525.1053()+525.327()/2],[97,948.1053()+948.327()/2+1.0]];15(13.260){13.49.302.129(59,121,{305:\'643\',156:56,229:56})}363(121[0][0],121[0][1],121[1][0],121[1][1],{305:\'643\',312:116.267,217:116.318});51(14 36=291.41;36>0;36--){14 54=291[36-1];33=54.746;197=54.531;14 207=55.382(116.535(54.161))+0.5;15(54.475&&54.531){317(197){74\'592\':109=97;202=97+33;83;74\'539\':109=97-33;202=97;83;74\'877\':109=97-33;202=97+33;83;355:109=97;202=97+33;83}121=[[109,207],[202,207]];15(13.260){13.49.302.129(59,121,{305:\'643\',217:13.467*1.5,386:13.467*0.75,156:56,229:56})}363(109,207,202,207,{312:116.267})}54=18}948=18}116=18;291=18}59.499();26 363(1320,1317,1316,1312,58){59.540();58=58||{};15(58.217==18||58.217!=0){$.177(52,59,58);59.697();59.610(1320,1317);59.609(1316,1312);59.926();59.499()}}15(13.260){14 121=[[13.337,13.319],[13.341,13.319],[13.341,13.365]];13.49.302.129(59,121)}15(13.318!=0&&13.1313){363(13.337,13.365,13.341,13.365,{305:\'382\',312:146.282.267,217:146.282.318});363(13.341,13.365,13.341,13.319,{305:\'382\',312:146.433.267,217:146.433.318});363(13.341,13.319,13.337,13.319,{305:\'382\',312:146.243.267,217:146.243.318});363(13.337,13.319,13.337,13.365,{305:\'382\',312:146.301.267,217:146.301.318})}59.499();59=18;146=18};$.22.893=26(){};$.22.893.62.231=26(39){$.177(52,13,39)};$.22.893.62.129=26(){15(13.48){13.48.574();13.48=18}14 151=13.49;14 132=276.309(\'409\');13.48=$(132);13.48.401(\'22-258\');15(!13.357){13.89=56;13.48.141(0);13.48.137(0)}27 15(13.357){14 157;15(13.157){157=13.157}27 15(13.299){157=13.299}14 618={274:\'454\',115:\'336\',97:\'336\'};15(13.613){618[\'137\']=13.613+\'265\'}15(13.296){618[\'296\']=13.296}15(266 13.463===\'906\'){618[\'463\']=13.463}27{618[\'463\']=\'662\'}15(157){618[\'157\']=157}15(13.1162){618[\'1162\']=13.1162}15(13.308){618[\'308\']=13.308}13.48.68(618);15(13.918){13.48.357(13.357)}27{13.48.614(13.357)}}132=18;37 13.48};$.22.893.62.329=26(){};14 1163=0.1;$.22.1148=26(59,342){14 1371={1982:[1163,$.22.271.1374],1984:[$.22.271.1117,$.22.271.1120],1085:18};15(266 342===\'906\'){15(342[0]===\'.\'||342[0]===\'-\'){14 33=342;342=[];51(14 17=0,1375=33.41;17<1375;17++){15(33[17]===\'.\'){342.103(1163)}27 15(33[17]===\'-\'){342.103($.22.271.1117)}27{1193}342.103($.22.271.1120)}}27{342=1371[342]}}15(!(342&&342.41)){37 59}14 693=0;14 942=342[0];14 265=0;14 579=0;14 1126=0;14 1151=0;14 610=26(77,76){59.610(77,76);265=77;579=76;1126=77;1151=76};14 609=26(77,76){14 640=59.217;14 324=77-265;14 352=76-579;14 502=55.722(324*324+352*352);15((502>0)&&(640>0)){324/=502;352/=502;869(52){14 632=640*942;15(632<502){265+=632*324;579+=632*352;15((693&1)==0){59.609(265,579)}27{59.610(265,579)}502-=632;693++;15(693>=342.41){693=0}942=342[693]}27{265=77;579=76;15((693&1)==0){59.609(265,579)}27{59.610(265,579)}942-=502/640;83}}}};14 697=26(){59.697()};14 229=26(){609(1126,1151)};37{610:610,609:609,697:697,229:229}};$.22.516=26(){13.303=86 $.22.871();13.302=86 $.22.783()};$.22.516.62.231=26(39,67){39=39||{};13.387=\'420\';13.49.440={89:56,584:\'97\',247:1983,1369:52};13.49.333=56;13.49.641=18;13.49.1165=52;13.49.376=[];13.49.421=[];13.49.500=[];13.49.512=[];13.49.621=[];13.49.622=[];13.49.1125=[];13.49.118={89:56,457:[],446:[],157:13.157,1299:56,156:52,443:18,417:18,436:18,304:\'3%\'};14 683={557:39.557,501:39.501,615:39.615};598(39.557);598(39.501);598(39.615);$.177(52,13.49,39);13.49.39=39;15(13.49.1125.41>1&&(!39.118||39.118.89==18)){13.49.118.89=52}27 15(39.118&&39.118.89==18&&39.118.304!=18){13.49.118.89=52}15(13.156){13.49.118.89=56}15(13.49.118.89){13.49.1128.108(13,13.49.39,67)}15(13.593){13.49.333=56}14 58={418:13.418,305:13.305,156:13.156,396:56,312:13.157,297:13.443,217:13.217,392:13.392,229:13.156};13.49.303.231(58);14 880=39.761;15(880==18){15(13.217>2.5){880=1.25*(1+(55.653((13.217/2.5))/0.1376-1)*0.6)}27{880=1.25*55.653((13.217/2.5))/0.1376}}14 679={418:13.418,305:13.305,156:13.156,396:56,366:13.800,386:880,550:13.799,523:13.798,217:13.217,392:13.392,229:13.156};13.49.302.231(679);13.408=[];13.779=[[],[]];15(!13.1382&&13.156||13.49.118.89){13.557=52;13.501=56;13.615=18;15(683.501&&683.557==18){683.557=56}$.177(52,13,{557:683.557,501:683.501,615:683.615});15(!13.615){14 1385=(13.49.118.89)?13.49.118.443:13.443;13.615=$.22.1384(1385)}15(13.813){13.813.89=56}}15(!13.1382&&67){67.356.388={};67.529.587(1297);67.590.587(1298);67.472.587(\'1379\',1261);67.472.587(\'1380\',1275);67.472.587(\'1131\',1274);67.472.587(\'1365\',1273);67.472.587(\'1353\',1269)}};$.22.516.62.1128=26(39,67){14 351=39.1125||[];14 118=13.49.118;118.457=[];118.446=[];14 44=13.44;118.436=18;118.417=18;15(351.41==2){15($.462(351[0][0])){14 93;14 921=0,928=0;51(14 17=0,94=351[0].41;17<94;17++){93=351[0][17];15((93[1]!=18&&93[1]>118.436)||118.436==18){118.436=93[1]}15((93[1]!=18&&93[1]<118.417)||118.417==18){118.417=93[1]}}51(14 17=0,94=351[1].41;17<94;17++){93=351[1][17];15((93[1]!=18&&93[1]>118.436)||118.436==18){118.436=93[1];928=1}15((93[1]!=18&&93[1]<118.417)||118.417==18){118.417=93[1];921=1}}15(928===921){118.89=56}118.457=351[928];118.446=351[921]}27 15(351[0].41===44.41&&351[1].41===44.41){14 630=(351[0][0]>351[1][0])?0:1;14 676=(630)?0:1;51(14 17=0,94=44.41;17<94;17++){118.457.103([44[17][0],351[630][17]]);118.446.103([44[17][0],351[676][17]])}}27{118.89=56}}27 15(351.41>2&&!$.462(351[0][0])){14 630=(351[0][0]>351[0][1])?0:1;14 676=(630)?0:1;51(14 17=0,94=351.41;17<94;17++){118.457.103([44[17][0],351[17][630]]);118.446.103([44[17][0],351[17][676]])}}27{14 895=118.304;14 84=18;14 109=18;14 737=18;14 655=18;15($.462(895)){84=895[0];109=895[1]}27{84=895}15(442(84)){15(84.404(84.41-1)===\'%\'){737=\'876\';84=350(84)/100+1}}27{84=350(84);737=\'464\'}15(109!==18&&442(109)){15(109.404(109.41-1)===\'%\'){655=\'876\';109=350(109)/100+1}}27 15(109!==18){109=350(109);655=\'464\'}15(84!==18){15(109===18){109=-84;655=737;15(655===\'876\'){109+=2}}15(84<109){14 78=84;84=109;109=78;78=737;737=655;655=78}51(14 17=0,94=44.41;17<94;17++){317(737){74\'464\':118.457.103([44[17][0],44[17][1]+84]);83;74\'876\':118.457.103([44[17][0],44[17][1]*84]);83}317(655){74\'464\':118.446.103([44[17][0],44[17][1]+109]);83;74\'876\':118.446.103([44[17][0],44[17][1]*109]);83}}}27{118.89=56}}14 875=118.457;14 896=118.446;51(14 17=0,94=875.41;17<94;17++){15((875[17][1]!=18&&875[17][1]>118.436)||118.436==18){118.436=875[17][1]}}51(14 17=0,94=896.41;17<94;17++){15((896[17][1]!=18&&896[17][1]<118.417)||118.417==18){118.417=896[17][1]}}15(118.443===18){14 482=$.22.914(118.157);482[3]=482[3]*0.5;118.443=\'354(\'+482[0]+\', \'+482[1]+\', \'+482[2]+\', \'+482[3]+\')\'}};26 1124(57,283){37(3.1993+283)*55.257(57,-0.1994)}26 2004(617,625){14 33=55.722(55.257((625[0]-617[0]),2)+55.257((625[1]-617[1]),2));37 5.2003*55.522(33)+7.2005}26 905(77){14 84=(55.1360(2*77)-1)/(55.1360(2*77)+1);37 84}26 725(110){14 333=13.49.333;14 293=13.120.340();14 402=13.326.595;14 249=13.280.595;14 561=18;14 1244=18;14 502=110.41/293;14 376=[];14 421=[];15(!442(350(333))){561=350(333)}27{561=1124(502,0.5)}14 290=[];14 241=[];51(14 17=0,94=110.41;17<94;17++){290.103(110[17][1]);241.103(110[17][0])}26 485(1137,1136){15(1137-1136==0){37 55.257(10,10)}27{37 1137-1136}}14 741,788,789,530;14 724=110.41-1;51(14 227=1,1357=110.41;227<1357;227++){14 441=[];14 706=[];51(14 36=0;36<2;36++){14 17=227-1+36;15(17==0||17==724){441[36]=55.257(10,10)}27 15(290[17+1]-290[17]==0||290[17]-290[17-1]==0){441[36]=0}27 15(((241[17+1]-241[17])/(290[17+1]-290[17])+(241[17]-241[17-1])/(290[17]-290[17-1]))==0){441[36]=0}27 15((290[17+1]-290[17])*(290[17]-290[17-1])<0){441[36]=0}27{441[36]=2/(485(241[17+1],241[17])/ (290[17 + 1] - 290[17]) + 485(241[17], 241[17 - 1]) /(290[17]-290[17-1]))}}15(227==1){441[0]=3/2*(290[1]-290[0])/ 485(241[1], 241[0]) - 441[1] /2}27 15(227==724){441[1]=3/2*(290[724]-290[724-1])/ 485(241[724], 241[724 - 1]) - 441[0] /2}706[0]=-2*(441[1]+2*441[0])/485(241[227],241[227-1])+6*(290[227]-290[227-1])/55.257(485(241[227],241[227-1]),2);706[1]=2*(2*441[1]+441[0])/485(241[227],241[227-1])-6*(290[227]-290[227-1])/55.257(485(241[227],241[227-1]),2);530=1/6*(706[1]-706[0])/485(241[227],241[227-1]);789=1/2*(241[227]*706[0]-241[227-1]*706[1])/485(241[227],241[227-1]);788=(290[227]-290[227-1]-789*(55.257(241[227],2)-55.257(241[227-1],2))-530*(55.257(241[227],3)-55.257(241[227-1],3)))/485(241[227],241[227-1]);741=290[227-1]-788*241[227-1]-789*55.257(241[227-1],2)-530*55.257(241[227-1],3);14 1242=(241[227]-241[227-1])/561;14 78,559;51(14 36=0,94=561;36<94;36++){78=[];559=241[227-1]+36*1242;78.103(559);78.103(741+788*559+789*55.257(559,2)+530*55.257(559,3));376.103(78);421.103([402(78[0]),249(78[1])])}}376.103(110[17]);421.103([402(110[17][0]),249(110[17][1])]);37[376,421]}26 726(110){14 333=13.49.333;14 641=13.49.641;14 293=13.120.340();14 402=13.326.595;14 249=13.280.595;14 561=18;14 1244=18;14 84=18;14 1108=18;14 1109=18;14 1113=18;14 1114=18;14 78=18;14 54,33,695,989,994,985;14 992,988,993,996;14 1006,1008,93;14 383=[];14 2006=[];14 502=110.41/293;14 98,111,361,640,775;14 376=[];14 421=[];15(!442(350(333))){561=350(333)}27{561=1124(502,0.5)}15(!442(350(641))){641=350(641)}51(14 17=0,94=110.41-1;17<94;17++){15(641===18){1113=55.335((110[17+1][1]-110[17][1])/(110[17+1][0]-110[17][0]));98=0.3;111=0.6;361=(111-98)/2.0;640=2.5;775=-1.4;78=1113/640+775;1108=361*905(78)-361*905(775)+98;15(17>0){1114=55.335((110[17][1]-110[17-1][1])/(110[17][0]-110[17-1][0]))}78=1114/640+775;1109=361*905(78)-361*905(775)+98;84=(1108+1109)/2.0}27{84=641}51(54=0;54<561;54++){33=54/561;695=(1+2*33)*55.257((1-33),2);989=33*55.257((1-33),2);994=55.257(33,2)*(3-2*33);985=55.257(33,2)*(33-1);15(110[17-1]){992=84*(110[17+1][0]-110[17-1][0]);988=84*(110[17+1][1]-110[17-1][1])}27{992=84*(110[17+1][0]-110[17][0]);988=84*(110[17+1][1]-110[17][1])}15(110[17+2]){993=84*(110[17+2][0]-110[17][0]);996=84*(110[17+2][1]-110[17][1])}27{993=84*(110[17+1][0]-110[17][0]);996=84*(110[17+1][1]-110[17][1])}1006=695*110[17][0]+994*110[17+1][0]+989*992+985*993;1008=695*110[17][1]+994*110[17+1][1]+989*988+985*996;93=[1006,1008];376.103(93);421.103([402(1006),249(1008)])}}376.103(110[94]);421.103([402(110[94][0]),249(110[94][1])]);37[376,421]}$.22.516.62.1119=26(67){14 402=13.326.398;14 249=13.280.398;14 44=13.316;14 458=13.890;13.187=[];13.721=[];13.49.376=[];13.49.421=[];13.49.500=[];13.49.512=[];13.49.621=[];13.49.622=[];14 118=13.49.118;14 658=56;51(14 17=0,94=44.41;17<94;17++){15(44[17][0]!=18&&44[17][1]!=18){13.187.103([402.108(13.326,44[17][0]),249.108(13.280,44[17][1])])}27 15(44[17][0]==18){658=52;13.187.103([18,249.108(13.280,44[17][1])])}27 15(44[17][1]==18){658=52;13.187.103([402.108(13.326,44[17][0]),18])}15(458[17]!=18&&458[17][0]!=18&&458[17][1]!=18){13.721.103([402.108(13.326,458[17][0]),249.108(13.280,458[17][1])])}27 15(458[17]!=18&&458[17][0]==18){13.721.103([18,249.108(13.280,458[17][1])])}27 15(458[17]!=18&&458[17][0]!=18&&458[17][1]==18){13.721.103([402.108(13.326,458[17][0]),18])}}15(658){13.49.333=56;15(13.387===\'420\'){118.89=56}}15(13.387===\'420\'&&118.89){51(14 17=0,94=118.457.41;17<94;17++){13.49.500.103([402.108(13.326,118.457[17][0]),249.108(13.280,118.457[17][1])])}51(14 17=0,94=118.446.41;17<94;17++){13.49.512.103([402.108(13.326,118.446[17][0]),249.108(13.280,118.446[17][1])])}}15(13.387===\'420\'&&13.49.333&&13.187.41>2){14 171;15(13.49.1165){171=725.108(13,13.187);13.49.376=171[0];13.49.421=171[1];15(118.89){171=725.108(13,13.49.500);13.49.621=171[0];171=725.108(13,13.49.512);13.49.622=171[0]}171=18}27{171=726.108(13,13.187);13.49.376=171[0];13.49.421=171[1];15(118.89){171=726.108(13,13.49.500);13.49.621=171[0];171=726.108(13,13.49.512);13.49.622=171[0]}171=18}}};$.22.516.62.1141=26(44,67){14 402=13.326.398;14 249=13.280.398;14 110=[];14 2008=[];13.49.376=[];13.49.421=[];13.49.500=[];13.49.512=[];13.49.621=[];13.49.622=[];14 118=13.49.118;14 658=56;51(14 17=0;17<44.41;17++){15(44[17][0]!=18&&44[17][1]!=18){110.103([402.108(13.326,44[17][0]),249.108(13.280,44[17][1])])}27 15(44[17][0]==18){658=52;110.103([18,249.108(13.280,44[17][1])])}27 15(44[17][1]==18){658=52;110.103([402.108(13.326,44[17][0]),18])}}15(658){13.49.333=56;15(13.387===\'420\'){118.89=56}}15(13.387===\'420\'&&118.89){51(14 17=0,94=118.457.41;17<94;17++){13.49.500.103([402.108(13.326,118.457[17][0]),249.108(13.280,118.457[17][1])])}51(14 17=0,94=118.446.41;17<94;17++){13.49.512.103([402.108(13.326,118.446[17][0]),249.108(13.280,118.446[17][1])])}}15(13.387===\'420\'&&13.49.333&&110.41>2){14 171;15(13.49.1165){171=725.108(13,110);13.49.376=171[0];13.49.421=171[1];15(118.89){171=725.108(13,13.49.500);13.49.621=171[0];171=725.108(13,13.49.512);13.49.622=171[0]}171=18}27{171=726.108(13,110);13.49.376=171[0];13.49.421=171[1];15(118.89){171=726.108(13,13.49.500);13.49.621=171[0];171=726.108(13,13.49.512);13.49.622=171[0]}171=18}}37 110};$.22.516.62.129=26(59,110,39,67){14 17;14 58=$.177(52,{},39);14 260=(58.260!=322)?58.260:13.260;14 774=(58.774!=322)?58.774:13.774;14 156=(58.156!=322)?58.156:13.156;14 661=(58.661!=322)?58.661:13.661;14 778,729,772,719;59.540();15(110.41){15(774){15(156){15(13.767){14 657=13.657;15(!13.1218){657=58.297}14 894=56;14 1170=58.297;15(661){14 720=110.279(0)}15(13.198==0||!13.593){14 437=[];14 773=(13.49.333)?13.49.421:13.316;13.408=[];14 586=13.280.398(13.1171);14 2007=13.326.398(13.1171);58.229=52;15(13.968==\'76\'){437.103([110[0][0],586]);13.408.103([110[0][0],586]);51(14 17=0;17<110.41-1;17++){437.103(110[17]);13.408.103(110[17]);15(773[17][1]*773[17+1][1]<=0){15(773[17][1]<0){894=52;58.297=657}27{894=56;58.297=1170}14 982=110[17][0]+(110[17+1][0]-110[17][0])*(586-110[17][1])/(110[17+1][1]-110[17][1]);437.103([982,586]);13.408.103([982,586]);15(260){13.49.302.129(59,437,58)}13.49.303.129(59,437,58);437=[[982,586]]}}15(773[110.41-1][1]<0){894=52;58.297=657}27{894=56;58.297=1170}437.103(110[110.41-1]);13.408.103(110[110.41-1]);437.103([110[110.41-1][0],586]);13.408.103([110[110.41-1][0],586])}15(260){13.49.302.129(59,437,58)}13.49.303.129(59,437,58)}27{14 776=13.721;51(14 17=776.41;17>0;17--){110.103(776[17-1])}15(260){13.49.302.129(59,110,58)}13.408=110;13.49.303.129(59,110,58)}}27{15(661){14 720=110.279(0)}15(13.198==0||!13.593){14 1169=59.120.141;110.1229([110[0][0],1169]);14 815=110.41;110.103([110[815-1][0],1169])}27{14 776=13.721;51(14 17=776.41;17>0;17--){110.103(776[17-1])}}13.408=110;15(260){13.49.302.129(59,110,58)}13.49.303.129(59,110,58)}15(661){14 1228=$.177(52,{},58,{156:56,229:56});13.49.303.129(59,720,1228);15(13.504.89){15(13.49.333){720=13.187}51(17=0;17<720.41;17++){13.504.129(720[17][0],720[17][1],59,58.496)}}}}27{15(13.49.118.89){14 619;14 466=$.177(52,{},58);15(13.49.118.1299){619=(13.49.333)?13.49.621:13.49.500;13.49.303.129(59,619,58);619=(13.49.333)?13.49.622:13.49.512;13.49.303.129(59,619,466)}15(13.49.118.156){15(13.49.333){619=13.49.621.852(13.49.622.521())}27{619=13.49.500.852(13.49.512.521())}13.408=619;466.229=52;466.156=52;466.297=13.49.118.443;13.49.303.129(59,619,466)}}15(260){13.49.302.129(59,110,58)}13.49.303.129(59,110,58)}}14 778=772=729=719=18;51(17=0;17<13.408.41;17++){14 93=13.408[17];15(778>93[0]||778==18){778=93[0]}15(719<93[1]||719==18){719=93[1]}15(772<93[0]||772==18){772=93[0]}15(729>93[1]||729==18){729=93[1]}}15(13.565===\'420\'&&13.49.118.89){719=13.280.398(13.49.118.417);729=13.280.398(13.49.118.436)}13.779=[[778,719],[772,729]];15(13.504.89&&!156){15(13.49.333){110=13.187}51(17=0;17<110.41;17++){15(110[17][0]!=18&&110[17][1]!=18){13.504.129(110[17][0],110[17][1],59,58.496)}}}}59.499()};$.22.516.62.879=26(59,110,39){};26 1297(91,44,39){51(14 17=0;17<13.40.41;17++){15(13.40[17].49.281==$.22.516){15(13.40[17].557){13.40[17].501=56}}}}26 1298(){15(13.356.388&&13.356.388.642){13.356.388.642.1295();13.356.388.642=18}13.356.388.733=18;13.356.388.642=86 $.22.498();13.264.48.959(13.356.388.642.309(13.275,\'22-388-969-120\',13.117,13));13.356.388.642.771();13.264.48.508(\'1264\',{67:13},26(126){763(126.44.67)})}26 969(67,445,1265,121){14 33=67.40[445];14 120=67.356.388.642;120.314.427(0,0,120.314.120.137,120.314.120.141);33.1259=1265;67.356.388.733=445;14 58={297:33.615};15(33.565===\'420\'&&33.49.118.89){58.156=52;58.229=52}33.49.303.129(120.314,121,58);120=18}26 763(67){14 120=67.356.388.642;120.314.427(0,0,120.314.120.137,120.314.120.141);51(14 17=0;17<67.40.41;17++){67.40[17].1259=18}67.356.388.733=18;67.91.346(\'2002\');120=18}26 1261(126,315,899,236,67){15(236){14 469=[236.332,236.362,236.44];14 977=785.447(\'2001\');977.288=126.288;977.284=126.284;67.91.346(977,469);15(67.40[469[0]].557&&!(469[0]==67.356.388.733)){14 167=785.447(\'1276\');167.616=126.616;167.288=126.288;167.284=126.284;67.91.346(167,469);969(67,236.332,236.362,236.121)}}27 15(236==18){763(67)}}26 1275(126,315,899,236,67){15(236){14 469=[236.332,236.362,236.44];15(67.40[469[0]].501&&!(469[0]==67.356.388.733)){14 167=785.447(\'1276\');167.616=126.616;167.288=126.288;167.284=126.284;67.91.346(167,469);969(67,236.332,236.362,236.121)}}27 15(236==18){763(67)}}26 1274(126,315,899,236,67){14 194=67.356.388.733;15(194!=18&&67.40[194].501){763(67)}}26 1273(126,315,899,236,67){15(236){14 469=[236.332,236.362,236.44];14 167=785.447(\'1996\');167.616=126.616;167.288=126.288;167.284=126.284;67.91.346(167,469)}}26 1269(126,315,899,236,67){15(236){14 469=[236.332,236.362,236.44];14 194=67.356.388.733;15(194!=18&&67.40[194].501){763(67)}14 167=785.447(\'1995\');167.616=126.616;167.288=126.288;167.284=126.284;67.91.346(167,469)}}$.22.517=26(){};$.22.517.62.231=26(39){13.246=18;13.1065="&1997;";13.1469=52;13.1061=18;13.1060=18;13.826=56;13.1483=56;13.966=0;13.1055=0;13.1480=56;13.651=\'\';13.954=56;13.975=1.0;$.177(52,13,39);15(13.246){15(!$.462(13.246)){13.246=18}27 15(13.246.41<2||13.246[1]<=13.246[0]){13.246=18}}15(13.190!=18&&13.190<2){13.190=2}13.1057()};$.22.517.62.129=26(59,67){15(13.89){13.49.1486.108(13,67);14 293=0;14 78;15(13.48){13.48.574();13.48=18}13.48=$(276.309(\'409\'));13.48.401(\'22-116 22-\'+13.88);13.48.68(\'274\',\'454\');15(13.88==\'243\'||13.88==\'282\'){13.48.137(13.117.137)}27{13.48.141(13.117.141)}13.744.116=13.88;13.263=86 13.1467(13.744);15(13.263.89){14 132=13.263.129(59,67);132.1435(13.48);132=18}14 54=13.269;14 294;51(14 17=0;17<54.41;17++){294=54[17];15(294.89&&294.468&&(!294.360||13.1174)){13.48.419(294.129(59,67))}}294=18;54=18}37 13.48};$.22.517.62.972=26(){13.98=13.368.98;13.111=13.368.111;13.223=13.368.223;13.190=13.368.190;13.651=\'\';15(13.954&&13.364&&13.364.256){13.364.256=\'\'}};$.22.517.62.399=26(){14 293=0;14 78;14 174=0;14 201=0;14 677=(13.263==18)?56:13.263.89;15(13.89){14 54=13.269;14 294;51(14 17=0;17<54.41;17++){294=54[17];15(!294.830&&294.89&&294.468&&(!294.360||13.1174)){15(13.88==\'243\'||13.88==\'282\'){78=294.48.713(52)}27{78=294.48.716(52)}15(78>293){293=78}}}294=18;54=18;15(677){174=13.263.48.716(52);201=13.263.48.713(52)}15(13.88==\'243\'){293=293+201;13.48.68({\'141\':293+\'265\',97:\'336\',172:\'336\'})}27 15(13.88==\'282\'){293=293+201;13.48.68({\'141\':293+\'265\',97:\'336\',115:\'336\'})}27 15(13.88==\'301\'){293=293+174;13.48.68({\'137\':293+\'265\',97:\'336\',115:\'336\'});15(677&&13.263.281==$.22.566){13.263.48.68(\'137\',174+\'265\')}}27{293=293+174;13.48.68({\'137\':293+\'265\',163:\'336\',115:\'336\'});15(677&&13.263.281==$.22.566){13.263.48.68(\'137\',174+\'265\')}}}};$.22.517.62.1486=26(67){14 291=13.269;14 829=13.291;14 88=13.88;14 381=13.514;14 293=(13.88.404(0)===\'77\')?13.117.137:13.117.141;14 304;14 98,111;14 1998,2000;14 839,17;14 782=13.98;14 838=13.111;14 1422=13.190;14 1420=13.223;14 636=30;13.975=(55.111(293,636+1)-636)/300.0;15(829.41){51(17=0;17<829.41;17++){14 411=829[17];14 54=86 13.874(13.364);15($.462(411)){54.161=411[0];15(13.246){15(411[0]==13.246[0]){54.162=13.1065;54.830=52;54.552=56;54.475=56}27 15(411[0]>13.246[0]&&411[0]<=13.246[1]){54.89=56;54.552=56;54.162=411[1]}27{54.162=411[1]}}27{54.162=411[1]}54.955(411[0],13.88);13.269.103(54)}27 15($.723(411)){$.177(52,54,411);54.116=13.88;13.269.103(54)}27{54.161=411;15(13.246){15(411==13.246[0]){54.162=13.1065;54.830=52;54.552=56;54.475=56}27 15(411>13.246[0]&&411<=13.246[1]){54.89=56;54.552=56}}54.955(411,13.88);13.269.103(54)}}13.190=829.41;13.98=13.269[0].161;13.111=13.269[13.190-1].161;13.223=(13.111-13.98)/(13.190-1)}27{15(88==\'243\'||88==\'282\'){293=13.117.137}27{293=13.117.141}14 739=13.190;15(13.1480){15(13.88===\'282\'&&67.146.243.89){739=67.146.243.190}27 15(13.88.404(0)===\'76\'&&13.88!==\'301\'&&13.88!==\'569\'&&67.146.301.89){739=67.146.301.190}}98=((13.98!=18)?13.98:381.98);111=((13.111!=18)?13.111:381.111);14 349=111-98;14 692,691;14 78;15(13.364==18||!13.364.256){13.954=52}15(13.98==18||13.111==18&&13.223==18&&!13.979){15(13.826){15(98>0){98=0}15(111<0){111=0}}15(13.1483){15(98>100){98=100}15(111<100){111=100}}14 515=56,554=56;15(13.98!=18){515=52}27 15(13.111!=18){554=52}14 171=$.22.694(98,111,13.975,739,515,554);14 970=(13.98!=18)?98:98+349*(13.481-1);14 974=(13.111!=18)?111:111-349*(13.597-1);15(98<970||111>974){970=(13.98!=18)?98:98-349*(13.481-1);974=(13.111!=18)?111:111+349*(13.597-1);171=$.22.694(970,974,13.975,739,515,554)}13.98=171[0];13.111=171[1];13.190=171[2];13.651=171[3];13.223=171[4]}27{15(98==111){14 980=0.1466;15(98>0){980=55.111(55.522(98)/55.638,0.1466)}98-=980;111+=980}15(13.979&&13.98==18&&13.111==18){14 958,455,777;14 656=56;14 769=56;14 1999={98:18,111:18,2042:18,2049:18};51(14 17=0;17<13.448.41;17++){14 33=13.448[17];14 1487=(33.968==\'77\')?33.326.88:33.280.88;15(13.88==1487){14 629=33.827[33.968];14 600=629[0];14 687=629[0];51(14 36=1;36<629.41;36++){15(629[36]<600){600=629[36]}27 15(629[36]>687){687=629[36]}}14 632=(687-600)/687;15(33.49.281==$.22.801){15(600>=0&&(33.767||632>0.1)){656=52}27{656=56;15(33.156&&33.767&&600<0&&687>0){769=52}27{769=56}}}27 15(33.156){15(600>=0&&(33.767||632>0.1)){656=52}27 15(600<0&&687>0&&33.767){656=56;769=52}27{656=56;769=56}}27 15(600<0){656=56}}}15(656){13.190=2+55.330((293-(13.689-1))/13.689);13.98=0;782=0;455=111/(13.190-1);78=55.257(10,55.335(55.390(55.522(455)/55.638)));15(455/78==200(455/78,10)){455+=78}13.223=55.330(455/78)*78;13.111=13.223*(13.190-1)}27 15(769){13.190=2+55.330((293-(13.689-1))/13.689);14 967=55.330(55.335(98)/349*(13.190-1));14 1072=13.190-1-967;455=55.111(55.335(98/967),55.335(111/1072));78=55.257(10,55.335(55.390(55.522(455)/55.638)));13.223=55.330(455/78)*78;13.111=13.223*1072;13.98=-13.223*967}27{15(13.190==18){15(13.223){13.190=3+55.330(349/13.223)}27{13.190=2+55.330((293-(13.689-1))/13.689)}}15(13.223==18){455=349/(13.190-1);15(455<1){78=55.257(10,55.335(55.390(55.522(455)/55.638)))}27{78=1}13.223=55.330(455*78*13.325)/78}27{78=1/13.223}958=13.223*(13.190-1);777=(958-349)/2;15(13.98==18){13.98=55.390(78*(98-777))/78}15(13.111==18){13.111=13.98+958}}14 567=$.22.764(13.223);14 451;15(567.898>=567.1155){451=\'%57\'}27{14 78=55.111(0,5-567.898);78=55.98(78,567.450);451=\'%.\'+78+\'283\'}13.651=451}27{692=(13.98!=18)?13.98:98-349*(13.481-1);691=(13.111!=18)?13.111:111+349*(13.597-1);349=691-692;15(13.190==18){15(13.223!=18){13.190=55.330((691-692)/13.223)+1}27 15(293>100){13.190=200(3+(293-100)/75,10)}27{13.190=2}}15(13.223==18){13.223=349/(13.190-1)}15(13.111==18){691=692+13.223*(13.190-1)}15(13.98==18){692=691-13.223*(13.190-1)}14 567=$.22.764(13.223);14 451;15(567.898>=567.1155){451=\'%57\'}27{14 78=55.111(0,5-567.898);78=55.98(78,567.450);451=\'%.\'+78+\'283\'}13.651=451;13.98=692;13.111=691}15(13.49.281==$.22.517&&13.651==\'\'){349=13.111-13.98;14 1414=86 13.874(13.364);14 519=1414.256||$.22.271.956;14 519=519.155($.22.509.1152)[0];14 242=0;15(519){15(519.781(/[2100]/)>-1){14 197=519.155(/\\%\\.(\\57{0,})?[2084]/);15(197){242=200(197[1],10)}27{242=6}}27 15(519.781(/[2079]/)>-1){242=0}14 328=55.257(10,-242);15(13.223<328){15(1422==18&&1420==18){13.223=328;15(838==18&&782==18){13.98=55.390(13.514.98/328)*328;15(13.98==13.514.98){13.98=13.514.98-13.223}13.111=55.330(13.514.111/328)*328;15(13.111==13.514.111){13.111=13.514.111+13.223}14 81=(13.111-13.98)/13.223;81=81.976(11);81=55.330(81);13.190=81+1}27 15(838==18){14 81=(13.514.111-13.98)/13.223;81=81.976(11);13.190=55.330(81)+2;13.111=13.98+13.223*(13.190-1)}27 15(782==18){14 81=(13.111-13.514.98)/13.223;81=81.976(11);13.190=55.330(81)+2;13.98=13.111-13.223*(13.190-1)}27{13.190=55.330((838-782)/13.223)+1;13.98=55.390(782*55.257(10,242))/55.257(10,242);13.111=55.330(838*55.257(10,242))/55.257(10,242);13.190=55.330((13.111-13.98)/13.223)+1}}}}}}15(13.954&&13.651!=\'\'){13.364=13.364||{};13.364.256=13.651}14 54,933;51(14 17=0;17<13.190;17++){839=13.98+17*13.223;54=86 13.874(13.364);54.955(839,13.88);13.269.103(54);15(17<13.190-1){51(14 36=0;36<13.1055;36++){839+=13.223/(13.1055+1);933=$.177(52,{},13.364,{88:13.88,161:839,162:\'\',360:52});54=86 13.874(933);13.269.103(54)}}54=18}}15(13.966){13.98=13.98-13.966*13.223;13.111=13.111+13.966*13.223}291=18};$.22.517.62.2089=26(58){15($.462(58)&&58.41==13.269.41){14 54;51(14 17=0;17<58.41;17++){54=13.269[17];54.161=58[17];54.162=54.1050(54.256,58[17]);54.162=54.295+54.162;54.48.614(54.162)}54=18;13.98=$.22.1391(58);13.111=$.22.1388(58);13.329()}};$.22.517.62.329=26(207,125){207=207||{};125=125||13.378;14 291=13.269;14 111=13.111;14 98=13.98;14 1106=125.111;14 631=125.98;14 677=(13.263==18)?56:13.263.89;51(14 93 262 207){13.48.68(93,207[93])}13.378=125;14 405=1106-631;14 403=111-98;15(13.246){403=403-13.246[1]+13.246[0];13.1396=26(93){37(93-631)*403/405+98};13.535=26(286){15(286>13.246[0]&&286<13.246[1]){286=13.246[0]}15(286<=13.246[0]){37(286-98)*405/403+631}27{37(286-13.246[1]+13.246[0]-98)*405/403+631}};15(13.88.404(0)==\'77\'){13.398=26(286){15(286>13.246[0]&&286<13.246[1]){286=13.246[0]}15(286<=13.246[0]){37(286-98)*405/403}27{37(286-13.246[1]+13.246[0]-98)*405/403}};13.595=26(93){37 93*403/405+98}}27{13.398=26(286){15(286>13.246[0]&&286<13.246[1]){286=13.246[0]}15(286>=13.246[1]){37(286-111)*405/403}27{37(286+13.246[1]-13.246[0]-111)*405/403}};13.595=26(93){37 93*403/405+111}}}27{13.1396=26(93){37(93-631)*403/405+98};13.535=26(286){37(286-98)*405/403+631};15(13.88==\'243\'||13.88==\'282\'){13.398=26(286){37(286-98)*405/403};13.595=26(93){37 93*403/405+98}}27{13.398=26(286){37(286-111)*405/403};13.595=26(93){37 93*403/405+111}}}15(13.89){15(13.88==\'243\'||13.88==\'282\'){51(14 17=0;17<291.41;17++){14 54=291[17];15(54.89&&54.468){14 406;15(54.281==$.22.1401&&54.366){14 78=(13.88==\'243\')?1:-1;317(54.1398){74\'728\':15(78*54.366<0){406=-54.340()+54.374.141*55.709(-54.374.366)/2}27{406=-54.374.141*55.709(54.374.366)/2}83;74\'990\':406=-54.340()+54.374.141*55.709(-54.374.366)/2;83;74\'823\':406=-54.374.141*55.709(54.374.366)/2;83;74\'1400\':406=-54.340()/2+54.374.141*55.709(-54.374.366)/2;83;355:406=-54.340()/2+54.374.141*55.709(-54.374.366)/2;83}}27{406=-54.340()/2}14 259=13.535(54.161)+406+\'265\';54.48.68(\'97\',259);54.329()}}15(677){14 174=13.263.48.716(52);13.263.48.68(\'97\',631+405/2-174/2+\'265\');15(13.88==\'243\'){13.263.48.68(\'172\',\'336\')}27{13.263.48.68(\'115\',\'336\')}13.263.329()}}27{51(14 17=0;17<291.41;17++){14 54=291[17];15(54.89&&54.468){14 406;15(54.281==$.22.1401&&54.366){14 78=(13.88==\'301\')?1:-1;317(54.1398){74\'728\':74\'990\':15(78*54.366<0){406=-54.374.141*55.866(-54.374.366)/2}27{406=-54.327()+54.374.141*55.866(54.374.366)/2}83;74\'823\':15(54.366>0){406=-54.374.141*55.866(-54.374.366)/2}27{406=-54.327()+54.374.141*55.866(54.374.366)/2}83;74\'1400\':406=-54.327()/2;83;355:406=-54.327()/2;83}}27{406=-54.327()/2}14 259=13.535(54.161)+406+\'265\';54.48.68(\'115\',259);54.329()}}15(677){14 201=13.263.48.713(52);13.263.48.68(\'115\',1106-405/2-201/2+\'265\');15(13.88==\'301\'){13.263.48.68(\'97\',\'336\')}27{13.263.48.68(\'163\',\'336\')}13.263.329()}}}291=18};26 797(304){14 451;304=55.335(304);15(304>=10){451=\'%57\'}27 15(304>1){15(304===200(304,10)){451=\'%57\'}27{451=\'%.1449\'}}27{14 794=-55.390(55.522(304)/55.638);451=\'%.\'+794+\'283\'}37 451}14 601=[0.1,0.2,0.3,0.4,0.5,0.8,1,2,3,4,5];14 2090=26(283){14 17=601.435(283);15(17>0){37 601[17-1]}27{37 601[601.41-1]/100}};14 2086=26(283){14 17=601.435(283);15(17<601.41-1){37 601[17+1]}27{37 601[0]*100}};26 1102(98,111,999){14 676=55.390(999/2);14 630=55.330(999*1.5);14 1011=731.2095;14 151=(111-98);14 78;14 383;14 822;14 605=$.22.764;14 997;14 519;14 795;14 824;51(14 17=0,94=630-676+1;17<94;17++){795=676+17;78=151/(795-1);383=605(78);78=55.335(999-795)+383.450;15(78<1011){1011=78;822=795;824=383.450}27 15(78===1011){15(383.450<824){822=795;824=383.450}}}997=55.111(824,55.111(605(98).450,605(111).450));15(997===0){519=\'%57\'}27{519=\'%.\'+997+\'283\'}78=151/(822-1);37[98,111,822,519,78]}26 983(349,190){190=190||7;14 964=349/(190-1);14 371=55.257(10,55.390(55.522(964)/55.638));14 606=964/371;14 304;15(371<1){15(606>5){304=10*371}27 15(606>2){304=5*371}27 15(606>1){304=2*371}27{304=371}}27{15(606>5){304=10*371}27 15(606>4){304=5*371}27 15(606>3){304=4*371}27 15(606>2){304=3*371}27 15(606>1){304=2*371}27{304=371}}37 304}26 986(349,555){555=555||1;14 794=55.390(55.522(349)/55.638);14 371=55.257(10,794);14 283=349/371;14 328;283=283/555;15(283<=0.38){328=0.1}27 15(283<=1.6){328=0.2}27 15(283<=4.0){328=0.5}27 15(283<=8.0){328=1.0}27 15(283<=16.0){328=2}27{328=5}37 328*371}26 1103(349,555){14 794=55.390(55.522(349)/55.638);14 371=55.257(10,794);14 283=349/371;14 304;14 328;283=283/555;15(283<=0.38){328=0.1}27 15(283<=1.6){328=0.2}27 15(283<=4.0){328=0.5}27 15(283<=8.0){328=1.0}27 15(283<=16.0){328=2}27{328=5}304=328*371;37[304,328,371]}$.22.694=26(461,434,555,190,515,554){515=(515===18)?56:515;554=(554===18||515)?56:554;15(461===434){434=(434)?0:1}555=555||1.0;15(434<461){14 84=434;434=461;461=84}14 151=[];14 254=986(434-461,555);14 605=$.22.764;15(190==18){15(!515&&!554){151[0]=55.390(461/254)*254; 151[1]=55.330(434/254)*254; 151[2]=55.382((151[1]-151[0])/254+1.0);151[3]=797(254);151[4]=254}27 15(515){151[0]=461;151[2]=55.330((434-461)/254+1.0); 151[1]=461+(151[2]-1)*254;14 1093=605(461).450;14 995=605(254).450;15(1093<995){151[3]=797(254)}27{151[3]=\'%.\'+1093+\'283\'}151[4]=254}27 15(554){151[1]=434;151[2]=55.330((434-461)/254+1.0); 151[0]=434-(151[2]-1)*254;14 1098=605(434).450;14 995=605(254).450;15(1098<995){151[3]=797(254)}27{151[3]=\'%.\'+1098+\'283\'}151[4]=254}}27{14 338=[];338[0]=55.390(461/254)*254; 338[1]=55.330(434/254)*254; 338[2]=55.382((338[1]-338[0])/254+1.0);338[3]=797(254);338[4]=254;15(338[2]===190){151=338}27{14 1104=983(338[1]-338[0],190);151[0]=338[0];151[2]=190;151[4]=1104;151[3]=797(1104);151[1]=151[0]+(151[2]-1)*151[4]}}37 151};$.22.694.986=986;$.22.694.983=983;$.22.694.1103=1103;$.22.694.1102=1102;$.22.518=26(39){13.89=52;13.311=\'1417\';13.217=2;13.313=9.0;13.157=\'#2096\';13.260=52;13.800=45;13.761=1;13.798=3;13.799=\'0.1088\';13.302=86 $.22.783();13.303=86 $.22.871();$.177(52,13,39)};$.22.518.62.231=26(39){$.177(52,13,39);14 841={366:13.800,386:13.761,550:13.799,217:13.217,523:13.798,229:52};15(13.311.435(\'1439\')!=-1){841.156=52}15(13.311.435(\'1440\')!=-1){841.396=52;841.229=56}13.302.231(841);14 864={156:56,396:56,312:13.157,297:13.157,217:13.217,229:52};15(13.311.435(\'1439\')!=-1){864.156=52}15(13.311.435(\'1440\')!=-1){864.396=52;864.229=56}13.303.231(864)};$.22.518.62.1010=26(77,76,59,156,39){14 361=1.2;14 324=13.313/2/361;14 352=13.313/2*361;14 121=[[77-324,76],[77,76+352],[77+324,76],[77,76-352]];15(13.260){13.302.129(59,121)}13.303.129(59,121,39)};$.22.518.62.1263=26(77,76,59,156,39){14 361=1.0;14 324=13.313/2*361;14 352=13.313/2*361;14 792=[[77,76-352],[77,76+352]];14 791=[[77+324,76],[77-324,76]];14 58=$.177(52,{},13.39,{229:56});15(13.260){13.302.129(59,792,{229:56});13.302.129(59,791,{229:56})}13.303.129(59,792,58);13.303.129(59,791,58)};$.22.518.62.1499=26(77,76,59,156,39){14 361=1.0;14 324=13.313/2*361;14 352=13.313/2*361;14 58=$.177(52,{},13.39,{229:56});14 792=[[77-324,76-352],[77+324,76+352]];14 791=[[77-324,76+352],[77+324,76-352]];15(13.260){13.302.129(59,792,{229:56});13.302.129(59,791,{229:56})}13.303.129(59,792,58);13.303.129(59,791,58)};$.22.518.62.1232=26(77,76,59,156,39){14 361=1.0;14 324=13.313/2*361;14 352=13.313/2*361;14 121=[[77-324,76],[77+324,76]];15(13.260){13.302.129(59,121)}13.303.129(59,121,39)};$.22.518.62.363=26(637,861,59,156,39){14 121=[637,861];15(13.260){13.302.129(59,121)}13.303.129(59,121,39)};$.22.518.62.1075=26(77,76,59,156,39){14 361=1.0;14 324=13.313/2/361;14 352=13.313/2*361;14 121=[[77-324,76-352],[77-324,76+352],[77+324,76+352],[77+324,76-352]];15(13.260){13.302.129(59,121)}13.303.129(59,121,39)};$.22.518.62.1074=26(77,76,59,156,39){14 1428=13.313/2;14 990=2*55.367;14 121=[77,76,1428,0,990,52];15(13.260){13.302.129(59,121)}13.303.129(59,121,39)};$.22.518.62.129=26(77,76,59,39){39=39||{};15(39.89==18||39.89!=56){15(39.157&&!39.297){39.297=39.157}15(39.157&&!39.312){39.312=39.157}317(13.311){74\'1721\':13.1010(77,76,59,56,39);83;74\'2097\':13.1010(77,76,59,52,39);83;74\'2094\':13.1074(77,76,59,56,39);83;74\'1417\':13.1074(77,76,59,52,39);83;74\'2083\':13.1075(77,76,59,56,39);83;74\'2082\':13.1075(77,76,59,52,39);83;74\'77\':13.1499(77,76,59,52,39);83;74\'2080\':13.1263(77,76,59,52,39);83;74\'2093\':13.1232(77,76,59,52,39);83;74\'420\':13.363(77,76,59,56,39);83;355:13.1010(77,76,59,56,39);83}}};$.22.783=26(39){13.366=45;13.386=1;13.550=0.1088;13.217=1.5;13.418=\'924\';13.305=\'382\';13.229=56;13.156=56;13.523=3;13.312=\'354(0,0,0,0.1)\';13.396=56;$.177(52,13,39)};$.22.783.62.231=26(39){$.177(52,13,39)};$.22.783.62.129=26(59,121,39){59.540();14 58=(39!=18)?39:{};14 156=(58.156!=18)?58.156:13.156;14 369=(58.369!=18)?58.369:13.369;14 229=(58.229!=18)?58.229:13.229;14 386=(58.386!=18)?58.386:13.386;14 550=(58.550!=18)?58.550:13.550;14 523=(58.523!=18)?58.523:13.523;14 396=(58.396!=18)?58.396:13.396;14 392=(58.392!=18)?58.392:13.392;59.217=(58.217!=18)?58.217:13.217;59.418=(58.418!=18)?58.418:13.418;59.305=(58.305!=18)?58.305:13.305;59.312=58.312||13.312||\'354(0,0,0,\'+550+\')\';59.297=58.297||13.297||\'354(0,0,0,\'+550+\')\';51(14 36=0;36<523;36++){14 608=$.22.1148(59,392);59.1425(55.866(13.366*55.367/180)*386,55.709(13.366*55.367/180)*386);608.697();15(396){59.1367(121[0],121[1],121[2],121[3],121[4],52)}27 15(369){15(369){59.369(121[0],121[1],121[2],121[3])}}27 15(121&&121.41){14 490=52;51(14 17=0;17<121.41;17++){15(121[17][0]!=18&&121[17][1]!=18){15(490){608.610(121[17][0],121[17][1]);490=56}27{608.609(121[17][0],121[17][1])}}27{490=52}}}15(229){608.229()}15(156){59.156()}27{59.926()}}59.499()};$.22.871=26(39){13.217=1.5;13.392=\'1085\';13.418=\'924\';13.305=\'382\';13.229=56;13.156=56;13.396=56;13.369=56;13.558=56;13.427=56;13.312=\'#1084\';13.297=\'#1084\';$.177(52,13,39)};$.22.871.62.231=26(39){$.177(52,13,39)};$.22.871.62.129=26(59,121,39){59.540();14 58=(39!=18)?39:{};14 156=(58.156!=18)?58.156:13.156;14 229=(58.229!=18)?58.229:13.229;14 369=(58.369!=18)?58.369:13.369;14 558=(58.558!=18)?58.558:13.558;14 427=(58.427!=18)?58.427:13.427;14 396=(58.396!=18)?58.396:13.396;14 392=(58.392!=18)?58.392:13.392;14 608=$.22.1148(59,392);59.217=58.217||13.217;59.418=58.418||13.418;59.305=58.305||13.305;59.312=(58.312||58.157)||13.312;59.297=58.297||13.297;59.697();15(396){59.1367(121[0],121[1],121[2],121[3],121[4],52);15(229){59.229()}15(156){59.156()}27{59.926()}59.499();37}27 15(427){59.427(121[0],121[1],121[2],121[3]);59.499();37}27 15(369||558){15(369){59.369(121[0],121[1],121[2],121[3])}15(558){59.558(121[0],121[1],121[2],121[3]);59.499();37}}27 15(121&&121.41){14 490=52;51(14 17=0;17<121.41;17++){15(121[17][0]!=18&&121[17][1]!=18){15(490){608.610(121[17][0],121[17][1]);490=56}27{608.609(121[17][0],121[17][1])}}27{490=52}}15(229){608.229()}15(156){59.156()}27{59.926()}}59.499()};$.22.790=26(){};$.22.790.62.231=26(39){$.177(52,13,39)};$.22.790.62.1188=26(162,157,325,521){14 1187=(325)?13.1389+\'265\':\'336\';14 594;14 429;14 132;14 857;14 787;132=276.309(\'594\');594=$(132);594.401(\'22-431-168\');132=18;15(521){594.2088(13.48)}27{594.1435(13.48)}15(13.1434){429=$(276.309(\'429\'));429.401(\'22-431-168 22-431-168-690\');429.68({463:\'662\',1097:1187});857=$(276.309(\'409\'));857.401(\'22-431-168-690-1403\');787=$(276.309(\'409\'));787.401(\'22-431-168-690\');787.68({503:157,267:157});594.419(429.419(857.419(787)))}15(13.1432){429=$(276.309(\'429\'));429.401(\'22-431-168 22-431-168-162\');429.68(\'1097\',1187);594.419(429);15(13.918){429.357(162)}27{429.614(162)}}429=18;857=18;787=18;594=18;132=18};$.22.790.62.129=26(){15(13.48){13.48.574();13.48=18}15(13.89){14 40=13.448;14 132=276.309(\'431\');13.48=$(132);13.48.401(\'22-431-168\');14 254={274:\'454\'};15(13.473){254[\'473\']=13.473}15(13.551){254[\'551\']=13.551}15(13.296){254[\'296\']=13.296}15(13.308){254[\'308\']=13.308}15(13.299){254[\'299\']=13.299}15(13.511!=18){254[\'511\']=13.511}15(13.575!=18){254[\'575\']=13.575}15(13.507!=18){254[\'507\']=13.507}15(13.568!=18){254[\'568\']=13.568}14 325=56,521=56,33;51(14 17=0;17<40.41;17++){33=40[17];15(33.593||33.49.281==$.22.1450){521=52}15(33.89&&33.468){14 944=13.1443[17]||33.162.452();15(944){14 157=33.157;15(521&&17<40.41-1){325=52}27 15(521&&17==40.41-1){325=56}13.49.1188.108(13,944,157,325,521);325=52}51(14 36=0;36<$.22.952.41;36++){14 945=$.22.952[36].108(13,33);15(945){13.49.1188.108(13,945.162,945.157,325);325=52}}944=18}}}37 13.48};$.22.790.62.329=26(125){15(13.89){15(13.474==\'847\'){317(13.460){74\'659\':14 84=125.97;14 109=125.115;13.48.68(\'97\',84);13.48.68(\'115\',109);83;74\'81\':14 84=(125.97+(13.117.137-125.163))/2-13.340()/2;14 109=125.115;13.48.68(\'97\',84);13.48.68(\'115\',109);83;74\'596\':14 84=125.163;14 109=125.115;13.48.68({163:84,115:109});83;74\'202\':14 84=125.163;14 109=(125.115+(13.117.141-125.172))/2-13.327()/2;13.48.68({163:84,115:109});83;74\'652\':14 84=125.163;14 109=125.172;13.48.68({163:84,172:109});83;74\'33\':14 84=(125.97+(13.117.137-125.163))/2-13.340()/2;14 109=125.172;13.48.68({97:84,172:109});83;74\'644\':14 84=125.97;14 109=125.172;13.48.68({97:84,172:109});83;74\'174\':14 84=125.97;14 109=(125.115+(13.117.141-125.172))/2-13.327()/2;13.48.68({97:84,115:109});83;355:14 84=125.163;14 109=125.172;13.48.68({163:84,172:109});83}}27 15(13.474==\'592\'){317(13.460){74\'659\':14 84=13.117.137-125.97;14 109=125.115;13.48.68(\'163\',84);13.48.68(\'115\',109);83;74\'81\':14 84=(125.97+(13.117.137-125.163))/2-13.340()/2;14 109=13.117.141-125.115;13.48.68(\'97\',84);13.48.68(\'172\',109);83;74\'596\':14 84=13.117.137-125.163;14 109=125.115;13.48.68({97:84,115:109});83;74\'202\':14 84=13.117.137-125.163;14 109=(125.115+(13.117.141-125.172))/2-13.327()/2;13.48.68({97:84,115:109});83;74\'652\':14 84=13.117.137-125.163;14 109=125.172;13.48.68({97:84,172:109});83;74\'33\':14 84=(125.97+(13.117.137-125.163))/2-13.340()/2;14 109=13.117.141-125.172;13.48.68({97:84,115:109});83;74\'644\':14 84=13.117.137-125.97;14 109=125.172;13.48.68({163:84,172:109});83;74\'174\':14 84=13.117.137-125.97;14 109=(125.115+(13.117.141-125.172))/2-13.327()/2;13.48.68({163:84,115:109});83;355:14 84=125.163;14 109=125.172;13.48.68({163:84,172:109});83}}27{317(13.460){74\'659\':13.48.68({97:0,115:125.115});83;74\'81\':14 84=(125.97+(13.117.137-125.163))/2-13.340()/2;13.48.68({97:84,115:125.115});83;74\'596\':13.48.68({163:0,115:125.115});83;74\'202\':14 109=(125.115+(13.117.141-125.172))/2-13.327()/2;13.48.68({163:125.163,115:109});83;74\'652\':13.48.68({163:125.163,172:125.172});83;74\'33\':14 84=(125.97+(13.117.137-125.163))/2-13.340()/2;13.48.68({97:84,172:125.172});83;74\'644\':13.48.68({97:125.97,172:125.172});83;74\'174\':14 109=(125.115+(13.117.141-125.172))/2-13.327()/2;13.48.68({97:125.97,115:109});83;355:13.48.68({163:125.163,172:125.172});83}}}};$.22.379=26(){13.372={};13.700=18};$.22.379.62.231=26(){14 145=86 $.22.1201({425:\'654\'});14 81,17,359;51(81 262 145.91){15(81=="299"){145.91[81]=13.91.68(\'157\')}27{145.91[81]=13.91.68(81)}}15(13.258.89&&13.258.48){51(81 262 145.258){15(81=="299"){145.258[81]=13.258.48.68(\'157\')}27{145.258[81]=13.258.48.68(81)}}}51(81 262 145.268){145.268[81]=13.268[81]}15(145.268.503==18&&13.268.473!=18){145.268.503=13.268.473}15(13.168.89&&13.168.48){51(81 262 145.168){15(81==\'299\'){145.168[81]=13.168.48.68(\'157\')}27{145.168[81]=13.168.48.68(81)}}}14 33;51(17=0;17<13.40.41;17++){33=13.40[17];15(33.49.281==$.22.516){145.40.103(86 1305())}27 15(33.49.281==$.22.801){145.40.103(86 1326())}27 15(33.49.281==$.22.1468){145.40.103(86 1336())}27 15(33.49.281==$.22.1471){145.40.103(86 1337())}27 15(33.49.281==$.22.1473){145.40.103(86 1359())}27 15(33.49.281==$.22.2091){145.40.103(86 1236())}27{145.40.103({})}51(81 262 145.40[17]){145.40[17][81]=33[81]}}14 84,159;51(81 262 13.146){159=13.146[81];84=145.146[81]=86 1372();84.267=159.267;84.318=159.318;15(159.269&&159.269[0]){51(359 262 84.291){15(159.269[0].439(359)){84.291[359]=159.269[0][359]}27 15(159.269[0].48){84.291[359]=159.269[0].48.68(359)}}}15(159.263&&159.263.89){51(359 262 84.162){15(159.263[359]){84.162[359]=159.263[359]}27 15(159.263.48){15(359==\'299\'){84.162[359]=159.263.48.68(\'157\')}27{84.162[359]=159.263.48.68(359)}}}}}13.701.1202(145);13.701.700=13.701.372[145.425]};$.22.379.62.449=26(88){15(!88){37 13.700}27{37 13.372[88]}};26 1176(84,109){37 84-109}$.22.379.62.2092=26(){14 525=[];51(14 81 262 13.372){525.103(81)}37 525.951(1176)};$.22.379.62.2087=26(){14 525=[];14 372=[];51(14 81 262 13.372){525.103(81)}525.951(1176);51(14 17=0;17<525.41;17++){372.103(13.372[525[17]])}37 372};$.22.379.62.1490=26(67,88){14 635=56;15(!88&&13.700&&13.700.425){88=13.700.425}15(!13.372.439(88)){438 86 343("1175 624 2081 2085 88")}27{14 145=13.372[88];13.700=145;14 259,2099=56,2098=56;14 424=[\'243\',\'282\',\'301\',\'433\'];51(17=0;17<424.41;17++){14 159=424[17];15(145.570.267!=18){67.146[159].267=145.570.267}15(145.570.318!=18){67.146[159].318=145.570.318}}51(14 1178 262 67.146){14 116=67.146[1178];15(116.89){14 1277=145.146[1178]||{};14 1268=145.570;14 527=$.22.177(52,{},1277,1268);259=(145.570.267!=18)?145.570.267:527.267;15(527.267!=18){116.267=527.267;635=52}259=(145.570.318!=18)?145.570.318:527.318;15(527.318!=18){116.318=527.318;635=52}15(116.269&&116.269[0]){51(14 359 262 527.291){259=527.291[359];15(259!=18){116.364[359]=259;116.269=[];635=52}}}15(116.263&&116.263.89){51(14 359 262 527.162){259=527.162[359];15(259!=18){116.744[359]=259;635=52}}}}}51(14 81 262 145.268){15(145.268[81]!=18){67.268[81]=145.268[81]}}15(!635){67.268.129()}15(67.168.89){51(81 262 145.168){15(145.168[81]!=18){67.168[81]=145.168[81]}}}15(67.258.89){51(81 262 145.258){15(145.258[81]!=18){67.258[81]=145.258[81]}}}14 17;51(17=0;17<145.40.41;17++){14 58={};14 2077=56;51(81 262 145.40[17]){259=(145.1196[81]!=18)?145.1196[81]:145.40[17][81];15(259!=18){58[81]=259;15(81==\'157\'){67.40[17].49.303.297=259;67.40[17].49.303.312=259;67.40[17][81]=259}27 15((81==\'217\')||(81==\'392\')){67.40[17].49.303[81]=259;67.40[17][81]=259}27 15(81==\'496\'){743(67.40[17].496,259);743(67.40[17].504,259)}27{67.40[17][81]=259}635=52}}}15(635){67.91.1180();67.129()}51(81 262 145.91){15(145.91[81]!=18){67.91.68(81,145.91[81])}}}};$.22.379.62.1202=26(624,88){15(88){624.425=88}15(!624.425){624.425=277.927(86 277())}15(!13.372.439(624.425)){13.372[624.425]=624}27{438 86 343("22.379 343: 1201 1235 262 1252")}};$.22.379.62.1245=26(88){15(88==\'654\'){37 56}37 598 13.372[88]};$.22.379.62.2055=26(88,306){15(266(88)==\'416\'){306=306||88;88=18}15(306&&306.425){88=306.425}27{88=88||277.927(86 277())}14 145=13.477(13.372[\'654\'].425,88);$.22.177(145,306);37 145};26 646(306){15(306==18||266(306)!=\'416\'){37 306}14 78=86 306.281();51(14 428 262 306){78[428]=646(306[428])}37 78}$.22.646=646;26 743(747,611){15(611==18||266(611)!=\'416\'){37}51(14 428 262 611){15(428==\'844\'){747[428]=646(611[428])}15(611[428]!=18&&266(611[428])==\'416\'){15(!747.439(428)){747[428]={}}743(747[428],611[428])}27{747[428]=611[428]}}}$.22.743=743;$.22.177=26(){14 91=261[0]||{},17=1,41=261.41,940=56,39;15(266 91==="2054"){940=91;91=261[1]||{};17=2}15(266 91!=="416"&&!452.108(91)==="[416 2053]"){91={}}51(;17<41;17++){15((39=261[17])!=18){51(14 88 262 39){14 745=91[88],477=39[88];15(91===477){1193}15(940&&477&&266 477==="416"&&!477.1182){91[88]=$.22.177(940,745||(477.41!=18?[]:{}),477)}27 15(477!==322){91[88]=477}}}}37 91};$.22.379.62.1256=26(845,932){15(845==\'654\'||932==\'654\'){438 86 343("22.379 343: 1237 1256 2056/933 654")}15(13.372.439(932)){438 86 343("22.379 343: 2057 88 1235 262 1252.")}27 15(13.372.439(845)){14 145=13.477(845,932);13.1245(845);37 145}438 86 343("22.379 343: 2059 88 2058 86 88 1209")};$.22.379.62.477=26(1208,935,306){15(935==\'654\'){438 86 343("22.379 343: 1237 477 2052 654 624")}15(!13.372.439(1208)){14 33="22.379 343: 2051 88 1209";438 86 343(33)}15(13.372.439(935)){14 33="22.379 343: 1207 88 1209";438 86 343(33)}27{14 145=646(13.372[1208]);145.425=935;$.22.177(52,145,306);13.1202(145);37 145}};$.22.1201=26(88,306){15(266(88)==\'416\'){306=306||88;88=18}88=88||277.927(86 277());13.425=88;13.91={503:18};13.168={299:18,308:18,296:18,551:18,473:18};13.258={299:18,308:18,296:18,463:18};13.1196={};13.40=[];13.268={759:18,1194:18,467:18,503:18,267:18,318:18,260:18};13.570={162:{},291:{}};13.146={};15(266(306)==\'906\'){13.425=306}27 15(266(306)==\'416\'){$.22.177(52,13,306)}};14 1372=26(){13.267=18;13.318=18;13.291=86 1314();13.162=86 1311()};14 1314=26(){13.89=18;13.552=18;13.468=18;13.475=18;13.313=18;13.299=18;13.1304=18;13.296=18;13.308=18};14 1311=26(){13.299=18;13.1304=18;13.296=18;13.308=18;13.1184=18};14 1305=26(){13.157=18;13.217=18;13.392=18;13.260=18;13.443=18;13.937=18;13.496=86 1335()};14 1335=26(){13.89=18;13.311=18;13.217=18;13.313=18;13.157=18;13.260=18};14 1326=26(){13.157=18;13.488=18;13.217=18;13.260=18;13.2046=18;13.2045=18;13.2044=18;13.844=18};14 1336=26(){13.488=18;13.465=18;13.1039=18;13.156=18;13.260=18;13.1042=18;13.217=18;13.844=18};14 1337=26(){13.488=18;13.465=18;13.1039=18;13.156=18;13.260=18;13.1042=18;13.217=18;13.2047=18;13.2048=18;13.2050=18;13.844=18};14 1359=26(){13.157=18;13.217=18;13.260=18;13.465=18;13.2078=18;13.488=18;13.844=18};14 1236=26(){13.465=18;13.503=18;13.2060=18;13.2061=18;13.2072=18;13.2071=18;13.2073=18;13.2074=18;13.2076=18;13.2075=18;13.2070=18};$.348.1448=26(){37 $(13).1289().2069(26(){37 13.1182==3}).357()};$.348.1047=26(){14 68=345.1030?345.1030(13[0],""):13[0].1451;14 1191=68[\'407-311\']?[\'407-311\',\'407-2064\',\'407-313\',\'407-751\']:[\'1498\',\'1184\',\'296\',\'308\'];14 311=[];51(14 17=0;17<1191.41;++17){14 506=385(68[1191[17]]);15(506&&506!=\'2063\'){311.103(506)}}37 311.762(\' \')};$.348.1465=26(39){39=39||{};14 688=(39.688==18)?0:39.688;14 686=(39.686==18)?0:39.686;14 503=(39.503==18)?\'66(255,255,255)\':39.503;15($(13).137()==0||$(13).141()==0){37 18}15($.22.553){37 18}14 634=276.309("120");14 201=$(13).713(52);14 174=$(13).716(52);14 1210=$(13).386();14 1286=1210.97;14 1345=1210.115;14 541=0,753=0;14 1083=[\'22-431-168\',\'22-243-294\',\'22-282-294\',\'22-301-294\',\'22-433-294\',\'22-548-294\',\'22-543-294\',\'22-542-294\',\'22-544-294\',\'22-547-294\',\'22-546-294\',\'22-571-294\',\'22-243-162\',\'22-282-162\',\'22-301-162\',\'22-433-162\',\'22-548-162\',\'22-543-162\',\'22-542-162\',\'22-544-162\',\'22-547-162\',\'22-546-162\',\'22-571-162\'];14 489,430,1027,1029;51(14 17=0;17<1083.41;17++){$(13).1034(\'.\'+1083[17]).580(26(){489=$(13).386().115-1345;430=$(13).386().97-1286;1029=430+$(13).716(52)+541;1027=489+$(13).713(52)+753;15(430<-541){174=174-541-430;541=-430}15(489<-753){201=201-753-489;753=-489}15(1029>174){174=1029}15(1027>201){201=1027}})}634.137=174+731(688);634.141=201+731(686);14 334=634.680("859");334.540();334.297=503;334.369(0,0,634.137,634.141);334.499();334.1425(541,753);334.463=\'97\';334.2062=\'115\';26 1433(166){14 681=200($(166).68(\'420-141\'),10);15(442(681)){681=200($(166).68(\'407-313\'),10)*1.2}37 681}26 1046(166,556,357,97,115,819){14 681=1433(166);14 1429=$(166).834();14 2065=$(166).835();14 684=357.907(/\\33+/);14 1426=684.41;14 174=\'\';14 639=[];14 489=115;14 430=97;51(14 17=0;17<1426;17++){174+=684[17];15(556.818(174).137>1429){639.103(17);174=\'\';17--}}15(639.41===0){15($(166).68(\'463\')===\'662\'){430=97+(819-556.818(174).137)/2-541}556.817(357,430,115)}27{174=684.279(0,639[0]).762(\' \');15($(166).68(\'463\')===\'662\'){430=97+(819-556.818(174).137)/2-541}556.817(174,430,489);489+=681;51(14 17=1,94=639.41;17<94;17++){174=684.279(639[17-1],639[17]).762(\' \');15($(166).68(\'463\')===\'662\'){430=97+(819-556.818(174).137)/2-541}556.817(174,430,489);489+=681}174=684.279(639[17-1],684.41).762(\' \');15($(166).68(\'463\')===\'662\'){430=97+(819-556.818(174).137)/2-541}556.817(174,430,489)}}26 1069(166,688,686){14 832=166.2066.1071();14 93=$(166).274();14 68=345.1030?345.1030(166,""):166.1451;14 97=688+93.97+200(68.507,10)+200(68.2068,10)+200(68.2067,10);14 115=686+93.115+200(68.511,10)+200(68.2033,10)+200(68.1097,10);14 174=634.137;15((832==\'409\'||832==\'1976\')&&!$(166).1051(\'22-813-1806\')){$(166).1068().580(26(){1069(13,97,115)});14 357=$(166).1448();15(357){334.407=$(166).1047();334.297=$(166).68(\'157\');1046(166,334,357,97,115,174)}}27 15(832===\'431\'&&$(166).1051(\'22-431-168\')){334.312=$(166).68(\'551-115-157\');334.297=$(166).68(\'473-157\');334.369(97,115,$(166).834(),$(166).835());15(200($(166).68(\'551-115-137\'),10)>0){334.558(97,115,$(166).834(),$(166).835())}$(166).1034(\'409.22-431-168-690-1403\').580(26(){14 132=$(13);334.312=132.68(\'551-115-157\');14 94=97+132.274().97;14 54=115+132.274().115;334.558(94,54,132.834(),132.835());94+=200(132.68(\'465-97\'),10);54+=200(132.68(\'465-115\'),10);14 201=132.835()-2*200(132.68(\'465-115\'),10);14 174=132.834()-2*200(132.68(\'465-97\'),10);14 690=132.1068(\'409.22-431-168-690\');334.297=690.68(\'473-157\');334.369(94,54,174,201)});$(166).1034(\'429.22-431-168-162\').580(26(){14 132=$(13);14 94=97+132.274().97;14 54=115+132.274().115+200(132.68(\'465-115\'),10);334.407=132.1047();334.297=132.68(\'157\');1046(132,334,132.357(),94,54,174)});14 132=18}27 15(832==\'120\'){334.1807(166,97,115)}}$(13).1068().580(26(){1069(13,688,686)});37 634};$.348.908=26(39){14 1070=$(13).1465(39);15(1070){37 1070.1805("1023/1150")}27{37 18}};$.348.1804=26(39){14 132=276.309("1476");14 358=$(13).908(39);132.745=358;37 132};$.348.1272=26(39){14 358=\'<1476 745=\'+$(13).908(39)+\' />\';37 358};$.348.1802=26(){14 1024=$(13).908({});15(1024){345.460.1803=1024.528("1023/1150","1023/1808-1809")}};$.348.1814=26(){14 1143=$(13).1272({});14 1024=$(13).908({});15(1143){14 174=345.1270(\'\');174.276.1270("1023/1150");174.276.1815(1143);174.276.1813();174=18}};14 101=26(){13.353=101.271.353;13.387="101";13.131=86 277();13.39={};13.456=101.373.820();13.256=\'\';13.494=101.271.494;317(261.41){74 0:83;74 1:15(998(261[0])=="[416 1001]"&&261[0].387!="101"){14 58=13.39=261[0];13.353=58.353||13.353;13.494=58.494||13.494;13.131=101.708(58.602)}27{13.131=101.708(261[0])}83;355:14 84=[];51(14 17=0;17<261.41;17++){84.103(261[17])}13.131=86 277();13.131.821.422(13.131,84.279(0,3));15(84.279(3).41){13.131.678.422(13.131,84.279(3))}83}};101.271={1200:\'851\',353:\'1181\',494:1900};101.62.464=26(195,476){14 647=563[476]||563.707;15(266 647==\'195\'){14 1291=13.131.564();13.131.1041(13.131.645()+(647*195));1037=1291-13.131.564();13.131.1041(13.131.645()-(1037*60*1000))}27{647.464(13,195)}37 13};101.62.646=26(){37 86 101(13.131.645())};101.62.1812=26(){37 13.131.564()*1017};101.62.664=26(717,476,1226){717=86 101(717);15(717===18){37 18}14 647=563[476]||563.707;15(266 647==\'195\'){14 1037=(717.131.564()-13.131.564())*60*1000;14 884=(13.131.645()-717.131.645()+1037)/647}27{14 884=647.664(13.131,717.131)}37(1226?884:55[884>0?\'390\':\'330\'](884))};101.62.1977=26(){37 101.373[13.456]["492"][13.131.649()]};101.62.1810=26(){37 101.373[13.456]["478"][13.131.671()]};101.62.1811=26(){37 13.131.888()>=12?\'1801\':\'1800\'};101.62.1790=26(){37 13.131.888()>=12?\'1458\':\'1078\'};101.62.1791=26(){37 200(13.131.459()/100,10)};101.62.786=26(){37 13.131.786()};101.62.649=26(){37 13.131.649()};101.62.1346=26(){14 1164=13.131.649();37 1164===0?7:1164};101.62.1132=26(){14 57=13.131;14 696=57-86 277(\'\'+57.459()+\'/1/1 1363\');696+=57.564()*1017;57=18;37 200(696/1017/60/24,10)+1};101.62.1789=26(){37 101.373[13.456]["493"][13.131.649()]};101.62.1788=26(){14 57=13.131;14 1019=13.1132();14 1036=6-57.649();14 742=200((1019+1036)/7,10);37 742};101.62.459=26(){37 13.131.459()};101.62.1362=26(){14 532=13.131.564()/60;14 295=532<0?\'+\':\'-\';532=55.335(532);37 295+930(55.390(532),2)+\':\'+930((532%1)*60,2)};101.62.888=26(){37 13.131.888()};101.62.1786=26(){14 532=13.131.888();37 532>12?532-12:(532==0?12:532)};101.62.1251=26(){14 57=13.131;14 742=13.1354();14 1121=(86 277(\'\'+57.459()+\'/1/1\')).649();14 749=742+(1121>4||1121<=1?0:1);15(749==53&&(86 277(\'\'+57.459()+\'/12/31\')).649()<4){749=1}27 15(749===0){57=86 101(86 277(\'\'+(57.459()-1)+\'/12/31\'));749=57.1251()}57=18;37 749};101.62.1255=26(){37 13.131.1255()};101.62.1254=26(){37 13.131.1254()};101.62.671=26(){37 13.131.671()};101.62.1787=26(){37 101.373[13.456]["470"][13.131.671()]};101.62.1322=26(){37 13.131.671()+1};101.62.1253=26(){37 13.131.1253()};101.62.1792=26(){37 13.131.1159()%100};101.62.645=26(){37 13.131.645()};101.62.1793=26(){37 13.131.452().528(/^.*\\(([^)]+)\\)$/,\'$1\')};101.62.1798=26(){14 155=/(?:\\((.+)\\)$| ([741-1005]{3}) )/.1799(13.452());37 155[1]||155[2]||\'1363\'+13.1362()};101.62.564=26(){37 13.131.564()};101.62.1354=26(){14 1019=13.1132();14 1036=7-13.1346();14 742=200((1019+1036)/7,10);37 742};101.62.1797=26(){37 55.382(13.131.645()/1000,0)};101.62.1159=26(){37 13.131.1159()};101.62.904=26(476){476=476||\'707\';37 13.646().464(1,476)};101.62.399=26(){317(261.41){74 0:13.131=86 277();83;74 1:15(998(261[0])=="[416 1001]"&&261[0].387!="101"){14 58=13.39=261[0];13.353=58.353||13.353;13.494=58.494||13.494;13.131=101.708(58.602)}27{13.131=101.708(261[0])}83;355:14 84=[];51(14 17=0;17<261.41;17++){84.103(261[17])}13.131=86 277();13.131.821.422(13.131,84.279(0,3));15(84.279(3).41){13.131.678.422(13.131,84.279(3))}83}37 13};101.62.1310=26(81){13.131.1310(81);37 13};101.62.821=26(){13.131.821.422(13.131,261);37 13};101.62.678=26(){13.131.678.422(13.131,261);37 13};101.62.987=26(81){13.131.987(81);37 13};101.62.1302=26(){13.131.1302.422(13.131,261);37 13};101.62.1195=26(){13.131.1195.422(13.131,261);37 13};101.62.1301=26(){13.131.1301.422(13.131,261);37 13};101.62.1041=26(81){13.131.1041(81);37 13};101.62.856=26(){13.131.856.422(13.131,261);37 13};101.62.941=26(256){256=256||13.256||101.373[13.456][\'256\'];37 101.941(13,256,13.353)};101.62.452=26(){37 13.131.452()};101.62.1796=26(){37(13.131.459()*1794)+(13.1322()*100)+13.131.786()};101.373={\'851\':{470:[\'1795\',\'1816\',\'1817\',\'1115\',\'1092\',\'1838\',\'1321\',\'1413\',\'1058\',\'1839\',\'1144\',\'1344\'],478:[\'748\',\'1020\',\'526\',\'1112\',\'1092\',\'715\',\'718\',\'1142\',\'903\',\'1091\',\'736\',\'1475\'],493:[\'1837\',\'1836\',\'1834\',\'1835\',\'1840\',\'1841\',\'1846\'],492:[\'1847\',\'1845\',\'1844\',\'1842\',\'1843\',\'1833\',\'1832\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1822\':{470:[\'1823\',\'711é1821\',\'1820\',\'1818\',\'805\',\'1819\',\'1824\',\'1223û54\',\'1825\',\'1830\',\'1831\',\'530é1829\'],478:[\'748\',\'711é668\',\'526\',\'1828\',\'805\',\'715\',\'718\',\'1223û\',\'903\',\'1091\',\'736\',\'530é482\'],493:[\'1826\',\'1827\',\'1785\',\'1784\',\'1742\',\'1743\',\'1741\'],492:[\'1740\',\'1399\',\'526\',\'1738\',\'1739\',\'1744\',\'1745\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1750\':{470:[\'1751\',\'1749\',\'310ä1748\',\'1115\',\'805\',\'1325\',\'1746\',\'1413\',\'1058\',\'1318\',\'1144\',\'1747\'],478:[\'748\',\'1020\',\'310ä151\',\'1112\',\'805\',\'715\',\'718\',\'1142\',\'903\',\'1496\',\'736\',\'1146\'],493:[\'1737\',\'1736\',\'1726\',\'1727\',\'1725\',\'1724\',\'1722\'],492:[\'1723\',\'1728\',\'1460\',\'1044\',\'1406\',\'1729\',\'1734\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1735\':{470:[\'1733\',\'1732\',\'1730\',\'1056\',\'1731\',\'1752\',\'1753\',\'1064\',\'1774\',\'1775\',\'1773\',\'1772\'],478:[\'1770\',\'1020\',\'526\',\'1153\',\'1092\',\'715\',\'718\',\'1145\',\'903\',\'1091\',\'736\',\'1771\'],493:[\'1157\',\'1776\',\'1777\',\'1044&1421;1782\',\'1783\',\'1781\',\'285&810;1168\'],492:[\'1167\',\'1399\',\'526\',\'1044&1421;\',\'1780\',\'1778\',\'285&810;109\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1779\':{470:[\'Январь\',\'Февраль\',\'Март\',\'Апрель\',\'Май\',\'Июнь\',\'Июль\',\'Август\',\'Сентябрь\',\'Октябрь\',\'Ноябрь\',\'Декабрь\'],478:[\'Янв\',\'Фев\',\'Мар\',\'Апр\',\'Май\',\'Июн\',\'Июл\',\'Авг\',\'Сен\',\'Окт\',\'Ноя\',\'Дек\'],493:[\'воскресенье\',\'понедельник\',\'вторник\',\'среда\',\'четверг\',\'пятница\',\'суббота\'],492:[\'вск\',\'пнд\',\'втр\',\'срд\',\'чтв\',\'птн\',\'сбт\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1769\':{470:[\'كانون الثاني\',\'شباط\',\'آذار\',\'نيسان\',\'آذار\',\'حزيران\',\'تموز\',\'آب\',\'أيلول\',\'تشرين الأول\',\'تشرين الثاني\',\'كانون الأول\'],478:[\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'10\',\'11\',\'12\'],493:[\'السبت\',\'الأحد\',\'الاثنين\',\'الثلاثاء\',\'الأربعاء\',\'الخميس\',\'الجمعة\'],492:[\'سبت\',\'أحد\',\'اثنين\',\'ثلاثاء\',\'أربعاء\',\'خميس\',\'جمعة\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1459\':{470:[\'1489\',\'1501\',\'526&961;675\',\'1056\',\'1493\',\'1462\',\'1464\',\'1064\',\'1479\',\'1461\',\'1503\',\'1494\'],478:[\'748\',\'1500\',\'526\',\'1153\',\'805\',\'715\',\'718\',\'1145\',\'1266\',\'1278\',\'736\',\'1146\'],493:[\'1157\',\'1290-537\',\'962&961;84-537\',\'1283-537\',\'1282-537\',\'1281-537\',\'285&810;1168\'],492:[\'1167\',\'1248\',\'962\',\'1225\',\'1230\',\'1234\',\'285&810;109\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1459-1768\':{470:[\'1489\',\'1501\',\'526&961;675\',\'1056\',\'1493\',\'1462\',\'1464\',\'1064\',\'1479\',\'1461\',\'1503\',\'1494\'],478:[\'748\',\'1500\',\'526\',\'1153\',\'805\',\'715\',\'718\',\'1145\',\'1266\',\'1278\',\'736\',\'1146\'],493:[\'1157\',\'1290-537\',\'962&961;84-537\',\'1283-537\',\'1282-537\',\'1281-537\',\'285&810;1168\'],492:[\'1167\',\'1248\',\'962\',\'1225\',\'1230\',\'1234\',\'285&810;109\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1758\':{470:[\'1759ń\',\'1757\',\'1756\',\'1754ń\',\'1308\',\'1755\',\'1760\',\'1761ń\',\'1766ń\',\'1338ź1767\',\'1765\',\'1764ń\'],478:[\'1762\',\'1763\',\'526\',\'1848\',\'1308\',\'1849\',\'1935\',\'1936\',\'1934\',\'1338ź\',\'1933\',\'1931\'],493:[\'1932\',\'1937ł1938\',\'1943\',\'Ś1944\',\'1942\',\'1941ą1939\',\'1940\'],492:[\'1930\',\'1929\',\'1919\',\'Ś151\',\'1920\',\'1918\',\'1917\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1915\':{470:[\'1916\',\'1921\',\'1922\',\'1115\',\'1247\',\'1325\',\'1321\',\'1927\',\'1058\',\'1318\',\'1144\',\'1344\'],478:[\'748\',\'1020\',\'526\',\'1112\',\'1247\',\'715\',\'718\',\'1142\',\'903\',\'1496\',\'736\',\'1475\'],493:\',\'[\'1928\',\'1926\',\'1925\',\'1923\',\'1924\',\'1945\',\'1946\'],492:[\'1967\',\'1968\',\'1460\',\'1966\',\'1406\',\'1965\',\'1963\'],256:\'%375-%197-%57 %331:%310:%285\'},\'1964\':{470:[\'1969\',\'1970\',\'1975\',\'1974\',\'1306\',\'1973\',\'1971\',\'1972\',\'1962\',\'1961\',\'1951\',\'1952\'],478:[\'1950\',\'1949\',\'1947\',\'1948\',\'1306\',\'1953\',\'1954\',\'1959\',\'1960\',\'1958\',\'1957\',\'1955\'],493:[\'33ö1221\',\'197å1221\',\'1956\',\'1914\',\'1913\',\'1870\',\'94ö1871\'],492:[\'33ö81\',\'197å81\',\'1869\',\'1868\',\'1866\',\'1867\',\'94ö151\'],256:\'%375-%197-%57 %331:%310:%285\'}};101.373[\'851-1872\']=101.373[\'851-1873\']=101.373[\'851\'];101.373.820=26(){14 94=101.271.1200;15(276&&276.936(\'614\')&&276.936(\'614\')[0].1307){94=276.936(\'614\')[0].1307;15(!101.373.439(94)){94=101.271.1200}}37 94};14 707=24*60*60*1000;14 930=26(227,1319){227=385(227);14 17=1319-227.41;14 33=385(55.257(10,17)).279(1);37 33.852(227)};14 563={1878:1,1879:1000,1877:60*1000,577:60*60*1000,707:707,1876:7*707,865:{464:26(57,195){563.920.464(57,55[195>0?\'390\':\'330\'](195/12));14 758=57.671()+(195%12);15(758==12){758=0;57.856(57.459()+1)}27 15(758==-1){758=11;57.856(57.459()-1)}57.1195(758)},664:26(617,625){14 1350=617.459()-625.459();14 1349=617.671()-625.671()+(1350*12);14 1347=617.786()-625.786();37 1349+(1347/30)}},920:{464:26(57,195){57.856(57.459()+55[195>0?\'390\':\'330\'](195))},664:26(617,625){37 563.865.664(617,625)/12}}};51(14 476 262 563){15(476.984(476.41-1)!=\'33\'){563[476+\'33\']=563[476]}}14 487=26(57,934,353){15(101.599[353]["919"][934]){37 101.941(57,101.599[353]["919"][934],353)}27{14 855=(101.599[353]["929"][934]||\'\').907(\'.\');14 931=57[\'449\'+855[0]]?57[\'449\'+855[0]]():\'\';15(855[1]){931=930(931,855[1])}37 931}};101.941=26(57,256,353,456){14 848=\'1181\';14 846=101.373.820();15(353&&101.599.439(353)){848=353}27 15(353&&101.373.439(353)){846=353}15(456&&101.599.439(456)){848=456}27 15(456&&101.373.439(456)){846=456}15(998(57)!="[416 1001]"||57.387!="101"){57=86 101(57);57.456=846}15(!256){256=57.256||101.373[846][\'256\']}14 672=256||\'%375-%197-%57\',483=\'\',155;869(672.41>0){15(155=672.155(101.599[848].929.1179)){483+=672.279(0,155.198);483+=(155[1]||\'\')+487(57,155[2],848);672=672.279(155.198+155[0].41)}27{483+=672;672=\'\'}}37 483};101.599={1874:\'%375-%197-%1875%331:%310:%285.%1211%1066\',1865:\'%375-%197-%57 %331:%310:%285\'};101.599.1181={929:{1179:/()%(#?(%|[84-727]))/17,375:\'1416\',76:\'1419.2\',197:\'1177.2\',\'#197\':\'1177\',788:\'1407\',109:\'1183\',57:\'277.2\',\'#57\':\'277\',202:\'277\',741:\'1267\',84:\'1258\',174:\'1386\',331:\'1190.2\',\'#331\':\'1190\',858:\'943.2\',\'#858\':\'943\',93:\'1446\',310:\'1185.2\',\'#310\':\'1185\',285:\'1186.2\',\'#285\':\'1186\',33:\'1455\',1211:\'1288.3\',\'#1211\':\'1288\',1454:\'1442\',1005:\'1864\',1066:\'1441\'},919:{711:\'%375-%197-%57\',1080:\'%331:%310:%285\',1054:\'%331:%310:%285\',77:\'%197/%57/%76\',530:\'%197/%57/%76\',\'#482\':\'%84 %109 %202 %331:%310:%285 %375\',668:\'%202-%109-%375\',1456:\'%331:%310\',151:\'%858:%310:%285 %93\',54:\'\\54\',81:\'\\81\',\'%\':\'%\'}};101.599.1854={929:{1179:/()%((%|[84-727]))/17,84:\'1258\',741:\'1267\',57:\'277.2\',202:\'277\',36:\'1855.3\',286:\'1853\',174:\'1386\',1852:\'1850.2\',1851:\'1856.2\',1857:\'1862.2\',109:\'1183\',788:\'1407\',197:\'1177.2\',201:\'1183\',789:\'1863.2\',76:\'1419.2\',375:\'1416\',331:\'1190.2\',858:\'943.2\',94:\'943\',93:\'1446\',1474:\'1861\',310:\'1185.2\',285:\'1186.2\',33:\'1455\',1454:\'1442\',727:\'1441\',1005:\'1860\'},919:{530:\'%197/%57/%76\',711:\'%375-%197-%57\',1080:\'%331:%310:%285\',1054:\'%331:%310:%285\',77:\'%197/%57/%76\',1456:\'%331:%310\',151:\'%858:%310:%285 %93\',54:\'\\54\',81:\'\\81\',\'%\':\'%\'}};101.708=26(602){15(602==18){37 86 277()}15(602 1240 277){37 602}15(266 602==\'195\'){37 86 277(602)}14 397=385(602).528(/^\\33*(.+)\\33*$/1107,\'$1\');397=397.528(/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,4})/,"$1/$2/$3");397=397.528(/^(3[860]|[0-2]?\\57)[-\\/]([84-727]{3,})[-\\/](\\57{4})/17,"$1 $2 $3");14 155=397.155(/^(3[860]|[0-2]?\\57)[-\\/]([84-727]{3,})[-\\/](\\57{2})\\530*/17);15(155&&155.41>3){14 674=350(155[3]);14 491=101.271.494+674;491=385(491);397=397.528(/^(3[860]|[0-2]?\\57)[-\\/]([84-727]{3,})[-\\/](\\57{2})\\530*/17,155[1]+\' \'+155[2]+\' \'+491)}155=397.155(/^([0-9]{1,2})[-\\/]([0-9]{1,2})[-\\/]([0-9]{1,2})[^0-9]/);26 695(397,155){14 667=350(155[1]);14 1214=350(155[2]);14 674=350(155[3]);14 796=101.271.494;14 491,663,603,358;15(667>31){663=674;603=1214;491=796+667}27{663=1214;603=667;491=796+674}358=603+\'/\'+663+\'/\'+491;37 397.528(/^([0-9]{1,2})[-\\/]([0-9]{1,2})[-\\/]([0-9]{1,2})/,358)}15(155&&155.41>3){397=695(397,155)}14 155=397.155(/^([0-9]{1,2})[-\\/]([0-9]{1,2})[-\\/]([0-9]{1,2})$/);15(155&&155.41>3){397=695(397,155)}14 17=0;14 41=101.1081.41;14 342,696,923=397,306;869(17<41){696=277.927(923);15(!442(696)){37 86 277(696)}342=101.1081[17];15(266 342==\'26\'){306=342.108(101,923);15(306 1240 277){37 306}}27{923=397.528(342[0],342[1])}17++}37 1858};101.1859=26(920,865){15(865==2){37 86 277(920,1,29).786()==29?29:28}37[322,31,322,31,30,31,30,31,31,30,31,30,31][865]};101.1081=[[/(3[860]|[0-2]\\57)\\33*\\.\\33*(1[0-2]|0\\57)\\33*\\.\\33*([1-9]\\57{3})/,\'$2/$1/$3\'],[/([1-9]\\57{3})\\33*-\\33*(1[0-2]|0\\57)\\33*-\\33*(3[860]|[0-2]\\57)/,\'$2/$3/$1\'],26(358){14 155=358.155(/^(?:(.+)\\33+)?([1437]?\\57)(?:\\33*\\:\\33*(\\57\\57))?(?:\\33*\\:\\33*(\\57\\57(\\.\\57*)?))?\\33*(1078|1458)?\\33*$/17);15(155){15(155[1]){14 57=13.708(155[1]);15(442(57)){37}}27{14 57=86 277();57.987(0)}14 577=350(155[2]);15(155[6]){577=155[6].1071()==\'1078\'?(577==12?0:577):(577==12?12:577+12)}57.678(577,200(155[3]||0,10),200(155[4]||0,10),((350(155[5]||0))||0)*1000);37 57}27{37 358}},26(358){14 155=358.155(/^(?:(.+))[1080|\\33+]([1437]\\57)(?:\\:(\\57\\57))(?:\\:(\\57\\57))(?:\\.\\57+)([\\+\\-]\\57\\57\\:\\57\\57)$/17);15(155){15(155[1]){14 57=13.708(155[1]);15(442(57)){37}}27{14 57=86 277();57.987(0)}14 577=350(155[2]);57.678(577,200(155[3],10),200(155[4],10),350(155[5])*1000);37 57}27{37 358}},26(358){14 155=358.155(/^([0-3]?\\57)\\33*[-\\/.\\33]{1}\\33*([84-1880-1005]{3,9})\\33*[-\\/.\\33]{1}\\33*([0-3]?\\57)$/);15(155){14 57=86 277();14 796=101.271.494;14 667=350(155[1]);14 674=350(155[3]);14 491,663,603;15(667>31){663=674;491=796+667}27{663=667;491=796+674}14 603=816(155[2],101.373[101.373.820()]["478"]);15(603==-1){603=816(155[2],101.373[101.373.820()]["470"])}57.821(491,603,663);57.678(0,0,0,0);37 57}27{37 358}}];26 816(132,607){15(607.435){37 607.435(132)}51(14 17=0,41=607.41;17<41;17++){15(607[17]===132){37 17}}37-1}26 998(1073){15(1073===18)37"[416 1881]";37 1001.62.452.108(1073)}$.101=101;$.22.509=26(){26 325(358,815,1447,339){14 465=(358.41>=815)?\'\':1903(1+815-358.41>>>0).762(1447);37 339?358+465:465+358}26 971(161){14 814=86 385(161);51(14 17=10;17>0;17--){15(814==(814=814.528(/^(\\57+)(\\57{3})/,"$1"+$.22.509.1491+"$2")))83}37 814}26 735(161,295,339,272,384,380){14 664=272-161.41;15(664>0){14 1067=\' \';15(380){1067=\'&1904;\'}15(339||!384){161=325(161,272,1067,339)}27{161=161.279(0,295.41)+325(\'\',664,\'0\',52)+161.279(295.41)}}37 161}26 770(161,981,295,339,272,242,384,380){14 195=161>>>0;295=295&&195&&{\'2\':\'1902\',\'8\':\'0\',\'16\':\'1901\'}[981]||\'\';161=295+325(195.452(981),242||0,\'0\',56);37 735(161,295,339,272,384,380)}26 256(161,339,272,242,384,380){15(242!=18){161=161.279(0,242)}37 735(161,\'\',339,272,384,380)}14 84=261,17=0,487=84[17++];37 487.528($.22.509.1152,26(984,1045,963,272,1898,242,565){15(984==\'%%\'){37\'%\'}14 339=56,734=\'\',384=56,685=56,380=56,828=56;51(14 36=0;963&&36<963.41;36++)317(963.404(36)){74\' \':734=\' \';83;74\'+\':734=\'+\';83;74\'-\':339=52;83;74\'0\':384=52;83;74\'#\':685=52;83;74\'&\':380=52;83;74\'\\\'\':828=52;83}15(!272){272=0}27 15(272==\'*\'){272=+84[17++]}27 15(272.404(0)==\'*\'){272=+84[272.279(1,-1)]}27{272=+272}15(272<0){272=-272;339=52}15(!1899(272)){438 86 343(\'$.22.509: (964-)137 1905 1906 1911\')}15(!242){242=\'1912\'.435(565)>-1?6:(565==\'57\')?0:1910(0)}27 15(242==\'*\'){242=+84[17++]}27 15(242.404(0)==\'*\'){242=+84[242.279(1,-1)]}27{242=+242}14 161=1045?84[1045.279(0,-1)]:84[17++];317(565){74\'33\':{15(161==18){37\'\'}37 256(385(161),339,272,242,384,380)}74\'482\':37 256(385.1909(+161),339,272,242,384,380);74\'109\':37 770(161,2,685,339,272,242,384,380);74\'675\':37 770(161,8,685,339,272,242,384,380);74\'77\':37 770(161,16,685,339,272,242,384,380);74\'1054\':37 770(161,16,685,339,272,242,384,380).1062();74\'286\':37 770(161,10,685,339,272,242,384,380);74\'17\':{14 195=200(+161,10);15(442(195)){37\'\'}14 295=195<0?\'-\':734;14 665=828?971(385(55.335(195))):385(55.335(195));161=295+325(665,242,\'0\',56);37 735(161,295,339,272,384,380)}74\'57\':{14 195=55.382(+161);15(442(195)){37\'\'}14 295=195<0?\'-\':734;14 665=828?971(385(55.335(195))):385(55.335(195));161=295+325(665,242,\'0\',56);37 735(161,295,339,272,384,380)}74\'202\':74\'1156\':74\'283\':74\'711\':74\'1107\':74\'1066\':{14 195=+161;15(442(195)){37\'\'}14 295=195<0?\'-\':734;14 1484=[\'863\',\'976\',\'1063\'][\'1907\'.435(565.1071())];14 973=[\'452\',\'1062\'][\'1908\'.435(565)%2];14 665=55.335(195)[1484](242);14 413=665.452().907(\'.\');413[0]=828?971(413[0]):413[0];665=413.762($.22.509.1492);161=295+665;14 1481=735(161,295,339,272,384,380)[973]();37 1481}74\'93\':74\'1474\':{14 195=+161;15(442(195)){37\'\'}14 295=195<0?\'-\':734;14 413=385(731(55.335(195)).863()).907(/202|1156/);14 383=(413[0].435(\'.\')!=-1)?413[0].41-1:385(195).41;14 917=(413[1]<0)?-413[1]-1:0;15(55.335(195)<1){15(383+917<=242){161=295+55.335(195).1063(383)}27{15(383<=242-1){161=295+55.335(195).863(383-1)}27{161=295+55.335(195).863(242-1)}}}27{14 1495=(383<=242)?383:242;161=295+55.335(195).1063(1495)}14 973=[\'452\',\'1062\'][\'1897\'.435(565)%2];37 735(161,295,339,272,384,380)[973]()}74\'81\':37\'\';355:37 984}})};$.22.509.1491=\',\';$.22.509.1492=\'.\';$.22.509.1152=/%%|%(\\57+\\$)?([-+#0&\\\' ]*)(\\*\\57+\\$|\\*|\\57+)?(\\.(\\*\\57+\\$|\\*|\\57+))?([1896])/1107;$.22.764=26(195){14 413=385(731(55.335(195)).863()).907(/202|1156/);14 383=(413[0].435(\'.\')!=-1)?413[0].41-1:413[0].41;14 917=(413[1]<0)?-413[1]-1:0;14 901=200(413[1],10);14 1149=(901+1>0)?901+1:0;14 1260=(383<=1149)?0:383-901-1;37{1155:383,898:1149,450:1260,917:917,1886:901}};$.22.1887=26(195){37 $.22.764(195).450};14 1123=$.1885!==56;$.22.412={414:{}};14 1147="22.1884.";$.177($.22.412,{1292:"1.1882",540:26(273,399){51(14 17=0;17<399.41;17++){15(399[17]!==18){273.44(1147+399[17],273[0].311[399[17]])}}},499:26(273,399){51(14 17=0;17<399.41;17++){15(399[17]!==18){273.68(399[17],273.44(1147+399[17]))}}},1352:26(166,370){15(370==="1883"){370=166.588(":591")?"89":"505"}37 370},1315:26(273){15(273.484().588(".946-412-423")){37 273.484()}14 576={137:273.716(52),141:273.713(52),"1284":273.68("1284")},423=$("<409></409>").401("946-412-423").68({296:"100%",473:"1888",551:"1889",777:0,465:0}),313={137:273.137(),141:273.141()},666=276.1217;273.1894(423);15(273[0]===666||$.1222(273[0],666)){$(666).1220()}423=273.484();15(273.68("274")==="1257"){423.68({274:"885"});273.68({274:"885"})}27{$.177(576,{274:273.68("274"),1227:273.68("727-198")});$.580(["115","97","172","163"],26(17,207){576[207]=273.68(207);15(442(200(576[207],10))){576[207]="728"}});273.68({274:"885",115:0,97:0,163:"728",172:"728"})}273.68(313);37 423.68(576).89()},1341:26(273){14 666=276.1217;15(273.484().588(".946-412-423")){273.484().1895(273);15(273[0]===666||$.1222(273[0],666)){$(666).1220()}}37 273}});26 1238(414,39,247,497){15($.723(414)){37 414}414={414:414};15(39===322){39={}}15($.533(39)){497=39;247=18;39={}}15($.565(39)==="195"||$.673.889[39]){497=247;247=39;39={}}15($.533(247)){497=247;247=18}15(39){$.177(414,39)}247=247||39.699;414.699=$.673.1241?0:266 247==="195"?247:247 262 $.673.889?$.673.889[247]:$.673.889.1893;414.510=497||39.510;37 414}26 1892(247){15(!247||266 247==="195"||$.673.889[247]){37 52}15(266 247==="906"&&!$.22.412.414[247]){15(1123&&$.22.412[247]){37 56}37 52}37 56}$.348.177({1110:26(414,39,247,497){14 287=1238.422(13,261),370=287.370,750=287.750,902=$.22.412.414[287.414],1134=!902&&1123&&$.22.412[287.414];15($.673.1241||!(902||1134)){15(370){37 13[370](287.699,287.510)}27{37 13.580(26(){15(287.510){287.510.108(13)}})}}26 1135(904){14 132=$(13),510=287.510,370=287.370;26 910(){15($.533(510)){510.108(132[0])}15($.533(904)){904()}}15(132.588(":591")?370==="505":370==="89"){910()}27{902.108(132[0],287,910)}}15(902){37 750===56?13.580(1135):13.750(750||"673",1135)}27{37 1134.108(13,{39:287,699:287.699,497:287.510,370:287.370})}}});14 1378=/1129|1890|486/,1381=/1129|97|486|922/;$.22.412.414.1127=26(675,910){14 166=$(13),576=["274","115","172","97","163","141","137"],370=$.22.412.1352(166,675.370||"505"),584=675.584||"1129",486=1378.1370(584),878=486?"141":"137",1154=486?"115":"97",1158=1381.1370(584),440={},89=370==="89",423,883,115;15(166.484().588(".946-412-423")){$.22.412.540(166.484(),576)}27{$.22.412.540(166,576)}166.89();115=200(166.68(\'115\'),10);423=$.22.412.1315(166).68({1891:"591"});883=486?423[878]()+115:423[878]();440[878]=89?385(883):\'0\';15(!1158){166.68(486?"172":"163",0).68(486?"115":"97","").68({274:"454"});440[1154]=89?\'0\':385(883)}15(89){423.68(878,0);15(!1158){423.68(1154,883)}}423.882(440,{699:675.699,1334:675.1334,750:56,510:26(){15(370==="505"){166.505()}$.22.412.499(166,576);$.22.412.1341(166);910()}})}})(785);',10,2101,'|||||||||||||this|var|if||i|null||||jqplot||||function|else||||||s|||j|return||options|series|length|||data||||_elem|renderer||for|true||t|Math|false|d|opts|ctx|||prototype||||rgb|plot|css||||||case||y|x|temp|||n||break|a||new||name|show||target||p|l|||left|min|||jsDate||push|||||call|b|gd|max||||top|axis|_plotDimensions|bands||canvas|points||||offsets|ev|||draw||proxy|elem|||||width||||height||||th|axes|||||r||||match|fill|color||ax||value|label|right|||el|evt|legend|||ret|bottom||w|||extend||||||||||gridData|||numberTicks||||idx|number||m|index||parseInt|h|e|||||pos||||||||||lineWidth||||||tickInterval||||num||closePath||init|||hooks||neighbor|||||xx|precision|xaxis|||breakPoints|speed||yp|||||ss||formatString|pow|title|val|shadow|arguments|in|_label|eventCanvas|px|typeof|borderColor|grid|_ticks|newrgb|config|minWidth|element|position|_gridPadding|document|Date|positions|slice|_yaxis|constructor|x2axis|f|pageY|S|u|args|pageX|shadowCanvas|yy|ticks|_width|dim|tick|prefix|fontSize|fillStyle|seriesStack|textColor||yaxis|shadowRenderer|shapeRenderer|interval|lineCap|obj|theta|fontFamily|createElement|M|style|strokeStyle|size|_ctx|gridpos|_plotData|switch|borderWidth|_bottom|Axis|ElemContainer|undefined|_height|dx|pad|_xaxis|getHeight|fact|pack|ceil|H|seriesIndex|smooth|newContext|abs|0px|_left|tempr|leftJustify|getWidth|_right|pattern|Error|gridPadding|window|trigger|k|fn|range|parseFloat|bd|dy|syntax|rgba|default|plugins|text|str|nn|isMinorTick|stretch|pointIndex|drawLine|tickOptions|_top|angle|PI|_options|fillRect|mode|magnitude|themes|regional|_textRenderer|Y|_smoothedData|HooksManager|_offsets|ThemeEngine|htmlSpace|db|round|sd|zeroPad|String|offset|_type|lineRenderer|_sumy|floor|gridPos|linePattern|colors|_stackData|_sumx|isarc|parsable|series_u2p|set||addClass|xp|unitlength|charAt|pixellength|shim|font|_areaPoints|div|sctx|ut|effects|parts|effect|CanvasManager|object|_min|lineJoin|append|line|_smoothedPlotData|apply|wrapper|arr|_name|_axisNames|clearRect|key|td|templeft|table|fb|y2axis|axis_max|indexOf|_max|tempgd|throw|hasOwnProperty|animation|gxx|isNaN|fillColor|seriesDefaults|sidx|lowData|Event|_series|get|digitsRight|fstr|toString|previousSeriesStack|absolute|ti|locale|hiData|pdata|getFullYear|location|axis_min|isArray|textAlign|add|padding|bopts|gridLineWidth|showLabel|ins|monthNames|G_vmlCanvasManager|eventListenerHooks|background|placement|showMark|unit|copy|monthNamesShort|rendererOptions|dataPos|padMin|c|result|parent|dxx|vertical|format|seriesColors|temptop|move|ny|dayNamesShort|dayNames|defaultCentury|sortData|markerOptions|callback|GenericCanvas|restore|_hiBandGridData|highlightMouseDown|dist|backgroundColor|markerRenderer|hide|attr|marginLeft|bind|sprintf|complete|marginTop|_lowBandGridData|series1|_dataBounds|keepMin|LineRenderer|LinearAxisRenderer|MarkerRenderer|fs|dataRenderer|reverse|log|depth|plotValues|tn|Mar|thax|replace|postInitHooks|D|mark|hours|isFunction|preSeriesInitHooks|u2p|postSeriesInitHooks|feira|Series|inside|save|transx|y5axis|y4axis|y6axis|preInitHooks|y8axis|y7axis|y3axis|noDataIndicator|alpha|border|showGridline|use_excanvas|keepMax|scalefact|context|highlightMouseOver|strokeRect|tempx|uninitElement|steps|series2|multipliers|getTimezoneOffset|type|AxisLabelRenderer|sf|marginRight|yMidAxis|axesStyles|y9axis|serelem|shadelem|emptyForce|marginBottom|props|hour|d0|py|each|Legend|xoffset|dataRendererOptions|direction|clear|pyzero|addOnce|is|yoffset|postDrawHooks|hidden|outside|_stack|tr|series_p2u|ne|padMax|delete|formats|vmin|_factors|date|nm|getEventPosition|gsf|residual|array|ctxPattern|lineTo|moveTo|obj2|canvases|_plotWidth|html|highlightColor|which|d1|styles|bdat|doforce|_hiBandSmoothedData|_lowBandSmoothedData|AxisTickRenderer|theme|d2|detach|temp2|stackIndex|vals|hi|offmin|dp|cd|newCanvas|redrawPlot|threshold|p1|LN10|breaks|scale|tension|highlightCanvas|butt|sw|getTime|clone|factor|_tickLength|getDay|seriesLength|_autoFormatString|se|atan|Default|bfunc|forceMinZero|negativeColor|hasNull|nw||fillAndStroke|center|nd|diff|number_str|active|m1|v|Title|Grid|getMonth|source|fx|m3|o|low|lshow|setHours|sopts|getContext|lineheight|plotdata|lopts|words|prefixBaseX|y_offset|vmax|x_offset|tickSpacing|swatch|rmax|rmin|patternIndex|LinearTickGenerator|h1|ms|beginPath|dir|duration|activeTheme|themeEngine|ii|negativeSeriesColors|sm|sa|ggxx|day|createDate|sin|vertex1|F|canvasManager|outerHeight|temps|Jun|outerWidth|dateObj|Jul|ymax|fasgd|_prevGridData|sqrt|isPlainObject|nmax|computeConstrainedSmoothedData|computeHermiteSmoothedData|z|auto|ymin|fillBetween|Number|after|highlightedSeriesIndex|positivePrefix|justify|Nov|afunc|_data|_numberTicks|baseCanvas|A|woy|merge|labelOptions|src|markSize|obj1|Jan|idow|queue|family|comp|transy|_barPoints|baseSeries|havehook|sid1|prevMonth|drawGridlines|legendPadding|shadowOffset|join|unhighlight|getSignificantFigures|getElementById|myCanvases|fillToZero|opidx|forceZeroLine|formatBaseX|setContext|xmax|pd|showLine|shift|prev|margin|xmin|_boundingBox|tid|search|userMin|ShadowRenderer|checkIntersection|jQuery|getDate|div1|B|C|TableLegendRenderer|points2|points1|legendElem|expv|currentNT|cent|bestFormatString|shadowDepth|shadowAlpha|shadowAngle|BarRenderer|captureRightClick|dval|defaultAxisStart|Mai|check|postParseOptionsHooks|preParseSeriesOptionsHooks|preParseOptionsHooks|aacute|preDrawHooks|postParseSeriesOptionsHooks|highlighter|value_str|len|inArray|fillText|measureText|canvasWidth|getLocale|setFullYear|bestNT|start|bestPrec|drawSeries|forceTickAt0|_plotValues|thousandSeparation|userTicks|_breakTick|preDrawSeriesHooks|tagname|free|innerWidth|innerHeight|computePlotData|klass|userMax|tt|clss|sdopt|minang|vertex2|highlightColors|oldName|loc|insideGrid|syn|support_canvas|maxang|en|concat|support_canvas_text|resetAxes|getter|setYear|div0|I|2d|01|p2|tempi|toExponential|shopt|month|cos|syncTicks|_stackAxis|while|minyidx|ShapeRenderer|maxyidx|stackSeries|tickRenderer|hd|multiply|cross|ref|drawShadow|shadow_offset|drawMinorTickMarks|animate|distance|unitDiff|relative|firstChild||getHours|speeds|_prevPlotData|datas|_els|DivTitleRenderer|isnegative|intrv|ld|sid2|digitsLeft|datapos|class|expn|effectMethod|Sep|next|tanh|string|split|jqplotToImageStr|point|done|drawMinorGridlines|drawMajorGridlines|_axes|getColorComponents|drawMajorTickMarks|CanvasGridRenderer|zeros|escapeHtml|shortcuts|year|bdminidx|horizontal|current|miter|removeClass|stroke|parse|bdmaxidx|codes|addZeros|nbr|newName|to|code|targetName|getElementsByTagName|showMarker|pat|escapeHTML|deep|strftime|patternDistance|Hours12|lt|item|ui|scaleToHiddenSeries|t0|_bodyWidth|_plotHeight|sort|addLegendRowHooks|sc|_overrideFormatString|setTick|defaultTickFormatString|prevval|rrange|before|cv|ccedil|Ter|flags|minimum|ol|tickInset|ntmin|fillAxis|highlight|tumin|thousand_separate|reset|textTransform|tumax|_scalefact|toFixed|evt1|keep|autoscale|adj|base|xintercept|bestInterval|substring|h4|bestLinearInterval|setMilliseconds|TiY|h2|end|error|TiX|Ti1X|h3|digitsSS|Ti1Y|fsd|get_type|nttarget||Object|dl|sum|tempy|Z|pX|relatedTarget|pY|stackval|drawDiamond|badness|hp|heightAdj|fadeIn|gridDimensions|gpr|60000|_center|doy|Feb|widthAdj|animateReplot|image|imgData|postDrawSeriesShadowHooks|go|tempbottom|__ticks|tempright|getComputedStyle|nextAll|preDrawLegendHooks|EventListenerManager|find|preDrawSeriesShadowHooks|rdow|OffsetDiff|ra|sliceMargin|postDrawSeriesHooks|setTime|startAngle|disableStack|Mi|valueIndex|writeWrappedText|jqplotGetComputedFontStyle|console|targetId|formatter|hasClass|plotDimensions|getTop|X|minorTicks|Abril|resetDataBounds|September|vlast|baselineColor|baselineWidth|toUpperCase|toPrecision|Agosto|breakTickLabel|G|spchar|children|_jqpToImage|imgCanvas|toLowerCase|ntmax|thing|drawCircle|drawSquare|axesDefaults|eh|am|freeAllCanvases|T|matchers|getCanvas|clses|999999|solid|normalize2rgb|_styles|07|negativeColorGenerator|colorGenerator|Oct|May|digitsMin|fadeOut|resetScale|makeNew|paddingTop|digitsMax|fillAlpha|parseOptions|initCanvas|bestConstrainedInterval|bestLinearComponents|newti|unbind|offmax|g|a1|a2|jqplotEffect|prop|Apr|slope|slope2|April|_drawCount|dashLength|sel|setGridData|gapLength|dow1_1|rapad|backCompat|getSteps|bandData|pathx0|blind|initBands|up|tdata|jqplotMouseUp|getDayOfYear|setColors|oldEffectMethod|run|x0|x1|defaultColors|ColorGenerator|stop|makeGridData|Aug|imgStr|November|Ago|Dez|dataSpace|LinePattern|dleft|png|pathy0|regex|Abr|ref2|significantDigits|E|Domingo|motion|getYear|dimension|useSeriesColor|paddingBottom|dotlen|dow|constrainSmoothing|not|Dom|bado|gridymin|posfs|fillToValue|jqPlot|id1|showMinorTicks|No|numericalOrder|MonthNumber|axname|matcher|empty|perl|nodeType|AbbrMonthName|fontWeight|Minutes|Seconds|rs|addrow|getPosition|Hours|attrs|neighborThreshold|continue|gridLineColor|setMonth|seriesStyles|findedge|enablePlugins|vfirst|defaultLocale|Theme|_add|support|rex|numPoints|lex|Target|sourceName|invalid|offs|N|barDirection|showTicks|m2|OHLCRenderer|_tickInterval|activeElement|useNegativeColors|bat|focus|ndag|contains|Ao|doFillBetweenLines|Qua|allowDecimal|zIndex|fasopts|unshift|Qui|tw|drawDash|gdh|Sex|already|MeterSeriesProperties|Cannot|_normalizeArguments|cssopts|instanceof|off|increment|visible|_steps|remove|_radius|Mei|Seg|destroy||getIsoWeek|use|getSeconds|getMinutes|getMilliseconds|rename|static|AbbrDayName|_highlightedPoint|dright|handleMove|id2|drawPlus|mouseleave|pidx|Set|DayName|thaxstyle|handleRightClick|open|hlc|jqplotToImageElemStr|handleClick|handleMouseUp|handleMouseDown|jqplotDataHighlight|thaxis|Out|msg|specified|Sexta|Quinta|Quarta|float|id|plotleft|gdw|Milliseconds|contents|Segunda|oldOffset|version|onMouseMove|message|resetCanvas|setOptions|postInit|postPlotDraw|showLines|ew|setSeconds|setMinutes|getLeft|whiteSpace|LineSeriesProperties|maj|lang|Maj|numticks|setDate|AxisLabel|ey|drawBorder|AxisTicks|createWrapper|ex|by|Oktober|digits|bx|July|getMonthNumber|suffix|nowrap|Juni|BarSeriesProperties|isMinor|axisName|colorKeywordMap|preDraw|white|hex2rgb|DefaultTickFormatter|easing|MarkerOptions|PieSeriesProperties|DonutSeriesProperties|Pa|shadowColor|fA|removeWrapper|shadowWidth|removeChildForce|December|plottop|getDayOfWeek|diffDays|tlen|diffMonths|diffYears|reInitialize|setMode|jqplotRightClick|getWeekOfYear|outsideGrid|gridBorderWidth|gdl|noData|FunnelSeriesProperties|exp|removeChild|getGmtOffset|GMT|_defaultGridPadding|jqplotClick|onRightClick|arc|resetAxesScale|_supported|test|defaultLinePatterns|AxisProperties|9a|dotGapLength|imax|785398163|indicator|rvertical|jqplotMouseMove|jqplotMouseDown|rpositivemotion|isTrendline|quickInit|computeHighlightColors|fc|Day|candleStick|arrayMax|rowSpacing|errorFontFamily|arrayMin|normalizeData|errorBackground|onMouseLeave|errorBorder|p2u|errorFontSize|labelPosition|Lun|middle|CanvasAxisTickRenderer|errorFontWeight|outline|errorFontStyle|attrib|Do|MonthName|onMouseEnter|splice|removeAttr|defaultNegativeColors|cdl|August|temptick|showTickMarks|FullYear|filledCircle|errorMessage|ShortYear|userTI|eacute|userNT|gridbw|catchErrors|translate|wl|defaults|radius|tagwidth|_primaryAxis|tsl|showLabels|getLineheight|showSwatches|appendTo|onMouseUp|012|breakOnNull|filled|ircle|GmtOffset|TimezoneOffset|labels|ltemp|mouseup|AMPM|chr|jqplotChildText|1f|BezierCurveRenderer|currentStyle|defaultWidth|defaultHeight|O|Unix|R|an|pm|pt|Di|Outubro|Junho|_addDomReference|Julho|jqplotToImageCanvas|05|labelRenderer|PieRenderer|drawBaseline|freeCanvas|DonutRenderer|drawIfHidden|FunnelRenderer|P|Dec|img|sr|onMouseDown|Setembro|alignTicks|justified|bindCustomEvents|forceTickAt100|method|addDomReference|createTicks|faname|onDblClick|Janeiro|activate|thousandsSeparator|decimalMark|Maio|Dezembro|prec|Okt|targetCounter|fontStyle|drawX|Fev|Fevereiro|onClick|Novembro|navy|crimson|cyan|darkcyan|darkkhaki|darkgrey|darkmagenta|darkolivegreen|mediumturquoise|darkgreen|olive|5em|cornsilk|darkgoldenrod|darkgray|oldlace|darkblue|event|blue|mintcream|blueviolet|aqua|moccasin|blanchedalmond|mistyrose|beige|aquamarine|bisque|black|brown|darkorange|navajowhite|mediumvioletred|chocolate|coral|azure|chartreuse|aliceblue|midnightblue|burlywood|antiquewhite|cadetblue|cornflowerblue|darkviolet|indianred|lightyellow|lightsteelblue|indigo|khaki|ivory|hotpink|honeydew|gray|goldenrod|grey|green|greenyellow|lime|lavender|lavenderblush|lightgoldenrodyellow|lightcyan|lightgray|lightgreen|lightsalmon|lightgrey|lightcoral|lightblue|lightslategray|lightslategrey|lightskyblue|lightseagreen|lemonchiffon|lawngreen|gold|spec|mediumslateblue|lightpink|mediumseagreen|deeppink|mediumorchid|mediumpurple|darkturquoise|darkslategrey|darksalmon|darkred|mediumspringgreen|darkseagreen|darkslategray|darkslateblue|deepskyblue|mediumblue|magenta|fuchsia|linen|limegreen|ghostwhite|gainsboro|forestgreen|floralwhite|mediumaquamarine|dimgray|maroon|dimgrey|firebrick|dodgerblue|darkorchid|mouseenter|syncXTicks|innerHTML|replot|_innerRadius|jqplotPreReplot|ff5800|478396|C7AF7B|activateTheme|syncYTicks|ppd|9F9274|redraw|isEmptyObject|C08840|UTCAdjust|leadingWhitespace|jqplotPostRedraw|timezoneOffset|moveSeriesToFront|jqplotPostReplot|Data|jqplotMouseEnter|populatePlotData|Loading|moveSeriesToBack|959E5C|jqplotPostDraw|jqplotDblClick|revision|6F6621|restoreOriginalSeriesOrder|catch|jqplotPreRedraw|6E3F5F|A89050|4F64B0|C45923|initElement|seriesColorsIndex|187399|try|FBD178|restorePreviousSeriesOrder|dblclick|646C4A|546D61|jqplotPreDraw|tempseries|PyramidRenderer|click|945381|jqplot_target_|container|0085cc|jqplotSeriesDraw|toggleDisplay|boxModel|579575|839557|cleanData|_version|c5b47f|rgb2hex|_intervals|498991|outerHTML|objectAll|preventJqPlotSeriesDrawTrigger|bd70c7|_intervalStats|jqplotMouseLeave|Invalid|pp|bw|getNextSeriesColor|olivedrab|958c12|953579|4b5de4|d8b83f|oncontextmenu|cccccc|getBottom|cddf54|comparator|getRight|4bb2c5|fffdf6|_vertices|BubbleRenderer|c747a3|colorIndex|align|previous|mousedown|EAA228|substr|26B4E3|_highlightThreshold|srcLocation|pluginLocation|907294|setIndex|ohlc|mousemove|getIndex|Canvas|legendInfo|diamond|Samstag|So|Freitag|Donnerstag|Dienstag|Mittwoch|Mo|Fr|Marzo|Mayo|Febrero|Enero|Sa|es|Montag|Sonntag|Mer|Jeu|Dim|Samedi|Jeudi|Vendredi|Ven|Sam|Juli|Dezember|rz|Februar|de|Januar|Junio|Julio|Kwiecie|Czerwiec|Marzec|Luty|pl|Stycze|Lipiec|Sierpie|Sty|Lut|Grudzie|Listopad|Wrzesie|dziernik|BR|ar|Ene|Dic|Diciembre|Noviembre|Septiembre|Octubre|Lunes|Martes|Vie|ru|Juv|Viernes|rcoles|Jueves|Mercredi|Mardi|getHours12|getMonthName|getFullWeekOfYear|getDayName|getAmPm|getCentury|getShortYear|getTimezoneAbbr|10000|January|toYmdInt|getUnix|getTimezoneName|exec|AM|PM|jqplotSaveImage|href|jqplotToImageElem|toDataURL|tooltip|drawImage|octet|stream|getAbbrMonthName|getAMPM|getUtcOffset|close|jqplotViewImage|write|February|March|Avril|Juin|Mars|vrier|fr|Janvier|Juillet|Septembre|Dimanche|Lundi|Avr|cembre|Octobre|Novembre|Sat|Fri|Tuesday|Wednesday|Monday|Sunday|June|October|Thursday|Friday|Wed|Thu|Tue|Mon|Saturday|Sun|Kwi|Cze|FullWeekOfYear|V|U|DayOfWeek|php|DayOfYear|IsoWeek|W|NaN|daysInMonth|TimezoneAbbr|AmPm|WeekOfYear|Century|TimezoneName|SQL|tor|fre|ons|tis|fredag|rdag|US|GB|ISO|dT|week|minute|millisecond|second|zA|Null|9pre|toggle|storage|uiBackCompat|exponent|getPrecision|transparent|none|down|overflow|standardSpeed|_default|wrap|replaceWith|nAscboxXuidfegpEGP|pP|_|isFinite||0x|0b|Array|nbsp|must|be|efg|eEfFgG|fromCharCode|void|finite|fFeE|torsdag|onsdag|nl|Januari|Sb|Pt|Wt|Cz|Februari|Maart|Woensdag|Donderdag|Dinsdag|Maandag|Augustus|Zondag|Pn|Ni|Gru|Niedziela|Lis|Wrz|Lip|Sie|Poniedzia|ek|tek|Sobota|Pi|Czwartek|Wtorek|roda|Vrijdag|Zaterdag|mar|apr|feb|jan|november|december|jun|jul|dec|tisdag|nov|okt|aug|sep|oktober|september|Za|sv|Vr|Wo|Zo|Ma|januari|februari|juli|augusti|juni|april|mars|span|getAbbrDayName|breakTick|whitSpace|space|PercentTickFormatter|dotted|2500|dashed|yellowgreen|yellow|tomato|thistle|turquoise|violet|whitesmoke|wheat|4182054|3534992|jqplotDataRightClick|jqplotDataClick|asymp|pos1|intervals|pos2|jqplotDataMouseOver|jqplotDataUnhighlight|7648|computeSteps|4456|spd|pxzero|pgd|teal|tan|pink|peru|peachpuff|plum|powderblue|red|purple|papayawhip|palevioletred|orangered|orange|orchid|palegoldenrod|paleturquoise|palegreen|rosybrown|royalblue|slategray|slateblue|slategrey|snow|steelblue|borderTopWidth|skyblue|silver|salmon|saddlebrown|sandybrown|seagreen|sienna|seashell|average|springgreen|barWidth|barMargin|barPadding|innerDiameter|thickness|stddev|ringMargin|Source|over|Function|boolean|newTheme|from|New|or|Old|ringColor|tickColor|textBaseline|normal|weight|tagheight|tagName|paddingLeft|borderLeftWidth|filter|needlePad|intervalColors|ringWidth|intervalInnerRadius|intervalOuterRadius|needleThickness|hubRadius|redrawSeries|sectionMargin|di|plus|of|filledSquare|square|eEfFgGpP|that|_getHigherFactor|getThemes|prependTo|resetTickValues|_getLowerFactor|MeterGaugeRenderer|getThemeNames|dash|circle|MAX_VALUE|666666|filledDiamond|checkBorderWidth|checkBorderColor|fFeEgGpP'.split('|'),0,{}))
 
 
 
 
 
js/slimselect.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(window,function(){return(s={},n.m=i=[function(e,t,i){"use strict";function s(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}var n;t.__esModule=!0,t.hasClassInTree=function(e,t){function s(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}return s(e,t)||function e(t,i){return t&&t!==document?s(t,i)?t:e(t.parentNode,i):null}(e,t)},t.ensureElementInView=function(e,t){var i=e.scrollTop+e.offsetTop,s=i+e.clientHeight,n=t.offsetTop,a=n+t.clientHeight;n<i?e.scrollTop-=i-n:s<a&&(e.scrollTop+=a-s)},t.putContent=function(e,t,i){var s=e.offsetHeight,n=e.getBoundingClientRect(),a=i?n.top:n.top-s,o=i?n.bottom:n.bottom+s;return a<=0?"below":o>=window.innerHeight?"above":i?t:"below"},t.debounce=function(n,a,o){var l;return void 0===a&&(a=100),void 0===o&&(o=!1),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var i=self,s=o&&!l;clearTimeout(l),l=setTimeout(function(){l=null,o||n.apply(i,e)},a),s&&n.apply(i,e)}},t.isValueInArrayOfObjects=function(e,t,i){if(!Array.isArray(e))return e[t]===i;for(var s=0,n=e;s<n.length;s++){var a=n[s];if(a&&a[t]&&a[t]===i)return!0}return!1},t.highlight=function(e,t,i){var s=e,n=new RegExp("("+t.trim()+")(?![^<]*>[^<>]*</)","i");if(!e.match(n))return e;var a=e.match(n).index,o=a+e.match(n)[0].toString().length,l=e.substring(a,o);return s=s.replace(n,'<mark class="'+i+'">'+l+"</mark>")},"function"!=typeof(n=window).CustomEvent&&(s.prototype=n.Event.prototype,n.CustomEvent=s)},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:"",text:e.text?e.text:"",innerHTML:e.innerHTML?e.innerHTML:"",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{}}},n.prototype.add=function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,data:{}})},n.prototype.parseSelectData=function(){this.data=[];for(var e=0,t=this.main.select.element.childNodes;e<t.length;e++){var i=t[e];if("OPTGROUP"===i.nodeName){for(var s={label:i.label,options:[]},n=0,a=i.childNodes;n<a.length;n++){var o=a[n];if("OPTION"===o.nodeName){var l=this.pullOptionData(o);s.options.push(l),l.placeholder&&""!==l.text.trim()&&(this.main.config.placeholderText=l.text)}}this.data.push(s)}else"OPTION"===i.nodeName&&(l=this.pullOptionData(i),this.data.push(l),l.placeholder&&""!==l.text.trim()&&(this.main.config.placeholderText=l.text))}},n.prototype.pullOptionData=function(e){return{id:!!e.dataset&&e.dataset.id||String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:e.innerHTML,selected:e.selected,disabled:e.disabled,placeholder:"true"===e.dataset.placeholder,class:e.className,style:e.style.cssText,data:e.dataset}},n.prototype.setSelectedFromSelect=function(){if(this.main.config.isMultiple){for(var e=[],t=0,i=this.main.select.element.options;t<i.length;t++){var s=i[t];if(s.selected){var n=this.getObjectFromData(s.value,"value");n&&n.id&&e.push(n.id)}}this.setSelected(e,"id")}else{var a=this.main.select.element;if(-1!==a.selectedIndex){var o=a.options[a.selectedIndex].value;this.setSelected(o,"value")}}},n.prototype.setSelected=function(e,t){void 0===t&&(t="id");for(var i=0,s=this.data;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){var r=l[o];r.placeholder||(r.selected=this.shouldBeSelected(r,e,t))}}}else n.selected=this.shouldBeSelected(n,e,t)}},n.prototype.shouldBeSelected=function(e,t,i){if(void 0===i&&(i="id"),Array.isArray(t))for(var s=0,n=t;s<n.length;s++){var a=n[s];if(i in e&&String(e[i])===String(a))return!0}else if(i in e&&String(e[i])===String(t))return!0;return!1},n.prototype.getSelected=function(){for(var e={text:"",placeholder:this.main.config.placeholderText},t=[],i=0,s=this.data;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){var r=l[o];r.selected&&(this.main.config.isMultiple?t.push(r):e=r)}}}else n.selected&&(this.main.config.isMultiple?t.push(n):e=n)}return this.main.config.isMultiple?t:e},n.prototype.addToSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){var i=[],s=this.getSelected();if(Array.isArray(s))for(var n=0,a=s;n<a.length;n++){var o=a[n];i.push(o[t])}i.push(e),this.setSelected(i,t)}},n.prototype.removeFromSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],s=0,n=this.getSelected();s<n.length;s++){var a=n[s];String(a[t])!==String(e)&&i.push(a[t])}this.setSelected(i,t)}},n.prototype.onDataChange=function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))},n.prototype.getObjectFromData=function(e,t){void 0===t&&(t="id");for(var i=0,s=this.data;i<s.length;i++){var n=s[i];if(t in n&&String(n[t])===String(e))return n;if(n.hasOwnProperty("options")){var a=n;if(a.options)for(var o=0,l=a.options;o<l.length;o++){var r=l[o];if(String(r[t])===String(e))return r}}}return null},n.prototype.search=function(n){if(""!==(this.searchValue=n).trim()){var a=this.main.config.searchFilter,e=this.data.slice(0);n=n.trim();var t=e.map(function(e){if(e.hasOwnProperty("options")){var t=e,i=[];if(t.options&&(i=t.options.filter(function(e){return a(e,n)})),0!==i.length){var s=Object.assign({},t);return s.options=i,s}}return e.hasOwnProperty("text")&&a(e,n)?e:null});this.filtered=t.filter(function(e){return e})}else this.filtered=null},n);function n(e){this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=e.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}function r(e){return void 0!==e.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(e)),!1)}t.Data=s,t.validateData=function(e){if(!e)return console.error("Data must be an array of objects"),!1;for(var t=0,i=0,s=e;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){r(l[o])||t++}}}else r(n)||t++}return 0===t},t.validateOption=r},function(e,t,i){"use strict";t.__esModule=!0;var s=i(3),n=i(4),a=i(5),o=i(1),l=i(0),r=(c.prototype.validate=function(e){var t="string"==typeof e.select?document.querySelector(e.select):e.select;if(!t)throw new Error("Could not find select element");if("SELECT"!==t.tagName)throw new Error("Element isnt of type select");return t},c.prototype.selected=function(){if(this.config.isMultiple){for(var e=[],t=0,i=n=this.data.getSelected();t<i.length;t++){var s=i[t];e.push(s.value)}return e}var n;return(n=this.data.getSelected())?n.value:""},c.prototype.set=function(e,t,i,s){void 0===t&&(t="value"),void 0===i&&(i=!0),void 0===s&&(s=!0),this.config.isMultiple&&!Array.isArray(e)?this.data.addToSelected(e,t):this.data.setSelected(e,t),this.select.setValue(),this.data.onDataChange(),this.render(),i&&this.close()},c.prototype.setSelected=function(e,t,i,s){void 0===t&&(t="value"),void 0===i&&(i=!0),void 0===s&&(s=!0),this.set(e,t,i,s)},c.prototype.setData=function(e){if(o.validateData(e)){var t=JSON.parse(JSON.stringify(e)),i=this.data.getSelected();if(this.config.isAjax&&i)if(this.config.isMultiple)for(var s=0,n=i.reverse();s<n.length;s++){var a=n[s];t.unshift(a)}else t.unshift(this.data.getSelected()),t.unshift({text:"",placeholder:!0});this.select.create(t),this.data.parseSelectData(),this.data.setSelectedFromSelect()}else console.error("Validation problem on: #"+this.select.element.id)},c.prototype.addData=function(e){o.validateData([e])?(this.data.add(this.data.newOption(e)),this.select.create(this.data.data),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()):console.error("Validation problem on: #"+this.select.element.id)},c.prototype.open=function(){var e=this;if(this.config.isEnabled&&!this.data.contentOpen){if(this.beforeOpen&&this.beforeOpen(),this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.plus.classList.add("ss-cross"):this.slim.singleSelected&&(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.config.addToBody){var t=this.slim.container.getBoundingClientRect();this.slim.content.style.top=t.top+t.height+window.scrollY+"px",this.slim.content.style.left=t.left+window.scrollX+"px",this.slim.content.style.width=t.width+"px"}if(this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()?this.moveContentAbove():"down"===this.config.showContent.toLowerCase()?this.moveContentBelow():"above"===l.putContent(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),!this.config.isMultiple){var i=this.data.getSelected();if(i){var s=i.id,n=this.slim.list.querySelector('[data-id="'+s+'"]');n&&l.ensureElementInView(this.slim.list,n)}}setTimeout(function(){e.data.contentOpen=!0,e.config.searchFocus&&e.slim.search.input.focus(),e.afterOpen&&e.afterOpen()},this.config.timeoutDelay)}},c.prototype.close=function(){var e=this;this.data.contentOpen&&(this.beforeClose&&this.beforeClose(),this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout(function(){e.slim.content.removeAttribute("style"),e.data.contentPosition="below",e.config.isMultiple&&e.slim.multiSelected?(e.slim.multiSelected.container.classList.remove(e.config.openAbove),e.slim.multiSelected.container.classList.remove(e.config.openBelow)):e.slim.singleSelected&&(e.slim.singleSelected.container.classList.remove(e.config.openAbove),e.slim.singleSelected.container.classList.remove(e.config.openBelow)),e.slim.search.input.blur(),e.afterClose&&e.afterClose()},this.config.timeoutDelay))},c.prototype.moveContentAbove=function(){var e=0;this.config.isMultiple&&this.slim.multiSelected?e=this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected&&(e=this.slim.singleSelected.container.offsetHeight);var t=e+this.slim.content.offsetHeight-1;this.slim.content.style.margin="-"+t+"px 0 0 0",this.slim.content.style.height=t-e+1+"px",this.slim.content.style.transformOrigin="center bottom",this.data.contentPosition="above",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.container.classList.add(this.config.openAbove)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.container.classList.add(this.config.openAbove))},c.prototype.moveContentBelow=function(){this.data.contentPosition="below",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.add(this.config.openBelow)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.add(this.config.openBelow))},c.prototype.enable=function(){this.config.isEnabled=!0,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.triggerMutationObserver=!0},c.prototype.disable=function(){this.config.isEnabled=!1,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.triggerMutationObserver=!0},c.prototype.search=function(t){if(this.data.searchValue!==t)if(this.slim.search.input.value=t,this.config.isAjax){var i=this;this.config.isSearching=!0,this.render(),this.ajax&&this.ajax(t,function(e){i.config.isSearching=!1,Array.isArray(e)?(e.unshift({text:"",placeholder:!0}),i.setData(e),i.data.search(t),i.render()):"string"==typeof e?i.slim.options(e):i.render()})}else this.data.search(t),this.render()},c.prototype.setSearchText=function(e){this.config.searchText=e},c.prototype.render=function(){this.config.isMultiple?this.slim.values():(this.slim.placeholder(),this.slim.deselect()),this.slim.options()},c.prototype.destroy=function(e){void 0===e&&(e=null);var t=e?document.querySelector("."+e+".ss-main"):this.slim.container,i=e?document.querySelector("[data-ssid="+e+"]"):this.select.element;if(t&&i&&(i.style.display="",delete i.dataset.ssid,i.slim=null,t.parentElement&&t.parentElement.removeChild(t),this.config.addToBody)){var s=e?document.querySelector("."+e+".ss-content"):this.slim.content;if(!s)return;document.body.removeChild(s)}},c);function c(e){var t=this;this.ajax=null,this.addable=null,this.beforeOnChange=null,this.onChange=null,this.beforeOpen=null,this.afterOpen=null,this.beforeClose=null,this.afterClose=null;var i=this.validate(e);i.dataset.ssid&&this.destroy(i.dataset.ssid),e.ajax&&(this.ajax=e.ajax),e.addable&&(this.addable=e.addable),this.config=new s.Config({select:i,isAjax:!!e.ajax,showSearch:e.showSearch,searchPlaceholder:e.searchPlaceholder,searchText:e.searchText,searchingText:e.searchingText,searchFocus:e.searchFocus,searchHighlight:e.searchHighlight,searchFilter:e.searchFilter,closeOnSelect:e.closeOnSelect,showContent:e.showContent,placeholderText:e.placeholder,allowDeselect:e.allowDeselect,allowDeselectOption:e.allowDeselectOption,hideSelectedOption:e.hideSelectedOption,deselectLabel:e.deselectLabel,isEnabled:e.isEnabled,valuesUseText:e.valuesUseText,showOptionTooltips:e.showOptionTooltips,selectByGroup:e.selectByGroup,limit:e.limit,timeoutDelay:e.timeoutDelay,addToBody:e.addToBody}),this.select=new n.Select({select:i,main:this}),this.data=new o.Data({main:this}),this.slim=new a.Slim({main:this}),this.select.element.parentNode&&this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),e.data?this.setData(e.data):this.render(),document.addEventListener("click",function(e){e.target&&!l.hasClassInTree(e.target,t.config.id)&&t.close()}),"auto"===this.config.showContent&&window.addEventListener("scroll",l.debounce(function(e){t.data.contentOpen&&("above"===l.putContent(t.slim.content,t.data.contentPosition,t.data.contentOpen)?t.moveContentAbove():t.moveContentBelow())}),!1),e.beforeOnChange&&(this.beforeOnChange=e.beforeOnChange),e.onChange&&(this.onChange=e.onChange),e.beforeOpen&&(this.beforeOpen=e.beforeOpen),e.afterOpen&&(this.afterOpen=e.afterOpen),e.beforeClose&&(this.beforeClose=e.beforeClose),e.afterClose&&(this.afterClose=e.afterClose),this.config.isEnabled||this.disable()}t.default=r},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.searchFilter=function(e,t){return-1!==e.text.toLowerCase().indexOf(t.toLowerCase())},n);function n(e){this.id="",this.isMultiple=!1,this.isAjax=!1,this.isSearching=!1,this.showSearch=!0,this.searchFocus=!0,this.searchHighlight=!1,this.closeOnSelect=!0,this.showContent="auto",this.searchPlaceholder="Search",this.searchText="No Results",this.searchingText="Searching...",this.placeholderText="Select Value",this.allowDeselect=!1,this.allowDeselectOption=!1,this.hideSelectedOption=!1,this.deselectLabel="x",this.isEnabled=!0,this.valuesUseText=!1,this.showOptionTooltips=!1,this.selectByGroup=!1,this.limit=0,this.timeoutDelay=200,this.addToBody=!1,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.searchHighlighter="ss-search-highlight",this.addable="ss-addable",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.optgroupLabelSelectable="ss-optgroup-label-selectable",this.option="ss-option",this.optionSelected="ss-option-selected",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=e.select.style.cssText,this.class=e.select.className.split(" "),this.isMultiple=e.select.multiple,this.isAjax=e.isAjax,this.showSearch=!1!==e.showSearch,this.searchFocus=!1!==e.searchFocus,this.searchHighlight=!0===e.searchHighlight,this.closeOnSelect=!1!==e.closeOnSelect,e.showContent&&(this.showContent=e.showContent),this.isEnabled=!1!==e.isEnabled,e.searchPlaceholder&&(this.searchPlaceholder=e.searchPlaceholder),e.searchText&&(this.searchText=e.searchText),e.searchingText&&(this.searchingText=e.searchingText),e.placeholderText&&(this.placeholderText=e.placeholderText),this.allowDeselect=!0===e.allowDeselect,this.allowDeselectOption=!0===e.allowDeselectOption,this.hideSelectedOption=!0===e.hideSelectedOption,e.deselectLabel&&(this.deselectLabel=e.deselectLabel),e.valuesUseText&&(this.valuesUseText=e.valuesUseText),e.showOptionTooltips&&(this.showOptionTooltips=e.showOptionTooltips),e.selectByGroup&&(this.selectByGroup=e.selectByGroup),e.limit&&(this.limit=e.limit),e.searchFilter&&(this.searchFilter=e.searchFilter),null!=e.timeoutDelay&&(this.timeoutDelay=e.timeoutDelay),this.addToBody=!0===e.addToBody}t.Config=s},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.setValue=function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple)for(var e=this.main.data.getSelected(),t=0,i=this.element.options;t<i.length;t++){var s=i[t];s.selected=!1;for(var n=0,a=e;n<a.length;n++)a[n].value===s.value&&(s.selected=!0)}else e=this.main.data.getSelected(),this.element.value=e?e.value:"";this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change",{bubbles:!0})),this.main.data.isOnChangeEnabled=!0}},n.prototype.addAttributes=function(){this.element.tabIndex=-1,this.element.style.display="none",this.element.dataset.ssid=this.main.config.id},n.prototype.addEventListeners=function(){var t=this;this.element.addEventListener("change",function(e){t.main.data.setSelectedFromSelect(),t.main.render()})},n.prototype.addMutationObserver=function(){var t=this;this.main.config.isAjax||(this.mutationObserver=new MutationObserver(function(e){t.triggerMutationObserver&&(t.main.data.parseSelectData(),t.main.data.setSelectedFromSelect(),t.main.render(),e.forEach(function(e){"class"===e.attributeName&&t.main.slim.updateContainerDivClass(t.main.slim.container)}))}),this.observeMutationObserver())},n.prototype.observeMutationObserver=function(){this.mutationObserver&&this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})},n.prototype.disconnectMutationObserver=function(){this.mutationObserver&&this.mutationObserver.disconnect()},n.prototype.create=function(e){this.element.innerHTML="";for(var t=0,i=e;t<i.length;t++){var s=i[t];if(s.hasOwnProperty("options")){var n=s,a=document.createElement("optgroup");if(a.label=n.label,n.options)for(var o=0,l=n.options;o<l.length;o++){var r=l[o];a.appendChild(this.createOption(r))}this.element.appendChild(a)}else this.element.appendChild(this.createOption(s))}},n.prototype.createOption=function(t){var i=document.createElement("option");return i.value=t.value||t.text,i.innerHTML=t.innerHTML||t.text,t.selected&&(i.selected=t.selected),t.disabled&&(i.disabled=!0),t.placeholder&&i.setAttribute("data-placeholder","true"),t.class&&t.class.split(" ").forEach(function(e){i.classList.add(e)}),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach(function(e){i.setAttribute("data-"+e,t.data[e])}),i},n);function n(e){this.triggerMutationObserver=!0,this.element=e.select,this.main=e.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.mutationObserver=null,this.addMutationObserver(),this.element.slim=e.main}t.Select=s},function(e,t,i){"use strict";t.__esModule=!0;var a=i(0),o=i(1),s=(n.prototype.containerDiv=function(){var e=document.createElement("div");return e.style.cssText=this.main.config.style,this.updateContainerDivClass(e),e},n.prototype.updateContainerDivClass=function(e){this.main.config.class=this.main.select.element.className.split(" "),e.className="",e.classList.add(this.main.config.id),e.classList.add(this.main.config.main);for(var t=0,i=this.main.config.class;t<i.length;t++){var s=i[t];""!==s.trim()&&e.classList.add(s)}},n.prototype.singleSelectedDiv=function(){var t=this,e=document.createElement("div");e.classList.add(this.main.config.singleSelected);var i=document.createElement("span");i.classList.add("placeholder"),e.appendChild(i);var s=document.createElement("span");s.innerHTML=this.main.config.deselectLabel,s.classList.add("ss-deselect"),s.onclick=function(e){e.stopPropagation(),t.main.config.isEnabled&&t.main.set("")},e.appendChild(s);var n=document.createElement("span");n.classList.add(this.main.config.arrow);var a=document.createElement("span");return a.classList.add("arrow-down"),n.appendChild(a),e.appendChild(n),e.onclick=function(){t.main.config.isEnabled&&(t.main.data.contentOpen?t.main.close():t.main.open())},{container:e,placeholder:i,deselect:s,arrowIcon:{container:n,arrow:a}}},n.prototype.placeholder=function(){var e=this.main.data.getSelected();if(null===e||e&&e.placeholder){var t=document.createElement("span");t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.placeholderText,this.singleSelected&&(this.singleSelected.placeholder.innerHTML=t.outerHTML)}else{var i="";e&&(i=e.innerHTML&&!0!==this.main.config.valuesUseText?e.innerHTML:e.text),this.singleSelected&&(this.singleSelected.placeholder.innerHTML=e?i:"")}},n.prototype.deselect=function(){if(this.singleSelected){if(!this.main.config.allowDeselect)return void this.singleSelected.deselect.classList.add("ss-hide");""===this.main.selected()?this.singleSelected.deselect.classList.add("ss-hide"):this.singleSelected.deselect.classList.remove("ss-hide")}},n.prototype.multiSelectedDiv=function(){var t=this,e=document.createElement("div");e.classList.add(this.main.config.multiSelected);var i=document.createElement("div");i.classList.add(this.main.config.values),e.appendChild(i);var s=document.createElement("div");s.classList.add(this.main.config.add);var n=document.createElement("span");return n.classList.add(this.main.config.plus),n.onclick=function(e){t.main.data.contentOpen&&(t.main.close(),e.stopPropagation())},s.appendChild(n),e.appendChild(s),e.onclick=function(e){t.main.config.isEnabled&&(e.target.classList.contains(t.main.config.valueDelete)||(t.main.data.contentOpen?t.main.close():t.main.open()))},{container:e,values:i,add:s,plus:n}},n.prototype.values=function(){if(this.multiSelected){for(var e,t=this.multiSelected.values.childNodes,i=this.main.data.getSelected(),s=[],n=0,a=t;n<a.length;n++){var o=a[n];e=!0;for(var l=0,r=i;l<r.length;l++){var c=r[l];String(c.id)===String(o.dataset.id)&&(e=!1)}e&&s.push(o)}for(var d=0,h=s;d<h.length;d++){var u=h[d];u.classList.add("ss-out"),this.multiSelected.values.removeChild(u)}for(t=this.multiSelected.values.childNodes,c=0;c<i.length;c++){e=!1;for(var p=0,m=t;p<m.length;p++)o=m[p],String(i[c].id)===String(o.dataset.id)&&(e=!0);e||(0!==t.length&&HTMLElement.prototype.insertAdjacentElement?0===c?this.multiSelected.values.insertBefore(this.valueDiv(i[c]),t[c]):t[c-1].insertAdjacentElement("afterend",this.valueDiv(i[c])):this.multiSelected.values.appendChild(this.valueDiv(i[c])))}if(0===i.length){var f=document.createElement("span");f.classList.add(this.main.config.disabled),f.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=f.outerHTML}}},n.prototype.valueDiv=function(a){var o=this,e=document.createElement("div");e.classList.add(this.main.config.value),e.dataset.id=a.id;var t=document.createElement("span");t.classList.add(this.main.config.valueText),t.innerHTML=a.innerHTML&&!0!==this.main.config.valuesUseText?a.innerHTML:a.text,e.appendChild(t);var i=document.createElement("span");return i.classList.add(this.main.config.valueDelete),i.innerHTML=this.main.config.deselectLabel,i.onclick=function(e){e.preventDefault(),e.stopPropagation();var t=!1;if(o.main.config.isEnabled){if(o.main.beforeOnChange||(t=!0),o.main.beforeOnChange){for(var i=o.main.data.getSelected(),s=JSON.parse(JSON.stringify(i)),n=0;n<s.length;n++)s[n].id===a.id&&s.splice(n,1);!1!==o.main.beforeOnChange(s)&&(t=!0)}t&&(o.main.data.removeFromSelected(a.id,"id"),o.main.render(),o.main.select.setValue(),o.main.data.onDataChange())}},e.appendChild(i),e},n.prototype.contentDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.content),e},n.prototype.searchDiv=function(){var n=this,e=document.createElement("div"),s=document.createElement("input"),a=document.createElement("div");e.classList.add(this.main.config.search);var t={container:e,input:s};return this.main.config.showSearch||(e.classList.add(this.main.config.hide),s.readOnly=!0),s.type="search",s.placeholder=this.main.config.searchPlaceholder,s.tabIndex=0,s.setAttribute("aria-label",this.main.config.searchPlaceholder),s.setAttribute("autocapitalize","off"),s.setAttribute("autocomplete","off"),s.setAttribute("autocorrect","off"),s.onclick=function(e){setTimeout(function(){""===e.target.value&&n.main.search("")},10)},s.onkeydown=function(e){"ArrowUp"===e.key?(n.main.open(),n.highlightUp(),e.preventDefault()):"ArrowDown"===e.key?(n.main.open(),n.highlightDown(),e.preventDefault()):"Tab"===e.key?n.main.data.contentOpen?n.main.close():setTimeout(function(){n.main.close()},n.main.config.timeoutDelay):"Enter"===e.key&&e.preventDefault()},s.onkeyup=function(e){var t=e.target;if("Enter"===e.key){if(n.main.addable&&e.ctrlKey)return a.click(),e.preventDefault(),void e.stopPropagation();var i=n.list.querySelector("."+n.main.config.highlighted);i&&i.click()}else"ArrowUp"===e.key||"ArrowDown"===e.key||("Escape"===e.key?n.main.close():n.main.config.showSearch&&n.main.data.contentOpen?n.main.search(t.value):s.value="");e.preventDefault(),e.stopPropagation()},s.onfocus=function(){n.main.open()},e.appendChild(s),this.main.addable&&(a.classList.add(this.main.config.addable),a.innerHTML="+",a.onclick=function(e){if(n.main.addable){e.preventDefault(),e.stopPropagation();var t=n.search.input.value;if(""===t.trim())return void n.search.input.focus();var i=n.main.addable(t),s="";if(!i)return;"object"==typeof i?o.validateOption(i)&&(n.main.addData(i),s=i.value?i.value:i.text):(n.main.addData(n.main.data.newOption({text:i,value:i})),s=i),n.main.search(""),setTimeout(function(){n.main.set(s,"value",!1,!1)},100),n.main.config.closeOnSelect&&setTimeout(function(){n.main.close()},100)}},e.appendChild(a),t.addable=a),t},n.prototype.highlightUp=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.previousSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.previousSibling;else{var i=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");t=i[i.length-1]}if(t&&t.classList.contains(this.main.config.optgroupLabel)&&(t=null),null===t){var s=e.parentNode;if(s.classList.contains(this.main.config.optgroup)&&s.previousSibling){var n=s.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");n.length&&(t=n[n.length-1])}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),a.ensureElementInView(this.list,t))},n.prototype.highlightDown=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.nextSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.nextSibling;else t=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===t&&null!==e){var i=e.parentNode;i.classList.contains(this.main.config.optgroup)&&i.nextSibling&&(t=i.nextSibling.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")"))}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),a.ensureElementInView(this.list,t))},n.prototype.listDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e},n.prototype.options=function(e){void 0===e&&(e="");var t,i=this.main.data.filtered||this.main.data.data;if((this.list.innerHTML="")!==e)return(t=document.createElement("div")).classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=e,void this.list.appendChild(t);if(this.main.config.isAjax&&this.main.config.isSearching)return(t=document.createElement("div")).classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.searchingText,void this.list.appendChild(t);if(0===i.length){var s=document.createElement("div");return s.classList.add(this.main.config.option),s.classList.add(this.main.config.disabled),s.innerHTML=this.main.config.searchText,void this.list.appendChild(s)}for(var n=function(e){if(e.hasOwnProperty("label")){var t=e,n=document.createElement("div");n.classList.add(c.main.config.optgroup);var i=document.createElement("div");i.classList.add(c.main.config.optgroupLabel),c.main.config.selectByGroup&&c.main.config.isMultiple&&i.classList.add(c.main.config.optgroupLabelSelectable),i.innerHTML=t.label,n.appendChild(i);var s=t.options;if(s){for(var a=0,o=s;a<o.length;a++){var l=o[a];n.appendChild(c.option(l))}if(c.main.config.selectByGroup&&c.main.config.isMultiple){var r=c;i.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation();for(var t=0,i=n.children;t<i.length;t++){var s=i[t];-1!==s.className.indexOf(r.main.config.option)&&s.click()}})}}c.list.appendChild(n)}else c.list.appendChild(c.option(e))},c=this,a=0,o=i;a<o.length;a++)n(o[a])},n.prototype.option=function(r){if(r.placeholder){var e=document.createElement("div");return e.classList.add(this.main.config.option),e.classList.add(this.main.config.hide),e}var t=document.createElement("div");t.classList.add(this.main.config.option),r.class&&r.class.split(" ").forEach(function(e){t.classList.add(e)}),r.style&&(t.style.cssText=r.style);var c=this.main.data.getSelected();t.dataset.id=r.id,this.main.config.searchHighlight&&this.main.slim&&r.innerHTML&&""!==this.main.slim.search.input.value.trim()?t.innerHTML=a.highlight(r.innerHTML,this.main.slim.search.input.value,this.main.config.searchHighlighter):r.innerHTML&&(t.innerHTML=r.innerHTML),this.main.config.showOptionTooltips&&t.textContent&&t.setAttribute("title",t.textContent);var d=this;t.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation();var t=this.dataset.id;if(!0===r.selected&&d.main.config.allowDeselectOption){var i=!1;if(d.main.beforeOnChange&&d.main.config.isMultiple||(i=!0),d.main.beforeOnChange&&d.main.config.isMultiple){for(var s=d.main.data.getSelected(),n=JSON.parse(JSON.stringify(s)),a=0;a<n.length;a++)n[a].id===t&&n.splice(a,1);!1!==d.main.beforeOnChange(n)&&(i=!0)}i&&(d.main.config.isMultiple?(d.main.data.removeFromSelected(t,"id"),d.main.render(),d.main.select.setValue(),d.main.data.onDataChange()):d.main.set(""))}else{if(r.disabled||r.selected)return;if(d.main.config.limit&&Array.isArray(c)&&d.main.config.limit<=c.length)return;if(d.main.beforeOnChange){var o=void 0,l=JSON.parse(JSON.stringify(d.main.data.getObjectFromData(t)));l.selected=!0,d.main.config.isMultiple?(o=JSON.parse(JSON.stringify(c))).push(l):o=JSON.parse(JSON.stringify(l)),!1!==d.main.beforeOnChange(o)&&d.main.set(t,"id",d.main.config.closeOnSelect)}else d.main.set(t,"id",d.main.config.closeOnSelect)}});var i=c&&a.isValueInArrayOfObjects(c,"id",r.id);return(r.disabled||i)&&(t.onclick=null,d.main.config.allowDeselectOption||t.classList.add(this.main.config.disabled),d.main.config.hideSelectedOption&&t.classList.add(this.main.config.hide)),i?t.classList.add(this.main.config.optionSelected):t.classList.remove(this.main.config.optionSelected),t},n);function n(e){this.main=e.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.singleSelected=null,this.multiSelected=null,this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.multiSelected&&this.container.appendChild(this.multiSelected.container)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container)),this.main.config.addToBody?(this.content.classList.add(this.main.config.id),document.body.appendChild(this.content)):this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)}t.Slim=s}],n.c=s,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)).default;function n(e){if(s[e])return s[e].exports;var t=s[e]={i:e,l:!1,exports:{}};return i[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var i,s});
lib/Chart_js/.gitignore DELETED
@@ -1,7 +0,0 @@
1
-
2
- .DS_Store
3
-
4
- node_modules/*
5
- custom/*
6
-
7
- docs/index.md
 
 
 
 
 
 
 
lib/Chart_js/CONTRIBUTING.md DELETED
@@ -1,20 +0,0 @@
1
- Contributing
2
- ============
3
-
4
- New contributions to the library are welcome, just a couple of guidelines:
5
-
6
- * Tabs for indentation, not spaces please.
7
- * Please ensure you're changing the individual files in /src, not the concatenated output in the Chart.js file in the root of the repo.
8
- * Please check that your code will pass jshint code standards, `gulp jshint` will run this for you.
9
- * Please keep pull requests concise, and document new functionality in the relevant .md file.
10
- * Consider whether your changes are useful for all users, or if creating a Chart.js extension would be more appropriate.
11
- * Please avoid committing in the build Chart.js & Chart.min.js file, as it causes conflicts when merging.
12
-
13
- New Chart Types
14
- ===============
15
-
16
- Chart.js is designed to be modular. See http://www.chartjs.org/docs/#advanced-usage-writing-new-chart-types
17
-
18
- All discussion of new chart types (horizontal bar charts, X-Y scatter plot, etc.) should be done in the Chart.js Google Group at https://groups.google.com/forum/#!forum/chartjs-user-discussion This will get the most exposure for getting people to help define requirements, complete programming and documentation of your vision.
19
-
20
- Please do not request new chart types in the project issues. Fully implemented, documented, and useful new charts may be maintained in a new repository. Later, we may add a link to selected external repositories from this project.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/Chart.js DELETED
@@ -1,3379 +0,0 @@
1
- /*!
2
- * Chart.js
3
- * http://chartjs.org/
4
- * Version: 1.0.1-beta.4
5
- *
6
- * Copyright 2014 Nick Downie
7
- * Released under the MIT license
8
- * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
9
- */
10
-
11
-
12
- (function(){
13
-
14
- "use strict";
15
-
16
- //Declare root variable - window in the browser, global on the server
17
- var root = this,
18
- previous = root.Chart;
19
-
20
- //Occupy the global variable of Chart, and create a simple base class
21
- var Chart = function(context){
22
- var chart = this;
23
- this.canvas = context.canvas;
24
-
25
- this.ctx = context;
26
-
27
- //Variables global to the chart
28
- var width = this.width = context.canvas.width;
29
- var height = this.height = context.canvas.height;
30
- this.aspectRatio = this.width / this.height;
31
- //High pixel density displays - multiply the size of the canvas height/width by the device pixel ratio, then scale.
32
- helpers.retinaScale(this);
33
-
34
- return this;
35
- };
36
- //Globally expose the defaults to allow for user updating/changing
37
- Chart.defaults = {
38
- global: {
39
- // Boolean - Whether to animate the chart
40
- animation: true,
41
-
42
- // Number - Number of animation steps
43
- animationSteps: 60,
44
-
45
- // String - Animation easing effect
46
- animationEasing: "easeOutQuart",
47
-
48
- // Boolean - If we should show the scale at all
49
- showScale: true,
50
-
51
- // Boolean - If we want to override with a hard coded scale
52
- scaleOverride: false,
53
-
54
- // ** Required if scaleOverride is true **
55
- // Number - The number of steps in a hard coded scale
56
- scaleSteps: null,
57
- // Number - The value jump in the hard coded scale
58
- scaleStepWidth: null,
59
- // Number - The scale starting value
60
- scaleStartValue: null,
61
-
62
- // String - Colour of the scale line
63
- scaleLineColor: "rgba(0,0,0,.1)",
64
-
65
- // Number - Pixel width of the scale line
66
- scaleLineWidth: 1,
67
-
68
- // Boolean - Whether to show labels on the scale
69
- scaleShowLabels: true,
70
-
71
- // Interpolated JS string - can access value
72
- scaleLabel: "<%=value%>",
73
-
74
- // Boolean - Whether the scale should stick to integers, and not show any floats even if drawing space is there
75
- scaleIntegersOnly: true,
76
-
77
- // Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
78
- scaleBeginAtZero: false,
79
-
80
- // String - Scale label font declaration for the scale label
81
- scaleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
82
-
83
- // Number - Scale label font size in pixels
84
- scaleFontSize: 12,
85
-
86
- // String - Scale label font weight style
87
- scaleFontStyle: "normal",
88
-
89
- // String - Scale label font colour
90
- scaleFontColor: "#666",
91
-
92
- // Boolean - whether or not the chart should be responsive and resize when the browser does.
93
- responsive: false,
94
-
95
- // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
96
- maintainAspectRatio: true,
97
-
98
- // Boolean - Determines whether to draw tooltips on the canvas or not - attaches events to touchmove & mousemove
99
- showTooltips: true,
100
-
101
- // Array - Array of string names to attach tooltip events
102
- tooltipEvents: ["mousemove", "touchstart", "touchmove", "mouseout"],
103
-
104
- // String - Tooltip background colour
105
- tooltipFillColor: "rgba(0,0,0,0.8)",
106
-
107
- // String - Tooltip label font declaration for the scale label
108
- tooltipFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
109
-
110
- // Number - Tooltip label font size in pixels
111
- tooltipFontSize: 14,
112
-
113
- // String - Tooltip font weight style
114
- tooltipFontStyle: "normal",
115
-
116
- // String - Tooltip label font colour
117
- tooltipFontColor: "#fff",
118
-
119
- // String - Tooltip title font declaration for the scale label
120
- tooltipTitleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
121
-
122
- // Number - Tooltip title font size in pixels
123
- tooltipTitleFontSize: 14,
124
-
125
- // String - Tooltip title font weight style
126
- tooltipTitleFontStyle: "bold",
127
-
128
- // String - Tooltip title font colour
129
- tooltipTitleFontColor: "#fff",
130
-
131
- // Number - pixel width of padding around tooltip text
132
- tooltipYPadding: 6,
133
-
134
- // Number - pixel width of padding around tooltip text
135
- tooltipXPadding: 6,
136
-
137
- // Number - Size of the caret on the tooltip
138
- tooltipCaretSize: 8,
139
-
140
- // Number - Pixel radius of the tooltip border
141
- tooltipCornerRadius: 6,
142
-
143
- // Number - Pixel offset from point x to tooltip edge
144
- tooltipXOffset: 10,
145
-
146
- // String - Template string for single tooltips
147
- tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>",
148
-
149
- // String - Template string for single tooltips
150
- multiTooltipTemplate: "<%= value %>",
151
-
152
- // String - Colour behind the legend colour block
153
- multiTooltipKeyBackground: '#fff',
154
-
155
- // Function - Will fire on animation progression.
156
- onAnimationProgress: function(){},
157
-
158
- // Function - Will fire on animation completion.
159
- onAnimationComplete: function(){}
160
-
161
- }
162
- };
163
-
164
- //Create a dictionary of chart types, to allow for extension of existing types
165
- Chart.types = {};
166
-
167
- //Global Chart helpers object for utility methods and classes
168
- var helpers = Chart.helpers = {};
169
-
170
- //-- Basic js utility methods
171
- var each = helpers.each = function(loopable,callback,self){
172
- var additionalArgs = Array.prototype.slice.call(arguments, 3);
173
- // Check to see if null or undefined firstly.
174
- if (loopable){
175
- if (loopable.length === +loopable.length){
176
- var i;
177
- for (i=0; i<loopable.length; i++){
178
- callback.apply(self,[loopable[i], i].concat(additionalArgs));
179
- }
180
- }
181
- else{
182
- for (var item in loopable){
183
- callback.apply(self,[loopable[item],item].concat(additionalArgs));
184
- }
185
- }
186
- }
187
- },
188
- clone = helpers.clone = function(obj){
189
- var objClone = {};
190
- each(obj,function(value,key){
191
- if (obj.hasOwnProperty(key)) objClone[key] = value;
192
- });
193
- return objClone;
194
- },
195
- extend = helpers.extend = function(base){
196
- each(Array.prototype.slice.call(arguments,1), function(extensionObject) {
197
- each(extensionObject,function(value,key){
198
- if (extensionObject.hasOwnProperty(key)) base[key] = value;
199
- });
200
- });
201
- return base;
202
- },
203
- merge = helpers.merge = function(base,master){
204
- //Merge properties in left object over to a shallow clone of object right.
205
- var args = Array.prototype.slice.call(arguments,0);
206
- args.unshift({});
207
- return extend.apply(null, args);
208
- },
209
- indexOf = helpers.indexOf = function(arrayToSearch, item){
210
- if (Array.prototype.indexOf) {
211
- return arrayToSearch.indexOf(item);
212
- }
213
- else{
214
- for (var i = 0; i < arrayToSearch.length; i++) {
215
- if (arrayToSearch[i] === item) return i;
216
- }
217
- return -1;
218
- }
219
- },
220
- where = helpers.where = function(collection, filterCallback){
221
- var filtered = [];
222
-
223
- helpers.each(collection, function(item){
224
- if (filterCallback(item)){
225
- filtered.push(item);
226
- }
227
- });
228
-
229
- return filtered;
230
- },
231
- findNextWhere = helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex){
232
- // Default to start of the array
233
- if (!startIndex){
234
- startIndex = -1;
235
- }
236
- for (var i = startIndex + 1; i < arrayToSearch.length; i++) {
237
- var currentItem = arrayToSearch[i];
238
- if (filterCallback(currentItem)){
239
- return currentItem;
240
- }
241
- };
242
- },
243
- findPreviousWhere = helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex){
244
- // Default to end of the array
245
- if (!startIndex){
246
- startIndex = arrayToSearch.length;
247
- }
248
- for (var i = startIndex - 1; i >= 0; i--) {
249
- var currentItem = arrayToSearch[i];
250
- if (filterCallback(currentItem)){
251
- return currentItem;
252
- }
253
- };
254
- },
255
- inherits = helpers.inherits = function(extensions){
256
- //Basic javascript inheritance based on the model created in Backbone.js
257
- var parent = this;
258
- var ChartElement = (extensions && extensions.hasOwnProperty("constructor")) ? extensions.constructor : function(){ return parent.apply(this, arguments); };
259
-
260
- var Surrogate = function(){ this.constructor = ChartElement;};
261
- Surrogate.prototype = parent.prototype;
262
- ChartElement.prototype = new Surrogate();
263
-
264
- ChartElement.extend = inherits;
265
-
266
- if (extensions) extend(ChartElement.prototype, extensions);
267
-
268
- ChartElement.__super__ = parent.prototype;
269
-
270
- return ChartElement;
271
- },
272
- noop = helpers.noop = function(){},
273
- uid = helpers.uid = (function(){
274
- var id=0;
275
- return function(){
276
- return "chart-" + id++;
277
- };
278
- })(),
279
- warn = helpers.warn = function(str){
280
- //Method for warning of errors
281
- if (window.console && typeof window.console.warn == "function") console.warn(str);
282
- },
283
- amd = helpers.amd = (typeof define == 'function' && define.amd),
284
- //-- Math methods
285
- isNumber = helpers.isNumber = function(n){
286
- return !isNaN(parseFloat(n)) && isFinite(n);
287
- },
288
- max = helpers.max = function(array){
289
- return Math.max.apply( Math, array );
290
- },
291
- min = helpers.min = function(array){
292
- return Math.min.apply( Math, array );
293
- },
294
- cap = helpers.cap = function(valueToCap,maxValue,minValue){
295
- if(isNumber(maxValue)) {
296
- if( valueToCap > maxValue ) {
297
- return maxValue;
298
- }
299
- }
300
- else if(isNumber(minValue)){
301
- if ( valueToCap < minValue ){
302
- return minValue;
303
- }
304
- }
305
- return valueToCap;
306
- },
307
- getDecimalPlaces = helpers.getDecimalPlaces = function(num){
308
- if (num%1!==0 && isNumber(num)){
309
- return num.toString().split(".")[1].length;
310
- }
311
- else {
312
- return 0;
313
- }
314
- },
315
- toRadians = helpers.radians = function(degrees){
316
- return degrees * (Math.PI/180);
317
- },
318
- // Gets the angle from vertical upright to the point about a centre.
319
- getAngleFromPoint = helpers.getAngleFromPoint = function(centrePoint, anglePoint){
320
- var distanceFromXCenter = anglePoint.x - centrePoint.x,
321
- distanceFromYCenter = anglePoint.y - centrePoint.y,
322
- radialDistanceFromCenter = Math.sqrt( distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
323
-
324
-
325
- var angle = Math.PI * 2 + Math.atan2(distanceFromYCenter, distanceFromXCenter);
326
-
327
- //If the segment is in the top left quadrant, we need to add another rotation to the angle
328
- if (distanceFromXCenter < 0 && distanceFromYCenter < 0){
329
- angle += Math.PI*2;
330
- }
331
-
332
- return {
333
- angle: angle,
334
- distance: radialDistanceFromCenter
335
- };
336
- },
337
- aliasPixel = helpers.aliasPixel = function(pixelWidth){
338
- return (pixelWidth % 2 === 0) ? 0 : 0.5;
339
- },
340
- splineCurve = helpers.splineCurve = function(FirstPoint,MiddlePoint,AfterPoint,t){
341
- //Props to Rob Spencer at scaled innovation for his post on splining between points
342
- //http://scaledinnovation.com/analytics/splines/aboutSplines.html
343
- var d01=Math.sqrt(Math.pow(MiddlePoint.x-FirstPoint.x,2)+Math.pow(MiddlePoint.y-FirstPoint.y,2)),
344
- d12=Math.sqrt(Math.pow(AfterPoint.x-MiddlePoint.x,2)+Math.pow(AfterPoint.y-MiddlePoint.y,2)),
345
- fa=t*d01/(d01+d12),// scaling factor for triangle Ta
346
- fb=t*d12/(d01+d12);
347
- return {
348
- inner : {
349
- x : MiddlePoint.x-fa*(AfterPoint.x-FirstPoint.x),
350
- y : MiddlePoint.y-fa*(AfterPoint.y-FirstPoint.y)
351
- },
352
- outer : {
353
- x: MiddlePoint.x+fb*(AfterPoint.x-FirstPoint.x),
354
- y : MiddlePoint.y+fb*(AfterPoint.y-FirstPoint.y)
355
- }
356
- };
357
- },
358
- calculateOrderOfMagnitude = helpers.calculateOrderOfMagnitude = function(val){
359
- return Math.floor(Math.log(val) / Math.LN10);
360
- },
361
- calculateScaleRange = helpers.calculateScaleRange = function(valuesArray, drawingSize, textSize, startFromZero, integersOnly){
362
-
363
- //Set a minimum step of two - a point at the top of the graph, and a point at the base
364
- var minSteps = 2,
365
- maxSteps = Math.floor(drawingSize/(textSize * 1.5)),
366
- skipFitting = (minSteps >= maxSteps);
367
-
368
- var maxValue = max(valuesArray),
369
- minValue = min(valuesArray);
370
-
371
- // We need some degree of seperation here to calculate the scales if all the values are the same
372
- // Adding/minusing 0.5 will give us a range of 1.
373
- if (maxValue === minValue){
374
- maxValue += 0.5;
375
- // So we don't end up with a graph with a negative start value if we've said always start from zero
376
- if (minValue >= 0.5 && !startFromZero){
377
- minValue -= 0.5;
378
- }
379
- else{
380
- // Make up a whole number above the values
381
- maxValue += 0.5;
382
- }
383
- }
384
-
385
- var valueRange = Math.abs(maxValue - minValue),
386
- rangeOrderOfMagnitude = calculateOrderOfMagnitude(valueRange),
387
- graphMax = Math.ceil(maxValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude),
388
- graphMin = (startFromZero) ? 0 : Math.floor(minValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude),
389
- graphRange = graphMax - graphMin,
390
- stepValue = Math.pow(10, rangeOrderOfMagnitude),
391
- numberOfSteps = Math.round(graphRange / stepValue);
392
-
393
- //If we have more space on the graph we'll use it to give more definition to the data
394
- while((numberOfSteps > maxSteps || (numberOfSteps * 2) < maxSteps) && !skipFitting) {
395
- if(numberOfSteps > maxSteps){
396
- stepValue *=2;
397
- numberOfSteps = Math.round(graphRange/stepValue);
398
- // Don't ever deal with a decimal number of steps - cancel fitting and just use the minimum number of steps.
399
- if (numberOfSteps % 1 !== 0){
400
- skipFitting = true;
401
- }
402
- }
403
- //We can fit in double the amount of scale points on the scale
404
- else{
405
- //If user has declared ints only, and the step value isn't a decimal
406
- if (integersOnly && rangeOrderOfMagnitude >= 0){
407
- //If the user has said integers only, we need to check that making the scale more granular wouldn't make it a float
408
- if(stepValue/2 % 1 === 0){
409
- stepValue /=2;
410
- numberOfSteps = Math.round(graphRange/stepValue);
411
- }
412
- //If it would make it a float break out of the loop
413
- else{
414
- break;
415
- }
416
- }
417
- //If the scale doesn't have to be an int, make the scale more granular anyway.
418
- else{
419
- stepValue /=2;
420
- numberOfSteps = Math.round(graphRange/stepValue);
421
- }
422
-
423
- }
424
- }
425
-
426
- if (skipFitting){
427
- numberOfSteps = minSteps;
428
- stepValue = graphRange / numberOfSteps;
429
- }
430
-
431
- return {
432
- steps : numberOfSteps,
433
- stepValue : stepValue,
434
- min : graphMin,
435
- max : graphMin + (numberOfSteps * stepValue)
436
- };
437
-
438
- },
439
- /* jshint ignore:start */
440
- // Blows up jshint errors based on the new Function constructor
441
- //Templating methods
442
- //Javascript micro templating by John Resig - source at http://ejohn.org/blog/javascript-micro-templating/
443
- template = helpers.template = function(templateString, valuesObject){
444
- // If templateString is function rather than string-template - call the function for valuesObject
445
- if(templateString instanceof Function){
446
- return templateString(valuesObject);
447
- }
448
-
449
- var cache = {};
450
- function tmpl(str, data){
451
- // Figure out if we're getting a template, or if we need to
452
- // load the template - and be sure to cache the result.
453
- var fn = !/\W/.test(str) ?
454
- cache[str] = cache[str] :
455
-
456
- // Generate a reusable function that will serve as a template
457
- // generator (and which will be cached).
458
- new Function("obj",
459
- "var p=[],print=function(){p.push.apply(p,arguments);};" +
460
-
461
- // Introduce the data as local variables using with(){}
462
- "with(obj){p.push('" +
463
-
464
- // Convert the template into pure JavaScript
465
- str
466
- .replace(/[\r\t\n]/g, " ")
467
- .split("<%").join("\t")
468
- .replace(/((^|%>)[^\t]*)'/g, "$1\r")
469
- .replace(/\t=(.*?)%>/g, "',$1,'")
470
- .split("\t").join("');")
471
- .split("%>").join("p.push('")
472
- .split("\r").join("\\'") +
473
- "');}return p.join('');"
474
- );
475
-
476
- // Provide some basic currying to the user
477
- return data ? fn( data ) : fn;
478
- }
479
- return tmpl(templateString,valuesObject);
480
- },
481
- /* jshint ignore:end */
482
- generateLabels = helpers.generateLabels = function(templateString,numberOfSteps,graphMin,stepValue){
483
- var labelsArray = new Array(numberOfSteps);
484
- if (labelTemplateString){
485
- each(labelsArray,function(val,index){
486
- labelsArray[index] = template(templateString,{value: (graphMin + (stepValue*(index+1)))});
487
- });
488
- }
489
- return labelsArray;
490
- },
491
- //--Animation methods
492
- //Easing functions adapted from Robert Penner's easing equations
493
- //http://www.robertpenner.com/easing/
494
- easingEffects = helpers.easingEffects = {
495
- linear: function (t) {
496
- return t;
497
- },
498
- easeInQuad: function (t) {
499
- return t * t;
500
- },
501
- easeOutQuad: function (t) {
502
- return -1 * t * (t - 2);
503
- },
504
- easeInOutQuad: function (t) {
505
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t;
506
- return -1 / 2 * ((--t) * (t - 2) - 1);
507
- },
508
- easeInCubic: function (t) {
509
- return t * t * t;
510
- },
511
- easeOutCubic: function (t) {
512
- return 1 * ((t = t / 1 - 1) * t * t + 1);
513
- },
514
- easeInOutCubic: function (t) {
515
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t;
516
- return 1 / 2 * ((t -= 2) * t * t + 2);
517
- },
518
- easeInQuart: function (t) {
519
- return t * t * t * t;
520
- },
521
- easeOutQuart: function (t) {
522
- return -1 * ((t = t / 1 - 1) * t * t * t - 1);
523
- },
524
- easeInOutQuart: function (t) {
525
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t * t;
526
- return -1 / 2 * ((t -= 2) * t * t * t - 2);
527
- },
528
- easeInQuint: function (t) {
529
- return 1 * (t /= 1) * t * t * t * t;
530
- },
531
- easeOutQuint: function (t) {
532
- return 1 * ((t = t / 1 - 1) * t * t * t * t + 1);
533
- },
534
- easeInOutQuint: function (t) {
535
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t * t * t;
536
- return 1 / 2 * ((t -= 2) * t * t * t * t + 2);
537
- },
538
- easeInSine: function (t) {
539
- return -1 * Math.cos(t / 1 * (Math.PI / 2)) + 1;
540
- },
541
- easeOutSine: function (t) {
542
- return 1 * Math.sin(t / 1 * (Math.PI / 2));
543
- },
544
- easeInOutSine: function (t) {
545
- return -1 / 2 * (Math.cos(Math.PI * t / 1) - 1);
546
- },
547
- easeInExpo: function (t) {
548
- return (t === 0) ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1));
549
- },
550
- easeOutExpo: function (t) {
551
- return (t === 1) ? 1 : 1 * (-Math.pow(2, -10 * t / 1) + 1);
552
- },
553
- easeInOutExpo: function (t) {
554
- if (t === 0) return 0;
555
- if (t === 1) return 1;
556
- if ((t /= 1 / 2) < 1) return 1 / 2 * Math.pow(2, 10 * (t - 1));
557
- return 1 / 2 * (-Math.pow(2, -10 * --t) + 2);
558
- },
559
- easeInCirc: function (t) {
560
- if (t >= 1) return t;
561
- return -1 * (Math.sqrt(1 - (t /= 1) * t) - 1);
562
- },
563
- easeOutCirc: function (t) {
564
- return 1 * Math.sqrt(1 - (t = t / 1 - 1) * t);
565
- },
566
- easeInOutCirc: function (t) {
567
- if ((t /= 1 / 2) < 1) return -1 / 2 * (Math.sqrt(1 - t * t) - 1);
568
- return 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1);
569
- },
570
- easeInElastic: function (t) {
571
- var s = 1.70158;
572
- var p = 0;
573
- var a = 1;
574
- if (t === 0) return 0;
575
- if ((t /= 1) == 1) return 1;
576
- if (!p) p = 1 * 0.3;
577
- if (a < Math.abs(1)) {
578
- a = 1;
579
- s = p / 4;
580
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
581
- return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));
582
- },
583
- easeOutElastic: function (t) {
584
- var s = 1.70158;
585
- var p = 0;
586
- var a = 1;
587
- if (t === 0) return 0;
588
- if ((t /= 1) == 1) return 1;
589
- if (!p) p = 1 * 0.3;
590
- if (a < Math.abs(1)) {
591
- a = 1;
592
- s = p / 4;
593
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
594
- return a * Math.pow(2, -10 * t) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) + 1;
595
- },
596
- easeInOutElastic: function (t) {
597
- var s = 1.70158;
598
- var p = 0;
599
- var a = 1;
600
- if (t === 0) return 0;
601
- if ((t /= 1 / 2) == 2) return 1;
602
- if (!p) p = 1 * (0.3 * 1.5);
603
- if (a < Math.abs(1)) {
604
- a = 1;
605
- s = p / 4;
606
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
607
- if (t < 1) return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));
608
- return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) * 0.5 + 1;
609
- },
610
- easeInBack: function (t) {
611
- var s = 1.70158;
612
- return 1 * (t /= 1) * t * ((s + 1) * t - s);
613
- },
614
- easeOutBack: function (t) {
615
- var s = 1.70158;
616
- return 1 * ((t = t / 1 - 1) * t * ((s + 1) * t + s) + 1);
617
- },
618
- easeInOutBack: function (t) {
619
- var s = 1.70158;
620
- if ((t /= 1 / 2) < 1) return 1 / 2 * (t * t * (((s *= (1.525)) + 1) * t - s));
621
- return 1 / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);
622
- },
623
- easeInBounce: function (t) {
624
- return 1 - easingEffects.easeOutBounce(1 - t);
625
- },
626
- easeOutBounce: function (t) {
627
- if ((t /= 1) < (1 / 2.75)) {
628
- return 1 * (7.5625 * t * t);
629
- } else if (t < (2 / 2.75)) {
630
- return 1 * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75);
631
- } else if (t < (2.5 / 2.75)) {
632
- return 1 * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375);
633
- } else {
634
- return 1 * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375);
635
- }
636
- },
637
- easeInOutBounce: function (t) {
638
- if (t < 1 / 2) return easingEffects.easeInBounce(t * 2) * 0.5;
639
- return easingEffects.easeOutBounce(t * 2 - 1) * 0.5 + 1 * 0.5;
640
- }
641
- },
642
- //Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/
643
- requestAnimFrame = helpers.requestAnimFrame = (function(){
644
- return window.requestAnimationFrame ||
645
- window.webkitRequestAnimationFrame ||
646
- window.mozRequestAnimationFrame ||
647
- window.oRequestAnimationFrame ||
648
- window.msRequestAnimationFrame ||
649
- function(callback) {
650
- return window.setTimeout(callback, 1000 / 60);
651
- };
652
- })(),
653
- cancelAnimFrame = helpers.cancelAnimFrame = (function(){
654
- return window.cancelAnimationFrame ||
655
- window.webkitCancelAnimationFrame ||
656
- window.mozCancelAnimationFrame ||
657
- window.oCancelAnimationFrame ||
658
- window.msCancelAnimationFrame ||
659
- function(callback) {
660
- return window.clearTimeout(callback, 1000 / 60);
661
- };
662
- })(),
663
- animationLoop = helpers.animationLoop = function(callback,totalSteps,easingString,onProgress,onComplete,chartInstance){
664
-
665
- var currentStep = 0,
666
- easingFunction = easingEffects[easingString] || easingEffects.linear;
667
-
668
- var animationFrame = function(){
669
- currentStep++;
670
- var stepDecimal = currentStep/totalSteps;
671
- var easeDecimal = easingFunction(stepDecimal);
672
-
673
- callback.call(chartInstance,easeDecimal,stepDecimal, currentStep);
674
- onProgress.call(chartInstance,easeDecimal,stepDecimal);
675
- if (currentStep < totalSteps){
676
- chartInstance.animationFrame = requestAnimFrame(animationFrame);
677
- } else{
678
- onComplete.apply(chartInstance);
679
- }
680
- };
681
- requestAnimFrame(animationFrame);
682
- },
683
- //-- DOM methods
684
- getRelativePosition = helpers.getRelativePosition = function(evt){
685
- var mouseX, mouseY;
686
- var e = evt.originalEvent || evt,
687
- canvas = evt.currentTarget || evt.srcElement,
688
- boundingRect = canvas.getBoundingClientRect();
689
-
690
- if (e.touches){
691
- mouseX = e.touches[0].clientX - boundingRect.left;
692
- mouseY = e.touches[0].clientY - boundingRect.top;
693
-
694
- }
695
- else{
696
- mouseX = e.clientX - boundingRect.left;
697
- mouseY = e.clientY - boundingRect.top;
698
- }
699
-
700
- return {
701
- x : mouseX,
702
- y : mouseY
703
- };
704
-
705
- },
706
- addEvent = helpers.addEvent = function(node,eventType,method){
707
- if (node.addEventListener){
708
- node.addEventListener(eventType,method);
709
- } else if (node.attachEvent){
710
- node.attachEvent("on"+eventType, method);
711
- } else {
712
- node["on"+eventType] = method;
713
- }
714
- },
715
- removeEvent = helpers.removeEvent = function(node, eventType, handler){
716
- if (node.removeEventListener){
717
- node.removeEventListener(eventType, handler, false);
718
- } else if (node.detachEvent){
719
- node.detachEvent("on"+eventType,handler);
720
- } else{
721
- node["on" + eventType] = noop;
722
- }
723
- },
724
- bindEvents = helpers.bindEvents = function(chartInstance, arrayOfEvents, handler){
725
- // Create the events object if it's not already present
726
- if (!chartInstance.events) chartInstance.events = {};
727
-
728
- each(arrayOfEvents,function(eventName){
729
- chartInstance.events[eventName] = function(){
730
- handler.apply(chartInstance, arguments);
731
- };
732
- addEvent(chartInstance.chart.canvas,eventName,chartInstance.events[eventName]);
733
- });
734
- },
735
- unbindEvents = helpers.unbindEvents = function (chartInstance, arrayOfEvents) {
736
- each(arrayOfEvents, function(handler,eventName){
737
- removeEvent(chartInstance.chart.canvas, eventName, handler);
738
- });
739
- },
740
- getMaximumWidth = helpers.getMaximumWidth = function(domNode){
741
- var container = domNode.parentNode;
742
- // TODO = check cross browser stuff with this.
743
- return container.clientWidth;
744
- },
745
- getMaximumHeight = helpers.getMaximumHeight = function(domNode){
746
- var container = domNode.parentNode;
747
- // TODO = check cross browser stuff with this.
748
- return container.clientHeight;
749
- },
750
- getMaximumSize = helpers.getMaximumSize = helpers.getMaximumWidth, // legacy support
751
- retinaScale = helpers.retinaScale = function(chart){
752
- var ctx = chart.ctx,
753
- width = chart.canvas.width,
754
- height = chart.canvas.height;
755
-
756
- if (window.devicePixelRatio) {
757
- ctx.canvas.style.width = width + "px";
758
- ctx.canvas.style.height = height + "px";
759
- ctx.canvas.height = height * window.devicePixelRatio;
760
- ctx.canvas.width = width * window.devicePixelRatio;
761
- ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
762
- }
763
- },
764
- //-- Canvas methods
765
- clear = helpers.clear = function(chart){
766
- chart.ctx.clearRect(0,0,chart.width,chart.height);
767
- },
768
- fontString = helpers.fontString = function(pixelSize,fontStyle,fontFamily){
769
- return fontStyle + " " + pixelSize+"px " + fontFamily;
770
- },
771
- longestText = helpers.longestText = function(ctx,font,arrayOfStrings){
772
- ctx.font = font;
773
- var longest = 0;
774
- each(arrayOfStrings,function(string){
775
- var textWidth = ctx.measureText(string).width;
776
- longest = (textWidth > longest) ? textWidth : longest;
777
- });
778
- return longest;
779
- },
780
- drawRoundedRectangle = helpers.drawRoundedRectangle = function(ctx,x,y,width,height,radius){
781
- ctx.beginPath();
782
- ctx.moveTo(x + radius, y);
783
- ctx.lineTo(x + width - radius, y);
784
- ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
785
- ctx.lineTo(x + width, y + height - radius);
786
- ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
787
- ctx.lineTo(x + radius, y + height);
788
- ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
789
- ctx.lineTo(x, y + radius);
790
- ctx.quadraticCurveTo(x, y, x + radius, y);
791
- ctx.closePath();
792
- };
793
-
794
-
795
- //Store a reference to each instance - allowing us to globally resize chart instances on window resize.
796
- //Destroy method on the chart will remove the instance of the chart from this reference.
797
- Chart.instances = {};
798
-
799
- Chart.Type = function(data,options,chart){
800
- this.options = options;
801
- this.chart = chart;
802
- this.id = uid();
803
- //Add the chart instance to the global namespace
804
- Chart.instances[this.id] = this;
805
-
806
- // Initialize is always called when a chart type is created
807
- // By default it is a no op, but it should be extended
808
- if (options.responsive){
809
- this.resize();
810
- }
811
- this.initialize.call(this,data);
812
- };
813
-
814
- //Core methods that'll be a part of every chart type
815
- extend(Chart.Type.prototype,{
816
- initialize : function(){return this;},
817
- clear : function(){
818
- clear(this.chart);
819
- return this;
820
- },
821
- stop : function(){
822
- // Stops any current animation loop occuring
823
- helpers.cancelAnimFrame.call(root, this.animationFrame);
824
- return this;
825
- },
826
- resize : function(callback){
827
- this.stop();
828
- var canvas = this.chart.canvas,
829
- newWidth = getMaximumWidth(this.chart.canvas),
830
- newHeight = this.options.maintainAspectRatio ? newWidth / this.chart.aspectRatio : getMaximumHeight(this.chart.canvas);
831
-
832
- canvas.width = this.chart.width = newWidth;
833
- canvas.height = this.chart.height = newHeight;
834
-
835
- retinaScale(this.chart);
836
-
837
- if (typeof callback === "function"){
838
- callback.apply(this, Array.prototype.slice.call(arguments, 1));
839
- }
840
- return this;
841
- },
842
- reflow : noop,
843
- render : function(reflow){
844
- if (reflow){
845
- this.reflow();
846
- }
847
- if (this.options.animation && !reflow){
848
- helpers.animationLoop(
849
- this.draw,
850
- this.options.animationSteps,
851
- this.options.animationEasing,
852
- this.options.onAnimationProgress,
853
- this.options.onAnimationComplete,
854
- this
855
- );
856
- }
857
- else{
858
- this.draw();
859
- this.options.onAnimationComplete.call(this);
860
- }
861
- return this;
862
- },
863
- generateLegend : function(){
864
- return template(this.options.legendTemplate,this);
865
- },
866
- destroy : function(){
867
- this.clear();
868
- unbindEvents(this, this.events);
869
- delete Chart.instances[this.id];
870
- },
871
- showTooltip : function(ChartElements, forceRedraw){
872
- // Only redraw the chart if we've actually changed what we're hovering on.
873
- if (typeof this.activeElements === 'undefined') this.activeElements = [];
874
-
875
- var isChanged = (function(Elements){
876
- var changed = false;
877
-
878
- if (Elements.length !== this.activeElements.length){
879
- changed = true;
880
- return changed;
881
- }
882
-
883
- each(Elements, function(element, index){
884
- if (element !== this.activeElements[index]){
885
- changed = true;
886
- }
887
- }, this);
888
- return changed;
889
- }).call(this, ChartElements);
890
-
891
- if (!isChanged && !forceRedraw){
892
- return;
893
- }
894
- else{
895
- this.activeElements = ChartElements;
896
- }
897
- this.draw();
898
- if (ChartElements.length > 0){
899
- // If we have multiple datasets, show a MultiTooltip for all of the data points at that index
900
- if (this.datasets && this.datasets.length > 1) {
901
- var dataArray,
902
- dataIndex;
903
-
904
- for (var i = this.datasets.length - 1; i >= 0; i--) {
905
- dataArray = this.datasets[i].points || this.datasets[i].bars || this.datasets[i].segments;
906
- dataIndex = indexOf(dataArray, ChartElements[0]);
907
- if (dataIndex !== -1){
908
- break;
909
- }
910
- }
911
- var tooltipLabels = [],
912
- tooltipColors = [],
913
- medianPosition = (function(index) {
914
-
915
- // Get all the points at that particular index
916
- var Elements = [],
917
- dataCollection,
918
- xPositions = [],
919
- yPositions = [],
920
- xMax,
921
- yMax,
922
- xMin,
923
- yMin;
924
- helpers.each(this.datasets, function(dataset){
925
- dataCollection = dataset.points || dataset.bars || dataset.segments;
926
- if (dataCollection[dataIndex] && dataCollection[dataIndex].hasValue()){
927
- Elements.push(dataCollection[dataIndex]);
928
- }
929
- });
930
-
931
- helpers.each(Elements, function(element) {
932
- xPositions.push(element.x);
933
- yPositions.push(element.y);
934
-
935
-
936
- //Include any colour information about the element
937
- tooltipLabels.push(helpers.template(this.options.multiTooltipTemplate, element));
938
- tooltipColors.push({
939
- fill: element._saved.fillColor || element.fillColor,
940
- stroke: element._saved.strokeColor || element.strokeColor
941
- });
942
-
943
- }, this);
944
-
945
- yMin = min(yPositions);
946
- yMax = max(yPositions);
947
-
948
- xMin = min(xPositions);
949
- xMax = max(xPositions);
950
-
951
- return {
952
- x: (xMin > this.chart.width/2) ? xMin : xMax,
953
- y: (yMin + yMax)/2
954
- };
955
- }).call(this, dataIndex);
956
-
957
- new Chart.MultiTooltip({
958
- x: medianPosition.x,
959
- y: medianPosition.y,
960
- xPadding: this.options.tooltipXPadding,
961
- yPadding: this.options.tooltipYPadding,
962
- xOffset: this.options.tooltipXOffset,
963
- fillColor: this.options.tooltipFillColor,
964
- textColor: this.options.tooltipFontColor,
965
- fontFamily: this.options.tooltipFontFamily,
966
- fontStyle: this.options.tooltipFontStyle,
967
- fontSize: this.options.tooltipFontSize,
968
- titleTextColor: this.options.tooltipTitleFontColor,
969
- titleFontFamily: this.options.tooltipTitleFontFamily,
970
- titleFontStyle: this.options.tooltipTitleFontStyle,
971
- titleFontSize: this.options.tooltipTitleFontSize,
972
- cornerRadius: this.options.tooltipCornerRadius,
973
- labels: tooltipLabels,
974
- legendColors: tooltipColors,
975
- legendColorBackground : this.options.multiTooltipKeyBackground,
976
- title: ChartElements[0].label,
977
- chart: this.chart,
978
- ctx: this.chart.ctx
979
- }).draw();
980
-
981
- } else {
982
- each(ChartElements, function(Element) {
983
- var tooltipPosition = Element.tooltipPosition();
984
- new Chart.Tooltip({
985
- x: Math.round(tooltipPosition.x),
986
- y: Math.round(tooltipPosition.y),
987
- xPadding: this.options.tooltipXPadding,
988
- yPadding: this.options.tooltipYPadding,
989
- fillColor: this.options.tooltipFillColor,
990
- textColor: this.options.tooltipFontColor,
991
- fontFamily: this.options.tooltipFontFamily,
992
- fontStyle: this.options.tooltipFontStyle,
993
- fontSize: this.options.tooltipFontSize,
994
- caretHeight: this.options.tooltipCaretSize,
995
- cornerRadius: this.options.tooltipCornerRadius,
996
- text: template(this.options.tooltipTemplate, Element),
997
- chart: this.chart
998
- }).draw();
999
- }, this);
1000
- }
1001
- }
1002
- return this;
1003
- },
1004
- toBase64Image : function(){
1005
- return this.chart.canvas.toDataURL.apply(this.chart.canvas, arguments);
1006
- }
1007
- });
1008
-
1009
- Chart.Type.extend = function(extensions){
1010
-
1011
- var parent = this;
1012
-
1013
- var ChartType = function(){
1014
- return parent.apply(this,arguments);
1015
- };
1016
-
1017
- //Copy the prototype object of the this class
1018
- ChartType.prototype = clone(parent.prototype);
1019
- //Now overwrite some of the properties in the base class with the new extensions
1020
- extend(ChartType.prototype, extensions);
1021
-
1022
- ChartType.extend = Chart.Type.extend;
1023
-
1024
- if (extensions.name || parent.prototype.name){
1025
-
1026
- var chartName = extensions.name || parent.prototype.name;
1027
- //Assign any potential default values of the new chart type
1028
-
1029
- //If none are defined, we'll use a clone of the chart type this is being extended from.
1030
- //I.e. if we extend a line chart, we'll use the defaults from the line chart if our new chart
1031
- //doesn't define some defaults of their own.
1032
-
1033
- var baseDefaults = (Chart.defaults[parent.prototype.name]) ? clone(Chart.defaults[parent.prototype.name]) : {};
1034
-
1035
- Chart.defaults[chartName] = extend(baseDefaults,extensions.defaults);
1036
-
1037
- Chart.types[chartName] = ChartType;
1038
-
1039
- //Register this new chart type in the Chart prototype
1040
- Chart.prototype[chartName] = function(data,options){
1041
- var config = merge(Chart.defaults.global, Chart.defaults[chartName], options || {});
1042
- return new ChartType(data,config,this);
1043
- };
1044
- } else{
1045
- warn("Name not provided for this chart, so it hasn't been registered");
1046
- }
1047
- return parent;
1048
- };
1049
-
1050
- Chart.Element = function(configuration){
1051
- extend(this,configuration);
1052
- this.initialize.apply(this,arguments);
1053
- this.save();
1054
- };
1055
- extend(Chart.Element.prototype,{
1056
- initialize : function(){},
1057
- restore : function(props){
1058
- if (!props){
1059
- extend(this,this._saved);
1060
- } else {
1061
- each(props,function(key){
1062
- this[key] = this._saved[key];
1063
- },this);
1064
- }
1065
- return this;
1066
- },
1067
- save : function(){
1068
- this._saved = clone(this);
1069
- delete this._saved._saved;
1070
- return this;
1071
- },
1072
- update : function(newProps){
1073
- each(newProps,function(value,key){
1074
- this._saved[key] = this[key];
1075
- this[key] = value;
1076
- },this);
1077
- return this;
1078
- },
1079
- transition : function(props,ease){
1080
- each(props,function(value,key){
1081
- this[key] = ((value - this._saved[key]) * ease) + this._saved[key];
1082
- },this);
1083
- return this;
1084
- },
1085
- tooltipPosition : function(){
1086
- return {
1087
- x : this.x,
1088
- y : this.y
1089
- };
1090
- },
1091
- hasValue: function(){
1092
- return isNumber(this.value);
1093
- }
1094
- });
1095
-
1096
- Chart.Element.extend = inherits;
1097
-
1098
-
1099
- Chart.Point = Chart.Element.extend({
1100
- display: true,
1101
- inRange: function(chartX,chartY){
1102
- var hitDetectionRange = this.hitDetectionRadius + this.radius;
1103
- return ((Math.pow(chartX-this.x, 2)+Math.pow(chartY-this.y, 2)) < Math.pow(hitDetectionRange,2));
1104
- },
1105
- draw : function(){
1106
- if (this.display){
1107
- var ctx = this.ctx;
1108
- ctx.beginPath();
1109
-
1110
- ctx.arc(this.x, this.y, this.radius, 0, Math.PI*2);
1111
- ctx.closePath();
1112
-
1113
- ctx.strokeStyle = this.strokeColor;
1114
- ctx.lineWidth = this.strokeWidth;
1115
-
1116
- ctx.fillStyle = this.fillColor;
1117
-
1118
- ctx.fill();
1119
- ctx.stroke();
1120
- }
1121
-
1122
-
1123
- //Quick debug for bezier curve splining
1124
- //Highlights control points and the line between them.
1125
- //Handy for dev - stripped in the min version.
1126
-
1127
- // ctx.save();
1128
- // ctx.fillStyle = "black";
1129
- // ctx.strokeStyle = "black"
1130
- // ctx.beginPath();
1131
- // ctx.arc(this.controlPoints.inner.x,this.controlPoints.inner.y, 2, 0, Math.PI*2);
1132
- // ctx.fill();
1133
-
1134
- // ctx.beginPath();
1135
- // ctx.arc(this.controlPoints.outer.x,this.controlPoints.outer.y, 2, 0, Math.PI*2);
1136
- // ctx.fill();
1137
-
1138
- // ctx.moveTo(this.controlPoints.inner.x,this.controlPoints.inner.y);
1139
- // ctx.lineTo(this.x, this.y);
1140
- // ctx.lineTo(this.controlPoints.outer.x,this.controlPoints.outer.y);
1141
- // ctx.stroke();
1142
-
1143
- // ctx.restore();
1144
-
1145
-
1146
-
1147
- }
1148
- });
1149
-
1150
- Chart.Arc = Chart.Element.extend({
1151
- inRange : function(chartX,chartY){
1152
-
1153
- var pointRelativePosition = helpers.getAngleFromPoint(this, {
1154
- x: chartX,
1155
- y: chartY
1156
- });
1157
-
1158
- //Check if within the range of the open/close angle
1159
- var betweenAngles = (pointRelativePosition.angle >= this.startAngle && pointRelativePosition.angle <= this.endAngle),
1160
- withinRadius = (pointRelativePosition.distance >= this.innerRadius && pointRelativePosition.distance <= this.outerRadius);
1161
-
1162
- return (betweenAngles && withinRadius);
1163
- //Ensure within the outside of the arc centre, but inside arc outer
1164
- },
1165
- tooltipPosition : function(){
1166
- var centreAngle = this.startAngle + ((this.endAngle - this.startAngle) / 2),
1167
- rangeFromCentre = (this.outerRadius - this.innerRadius) / 2 + this.innerRadius;
1168
- return {
1169
- x : this.x + (Math.cos(centreAngle) * rangeFromCentre),
1170
- y : this.y + (Math.sin(centreAngle) * rangeFromCentre)
1171
- };
1172
- },
1173
- draw : function(animationPercent){
1174
-
1175
- var easingDecimal = animationPercent || 1;
1176
-
1177
- var ctx = this.ctx;
1178
-
1179
- ctx.beginPath();
1180
-
1181
- ctx.arc(this.x, this.y, this.outerRadius, this.startAngle, this.endAngle);
1182
-
1183
- ctx.arc(this.x, this.y, this.innerRadius, this.endAngle, this.startAngle, true);
1184
-
1185
- ctx.closePath();
1186
- ctx.strokeStyle = this.strokeColor;
1187
- ctx.lineWidth = this.strokeWidth;
1188
-
1189
- ctx.fillStyle = this.fillColor;
1190
-
1191
- ctx.fill();
1192
- ctx.lineJoin = 'bevel';
1193
-
1194
- if (this.showStroke){
1195
- ctx.stroke();
1196
- }
1197
- }
1198
- });
1199
-
1200
- Chart.Rectangle = Chart.Element.extend({
1201
- draw : function(){
1202
- var ctx = this.ctx,
1203
- halfWidth = this.width/2,
1204
- leftX = this.x - halfWidth,
1205
- rightX = this.x + halfWidth,
1206
- top = this.base - (this.base - this.y),
1207
- halfStroke = this.strokeWidth / 2;
1208
-
1209
- // Canvas doesn't allow us to stroke inside the width so we can
1210
- // adjust the sizes to fit if we're setting a stroke on the line
1211
- if (this.showStroke){
1212
- leftX += halfStroke;
1213
- rightX -= halfStroke;
1214
- top += halfStroke;
1215
- }
1216
-
1217
- ctx.beginPath();
1218
-
1219
- ctx.fillStyle = this.fillColor;
1220
- ctx.strokeStyle = this.strokeColor;
1221
- ctx.lineWidth = this.strokeWidth;
1222
-
1223
- // It'd be nice to keep this class totally generic to any rectangle
1224
- // and simply specify which border to miss out.
1225
- ctx.moveTo(leftX, this.base);
1226
- ctx.lineTo(leftX, top);
1227
- ctx.lineTo(rightX, top);
1228
- ctx.lineTo(rightX, this.base);
1229
- ctx.fill();
1230
- if (this.showStroke){
1231
- ctx.stroke();
1232
- }
1233
- },
1234
- height : function(){
1235
- return this.base - this.y;
1236
- },
1237
- inRange : function(chartX,chartY){
1238
- return (chartX >= this.x - this.width/2 && chartX <= this.x + this.width/2) && (chartY >= this.y && chartY <= this.base);
1239
- }
1240
- });
1241
-
1242
- Chart.Tooltip = Chart.Element.extend({
1243
- draw : function(){
1244
-
1245
- var ctx = this.chart.ctx;
1246
-
1247
- ctx.font = fontString(this.fontSize,this.fontStyle,this.fontFamily);
1248
-
1249
- this.xAlign = "center";
1250
- this.yAlign = "above";
1251
-
1252
- //Distance between the actual element.y position and the start of the tooltip caret
1253
- var caretPadding = 2;
1254
-
1255
- var tooltipWidth = ctx.measureText(this.text).width + 2*this.xPadding,
1256
- tooltipRectHeight = this.fontSize + 2*this.yPadding,
1257
- tooltipHeight = tooltipRectHeight + this.caretHeight + caretPadding;
1258
-
1259
- if (this.x + tooltipWidth/2 >this.chart.width){
1260
- this.xAlign = "left";
1261
- } else if (this.x - tooltipWidth/2 < 0){
1262
- this.xAlign = "right";
1263
- }
1264
-
1265
- if (this.y - tooltipHeight < 0){
1266
- this.yAlign = "below";
1267
- }
1268
-
1269
-
1270
- var tooltipX = this.x - tooltipWidth/2,
1271
- tooltipY = this.y - tooltipHeight;
1272
-
1273
- ctx.fillStyle = this.fillColor;
1274
-
1275
- switch(this.yAlign)
1276
- {
1277
- case "above":
1278
- //Draw a caret above the x/y
1279
- ctx.beginPath();
1280
- ctx.moveTo(this.x,this.y - caretPadding);
1281
- ctx.lineTo(this.x + this.caretHeight, this.y - (caretPadding + this.caretHeight));
1282
- ctx.lineTo(this.x - this.caretHeight, this.y - (caretPadding + this.caretHeight));
1283
- ctx.closePath();
1284
- ctx.fill();
1285
- break;
1286
- case "below":
1287
- tooltipY = this.y + caretPadding + this.caretHeight;
1288
- //Draw a caret below the x/y
1289
- ctx.beginPath();
1290
- ctx.moveTo(this.x, this.y + caretPadding);
1291
- ctx.lineTo(this.x + this.caretHeight, this.y + caretPadding + this.caretHeight);
1292
- ctx.lineTo(this.x - this.caretHeight, this.y + caretPadding + this.caretHeight);
1293
- ctx.closePath();
1294
- ctx.fill();
1295
- break;
1296
- }
1297
-
1298
- switch(this.xAlign)
1299
- {
1300
- case "left":
1301
- tooltipX = this.x - tooltipWidth + (this.cornerRadius + this.caretHeight);
1302
- break;
1303
- case "right":
1304
- tooltipX = this.x - (this.cornerRadius + this.caretHeight);
1305
- break;
1306
- }
1307
-
1308
- drawRoundedRectangle(ctx,tooltipX,tooltipY,tooltipWidth,tooltipRectHeight,this.cornerRadius);
1309
-
1310
- ctx.fill();
1311
-
1312
- ctx.fillStyle = this.textColor;
1313
- ctx.textAlign = "center";
1314
- ctx.textBaseline = "middle";
1315
- ctx.fillText(this.text, tooltipX + tooltipWidth/2, tooltipY + tooltipRectHeight/2);
1316
- }
1317
- });
1318
-
1319
- Chart.MultiTooltip = Chart.Element.extend({
1320
- initialize : function(){
1321
- this.font = fontString(this.fontSize,this.fontStyle,this.fontFamily);
1322
-
1323
- this.titleFont = fontString(this.titleFontSize,this.titleFontStyle,this.titleFontFamily);
1324
-
1325
- this.height = (this.labels.length * this.fontSize) + ((this.labels.length-1) * (this.fontSize/2)) + (this.yPadding*2) + this.titleFontSize *1.5;
1326
-
1327
- this.ctx.font = this.titleFont;
1328
-
1329
- var titleWidth = this.ctx.measureText(this.title).width,
1330
- //Label has a legend square as well so account for this.
1331
- labelWidth = longestText(this.ctx,this.font,this.labels) + this.fontSize + 3,
1332
- longestTextWidth = max([labelWidth,titleWidth]);
1333
-
1334
- this.width = longestTextWidth + (this.xPadding*2);
1335
-
1336
-
1337
- var halfHeight = this.height/2;
1338
-
1339
- //Check to ensure the height will fit on the canvas
1340
- //The three is to buffer form the very
1341
- if (this.y - halfHeight < 0 ){
1342
- this.y = halfHeight;
1343
- } else if (this.y + halfHeight > this.chart.height){
1344
- this.y = this.chart.height - halfHeight;
1345
- }
1346
-
1347
- //Decide whether to align left or right based on position on canvas
1348
- if (this.x > this.chart.width/2){
1349
- this.x -= this.xOffset + this.width;
1350
- } else {
1351
- this.x += this.xOffset;
1352
- }
1353
-
1354
-
1355
- },
1356
- getLineHeight : function(index){
1357
- var baseLineHeight = this.y - (this.height/2) + this.yPadding,
1358
- afterTitleIndex = index-1;
1359
-
1360
- //If the index is zero, we're getting the title
1361
- if (index === 0){
1362
- return baseLineHeight + this.titleFontSize/2;
1363
- } else{
1364
- return baseLineHeight + ((this.fontSize*1.5*afterTitleIndex) + this.fontSize/2) + this.titleFontSize * 1.5;
1365
- }
1366
-
1367
- },
1368
- draw : function(){
1369
- drawRoundedRectangle(this.ctx,this.x,this.y - this.height/2,this.width,this.height,this.cornerRadius);
1370
- var ctx = this.ctx;
1371
- ctx.fillStyle = this.fillColor;
1372
- ctx.fill();
1373
- ctx.closePath();
1374
-
1375
- ctx.textAlign = "left";
1376
- ctx.textBaseline = "middle";
1377
- ctx.fillStyle = this.titleTextColor;
1378
- ctx.font = this.titleFont;
1379
-
1380
- ctx.fillText(this.title,this.x + this.xPadding, this.getLineHeight(0));
1381
-
1382
- ctx.font = this.font;
1383
- helpers.each(this.labels,function(label,index){
1384
- ctx.fillStyle = this.textColor;
1385
- ctx.fillText(label,this.x + this.xPadding + this.fontSize + 3, this.getLineHeight(index + 1));
1386
-
1387
- //A bit gnarly, but clearing this rectangle breaks when using explorercanvas (clears whole canvas)
1388
- //ctx.clearRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize);
1389
- //Instead we'll make a white filled block to put the legendColour palette over.
1390
-
1391
- ctx.fillStyle = this.legendColorBackground;
1392
- ctx.fillRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize);
1393
-
1394
- ctx.fillStyle = this.legendColors[index].fill;
1395
- ctx.fillRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize);
1396
-
1397
-
1398
- },this);
1399
- }
1400
- });
1401
-
1402
- Chart.Scale = Chart.Element.extend({
1403
- initialize : function(){
1404
- this.fit();
1405
- },
1406
- buildYLabels : function(){
1407
- this.yLabels = [];
1408
-
1409
- var stepDecimalPlaces = getDecimalPlaces(this.stepValue);
1410
-
1411
- for (var i=0; i<=this.steps; i++){
1412
- this.yLabels.push(template(this.templateString,{value:(this.min + (i * this.stepValue)).toFixed(stepDecimalPlaces)}));
1413
- }
1414
- this.yLabelWidth = (this.display && this.showLabels) ? longestText(this.ctx,this.font,this.yLabels) : 0;
1415
- },
1416
- addXLabel : function(label){
1417
- this.xLabels.push(label);
1418
- this.valuesCount++;
1419
- this.fit();
1420
- },
1421
- removeXLabel : function(){
1422
- this.xLabels.shift();
1423
- this.valuesCount--;
1424
- this.fit();
1425
- },
1426
- // Fitting loop to rotate x Labels and figure out what fits there, and also calculate how many Y steps to use
1427
- fit: function(){
1428
- // First we need the width of the yLabels, assuming the xLabels aren't rotated
1429
-
1430
- // To do that we need the base line at the top and base of the chart, assuming there is no x label rotation
1431
- this.startPoint = (this.display) ? this.fontSize : 0;
1432
- this.endPoint = (this.display) ? this.height - (this.fontSize * 1.5) - 5 : this.height; // -5 to pad labels
1433
-
1434
- // Apply padding settings to the start and end point.
1435
- this.startPoint += this.padding;
1436
- this.endPoint -= this.padding;
1437
-
1438
- // Cache the starting height, so can determine if we need to recalculate the scale yAxis
1439
- var cachedHeight = this.endPoint - this.startPoint,
1440
- cachedYLabelWidth;
1441
-
1442
- // Build the current yLabels so we have an idea of what size they'll be to start
1443
- /*
1444
- * This sets what is returned from calculateScaleRange as static properties of this class:
1445
- *
1446
- this.steps;
1447
- this.stepValue;
1448
- this.min;
1449
- this.max;
1450
- *
1451
- */
1452
- this.calculateYRange(cachedHeight);
1453
-
1454
- // With these properties set we can now build the array of yLabels
1455
- // and also the width of the largest yLabel
1456
- this.buildYLabels();
1457
-
1458
- this.calculateXLabelRotation();
1459
-
1460
- while((cachedHeight > this.endPoint - this.startPoint)){
1461
- cachedHeight = this.endPoint - this.startPoint;
1462
- cachedYLabelWidth = this.yLabelWidth;
1463
-
1464
- this.calculateYRange(cachedHeight);
1465
- this.buildYLabels();
1466
-
1467
- // Only go through the xLabel loop again if the yLabel width has changed
1468
- if (cachedYLabelWidth < this.yLabelWidth){
1469
- this.calculateXLabelRotation();
1470
- }
1471
- }
1472
-
1473
- },
1474
- calculateXLabelRotation : function(){
1475
- //Get the width of each grid by calculating the difference
1476
- //between x offsets between 0 and 1.
1477
-
1478
- this.ctx.font = this.font;
1479
-
1480
- var firstWidth = this.ctx.measureText(this.xLabels[0]).width,
1481
- lastWidth = this.ctx.measureText(this.xLabels[this.xLabels.length - 1]).width,
1482
- firstRotated,
1483
- lastRotated;
1484
-
1485
-
1486
- this.xScalePaddingRight = lastWidth/2 + 3;
1487
- this.xScalePaddingLeft = (firstWidth/2 > this.yLabelWidth + 10) ? firstWidth/2 : this.yLabelWidth + 10;
1488
-
1489
- this.xLabelRotation = 0;
1490
- if (this.display){
1491
- var originalLabelWidth = longestText(this.ctx,this.font,this.xLabels),
1492
- cosRotation,
1493
- firstRotatedWidth;
1494
- this.xLabelWidth = originalLabelWidth;
1495
- //Allow 3 pixels x2 padding either side for label readability
1496
- var xGridWidth = Math.floor(this.calculateX(1) - this.calculateX(0)) - 6;
1497
-
1498
- //Max label rotate should be 90 - also act as a loop counter
1499
- while ((this.xLabelWidth > xGridWidth && this.xLabelRotation === 0) || (this.xLabelWidth > xGridWidth && this.xLabelRotation <= 90 && this.xLabelRotation > 0)){
1500
- cosRotation = Math.cos(toRadians(this.xLabelRotation));
1501
-
1502
- firstRotated = cosRotation * firstWidth;
1503
- lastRotated = cosRotation * lastWidth;
1504
-
1505
- // We're right aligning the text now.
1506
- if (firstRotated + this.fontSize / 2 > this.yLabelWidth + 8){
1507
- this.xScalePaddingLeft = firstRotated + this.fontSize / 2;
1508
- }
1509
- this.xScalePaddingRight = this.fontSize/2;
1510
-
1511
-
1512
- this.xLabelRotation++;
1513
- this.xLabelWidth = cosRotation * originalLabelWidth;
1514
-
1515
- }
1516
- if (this.xLabelRotation > 0){
1517
- this.endPoint -= Math.sin(toRadians(this.xLabelRotation))*originalLabelWidth + 3;
1518
- }
1519
- }
1520
- else{
1521
- this.xLabelWidth = 0;
1522
- this.xScalePaddingRight = this.padding;
1523
- this.xScalePaddingLeft = this.padding;
1524
- }
1525
-
1526
- },
1527
- // Needs to be overidden in each Chart type
1528
- // Otherwise we need to pass all the data into the scale class
1529
- calculateYRange: noop,
1530
- drawingArea: function(){
1531
- return this.startPoint - this.endPoint;
1532
- },
1533
- calculateY : function(value){
1534
- var scalingFactor = this.drawingArea() / (this.min - this.max);
1535
- return this.endPoint - (scalingFactor * (value - this.min));
1536
- },
1537
- calculateX : function(index){
1538
- var isRotated = (this.xLabelRotation > 0),
1539
- // innerWidth = (this.offsetGridLines) ? this.width - offsetLeft - this.padding : this.width - (offsetLeft + halfLabelWidth * 2) - this.padding,
1540
- innerWidth = this.width - (this.xScalePaddingLeft + this.xScalePaddingRight),
1541
- valueWidth = innerWidth/(this.valuesCount - ((this.offsetGridLines) ? 0 : 1)),
1542
- valueOffset = (valueWidth * index) + this.xScalePaddingLeft;
1543
-
1544
- if (this.offsetGridLines){
1545
- valueOffset += (valueWidth/2);
1546
- }
1547
-
1548
- return Math.round(valueOffset);
1549
- },
1550
- update : function(newProps){
1551
- helpers.extend(this, newProps);
1552
- this.fit();
1553
- },
1554
- draw : function(){
1555
- var ctx = this.ctx,
1556
- yLabelGap = (this.endPoint - this.startPoint) / this.steps,
1557
- xStart = Math.round(this.xScalePaddingLeft);
1558
- if (this.display){
1559
- ctx.fillStyle = this.textColor;
1560
- ctx.font = this.font;
1561
- each(this.yLabels,function(labelString,index){
1562
- var yLabelCenter = this.endPoint - (yLabelGap * index),
1563
- linePositionY = Math.round(yLabelCenter);
1564
-
1565
- ctx.textAlign = "right";
1566
- ctx.textBaseline = "middle";
1567
- if (this.showLabels){
1568
- ctx.fillText(labelString,xStart - 10,yLabelCenter);
1569
- }
1570
- ctx.beginPath();
1571
- if (index > 0){
1572
- // This is a grid line in the centre, so drop that
1573
- ctx.lineWidth = this.gridLineWidth;
1574
- ctx.strokeStyle = this.gridLineColor;
1575
- } else {
1576
- // This is the first line on the scale
1577
- ctx.lineWidth = this.lineWidth;
1578
- ctx.strokeStyle = this.lineColor;
1579
- }
1580
-
1581
- linePositionY += helpers.aliasPixel(ctx.lineWidth);
1582
-
1583
- ctx.moveTo(xStart, linePositionY);
1584
- ctx.lineTo(this.width, linePositionY);
1585
- ctx.stroke();
1586
- ctx.closePath();
1587
-
1588
- ctx.lineWidth = this.lineWidth;
1589
- ctx.strokeStyle = this.lineColor;
1590
- ctx.beginPath();
1591
- ctx.moveTo(xStart - 5, linePositionY);
1592
- ctx.lineTo(xStart, linePositionY);
1593
- ctx.stroke();
1594
- ctx.closePath();
1595
-
1596
- },this);
1597
-
1598
- each(this.xLabels,function(label,index){
1599
- var xPos = this.calculateX(index) + aliasPixel(this.lineWidth),
1600
- // Check to see if line/bar here and decide where to place the line
1601
- linePos = this.calculateX(index - (this.offsetGridLines ? 0.5 : 0)) + aliasPixel(this.lineWidth),
1602
- isRotated = (this.xLabelRotation > 0);
1603
-
1604
- ctx.beginPath();
1605
-
1606
- if (index > 0){
1607
- // This is a grid line in the centre, so drop that
1608
- ctx.lineWidth = this.gridLineWidth;
1609
- ctx.strokeStyle = this.gridLineColor;
1610
- } else {
1611
- // This is the first line on the scale
1612
- ctx.lineWidth = this.lineWidth;
1613
- ctx.strokeStyle = this.lineColor;
1614
- }
1615
- ctx.moveTo(linePos,this.endPoint);
1616
- ctx.lineTo(linePos,this.startPoint - 3);
1617
- ctx.stroke();
1618
- ctx.closePath();
1619
-
1620
-
1621
- ctx.lineWidth = this.lineWidth;
1622
- ctx.strokeStyle = this.lineColor;
1623
-
1624
-
1625
- // Small lines at the bottom of the base grid line
1626
- ctx.beginPath();
1627
- ctx.moveTo(linePos,this.endPoint);
1628
- ctx.lineTo(linePos,this.endPoint + 5);
1629
- ctx.stroke();
1630
- ctx.closePath();
1631
-
1632
- ctx.save();
1633
- ctx.translate(xPos,(isRotated) ? this.endPoint + 12 : this.endPoint + 8);
1634
- ctx.rotate(toRadians(this.xLabelRotation)*-1);
1635
- ctx.font = this.font;
1636
- ctx.textAlign = (isRotated) ? "right" : "center";
1637
- ctx.textBaseline = (isRotated) ? "middle" : "top";
1638
- ctx.fillText(label, 0, 0);
1639
- ctx.restore();
1640
- },this);
1641
-
1642
- }
1643
- }
1644
-
1645
- });
1646
-
1647
- Chart.RadialScale = Chart.Element.extend({
1648
- initialize: function(){
1649
- this.size = min([this.height, this.width]);
1650
- this.drawingArea = (this.display) ? (this.size/2) - (this.fontSize/2 + this.backdropPaddingY) : (this.size/2);
1651
- },
1652
- calculateCenterOffset: function(value){
1653
- // Take into account half font size + the yPadding of the top value
1654
- var scalingFactor = this.drawingArea / (this.max - this.min);
1655
-
1656
- return (value - this.min) * scalingFactor;
1657
- },
1658
- update : function(){
1659
- if (!this.lineArc){
1660
- this.setScaleSize();
1661
- } else {
1662
- this.drawingArea = (this.display) ? (this.size/2) - (this.fontSize/2 + this.backdropPaddingY) : (this.size/2);
1663
- }
1664
- this.buildYLabels();
1665
- },
1666
- buildYLabels: function(){
1667
- this.yLabels = [];
1668
-
1669
- var stepDecimalPlaces = getDecimalPlaces(this.stepValue);
1670
-
1671
- for (var i=0; i<=this.steps; i++){
1672
- this.yLabels.push(template(this.templateString,{value:(this.min + (i * this.stepValue)).toFixed(stepDecimalPlaces)}));
1673
- }
1674
- },
1675
- getCircumference : function(){
1676
- return ((Math.PI*2) / this.valuesCount);
1677
- },
1678
- setScaleSize: function(){
1679
- /*
1680
- * Right, this is really confusing and there is a lot of maths going on here
1681
- * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9
1682
- *
1683
- * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif
1684
- *
1685
- * Solution:
1686
- *
1687
- * We assume the radius of the polygon is half the size of the canvas at first
1688
- * at each index we check if the text overlaps.
1689
- *
1690
- * Where it does, we store that angle and that index.
1691
- *
1692
- * After finding the largest index and angle we calculate how much we need to remove
1693
- * from the shape radius to move the point inwards by that x.
1694
- *
1695
- * We average the left and right distances to get the maximum shape radius that can fit in the box
1696
- * along with labels.
1697
- *
1698
- * Once we have that, we can find the centre point for the chart, by taking the x text protrusion
1699
- * on each side, removing that from the size, halving it and adding the left x protrusion width.
1700
- *
1701
- * This will mean we have a shape fitted to the canvas, as large as it can be with the labels
1702
- * and position it in the most space efficient manner
1703
- *
1704
- * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif
1705
- */
1706
-
1707
-
1708
- // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.
1709
- // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points
1710
- var largestPossibleRadius = min([(this.height/2 - this.pointLabelFontSize - 5), this.width/2]),
1711
- pointPosition,
1712
- i,
1713
- textWidth,
1714
- halfTextWidth,
1715
- furthestRight = this.width,
1716
- furthestRightIndex,
1717
- furthestRightAngle,
1718
- furthestLeft = 0,
1719
- furthestLeftIndex,
1720
- furthestLeftAngle,
1721
- xProtrusionLeft,
1722
- xProtrusionRight,
1723
- radiusReductionRight,
1724
- radiusReductionLeft,
1725
- maxWidthRadius;
1726
- this.ctx.font = fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily);
1727
- for (i=0;i<this.valuesCount;i++){
1728
- // 5px to space the text slightly out - similar to what we do in the draw function.
1729
- pointPosition = this.getPointPosition(i, largestPossibleRadius);
1730
- textWidth = this.ctx.measureText(template(this.templateString, { value: this.labels[i] })).width + 5;
1731
- if (i === 0 || i === this.valuesCount/2){
1732
- // If we're at index zero, or exactly the middle, we're at exactly the top/bottom
1733
- // of the radar chart, so text will be aligned centrally, so we'll half it and compare
1734
- // w/left and right text sizes
1735
- halfTextWidth = textWidth/2;
1736
- if (pointPosition.x + halfTextWidth > furthestRight) {
1737
- furthestRight = pointPosition.x + halfTextWidth;
1738
- furthestRightIndex = i;
1739
- }
1740
- if (pointPosition.x - halfTextWidth < furthestLeft) {
1741
- furthestLeft = pointPosition.x - halfTextWidth;
1742
- furthestLeftIndex = i;
1743
- }
1744
- }
1745
- else if (i < this.valuesCount/2) {
1746
- // Less than half the values means we'll left align the text
1747
- if (pointPosition.x + textWidth > furthestRight) {
1748
- furthestRight = pointPosition.x + textWidth;
1749
- furthestRightIndex = i;
1750
- }
1751
- }
1752
- else if (i > this.valuesCount/2){
1753
- // More than half the values means we'll right align the text
1754
- if (pointPosition.x - textWidth < furthestLeft) {
1755
- furthestLeft = pointPosition.x - textWidth;
1756
- furthestLeftIndex = i;
1757
- }
1758
- }
1759
- }
1760
-
1761
- xProtrusionLeft = furthestLeft;
1762
-
1763
- xProtrusionRight = Math.ceil(furthestRight - this.width);
1764
-
1765
- furthestRightAngle = this.getIndexAngle(furthestRightIndex);
1766
-
1767
- furthestLeftAngle = this.getIndexAngle(furthestLeftIndex);
1768
-
1769
- radiusReductionRight = xProtrusionRight / Math.sin(furthestRightAngle + Math.PI/2);
1770
-
1771
- radiusReductionLeft = xProtrusionLeft / Math.sin(furthestLeftAngle + Math.PI/2);
1772
-
1773
- // Ensure we actually need to reduce the size of the chart
1774
- radiusReductionRight = (isNumber(radiusReductionRight)) ? radiusReductionRight : 0;
1775
- radiusReductionLeft = (isNumber(radiusReductionLeft)) ? radiusReductionLeft : 0;
1776
-
1777
- this.drawingArea = largestPossibleRadius - (radiusReductionLeft + radiusReductionRight)/2;
1778
-
1779
- //this.drawingArea = min([maxWidthRadius, (this.height - (2 * (this.pointLabelFontSize + 5)))/2])
1780
- this.setCenterPoint(radiusReductionLeft, radiusReductionRight);
1781
-
1782
- },
1783
- setCenterPoint: function(leftMovement, rightMovement){
1784
-
1785
- var maxRight = this.width - rightMovement - this.drawingArea,
1786
- maxLeft = leftMovement + this.drawingArea;
1787
-
1788
- this.xCenter = (maxLeft + maxRight)/2;
1789
- // Always vertically in the centre as the text height doesn't change
1790
- this.yCenter = (this.height/2);
1791
- },
1792
-
1793
- getIndexAngle : function(index){
1794
- var angleMultiplier = (Math.PI * 2) / this.valuesCount;
1795
- // Start from the top instead of right, so remove a quarter of the circle
1796
-
1797
- return index * angleMultiplier - (Math.PI/2);
1798
- },
1799
- getPointPosition : function(index, distanceFromCenter){
1800
- var thisAngle = this.getIndexAngle(index);
1801
- return {
1802
- x : (Math.cos(thisAngle) * distanceFromCenter) + this.xCenter,
1803
- y : (Math.sin(thisAngle) * distanceFromCenter) + this.yCenter
1804
- };
1805
- },
1806
- draw: function(){
1807
- if (this.display){
1808
- var ctx = this.ctx;
1809
- each(this.yLabels, function(label, index){
1810
- // Don't draw a centre value
1811
- if (index > 0){
1812
- var yCenterOffset = index * (this.drawingArea/this.steps),
1813
- yHeight = this.yCenter - yCenterOffset,
1814
- pointPosition;
1815
-
1816
- // Draw circular lines around the scale
1817
- if (this.lineWidth > 0){
1818
- ctx.strokeStyle = this.lineColor;
1819
- ctx.lineWidth = this.lineWidth;
1820
-
1821
- if(this.lineArc){
1822
- ctx.beginPath();
1823
- ctx.arc(this.xCenter, this.yCenter, yCenterOffset, 0, Math.PI*2);
1824
- ctx.closePath();
1825
- ctx.stroke();
1826
- } else{
1827
- ctx.beginPath();
1828
- for (var i=0;i<this.valuesCount;i++)
1829
- {
1830
- pointPosition = this.getPointPosition(i, this.calculateCenterOffset(this.min + (index * this.stepValue)));
1831
- if (i === 0){
1832
- ctx.moveTo(pointPosition.x, pointPosition.y);
1833
- } else {
1834
- ctx.lineTo(pointPosition.x, pointPosition.y);
1835
- }
1836
- }
1837
- ctx.closePath();
1838
- ctx.stroke();
1839
- }
1840
- }
1841
- if(this.showLabels){
1842
- ctx.font = fontString(this.fontSize,this.fontStyle,this.fontFamily);
1843
- if (this.showLabelBackdrop){
1844
- var labelWidth = ctx.measureText(label).width;
1845
- ctx.fillStyle = this.backdropColor;
1846
- ctx.fillRect(
1847
- this.xCenter - labelWidth/2 - this.backdropPaddingX,
1848
- yHeight - this.fontSize/2 - this.backdropPaddingY,
1849
- labelWidth + this.backdropPaddingX*2,
1850
- this.fontSize + this.backdropPaddingY*2
1851
- );
1852
- }
1853
- ctx.textAlign = 'center';
1854
- ctx.textBaseline = "middle";
1855
- ctx.fillStyle = this.fontColor;
1856
- ctx.fillText(label, this.xCenter, yHeight);
1857
- }
1858
- }
1859
- }, this);
1860
-
1861
- if (!this.lineArc){
1862
- ctx.lineWidth = this.angleLineWidth;
1863
- ctx.strokeStyle = this.angleLineColor;
1864
- for (var i = this.valuesCount - 1; i >= 0; i--) {
1865
- if (this.angleLineWidth > 0){
1866
- var outerPosition = this.getPointPosition(i, this.calculateCenterOffset(this.max));
1867
- ctx.beginPath();
1868
- ctx.moveTo(this.xCenter, this.yCenter);
1869
- ctx.lineTo(outerPosition.x, outerPosition.y);
1870
- ctx.stroke();
1871
- ctx.closePath();
1872
- }
1873
- // Extra 3px out for some label spacing
1874
- var pointLabelPosition = this.getPointPosition(i, this.calculateCenterOffset(this.max) + 5);
1875
- ctx.font = fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily);
1876
- ctx.fillStyle = this.pointLabelFontColor;
1877
-
1878
- var labelsCount = this.labels.length,
1879
- halfLabelsCount = this.labels.length/2,
1880
- quarterLabelsCount = halfLabelsCount/2,
1881
- upperHalf = (i < quarterLabelsCount || i > labelsCount - quarterLabelsCount),
1882
- exactQuarter = (i === quarterLabelsCount || i === labelsCount - quarterLabelsCount);
1883
- if (i === 0){
1884
- ctx.textAlign = 'center';
1885
- } else if(i === halfLabelsCount){
1886
- ctx.textAlign = 'center';
1887
- } else if (i < halfLabelsCount){
1888
- ctx.textAlign = 'left';
1889
- } else {
1890
- ctx.textAlign = 'right';
1891
- }
1892
-
1893
- // Set the correct text baseline based on outer positioning
1894
- if (exactQuarter){
1895
- ctx.textBaseline = 'middle';
1896
- } else if (upperHalf){
1897
- ctx.textBaseline = 'bottom';
1898
- } else {
1899
- ctx.textBaseline = 'top';
1900
- }
1901
-
1902
- ctx.fillText(this.labels[i], pointLabelPosition.x, pointLabelPosition.y);
1903
- }
1904
- }
1905
- }
1906
- }
1907
- });
1908
-
1909
- // Attach global event to resize each chart instance when the browser resizes
1910
- helpers.addEvent(window, "resize", (function(){
1911
- // Basic debounce of resize function so it doesn't hurt performance when resizing browser.
1912
- var timeout;
1913
- return function(){
1914
- clearTimeout(timeout);
1915
- timeout = setTimeout(function(){
1916
- each(Chart.instances,function(instance){
1917
- // If the responsive flag is set in the chart instance config
1918
- // Cascade the resize event down to the chart.
1919
- if (instance.options.responsive){
1920
- instance.resize(instance.render, true);
1921
- }
1922
- });
1923
- }, 50);
1924
- };
1925
- })());
1926
-
1927
-
1928
- if (amd) {
1929
- define(function(){
1930
- return Chart;
1931
- });
1932
- } else if (typeof module === 'object' && module.exports) {
1933
- module.exports = Chart;
1934
- }
1935
-
1936
- root.Chart = Chart;
1937
-
1938
- Chart.noConflict = function(){
1939
- root.Chart = previous;
1940
- return Chart;
1941
- };
1942
-
1943
- }).call(this);
1944
-
1945
- (function(){
1946
- "use strict";
1947
-
1948
- var root = this,
1949
- Chart = root.Chart,
1950
- helpers = Chart.helpers;
1951
-
1952
-
1953
- var defaultConfig = {
1954
- //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
1955
- scaleBeginAtZero : true,
1956
-
1957
- //Boolean - Whether grid lines are shown across the chart
1958
- scaleShowGridLines : true,
1959
-
1960
- //String - Colour of the grid lines
1961
- scaleGridLineColor : "rgba(0,0,0,.05)",
1962
-
1963
- //Number - Width of the grid lines
1964
- scaleGridLineWidth : 1,
1965
-
1966
- //Boolean - If there is a stroke on each bar
1967
- barShowStroke : true,
1968
-
1969
- //Number - Pixel width of the bar stroke
1970
- barStrokeWidth : 2,
1971
-
1972
- //Number - Spacing between each of the X value sets
1973
- barValueSpacing : 5,
1974
-
1975
- //Number - Spacing between data sets within X values
1976
- barDatasetSpacing : 1,
1977
-
1978
- //String - A legend template
1979
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].fillColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
1980
-
1981
- };
1982
-
1983
-
1984
- Chart.Type.extend({
1985
- name: "Bar",
1986
- defaults : defaultConfig,
1987
- initialize: function(data){
1988
-
1989
- //Expose options as a scope variable here so we can access it in the ScaleClass
1990
- var options = this.options;
1991
-
1992
- this.ScaleClass = Chart.Scale.extend({
1993
- offsetGridLines : true,
1994
- calculateBarX : function(datasetCount, datasetIndex, barIndex){
1995
- //Reusable method for calculating the xPosition of a given bar based on datasetIndex & width of the bar
1996
- var xWidth = this.calculateBaseWidth(),
1997
- xAbsolute = this.calculateX(barIndex) - (xWidth/2),
1998
- barWidth = this.calculateBarWidth(datasetCount);
1999
-
2000
- return xAbsolute + (barWidth * datasetIndex) + (datasetIndex * options.barDatasetSpacing) + barWidth/2;
2001
- },
2002
- calculateBaseWidth : function(){
2003
- return (this.calculateX(1) - this.calculateX(0)) - (2*options.barValueSpacing);
2004
- },
2005
- calculateBarWidth : function(datasetCount){
2006
- //The padding between datasets is to the right of each bar, providing that there are more than 1 dataset
2007
- var baseWidth = this.calculateBaseWidth() - ((datasetCount - 1) * options.barDatasetSpacing);
2008
-
2009
- return (baseWidth / datasetCount);
2010
- }
2011
- });
2012
-
2013
- this.datasets = [];
2014
-
2015
- //Set up tooltip events on the chart
2016
- if (this.options.showTooltips){
2017
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
2018
- var activeBars = (evt.type !== 'mouseout') ? this.getBarsAtEvent(evt) : [];
2019
-
2020
- this.eachBars(function(bar){
2021
- bar.restore(['fillColor', 'strokeColor']);
2022
- });
2023
- helpers.each(activeBars, function(activeBar){
2024
- activeBar.fillColor = activeBar.highlightFill;
2025
- activeBar.strokeColor = activeBar.highlightStroke;
2026
- });
2027
- this.showTooltip(activeBars);
2028
- });
2029
- }
2030
-
2031
- //Declare the extension of the default point, to cater for the options passed in to the constructor
2032
- this.BarClass = Chart.Rectangle.extend({
2033
- strokeWidth : this.options.barStrokeWidth,
2034
- showStroke : this.options.barShowStroke,
2035
- ctx : this.chart.ctx
2036
- });
2037
-
2038
- //Iterate through each of the datasets, and build this into a property of the chart
2039
- helpers.each(data.datasets,function(dataset,datasetIndex){
2040
-
2041
- var datasetObject = {
2042
- label : dataset.label || null,
2043
- fillColor : dataset.fillColor,
2044
- strokeColor : dataset.strokeColor,
2045
- bars : []
2046
- };
2047
-
2048
- this.datasets.push(datasetObject);
2049
-
2050
- helpers.each(dataset.data,function(dataPoint,index){
2051
- //Add a new point for each piece of data, passing any required data to draw.
2052
- datasetObject.bars.push(new this.BarClass({
2053
- value : dataPoint,
2054
- label : data.labels[index],
2055
- datasetLabel: dataset.label,
2056
- strokeColor : dataset.strokeColor,
2057
- fillColor : dataset.fillColor,
2058
- highlightFill : dataset.highlightFill || dataset.fillColor,
2059
- highlightStroke : dataset.highlightStroke || dataset.strokeColor
2060
- }));
2061
- },this);
2062
-
2063
- },this);
2064
-
2065
- this.buildScale(data.labels);
2066
-
2067
- this.BarClass.prototype.base = this.scale.endPoint;
2068
-
2069
- this.eachBars(function(bar, index, datasetIndex){
2070
- helpers.extend(bar, {
2071
- width : this.scale.calculateBarWidth(this.datasets.length),
2072
- x: this.scale.calculateBarX(this.datasets.length, datasetIndex, index),
2073
- y: this.scale.endPoint
2074
- });
2075
- bar.save();
2076
- }, this);
2077
-
2078
- this.render();
2079
- },
2080
- update : function(){
2081
- this.scale.update();
2082
- // Reset any highlight colours before updating.
2083
- helpers.each(this.activeElements, function(activeElement){
2084
- activeElement.restore(['fillColor', 'strokeColor']);
2085
- });
2086
-
2087
- this.eachBars(function(bar){
2088
- bar.save();
2089
- });
2090
- this.render();
2091
- },
2092
- eachBars : function(callback){
2093
- helpers.each(this.datasets,function(dataset, datasetIndex){
2094
- helpers.each(dataset.bars, callback, this, datasetIndex);
2095
- },this);
2096
- },
2097
- getBarsAtEvent : function(e){
2098
- var barsArray = [],
2099
- eventPosition = helpers.getRelativePosition(e),
2100
- datasetIterator = function(dataset){
2101
- barsArray.push(dataset.bars[barIndex]);
2102
- },
2103
- barIndex;
2104
-
2105
- for (var datasetIndex = 0; datasetIndex < this.datasets.length; datasetIndex++) {
2106
- for (barIndex = 0; barIndex < this.datasets[datasetIndex].bars.length; barIndex++) {
2107
- if (this.datasets[datasetIndex].bars[barIndex].inRange(eventPosition.x,eventPosition.y)){
2108
- helpers.each(this.datasets, datasetIterator);
2109
- return barsArray;
2110
- }
2111
- }
2112
- }
2113
-
2114
- return barsArray;
2115
- },
2116
- buildScale : function(labels){
2117
- var self = this;
2118
-
2119
- var dataTotal = function(){
2120
- var values = [];
2121
- self.eachBars(function(bar){
2122
- values.push(bar.value);
2123
- });
2124
- return values;
2125
- };
2126
-
2127
- var scaleOptions = {
2128
- templateString : this.options.scaleLabel,
2129
- height : this.chart.height,
2130
- width : this.chart.width,
2131
- ctx : this.chart.ctx,
2132
- textColor : this.options.scaleFontColor,
2133
- fontSize : this.options.scaleFontSize,
2134
- fontStyle : this.options.scaleFontStyle,
2135
- fontFamily : this.options.scaleFontFamily,
2136
- valuesCount : labels.length,
2137
- beginAtZero : this.options.scaleBeginAtZero,
2138
- integersOnly : this.options.scaleIntegersOnly,
2139
- calculateYRange: function(currentHeight){
2140
- var updatedRanges = helpers.calculateScaleRange(
2141
- dataTotal(),
2142
- currentHeight,
2143
- this.fontSize,
2144
- this.beginAtZero,
2145
- this.integersOnly
2146
- );
2147
- helpers.extend(this, updatedRanges);
2148
- },
2149
- xLabels : labels,
2150
- font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),
2151
- lineWidth : this.options.scaleLineWidth,
2152
- lineColor : this.options.scaleLineColor,
2153
- gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,
2154
- gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)",
2155
- padding : (this.options.showScale) ? 0 : (this.options.barShowStroke) ? this.options.barStrokeWidth : 0,
2156
- showLabels : this.options.scaleShowLabels,
2157
- display : this.options.showScale
2158
- };
2159
-
2160
- if (this.options.scaleOverride){
2161
- helpers.extend(scaleOptions, {
2162
- calculateYRange: helpers.noop,
2163
- steps: this.options.scaleSteps,
2164
- stepValue: this.options.scaleStepWidth,
2165
- min: this.options.scaleStartValue,
2166
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
2167
- });
2168
- }
2169
-
2170
- this.scale = new this.ScaleClass(scaleOptions);
2171
- },
2172
- addData : function(valuesArray,label){
2173
- //Map the values array for each of the datasets
2174
- helpers.each(valuesArray,function(value,datasetIndex){
2175
- //Add a new point for each piece of data, passing any required data to draw.
2176
- this.datasets[datasetIndex].bars.push(new this.BarClass({
2177
- value : value,
2178
- label : label,
2179
- x: this.scale.calculateBarX(this.datasets.length, datasetIndex, this.scale.valuesCount+1),
2180
- y: this.scale.endPoint,
2181
- width : this.scale.calculateBarWidth(this.datasets.length),
2182
- base : this.scale.endPoint,
2183
- strokeColor : this.datasets[datasetIndex].strokeColor,
2184
- fillColor : this.datasets[datasetIndex].fillColor
2185
- }));
2186
- },this);
2187
-
2188
- this.scale.addXLabel(label);
2189
- //Then re-render the chart.
2190
- this.update();
2191
- },
2192
- removeData : function(){
2193
- this.scale.removeXLabel();
2194
- //Then re-render the chart.
2195
- helpers.each(this.datasets,function(dataset){
2196
- dataset.bars.shift();
2197
- },this);
2198
- this.update();
2199
- },
2200
- reflow : function(){
2201
- helpers.extend(this.BarClass.prototype,{
2202
- y: this.scale.endPoint,
2203
- base : this.scale.endPoint
2204
- });
2205
- var newScaleProps = helpers.extend({
2206
- height : this.chart.height,
2207
- width : this.chart.width
2208
- });
2209
- this.scale.update(newScaleProps);
2210
- },
2211
- draw : function(ease){
2212
- var easingDecimal = ease || 1;
2213
- this.clear();
2214
-
2215
- var ctx = this.chart.ctx;
2216
-
2217
- this.scale.draw(easingDecimal);
2218
-
2219
- //Draw all the bars for each dataset
2220
- helpers.each(this.datasets,function(dataset,datasetIndex){
2221
- helpers.each(dataset.bars,function(bar,index){
2222
- if (bar.hasValue()){
2223
- bar.base = this.scale.endPoint;
2224
- //Transition then draw
2225
- bar.transition({
2226
- x : this.scale.calculateBarX(this.datasets.length, datasetIndex, index),
2227
- y : this.scale.calculateY(bar.value),
2228
- width : this.scale.calculateBarWidth(this.datasets.length)
2229
- }, easingDecimal).draw();
2230
- }
2231
- },this);
2232
-
2233
- },this);
2234
- }
2235
- });
2236
-
2237
-
2238
- }).call(this);
2239
- (function(){
2240
- "use strict";
2241
-
2242
- var root = this,
2243
- Chart = root.Chart,
2244
- //Cache a local reference to Chart.helpers
2245
- helpers = Chart.helpers;
2246
-
2247
- var defaultConfig = {
2248
- //Boolean - Whether we should show a stroke on each segment
2249
- segmentShowStroke : true,
2250
-
2251
- //String - The colour of each segment stroke
2252
- segmentStrokeColor : "#fff",
2253
-
2254
- //Number - The width of each segment stroke
2255
- segmentStrokeWidth : 2,
2256
-
2257
- //The percentage of the chart that we cut out of the middle.
2258
- percentageInnerCutout : 50,
2259
-
2260
- //Number - Amount of animation steps
2261
- animationSteps : 100,
2262
-
2263
- //String - Animation easing effect
2264
- animationEasing : "easeOutBounce",
2265
-
2266
- //Boolean - Whether we animate the rotation of the Doughnut
2267
- animateRotate : true,
2268
-
2269
- //Boolean - Whether we animate scaling the Doughnut from the centre
2270
- animateScale : false,
2271
-
2272
- //String - A legend template
2273
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
2274
-
2275
- };
2276
-
2277
-
2278
- Chart.Type.extend({
2279
- //Passing in a name registers this chart in the Chart namespace
2280
- name: "Doughnut",
2281
- //Providing a defaults will also register the deafults in the chart namespace
2282
- defaults : defaultConfig,
2283
- //Initialize is fired when the chart is initialized - Data is passed in as a parameter
2284
- //Config is automatically merged by the core of Chart.js, and is available at this.options
2285
- initialize: function(data){
2286
-
2287
- //Declare segments as a static property to prevent inheriting across the Chart type prototype
2288
- this.segments = [];
2289
- this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2;
2290
-
2291
- this.SegmentArc = Chart.Arc.extend({
2292
- ctx : this.chart.ctx,
2293
- x : this.chart.width/2,
2294
- y : this.chart.height/2
2295
- });
2296
-
2297
- //Set up tooltip events on the chart
2298
- if (this.options.showTooltips){
2299
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
2300
- var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : [];
2301
-
2302
- helpers.each(this.segments,function(segment){
2303
- segment.restore(["fillColor"]);
2304
- });
2305
- helpers.each(activeSegments,function(activeSegment){
2306
- activeSegment.fillColor = activeSegment.highlightColor;
2307
- });
2308
- this.showTooltip(activeSegments);
2309
- });
2310
- }
2311
- this.calculateTotal(data);
2312
-
2313
- helpers.each(data,function(datapoint, index){
2314
- this.addData(datapoint, index, true);
2315
- },this);
2316
-
2317
- this.render();
2318
- },
2319
- getSegmentsAtEvent : function(e){
2320
- var segmentsArray = [];
2321
-
2322
- var location = helpers.getRelativePosition(e);
2323
-
2324
- helpers.each(this.segments,function(segment){
2325
- if (segment.inRange(location.x,location.y)) segmentsArray.push(segment);
2326
- },this);
2327
- return segmentsArray;
2328
- },
2329
- addData : function(segment, atIndex, silent){
2330
- var index = atIndex || this.segments.length;
2331
- this.segments.splice(index, 0, new this.SegmentArc({
2332
- value : segment.value,
2333
- outerRadius : (this.options.animateScale) ? 0 : this.outerRadius,
2334
- innerRadius : (this.options.animateScale) ? 0 : (this.outerRadius/100) * this.options.percentageInnerCutout,
2335
- fillColor : segment.color,
2336
- highlightColor : segment.highlight || segment.color,
2337
- showStroke : this.options.segmentShowStroke,
2338
- strokeWidth : this.options.segmentStrokeWidth,
2339
- strokeColor : this.options.segmentStrokeColor,
2340
- startAngle : Math.PI * 1.5,
2341
- circumference : (this.options.animateRotate) ? 0 : this.calculateCircumference(segment.value),
2342
- label : segment.label
2343
- }));
2344
- if (!silent){
2345
- this.reflow();
2346
- this.update();
2347
- }
2348
- },
2349
- calculateCircumference : function(value){
2350
- return (Math.PI*2)*(value / this.total);
2351
- },
2352
- calculateTotal : function(data){
2353
- this.total = 0;
2354
- helpers.each(data,function(segment){
2355
- this.total += segment.value;
2356
- },this);
2357
- },
2358
- update : function(){
2359
- this.calculateTotal(this.segments);
2360
-
2361
- // Reset any highlight colours before updating.
2362
- helpers.each(this.activeElements, function(activeElement){
2363
- activeElement.restore(['fillColor']);
2364
- });
2365
-
2366
- helpers.each(this.segments,function(segment){
2367
- segment.save();
2368
- });
2369
- this.render();
2370
- },
2371
-
2372
- removeData: function(atIndex){
2373
- var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1;
2374
- this.segments.splice(indexToDelete, 1);
2375
- this.reflow();
2376
- this.update();
2377
- },
2378
-
2379
- reflow : function(){
2380
- helpers.extend(this.SegmentArc.prototype,{
2381
- x : this.chart.width/2,
2382
- y : this.chart.height/2
2383
- });
2384
- this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2;
2385
- helpers.each(this.segments, function(segment){
2386
- segment.update({
2387
- outerRadius : this.outerRadius,
2388
- innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout
2389
- });
2390
- }, this);
2391
- },
2392
- draw : function(easeDecimal){
2393
- var animDecimal = (easeDecimal) ? easeDecimal : 1;
2394
- this.clear();
2395
- helpers.each(this.segments,function(segment,index){
2396
- segment.transition({
2397
- circumference : this.calculateCircumference(segment.value),
2398
- outerRadius : this.outerRadius,
2399
- innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout
2400
- },animDecimal);
2401
-
2402
- segment.endAngle = segment.startAngle + segment.circumference;
2403
-
2404
- segment.draw();
2405
- if (index === 0){
2406
- segment.startAngle = Math.PI * 1.5;
2407
- }
2408
- //Check to see if it's the last segment, if not get the next and update the start angle
2409
- if (index < this.segments.length-1){
2410
- this.segments[index+1].startAngle = segment.endAngle;
2411
- }
2412
- },this);
2413
-
2414
- }
2415
- });
2416
-
2417
- Chart.types.Doughnut.extend({
2418
- name : "Pie",
2419
- defaults : helpers.merge(defaultConfig,{percentageInnerCutout : 0})
2420
- });
2421
-
2422
- }).call(this);
2423
- (function(){
2424
- "use strict";
2425
-
2426
- var root = this,
2427
- Chart = root.Chart,
2428
- helpers = Chart.helpers;
2429
-
2430
- var defaultConfig = {
2431
-
2432
- ///Boolean - Whether grid lines are shown across the chart
2433
- scaleShowGridLines : true,
2434
-
2435
- //String - Colour of the grid lines
2436
- scaleGridLineColor : "rgba(0,0,0,.05)",
2437
-
2438
- //Number - Width of the grid lines
2439
- scaleGridLineWidth : 1,
2440
-
2441
- //Boolean - Whether the line is curved between points
2442
- bezierCurve : true,
2443
-
2444
- //Number - Tension of the bezier curve between points
2445
- bezierCurveTension : 0.4,
2446
-
2447
- //Boolean - Whether to show a dot for each point
2448
- pointDot : true,
2449
-
2450
- //Number - Radius of each point dot in pixels
2451
- pointDotRadius : 4,
2452
-
2453
- //Number - Pixel width of point dot stroke
2454
- pointDotStrokeWidth : 1,
2455
-
2456
- //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
2457
- pointHitDetectionRadius : 20,
2458
-
2459
- //Boolean - Whether to show a stroke for datasets
2460
- datasetStroke : true,
2461
-
2462
- //Number - Pixel width of dataset stroke
2463
- datasetStrokeWidth : 2,
2464
-
2465
- //Boolean - Whether to fill the dataset with a colour
2466
- datasetFill : true,
2467
-
2468
- //String - A legend template
2469
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
2470
-
2471
- };
2472
-
2473
-
2474
- Chart.Type.extend({
2475
- name: "Line",
2476
- defaults : defaultConfig,
2477
- initialize: function(data){
2478
- //Declare the extension of the default point, to cater for the options passed in to the constructor
2479
- this.PointClass = Chart.Point.extend({
2480
- strokeWidth : this.options.pointDotStrokeWidth,
2481
- radius : this.options.pointDotRadius,
2482
- display: this.options.pointDot,
2483
- hitDetectionRadius : this.options.pointHitDetectionRadius,
2484
- ctx : this.chart.ctx,
2485
- inRange : function(mouseX){
2486
- return (Math.pow(mouseX-this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius,2));
2487
- }
2488
- });
2489
-
2490
- this.datasets = [];
2491
-
2492
- //Set up tooltip events on the chart
2493
- if (this.options.showTooltips){
2494
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
2495
- var activePoints = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : [];
2496
- this.eachPoints(function(point){
2497
- point.restore(['fillColor', 'strokeColor']);
2498
- });
2499
- helpers.each(activePoints, function(activePoint){
2500
- activePoint.fillColor = activePoint.highlightFill;
2501
- activePoint.strokeColor = activePoint.highlightStroke;
2502
- });
2503
- this.showTooltip(activePoints);
2504
- });
2505
- }
2506
-
2507
- //Iterate through each of the datasets, and build this into a property of the chart
2508
- helpers.each(data.datasets,function(dataset){
2509
-
2510
- var datasetObject = {
2511
- label : dataset.label || null,
2512
- fillColor : dataset.fillColor,
2513
- strokeColor : dataset.strokeColor,
2514
- pointColor : dataset.pointColor,
2515
- pointStrokeColor : dataset.pointStrokeColor,
2516
- points : []
2517
- };
2518
-
2519
- this.datasets.push(datasetObject);
2520
-
2521
-
2522
- helpers.each(dataset.data,function(dataPoint,index){
2523
- //Add a new point for each piece of data, passing any required data to draw.
2524
- datasetObject.points.push(new this.PointClass({
2525
- value : dataPoint,
2526
- label : data.labels[index],
2527
- datasetLabel: dataset.label,
2528
- strokeColor : dataset.pointStrokeColor,
2529
- fillColor : dataset.pointColor,
2530
- highlightFill : dataset.pointHighlightFill || dataset.pointColor,
2531
- highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor
2532
- }));
2533
- },this);
2534
-
2535
- this.buildScale(data.labels);
2536
-
2537
-
2538
- this.eachPoints(function(point, index){
2539
- helpers.extend(point, {
2540
- x: this.scale.calculateX(index),
2541
- y: this.scale.endPoint
2542
- });
2543
- point.save();
2544
- }, this);
2545
-
2546
- },this);
2547
-
2548
-
2549
- this.render();
2550
- },
2551
- update : function(){
2552
- this.scale.update();
2553
- // Reset any highlight colours before updating.
2554
- helpers.each(this.activeElements, function(activeElement){
2555
- activeElement.restore(['fillColor', 'strokeColor']);
2556
- });
2557
- this.eachPoints(function(point){
2558
- point.save();
2559
- });
2560
- this.render();
2561
- },
2562
- eachPoints : function(callback){
2563
- helpers.each(this.datasets,function(dataset){
2564
- helpers.each(dataset.points,callback,this);
2565
- },this);
2566
- },
2567
- getPointsAtEvent : function(e){
2568
- var pointsArray = [],
2569
- eventPosition = helpers.getRelativePosition(e);
2570
- helpers.each(this.datasets,function(dataset){
2571
- helpers.each(dataset.points,function(point){
2572
- if (point.inRange(eventPosition.x,eventPosition.y)) pointsArray.push(point);
2573
- });
2574
- },this);
2575
- return pointsArray;
2576
- },
2577
- buildScale : function(labels){
2578
- var self = this;
2579
-
2580
- var dataTotal = function(){
2581
- var values = [];
2582
- self.eachPoints(function(point){
2583
- values.push(point.value);
2584
- });
2585
-
2586
- return values;
2587
- };
2588
-
2589
- var scaleOptions = {
2590
- templateString : this.options.scaleLabel,
2591
- height : this.chart.height,
2592
- width : this.chart.width,
2593
- ctx : this.chart.ctx,
2594
- textColor : this.options.scaleFontColor,
2595
- fontSize : this.options.scaleFontSize,
2596
- fontStyle : this.options.scaleFontStyle,
2597
- fontFamily : this.options.scaleFontFamily,
2598
- valuesCount : labels.length,
2599
- beginAtZero : this.options.scaleBeginAtZero,
2600
- integersOnly : this.options.scaleIntegersOnly,
2601
- calculateYRange : function(currentHeight){
2602
- var updatedRanges = helpers.calculateScaleRange(
2603
- dataTotal(),
2604
- currentHeight,
2605
- this.fontSize,
2606
- this.beginAtZero,
2607
- this.integersOnly
2608
- );
2609
- helpers.extend(this, updatedRanges);
2610
- },
2611
- xLabels : labels,
2612
- font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),
2613
- lineWidth : this.options.scaleLineWidth,
2614
- lineColor : this.options.scaleLineColor,
2615
- gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,
2616
- gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)",
2617
- padding: (this.options.showScale) ? 0 : this.options.pointDotRadius + this.options.pointDotStrokeWidth,
2618
- showLabels : this.options.scaleShowLabels,
2619
- display : this.options.showScale
2620
- };
2621
-
2622
- if (this.options.scaleOverride){
2623
- helpers.extend(scaleOptions, {
2624
- calculateYRange: helpers.noop,
2625
- steps: this.options.scaleSteps,
2626
- stepValue: this.options.scaleStepWidth,
2627
- min: this.options.scaleStartValue,
2628
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
2629
- });
2630
- }
2631
-
2632
-
2633
- this.scale = new Chart.Scale(scaleOptions);
2634
- },
2635
- addData : function(valuesArray,label){
2636
- //Map the values array for each of the datasets
2637
-
2638
- helpers.each(valuesArray,function(value,datasetIndex){
2639
- //Add a new point for each piece of data, passing any required data to draw.
2640
- this.datasets[datasetIndex].points.push(new this.PointClass({
2641
- value : value,
2642
- label : label,
2643
- x: this.scale.calculateX(this.scale.valuesCount+1),
2644
- y: this.scale.endPoint,
2645
- strokeColor : this.datasets[datasetIndex].pointStrokeColor,
2646
- fillColor : this.datasets[datasetIndex].pointColor
2647
- }));
2648
- },this);
2649
-
2650
- this.scale.addXLabel(label);
2651
- //Then re-render the chart.
2652
- this.update();
2653
- },
2654
- removeData : function(){
2655
- this.scale.removeXLabel();
2656
- //Then re-render the chart.
2657
- helpers.each(this.datasets,function(dataset){
2658
- dataset.points.shift();
2659
- },this);
2660
- this.update();
2661
- },
2662
- reflow : function(){
2663
- var newScaleProps = helpers.extend({
2664
- height : this.chart.height,
2665
- width : this.chart.width
2666
- });
2667
- this.scale.update(newScaleProps);
2668
- },
2669
- draw : function(ease){
2670
- var easingDecimal = ease || 1;
2671
- this.clear();
2672
-
2673
- var ctx = this.chart.ctx;
2674
-
2675
- // Some helper methods for getting the next/prev points
2676
- var hasValue = function(item){
2677
- return item.value !== null;
2678
- },
2679
- nextPoint = function(point, collection, index){
2680
- return helpers.findNextWhere(collection, hasValue, index) || point;
2681
- },
2682
- previousPoint = function(point, collection, index){
2683
- return helpers.findPreviousWhere(collection, hasValue, index) || point;
2684
- };
2685
-
2686
- this.scale.draw(easingDecimal);
2687
-
2688
-
2689
- helpers.each(this.datasets,function(dataset){
2690
- var pointsWithValues = helpers.where(dataset.points, hasValue);
2691
-
2692
- //Transition each point first so that the line and point drawing isn't out of sync
2693
- //We can use this extra loop to calculate the control points of this dataset also in this loop
2694
-
2695
- helpers.each(dataset.points, function(point, index){
2696
- if (point.hasValue()){
2697
- point.transition({
2698
- y : this.scale.calculateY(point.value),
2699
- x : this.scale.calculateX(index)
2700
- }, easingDecimal);
2701
- }
2702
- },this);
2703
-
2704
-
2705
- // Control points need to be calculated in a seperate loop, because we need to know the current x/y of the point
2706
- // This would cause issues when there is no animation, because the y of the next point would be 0, so beziers would be skewed
2707
- if (this.options.bezierCurve){
2708
- helpers.each(pointsWithValues, function(point, index){
2709
- var tension = (index > 0 && index < pointsWithValues.length - 1) ? this.options.bezierCurveTension : 0;
2710
- point.controlPoints = helpers.splineCurve(
2711
- previousPoint(point, pointsWithValues, index),
2712
- point,
2713
- nextPoint(point, pointsWithValues, index),
2714
- tension
2715
- );
2716
-
2717
- // Prevent the bezier going outside of the bounds of the graph
2718
-
2719
- // Cap puter bezier handles to the upper/lower scale bounds
2720
- if (point.controlPoints.outer.y > this.scale.endPoint){
2721
- point.controlPoints.outer.y = this.scale.endPoint;
2722
- }
2723
- else if (point.controlPoints.outer.y < this.scale.startPoint){
2724
- point.controlPoints.outer.y = this.scale.startPoint;
2725
- }
2726
-
2727
- // Cap inner bezier handles to the upper/lower scale bounds
2728
- if (point.controlPoints.inner.y > this.scale.endPoint){
2729
- point.controlPoints.inner.y = this.scale.endPoint;
2730
- }
2731
- else if (point.controlPoints.inner.y < this.scale.startPoint){
2732
- point.controlPoints.inner.y = this.scale.startPoint;
2733
- }
2734
- },this);
2735
- }
2736
-
2737
-
2738
- //Draw the line between all the points
2739
- ctx.lineWidth = this.options.datasetStrokeWidth;
2740
- ctx.strokeStyle = dataset.strokeColor;
2741
- ctx.beginPath();
2742
-
2743
- helpers.each(pointsWithValues, function(point, index){
2744
- if (index === 0){
2745
- ctx.moveTo(point.x, point.y);
2746
- }
2747
- else{
2748
- if(this.options.bezierCurve){
2749
- var previous = previousPoint(point, pointsWithValues, index);
2750
-
2751
- ctx.bezierCurveTo(
2752
- previous.controlPoints.outer.x,
2753
- previous.controlPoints.outer.y,
2754
- point.controlPoints.inner.x,
2755
- point.controlPoints.inner.y,
2756
- point.x,
2757
- point.y
2758
- );
2759
- }
2760
- else{
2761
- ctx.lineTo(point.x,point.y);
2762
- }
2763
- }
2764
- }, this);
2765
-
2766
- ctx.stroke();
2767
-
2768
- if (this.options.datasetFill && pointsWithValues.length > 0){
2769
- //Round off the line by going to the base of the chart, back to the start, then fill.
2770
- ctx.lineTo(pointsWithValues[pointsWithValues.length - 1].x, this.scale.endPoint);
2771
- ctx.lineTo(pointsWithValues[0].x, this.scale.endPoint);
2772
- ctx.fillStyle = dataset.fillColor;
2773
- ctx.closePath();
2774
- ctx.fill();
2775
- }
2776
-
2777
- //Now draw the points over the line
2778
- //A little inefficient double looping, but better than the line
2779
- //lagging behind the point positions
2780
- helpers.each(pointsWithValues,function(point){
2781
- point.draw();
2782
- });
2783
- },this);
2784
- }
2785
- });
2786
-
2787
-
2788
- }).call(this);
2789
- (function(){
2790
- "use strict";
2791
-
2792
- var root = this,
2793
- Chart = root.Chart,
2794
- //Cache a local reference to Chart.helpers
2795
- helpers = Chart.helpers;
2796
-
2797
- var defaultConfig = {
2798
- //Boolean - Show a backdrop to the scale label
2799
- scaleShowLabelBackdrop : true,
2800
-
2801
- //String - The colour of the label backdrop
2802
- scaleBackdropColor : "rgba(255,255,255,0.75)",
2803
-
2804
- // Boolean - Whether the scale should begin at zero
2805
- scaleBeginAtZero : true,
2806
-
2807
- //Number - The backdrop padding above & below the label in pixels
2808
- scaleBackdropPaddingY : 2,
2809
-
2810
- //Number - The backdrop padding to the side of the label in pixels
2811
- scaleBackdropPaddingX : 2,
2812
-
2813
- //Boolean - Show line for each value in the scale
2814
- scaleShowLine : true,
2815
-
2816
- //Boolean - Stroke a line around each segment in the chart
2817
- segmentShowStroke : true,
2818
-
2819
- //String - The colour of the stroke on each segement.
2820
- segmentStrokeColor : "#fff",
2821
-
2822
- //Number - The width of the stroke value in pixels
2823
- segmentStrokeWidth : 2,
2824
-
2825
- //Number - Amount of animation steps
2826
- animationSteps : 100,
2827
-
2828
- //String - Animation easing effect.
2829
- animationEasing : "easeOutBounce",
2830
-
2831
- //Boolean - Whether to animate the rotation of the chart
2832
- animateRotate : true,
2833
-
2834
- //Boolean - Whether to animate scaling the chart from the centre
2835
- animateScale : false,
2836
-
2837
- //String - A legend template
2838
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
2839
- };
2840
-
2841
-
2842
- Chart.Type.extend({
2843
- //Passing in a name registers this chart in the Chart namespace
2844
- name: "PolarArea",
2845
- //Providing a defaults will also register the deafults in the chart namespace
2846
- defaults : defaultConfig,
2847
- //Initialize is fired when the chart is initialized - Data is passed in as a parameter
2848
- //Config is automatically merged by the core of Chart.js, and is available at this.options
2849
- initialize: function(data){
2850
- this.segments = [];
2851
- //Declare segment class as a chart instance specific class, so it can share props for this instance
2852
- this.SegmentArc = Chart.Arc.extend({
2853
- showStroke : this.options.segmentShowStroke,
2854
- strokeWidth : this.options.segmentStrokeWidth,
2855
- strokeColor : this.options.segmentStrokeColor,
2856
- ctx : this.chart.ctx,
2857
- innerRadius : 0,
2858
- x : this.chart.width/2,
2859
- y : this.chart.height/2
2860
- });
2861
- this.scale = new Chart.RadialScale({
2862
- display: this.options.showScale,
2863
- fontStyle: this.options.scaleFontStyle,
2864
- fontSize: this.options.scaleFontSize,
2865
- fontFamily: this.options.scaleFontFamily,
2866
- fontColor: this.options.scaleFontColor,
2867
- showLabels: this.options.scaleShowLabels,
2868
- showLabelBackdrop: this.options.scaleShowLabelBackdrop,
2869
- backdropColor: this.options.scaleBackdropColor,
2870
- backdropPaddingY : this.options.scaleBackdropPaddingY,
2871
- backdropPaddingX: this.options.scaleBackdropPaddingX,
2872
- lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0,
2873
- lineColor: this.options.scaleLineColor,
2874
- lineArc: true,
2875
- width: this.chart.width,
2876
- height: this.chart.height,
2877
- xCenter: this.chart.width/2,
2878
- yCenter: this.chart.height/2,
2879
- ctx : this.chart.ctx,
2880
- templateString: this.options.scaleLabel,
2881
- valuesCount: data.length
2882
- });
2883
-
2884
- this.updateScaleRange(data);
2885
-
2886
- this.scale.update();
2887
-
2888
- helpers.each(data,function(segment,index){
2889
- this.addData(segment,index,true);
2890
- },this);
2891
-
2892
- //Set up tooltip events on the chart
2893
- if (this.options.showTooltips){
2894
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
2895
- var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : [];
2896
- helpers.each(this.segments,function(segment){
2897
- segment.restore(["fillColor"]);
2898
- });
2899
- helpers.each(activeSegments,function(activeSegment){
2900
- activeSegment.fillColor = activeSegment.highlightColor;
2901
- });
2902
- this.showTooltip(activeSegments);
2903
- });
2904
- }
2905
-
2906
- this.render();
2907
- },
2908
- getSegmentsAtEvent : function(e){
2909
- var segmentsArray = [];
2910
-
2911
- var location = helpers.getRelativePosition(e);
2912
-
2913
- helpers.each(this.segments,function(segment){
2914
- if (segment.inRange(location.x,location.y)) segmentsArray.push(segment);
2915
- },this);
2916
- return segmentsArray;
2917
- },
2918
- addData : function(segment, atIndex, silent){
2919
- var index = atIndex || this.segments.length;
2920
-
2921
- this.segments.splice(index, 0, new this.SegmentArc({
2922
- fillColor: segment.color,
2923
- highlightColor: segment.highlight || segment.color,
2924
- label: segment.label,
2925
- value: segment.value,
2926
- outerRadius: (this.options.animateScale) ? 0 : this.scale.calculateCenterOffset(segment.value),
2927
- circumference: (this.options.animateRotate) ? 0 : this.scale.getCircumference(),
2928
- startAngle: Math.PI * 1.5
2929
- }));
2930
- if (!silent){
2931
- this.reflow();
2932
- this.update();
2933
- }
2934
- },
2935
- removeData: function(atIndex){
2936
- var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1;
2937
- this.segments.splice(indexToDelete, 1);
2938
- this.reflow();
2939
- this.update();
2940
- },
2941
- calculateTotal: function(data){
2942
- this.total = 0;
2943
- helpers.each(data,function(segment){
2944
- this.total += segment.value;
2945
- },this);
2946
- this.scale.valuesCount = this.segments.length;
2947
- },
2948
- updateScaleRange: function(datapoints){
2949
- var valuesArray = [];
2950
- helpers.each(datapoints,function(segment){
2951
- valuesArray.push(segment.value);
2952
- });
2953
-
2954
- var scaleSizes = (this.options.scaleOverride) ?
2955
- {
2956
- steps: this.options.scaleSteps,
2957
- stepValue: this.options.scaleStepWidth,
2958
- min: this.options.scaleStartValue,
2959
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
2960
- } :
2961
- helpers.calculateScaleRange(
2962
- valuesArray,
2963
- helpers.min([this.chart.width, this.chart.height])/2,
2964
- this.options.scaleFontSize,
2965
- this.options.scaleBeginAtZero,
2966
- this.options.scaleIntegersOnly
2967
- );
2968
-
2969
- helpers.extend(
2970
- this.scale,
2971
- scaleSizes,
2972
- {
2973
- size: helpers.min([this.chart.width, this.chart.height]),
2974
- xCenter: this.chart.width/2,
2975
- yCenter: this.chart.height/2
2976
- }
2977
- );
2978
-
2979
- },
2980
- update : function(){
2981
- this.calculateTotal(this.segments);
2982
-
2983
- helpers.each(this.segments,function(segment){
2984
- segment.save();
2985
- });
2986
- this.render();
2987
- },
2988
- reflow : function(){
2989
- helpers.extend(this.SegmentArc.prototype,{
2990
- x : this.chart.width/2,
2991
- y : this.chart.height/2
2992
- });
2993
- this.updateScaleRange(this.segments);
2994
- this.scale.update();
2995
-
2996
- helpers.extend(this.scale,{
2997
- xCenter: this.chart.width/2,
2998
- yCenter: this.chart.height/2
2999
- });
3000
-
3001
- helpers.each(this.segments, function(segment){
3002
- segment.update({
3003
- outerRadius : this.scale.calculateCenterOffset(segment.value)
3004
- });
3005
- }, this);
3006
-
3007
- },
3008
- draw : function(ease){
3009
- var easingDecimal = ease || 1;
3010
- //Clear & draw the canvas
3011
- this.clear();
3012
- helpers.each(this.segments,function(segment, index){
3013
- segment.transition({
3014
- circumference : this.scale.getCircumference(),
3015
- outerRadius : this.scale.calculateCenterOffset(segment.value)
3016
- },easingDecimal);
3017
-
3018
- segment.endAngle = segment.startAngle + segment.circumference;
3019
-
3020
- // If we've removed the first segment we need to set the first one to
3021
- // start at the top.
3022
- if (index === 0){
3023
- segment.startAngle = Math.PI * 1.5;
3024
- }
3025
-
3026
- //Check to see if it's the last segment, if not get the next and update the start angle
3027
- if (index < this.segments.length - 1){
3028
- this.segments[index+1].startAngle = segment.endAngle;
3029
- }
3030
- segment.draw();
3031
- }, this);
3032
- this.scale.draw();
3033
- }
3034
- });
3035
-
3036
- }).call(this);
3037
- (function(){
3038
- "use strict";
3039
-
3040
- var root = this,
3041
- Chart = root.Chart,
3042
- helpers = Chart.helpers;
3043
-
3044
-
3045
-
3046
- Chart.Type.extend({
3047
- name: "Radar",
3048
- defaults:{
3049
- //Boolean - Whether to show lines for each scale point
3050
- scaleShowLine : true,
3051
-
3052
- //Boolean - Whether we show the angle lines out of the radar
3053
- angleShowLineOut : true,
3054
-
3055
- //Boolean - Whether to show labels on the scale
3056
- scaleShowLabels : false,
3057
-
3058
- // Boolean - Whether the scale should begin at zero
3059
- scaleBeginAtZero : true,
3060
-
3061
- //String - Colour of the angle line
3062
- angleLineColor : "rgba(0,0,0,.1)",
3063
-
3064
- //Number - Pixel width of the angle line
3065
- angleLineWidth : 1,
3066
-
3067
- //String - Point label font declaration
3068
- pointLabelFontFamily : "'Arial'",
3069
-
3070
- //String - Point label font weight
3071
- pointLabelFontStyle : "normal",
3072
-
3073
- //Number - Point label font size in pixels
3074
- pointLabelFontSize : 10,
3075
-
3076
- //String - Point label font colour
3077
- pointLabelFontColor : "#666",
3078
-
3079
- //Boolean - Whether to show a dot for each point
3080
- pointDot : true,
3081
-
3082
- //Number - Radius of each point dot in pixels
3083
- pointDotRadius : 3,
3084
-
3085
- //Number - Pixel width of point dot stroke
3086
- pointDotStrokeWidth : 1,
3087
-
3088
- //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
3089
- pointHitDetectionRadius : 20,
3090
-
3091
- //Boolean - Whether to show a stroke for datasets
3092
- datasetStroke : true,
3093
-
3094
- //Number - Pixel width of dataset stroke
3095
- datasetStrokeWidth : 2,
3096
-
3097
- //Boolean - Whether to fill the dataset with a colour
3098
- datasetFill : true,
3099
-
3100
- //String - A legend template
3101
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
3102
-
3103
- },
3104
-
3105
- initialize: function(data){
3106
- this.PointClass = Chart.Point.extend({
3107
- strokeWidth : this.options.pointDotStrokeWidth,
3108
- radius : this.options.pointDotRadius,
3109
- display: this.options.pointDot,
3110
- hitDetectionRadius : this.options.pointHitDetectionRadius,
3111
- ctx : this.chart.ctx
3112
- });
3113
-
3114
- this.datasets = [];
3115
-
3116
- this.buildScale(data);
3117
-
3118
- //Set up tooltip events on the chart
3119
- if (this.options.showTooltips){
3120
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
3121
- var activePointsCollection = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : [];
3122
-
3123
- this.eachPoints(function(point){
3124
- point.restore(['fillColor', 'strokeColor']);
3125
- });
3126
- helpers.each(activePointsCollection, function(activePoint){
3127
- activePoint.fillColor = activePoint.highlightFill;
3128
- activePoint.strokeColor = activePoint.highlightStroke;
3129
- });
3130
-
3131
- this.showTooltip(activePointsCollection);
3132
- });
3133
- }
3134
-
3135
- //Iterate through each of the datasets, and build this into a property of the chart
3136
- helpers.each(data.datasets,function(dataset){
3137
-
3138
- var datasetObject = {
3139
- label: dataset.label || null,
3140
- fillColor : dataset.fillColor,
3141
- strokeColor : dataset.strokeColor,
3142
- pointColor : dataset.pointColor,
3143
- pointStrokeColor : dataset.pointStrokeColor,
3144
- points : []
3145
- };
3146
-
3147
- this.datasets.push(datasetObject);
3148
-
3149
- helpers.each(dataset.data,function(dataPoint,index){
3150
- //Add a new point for each piece of data, passing any required data to draw.
3151
- var pointPosition;
3152
- if (!this.scale.animation){
3153
- pointPosition = this.scale.getPointPosition(index, this.scale.calculateCenterOffset(dataPoint));
3154
- }
3155
- datasetObject.points.push(new this.PointClass({
3156
- value : dataPoint,
3157
- label : data.labels[index],
3158
- datasetLabel: dataset.label,
3159
- x: (this.options.animation) ? this.scale.xCenter : pointPosition.x,
3160
- y: (this.options.animation) ? this.scale.yCenter : pointPosition.y,
3161
- strokeColor : dataset.pointStrokeColor,
3162
- fillColor : dataset.pointColor,
3163
- highlightFill : dataset.pointHighlightFill || dataset.pointColor,
3164
- highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor
3165
- }));
3166
- },this);
3167
-
3168
- },this);
3169
-
3170
- this.render();
3171
- },
3172
- eachPoints : function(callback){
3173
- helpers.each(this.datasets,function(dataset){
3174
- helpers.each(dataset.points,callback,this);
3175
- },this);
3176
- },
3177
-
3178
- getPointsAtEvent : function(evt){
3179
- var mousePosition = helpers.getRelativePosition(evt),
3180
- fromCenter = helpers.getAngleFromPoint({
3181
- x: this.scale.xCenter,
3182
- y: this.scale.yCenter
3183
- }, mousePosition);
3184
-
3185
- var anglePerIndex = (Math.PI * 2) /this.scale.valuesCount,
3186
- pointIndex = Math.round((fromCenter.angle - Math.PI * 1.5) / anglePerIndex),
3187
- activePointsCollection = [];
3188
-
3189
- // If we're at the top, make the pointIndex 0 to get the first of the array.
3190
- if (pointIndex >= this.scale.valuesCount || pointIndex < 0){
3191
- pointIndex = 0;
3192
- }
3193
-
3194
- if (fromCenter.distance <= this.scale.drawingArea){
3195
- helpers.each(this.datasets, function(dataset){
3196
- activePointsCollection.push(dataset.points[pointIndex]);
3197
- });
3198
- }
3199
-
3200
- return activePointsCollection;
3201
- },
3202
-
3203
- buildScale : function(data){
3204
- this.scale = new Chart.RadialScale({
3205
- display: this.options.showScale,
3206
- fontStyle: this.options.scaleFontStyle,
3207
- fontSize: this.options.scaleFontSize,
3208
- fontFamily: this.options.scaleFontFamily,
3209
- fontColor: this.options.scaleFontColor,
3210
- showLabels: this.options.scaleShowLabels,
3211
- showLabelBackdrop: this.options.scaleShowLabelBackdrop,
3212
- backdropColor: this.options.scaleBackdropColor,
3213
- backdropPaddingY : this.options.scaleBackdropPaddingY,
3214
- backdropPaddingX: this.options.scaleBackdropPaddingX,
3215
- lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0,
3216
- lineColor: this.options.scaleLineColor,
3217
- angleLineColor : this.options.angleLineColor,
3218
- angleLineWidth : (this.options.angleShowLineOut) ? this.options.angleLineWidth : 0,
3219
- // Point labels at the edge of each line
3220
- pointLabelFontColor : this.options.pointLabelFontColor,
3221
- pointLabelFontSize : this.options.pointLabelFontSize,
3222
- pointLabelFontFamily : this.options.pointLabelFontFamily,
3223
- pointLabelFontStyle : this.options.pointLabelFontStyle,
3224
- height : this.chart.height,
3225
- width: this.chart.width,
3226
- xCenter: this.chart.width/2,
3227
- yCenter: this.chart.height/2,
3228
- ctx : this.chart.ctx,
3229
- templateString: this.options.scaleLabel,
3230
- labels: data.labels,
3231
- valuesCount: data.datasets[0].data.length
3232
- });
3233
-
3234
- this.scale.setScaleSize();
3235
- this.updateScaleRange(data.datasets);
3236
- this.scale.buildYLabels();
3237
- },
3238
- updateScaleRange: function(datasets){
3239
- var valuesArray = (function(){
3240
- var totalDataArray = [];
3241
- helpers.each(datasets,function(dataset){
3242
- if (dataset.data){
3243
- totalDataArray = totalDataArray.concat(dataset.data);
3244
- }
3245
- else {
3246
- helpers.each(dataset.points, function(point){
3247
- totalDataArray.push(point.value);
3248
- });
3249
- }
3250
- });
3251
- return totalDataArray;
3252
- })();
3253
-
3254
-
3255
- var scaleSizes = (this.options.scaleOverride) ?
3256
- {
3257
- steps: this.options.scaleSteps,
3258
- stepValue: this.options.scaleStepWidth,
3259
- min: this.options.scaleStartValue,
3260
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
3261
- } :
3262
- helpers.calculateScaleRange(
3263
- valuesArray,
3264
- helpers.min([this.chart.width, this.chart.height])/2,
3265
- this.options.scaleFontSize,
3266
- this.options.scaleBeginAtZero,
3267
- this.options.scaleIntegersOnly
3268
- );
3269
-
3270
- helpers.extend(
3271
- this.scale,
3272
- scaleSizes
3273
- );
3274
-
3275
- },
3276
- addData : function(valuesArray,label){
3277
- //Map the values array for each of the datasets
3278
- this.scale.valuesCount++;
3279
- helpers.each(valuesArray,function(value,datasetIndex){
3280
- var pointPosition = this.scale.getPointPosition(this.scale.valuesCount, this.scale.calculateCenterOffset(value));
3281
- this.datasets[datasetIndex].points.push(new this.PointClass({
3282
- value : value,
3283
- label : label,
3284
- x: pointPosition.x,
3285
- y: pointPosition.y,
3286
- strokeColor : this.datasets[datasetIndex].pointStrokeColor,
3287
- fillColor : this.datasets[datasetIndex].pointColor
3288
- }));
3289
- },this);
3290
-
3291
- this.scale.labels.push(label);
3292
-
3293
- this.reflow();
3294
-
3295
- this.update();
3296
- },
3297
- removeData : function(){
3298
- this.scale.valuesCount--;
3299
- this.scale.labels.shift();
3300
- helpers.each(this.datasets,function(dataset){
3301
- dataset.points.shift();
3302
- },this);
3303
- this.reflow();
3304
- this.update();
3305
- },
3306
- update : function(){
3307
- this.eachPoints(function(point){
3308
- point.save();
3309
- });
3310
- this.reflow();
3311
- this.render();
3312
- },
3313
- reflow: function(){
3314
- helpers.extend(this.scale, {
3315
- width : this.chart.width,
3316
- height: this.chart.height,
3317
- size : helpers.min([this.chart.width, this.chart.height]),
3318
- xCenter: this.chart.width/2,
3319
- yCenter: this.chart.height/2
3320
- });
3321
- this.updateScaleRange(this.datasets);
3322
- this.scale.setScaleSize();
3323
- this.scale.buildYLabels();
3324
- },
3325
- draw : function(ease){
3326
- var easeDecimal = ease || 1,
3327
- ctx = this.chart.ctx;
3328
- this.clear();
3329
- this.scale.draw();
3330
-
3331
- helpers.each(this.datasets,function(dataset){
3332
-
3333
- //Transition each point first so that the line and point drawing isn't out of sync
3334
- helpers.each(dataset.points,function(point,index){
3335
- if (point.hasValue()){
3336
- point.transition(this.scale.getPointPosition(index, this.scale.calculateCenterOffset(point.value)), easeDecimal);
3337
- }
3338
- },this);
3339
-
3340
-
3341
-
3342
- //Draw the line between all the points
3343
- ctx.lineWidth = this.options.datasetStrokeWidth;
3344
- ctx.strokeStyle = dataset.strokeColor;
3345
- ctx.beginPath();
3346
- helpers.each(dataset.points,function(point,index){
3347
- if (index === 0){
3348
- ctx.moveTo(point.x,point.y);
3349
- }
3350
- else{
3351
- ctx.lineTo(point.x,point.y);
3352
- }
3353
- },this);
3354
- ctx.closePath();
3355
- ctx.stroke();
3356
-
3357
- ctx.fillStyle = dataset.fillColor;
3358
- ctx.fill();
3359
-
3360
- //Now draw the points over the line
3361
- //A little inefficient double looping, but better than the line
3362
- //lagging behind the point positions
3363
- helpers.each(dataset.points,function(point){
3364
- if (point.hasValue()){
3365
- point.draw();
3366
- }
3367
- });
3368
-
3369
- },this);
3370
-
3371
- }
3372
-
3373
- });
3374
-
3375
-
3376
-
3377
-
3378
-
3379
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/Chart.min.js DELETED
@@ -1,11 +0,0 @@
1
- /*!
2
- * Chart.js
3
- * http://chartjs.org/
4
- * Version: 1.0.1-beta.4
5
- *
6
- * Copyright 2014 Nick Downie
7
- * Released under the MIT license
8
- * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
9
- */
10
- (function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;this.width=t.canvas.width,this.height=t.canvas.height;return this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;n<t.length;n++)i.apply(e,[t[n],n].concat(s))}else for(var o in t)i.apply(e,[t[o],o].concat(s))},o=s.clone=function(t){var i={};return n(t,function(e,s){t.hasOwnProperty(s)&&(i[s]=e)}),i},a=s.extend=function(t){return n(Array.prototype.slice.call(arguments,1),function(i){n(i,function(e,s){i.hasOwnProperty(s)&&(t[s]=e)})}),t},h=s.merge=function(){var t=Array.prototype.slice.call(arguments,0);return t.unshift({}),a.apply(null,t)},l=s.indexOf=function(t,i){if(Array.prototype.indexOf)return t.indexOf(i);for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1},r=(s.where=function(t,i){var e=[];return s.each(t,function(t){i(t)&&e.push(t)}),e},s.findNextWhere=function(t,i,e){e||(e=-1);for(var s=e+1;s<t.length;s++){var n=t[s];if(i(n))return n}},s.findPreviousWhere=function(t,i,e){e||(e=t.length);for(var s=e-1;s>=0;s--){var n=t[s];if(i(n))return n}},s.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},s=function(){this.constructor=e};return s.prototype=i.prototype,e.prototype=new s,e.extend=r,t&&a(e.prototype,t),e.__super__=i.prototype,e}),c=s.noop=function(){},u=s.uid=function(){var t=0;return function(){return"chart-"+t++}}(),d=s.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},p=s.amd="function"==typeof t.define&&t.define.amd,f=s.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=s.max=function(t){return Math.max.apply(Math,t)},m=s.min=function(t){return Math.min.apply(Math,t)},v=(s.cap=function(t,i,e){if(f(i)){if(t>i)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){return t%1!==0&&f(t)?t.toString().split(".")[1].length:0}),x=s.radians=function(t){return t*(Math.PI/180)},S=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),y=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),C=(s.calculateScaleRange=function(t,i,e,s,n){var o=2,a=Math.floor(i/(1.5*e)),h=o>=a,l=g(t),r=m(t);l===r&&(l+=.5,r>=.5&&!s?r-=.5:l+=.5);for(var c=Math.abs(l-r),u=y(c),d=Math.ceil(l/(1*Math.pow(10,u)))*Math.pow(10,u),p=s?0:Math.floor(r/(1*Math.pow(10,u)))*Math.pow(10,u),f=d-p,v=Math.pow(10,u),x=Math.round(f/v);(x>a||a>2*x)&&!h;)if(x>a)v*=2,x=Math.round(f/v),x%1!==0&&(h=!0);else if(n&&u>=0){if(v/2%1!==0)break;v/=2,x=Math.round(f/v)}else v/=2,x=Math.round(f/v);return h&&(x=o,v=f/x),{steps:x,stepValue:v,min:p,max:p+x*v}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),b=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return labelTemplateString&&n(o,function(i,n){o[n]=C(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),-(s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)))},easeOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),s*Math.pow(2,-10*t)*Math.sin(2*(1*t-i)*Math.PI/e)+1)},easeInOutElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:2==(t/=.5)?1:(e||(e=.3*1.5),s<Math.abs(1)?(s=1,i=e/4):i=e/(2*Math.PI)*Math.asin(1/s),1>t?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-b.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?7.5625*t*t:2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*b.easeInBounce(2*t):.5*b.easeOutBounce(2*t-1)+.5}}),w=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=(s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),s.animationLoop=function(t,i,e,s,n,o){var a=0,h=b[e]||b.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=w(l):n.apply(o)};w(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),L=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},k=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},P(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){L(t.chart.canvas,e,i)})}),F=s.getMaximumWidth=function(t){var i=t.parentNode;return i.clientWidth},R=s.getMaximumHeight=function(t){var i=t.parentNode;return i.clientHeight},A=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),T=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},M=s.fontString=function(t,i,e){return i+" "+t+"px "+e},W=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},z=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return T(this.chart),this},stop:function(){return s.cancelAnimFrame.call(t,this.animationFrame),this},resize:function(t){this.stop();var i=this.chart.canvas,e=F(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:R(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,A(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){return t&&this.reflow(),this.options.animation&&!t?s.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this):(this.draw(),this.options.onAnimationComplete.call(this)),this},generateLegend:function(){return C(this.options.legendTemplate,this)},destroy:function(){this.clear(),k(this,this.events),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(){var t,i,e,n,o,a=[],l=[],r=[];return s.each(this.datasets,function(i){t=i.points||i.bars||i.segments,t[h]&&t[h].hasValue()&&a.push(t[h])}),s.each(a,function(t){l.push(t.x),r.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),o=m(r),e=g(r),n=m(l),i=g(l),{x:n>this.chart.width/2?n:i,y:(o+e)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:t[0].label,chart:this.chart,ctx:this.chart.ctx}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:C(this.options.tooltipTemplate,t),chart:this.chart}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return f(this.value)}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)<Math.pow(e,2)},draw:function(){if(this.display){var t=this.ctx;t.beginPath(),t.arc(this.x,this.y,this.radius,0,2*Math.PI),t.closePath(),t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.fillStyle=this.fillColor,t.fill(),t.stroke()}}}),e.Arc=e.Element.extend({inRange:function(t,i){var e=s.getAngleFromPoint(this,{x:t,y:i}),n=e.angle>=this.startAngle&&e.angle<=this.endAngle,o=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return n&&o},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;switch(t.fillStyle=this.fillColor,this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}z(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=M(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+1.5*this.titleFontSize,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=W(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleFontSize/2:i+(1.5*this.fontSize*e+this.fontSize/2)+1.5*this.titleFontSize},draw:function(){z(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?W(this.ctx,this.font,this.yLabels):0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint-this.startPoint;for(this.calculateYRange(i),this.buildYLabels(),this.calculateXLabelRotation();i>this.endPoint-this.startPoint;)i=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(i),this.buildYLabels(),t<this.yLabelWidth&&this.calculateXLabelRotation()},calculateXLabelRotation:function(){this.ctx.font=this.font;var t,i,e=this.ctx.measureText(this.xLabels[0]).width,s=this.ctx.measureText(this.xLabels[this.xLabels.length-1]).width;if(this.xScalePaddingRight=s/2+3,this.xScalePaddingLeft=e/2>this.yLabelWidth+10?e/2:this.yLabelWidth+10,this.xLabelRotation=0,this.display){var n,o=W(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(x(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth+8&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(x(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/(this.valuesCount-(this.offsetGridLines?0:1)),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a);t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+S(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+S(this.lineWidth),o=this.xLabelRotation>0;t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*x(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;i<this.valuesCount;i++)t=this.getPointPosition(i,d),e=this.ctx.measureText(C(this.templateString,{value:this.labels[i]})).width+5,0===i||i===this.valuesCount/2?(s=e/2,t.x+s>p&&(p=t.x+s,n=i),t.x-s<g&&(g=t.x-s,a=i)):i<this.valuesCount/2?t.x+e>p&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e<g&&(g=t.x-e,a=i);l=g,r=Math.ceil(p-this.width),o=this.getIndexAngle(n),h=this.getIndexAngle(a),c=r/Math.sin(o+Math.PI/2),u=l/Math.sin(h+Math.PI/2),c=f(c)?c:0,u=f(u)?u:0,this.drawingArea=d-(u+c)/2,this.setCenterPoint(u,c)},setCenterPoint:function(t,i){var e=this.width-i-this.drawingArea,s=t+this.drawingArea;this.xCenter=(s+e)/2,this.yCenter=this.height/2},getIndexAngle:function(t){var i=2*Math.PI/this.valuesCount;return t*i-Math.PI/2},getPointPosition:function(t,i){var e=this.getIndexAngle(t);return{x:Math.cos(e)*i+this.xCenter,y:Math.sin(e)*i+this.yCenter}},draw:function(){if(this.display){var t=this.ctx;if(n(this.yLabels,function(i,e){if(e>0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a<this.valuesCount;a++)s=this.getPointPosition(a,this.calculateCenterOffset(this.min+e*this.stepValue)),0===a?t.moveTo(s.x,s.y):t.lineTo(s.x,s.y);t.closePath(),t.stroke()}if(this.showLabels){if(t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.showLabelBackdrop){var h=t.measureText(i).width;t.fillStyle=this.backdropColor,t.fillRect(this.xCenter-h/2-this.backdropPaddingX,o-this.fontSize/2-this.backdropPaddingY,h+2*this.backdropPaddingX,this.fontSize+2*this.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.fontColor,t.fillText(i,this.xCenter,o)}}},this),!this.lineArc){t.lineWidth=this.angleLineWidth,t.strokeStyle=this.angleLineColor;for(var i=this.valuesCount-1;i>=0;i--){if(this.angleLineWidth>0){var e=this.getPointPosition(i,this.calculateCenterOffset(this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(e.x,e.y),t.stroke(),t.closePath()}var s=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var o=this.labels.length,a=this.labels.length/2,h=a/2,l=h>i||i>o-h,r=i===h||i===o-h;t.textAlign=0===i?"center":i===a?"center":a>i?"left":"right",t.textBaseline=r?"middle":l?"bottom":"top",t.fillText(this.labels[i],s.x,s.y)}}}}}),s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define(function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].fillColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.bars.push(new this.BarClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<this.datasets.length;a++)for(i=0;i<this.datasets[a].bars.length;i++)if(this.datasets[a].bars[i].inRange(n.x,n.y))return e.each(this.datasets,o),s;return s},buildScale:function(t){var i=this,s=function(){var t=[];return i.eachBars(function(i){t.push(i.value)}),t},n={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(s(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.barShowStroke?this.options.barStrokeWidth:0,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(n,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new this.ScaleClass(n)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].bars.push(new this.BarClass({value:t,label:i,x:this.scale.calculateBarX(this.datasets.length,e,this.scale.valuesCount+1),y:this.scale.endPoint,width:this.scale.calculateBarWidth(this.datasets.length),base:this.scale.endPoint,strokeColor:this.datasets[e].strokeColor,fillColor:this.datasets[e].fillColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.bars.shift()},this),this.update()},reflow:function(){e.extend(this.BarClass.prototype,{y:this.scale.endPoint,base:this.scale.endPoint});var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();this.chart.ctx;this.scale.draw(i),e.each(this.datasets,function(t,s){e.each(t.bars,function(t,e){t.hasValue()&&(t.base=this.scale.endPoint,t.transition({x:this.scale.calculateBarX(this.datasets.length,s,e),y:this.scale.calculateY(t.value),width:this.scale.calculateBarWidth(this.datasets.length)},i).draw())},this)},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,percentageInnerCutout:50,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};
11
- i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),e||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(t/this.total)},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle)},this)}}),i.types.Doughnut.extend({name:"Pie",defaults:e.merge(s,{percentageInnerCutout:0})})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,bezierCurve:!0,bezierCurveTension:.4,pointDot:!0,pointDotRadius:4,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)<Math.pow(this.radius+this.hitDetectionRadius,2)}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this),this.buildScale(t.labels),this.eachPoints(function(t,i){e.extend(t,{x:this.scale.calculateX(i),y:this.scale.endPoint}),t.save()},this)},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachPoints(function(t){t.save()}),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.datasets,function(t){e.each(t.points,function(t){t.inRange(s.x,s.y)&&i.push(t)})},this),i},buildScale:function(t){var s=this,n=function(){var t=[];return s.eachPoints(function(i){t.push(i.value)}),t},o={templateString:this.options.scaleLabel,height:this.chart.height,width:this.chart.width,ctx:this.chart.ctx,textColor:this.options.scaleFontColor,fontSize:this.options.scaleFontSize,fontStyle:this.options.scaleFontStyle,fontFamily:this.options.scaleFontFamily,valuesCount:t.length,beginAtZero:this.options.scaleBeginAtZero,integersOnly:this.options.scaleIntegersOnly,calculateYRange:function(t){var i=e.calculateScaleRange(n(),t,this.fontSize,this.beginAtZero,this.integersOnly);e.extend(this,i)},xLabels:t,font:e.fontString(this.options.scaleFontSize,this.options.scaleFontStyle,this.options.scaleFontFamily),lineWidth:this.options.scaleLineWidth,lineColor:this.options.scaleLineColor,gridLineWidth:this.options.scaleShowGridLines?this.options.scaleGridLineWidth:0,gridLineColor:this.options.scaleShowGridLines?this.options.scaleGridLineColor:"rgba(0,0,0,0)",padding:this.options.showScale?0:this.options.pointDotRadius+this.options.pointDotStrokeWidth,showLabels:this.options.scaleShowLabels,display:this.options.showScale};this.options.scaleOverride&&e.extend(o,{calculateYRange:e.noop,steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}),this.scale=new i.Scale(o)},addData:function(t,i){e.each(t,function(t,e){this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:this.scale.calculateX(this.scale.valuesCount+1),y:this.scale.endPoint,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.addXLabel(i),this.update()},removeData:function(){this.scale.removeXLabel(),e.each(this.datasets,function(t){t.points.shift()},this),this.update()},reflow:function(){var t=e.extend({height:this.chart.height,width:this.chart.width});this.scale.update(t)},draw:function(t){var i=t||1;this.clear();var s=this.chart.ctx,n=function(t){return null!==t.value},o=function(t,i,s){return e.findNextWhere(i,n,s)||t},a=function(t,i,s){return e.findPreviousWhere(i,n,s)||t};this.scale.draw(i),e.each(this.datasets,function(t){var h=e.where(t.points,n);e.each(t.points,function(t,e){t.hasValue()&&t.transition({y:this.scale.calculateY(t.value),x:this.scale.calculateX(e)},i)},this),this.options.bezierCurve&&e.each(h,function(t,i){var s=i>0&&i<h.length-1?this.options.bezierCurveTension:0;t.controlPoints=e.splineCurve(a(t,h,i),t,o(t,h,i),s),t.controlPoints.outer.y>this.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.y<this.scale.startPoint&&(t.controlPoints.outer.y=this.scale.startPoint),t.controlPoints.inner.y>this.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y<this.scale.startPoint&&(t.controlPoints.inner.y=this.scale.startPoint)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(h,function(t,i){if(0===i)s.moveTo(t.x,t.y);else if(this.options.bezierCurve){var e=a(t,h,i);s.bezierCurveTo(e.controlPoints.outer.x,e.controlPoints.outer.y,t.controlPoints.inner.x,t.controlPoints.inner.y,t.x,t.y)}else s.lineTo(t.x,t.y)},this),s.stroke(),this.options.datasetFill&&h.length>0&&(s.lineTo(h[h.length-1].x,this.scale.endPoint),s.lineTo(h[0].x,this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(h,function(t){t.draw()})},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>'};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<this.segments.length-1&&(this.segments[e+1].startAngle=t.endAngle),t.draw()},this),this.scale.draw()}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers;i.Type.extend({name:"Radar",defaults:{scaleShowLine:!0,angleShowLineOut:!0,scaleShowLabels:!1,scaleBeginAtZero:!0,angleLineColor:"rgba(0,0,0,.1)",angleLineWidth:1,pointLabelFontFamily:"'Arial'",pointLabelFontStyle:"normal",pointLabelFontSize:10,pointLabelFontColor:"#666",pointDot:!0,pointDotRadius:3,pointDotStrokeWidth:1,pointHitDetectionRadius:20,datasetStroke:!0,datasetStrokeWidth:2,datasetFill:!0,legendTemplate:'<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].strokeColor%>"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){var o;this.scale.animation||(o=this.scale.getPointPosition(n,this.scale.calculateCenterOffset(e))),s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:o.x,y:this.options.animation?this.scale.yCenter:o.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,e){var s=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:s.x,y:s.y,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.hasValue()&&t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,s.fill(),e.each(t.points,function(t){t.hasValue()&&t.draw()})},this)}})}.call(this);
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/LICENSE.md DELETED
@@ -1,7 +0,0 @@
1
- Copyright (c) 2013-2014 Nick Downie
2
-
3
- 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:
4
-
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
-
7
- 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.
 
 
 
 
 
 
 
lib/Chart_js/README.md DELETED
@@ -1,20 +0,0 @@
1
- # Chart.js
2
-
3
- [![Code Climate](https://codeclimate.com/github/nnnick/Chart.js/badges/gpa.svg)](https://codeclimate.com/github/nnnick/Chart.js)
4
-
5
-
6
- *Simple HTML5 Charts using the canvas element* [chartjs.org](http://www.chartjs.org)
7
-
8
- ## Documentation
9
-
10
- You can find documentation at [chartjs.org/docs](http://www.chartjs.org/docs/). The markdown files that build the site are available under `/docs`. Please note - in some of the json examples of configuration you might notice some liquid tags - this is just for the generating the site html, please disregard.
11
-
12
- ## License
13
-
14
- Chart.js is available under the [MIT license](http://opensource.org/licenses/MIT).
15
-
16
- ## Bugs & issues
17
-
18
- When reporting bugs or issues, if you could include a link to a simple [jsbin](http://jsbin.com) or similar demonstrating the issue, that'd be really helpful.
19
-
20
- This project is modular and supports separately-maintained new chart types. This project's scope includes only the chart types included. New chart types should be created and maintained in separate repositories. We may consider linking to them from this project if they incude passing build tests and have complete documentation. Please discuss new or "missing" chart types in the [Chart.js User Discussion](https://groups.google.com/forum/#!forum/chartjs-user-discussion) Google Group and not in Issues. For more information, please also see the CONTRIBUTING file.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/bower.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "name": "Chart.js",
3
- "version": "1.0.1-beta.4",
4
- "description": "Simple HTML5 Charts using the canvas element",
5
- "homepage": "https://github.com/nnnick/Chart.js",
6
- "author": "nnnick",
7
- "main": [
8
- "Chart.min.js"
9
- ],
10
- "dependencies": {}
11
- }
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/00-Getting-Started.md DELETED
@@ -1,200 +0,0 @@
1
- ---
2
- title: Getting started
3
- anchor: getting-started
4
- ---
5
-
6
- ###Include Chart.js
7
-
8
- First we need to include the Chart.js library on the page. The library occupies a global variable of `Chart`.
9
-
10
- ```html
11
- <script src="Chart.js"></script>
12
- ```
13
-
14
- Alternatively, if you're using an AMD loader for JavaScript modules, that is also supported in the Chart.js core. Please note: the library will still occupy a global variable of `Chart`, even if it detects `define` and `define.amd`. If this is a problem, you can call `noConflict` to restore the global Chart variable to it's previous owner.
15
-
16
- ```javascript
17
- // Using requirejs
18
- require(['path/to/Chartjs'], function(Chart){
19
- // Use Chart.js as normal here.
20
-
21
- // Chart.noConflict restores the Chart global variable to it's previous owner
22
- // The function returns what was previously Chart, allowing you to reassign.
23
- var Chartjs = Chart.noConflict();
24
-
25
- });
26
- ```
27
-
28
- You can also grab Chart.js using bower:
29
-
30
- ```bash
31
- bower install chartjs --save
32
- ```
33
-
34
- ###Creating a chart
35
-
36
- To create a chart, we need to instantiate the `Chart` class. To do this, we need to pass in the 2d context of where we want to draw the chart. Here's an example.
37
-
38
- ```html
39
- <canvas id="myChart" width="400" height="400"></canvas>
40
- ```
41
-
42
- ```javascript
43
- // Get the context of the canvas element we want to select
44
- var ctx = document.getElementById("myChart").getContext("2d");
45
- var myNewChart = new Chart(ctx).PolarArea(data);
46
- ```
47
-
48
- We can also get the context of our canvas with jQuery. To do this, we need to get the DOM node out of the jQuery collection, and call the `getContext("2d")` method on that.
49
-
50
- ```javascript
51
- // Get context with jQuery - using jQuery's .get() method.
52
- var ctx = $("#myChart").get(0).getContext("2d");
53
- // This will get the first returned node in the jQuery collection.
54
- var myNewChart = new Chart(ctx);
55
- ```
56
-
57
- After we've instantiated the Chart class on the canvas we want to draw on, Chart.js will handle the scaling for retina displays.
58
-
59
- With the Chart class set up, we can go on to create one of the charts Chart.js has available. In the example below, we would be drawing a Polar area chart.
60
-
61
- ```javascript
62
- new Chart(ctx).PolarArea(data, options);
63
- ```
64
-
65
- We call a method of the name of the chart we want to create. We pass in the data for that chart type, and the options for that chart as parameters. Chart.js will merge the global defaults with chart type specific defaults, then merge any options passed in as a second argument after data.
66
-
67
- ###Global chart configuration
68
-
69
- This concept was introduced in Chart.js 1.0 to keep configuration DRY, and allow for changing options globally across chart types, avoiding the need to specify options for each instance, or the default for a particular chart type.
70
-
71
- ```javascript
72
- Chart.defaults.global = {
73
- // Boolean - Whether to animate the chart
74
- animation: true,
75
-
76
- // Number - Number of animation steps
77
- animationSteps: 60,
78
-
79
- // String - Animation easing effect
80
- animationEasing: "easeOutQuart",
81
-
82
- // Boolean - If we should show the scale at all
83
- showScale: true,
84
-
85
- // Boolean - If we want to override with a hard coded scale
86
- scaleOverride: false,
87
-
88
- // ** Required if scaleOverride is true **
89
- // Number - The number of steps in a hard coded scale
90
- scaleSteps: null,
91
- // Number - The value jump in the hard coded scale
92
- scaleStepWidth: null,
93
- // Number - The scale starting value
94
- scaleStartValue: null,
95
-
96
- // String - Colour of the scale line
97
- scaleLineColor: "rgba(0,0,0,.1)",
98
-
99
- // Number - Pixel width of the scale line
100
- scaleLineWidth: 1,
101
-
102
- // Boolean - Whether to show labels on the scale
103
- scaleShowLabels: true,
104
-
105
- // Interpolated JS string - can access value
106
- scaleLabel: "<%=value%>",
107
-
108
- // Boolean - Whether the scale should stick to integers, not floats even if drawing space is there
109
- scaleIntegersOnly: true,
110
-
111
- // Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
112
- scaleBeginAtZero: false,
113
-
114
- // String - Scale label font declaration for the scale label
115
- scaleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
116
-
117
- // Number - Scale label font size in pixels
118
- scaleFontSize: 12,
119
-
120
- // String - Scale label font weight style
121
- scaleFontStyle: "normal",
122
-
123
- // String - Scale label font colour
124
- scaleFontColor: "#666",
125
-
126
- // Boolean - whether or not the chart should be responsive and resize when the browser does.
127
- responsive: false,
128
-
129
- // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
130
- maintainAspectRatio: true,
131
-
132
- // Boolean - Determines whether to draw tooltips on the canvas or not
133
- showTooltips: true,
134
-
135
- // Array - Array of string names to attach tooltip events
136
- tooltipEvents: ["mousemove", "touchstart", "touchmove"],
137
-
138
- // String - Tooltip background colour
139
- tooltipFillColor: "rgba(0,0,0,0.8)",
140
-
141
- // String - Tooltip label font declaration for the scale label
142
- tooltipFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
143
-
144
- // Number - Tooltip label font size in pixels
145
- tooltipFontSize: 14,
146
-
147
- // String - Tooltip font weight style
148
- tooltipFontStyle: "normal",
149
-
150
- // String - Tooltip label font colour
151
- tooltipFontColor: "#fff",
152
-
153
- // String - Tooltip title font declaration for the scale label
154
- tooltipTitleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
155
-
156
- // Number - Tooltip title font size in pixels
157
- tooltipTitleFontSize: 14,
158
-
159
- // String - Tooltip title font weight style
160
- tooltipTitleFontStyle: "bold",
161
-
162
- // String - Tooltip title font colour
163
- tooltipTitleFontColor: "#fff",
164
-
165
- // Number - pixel width of padding around tooltip text
166
- tooltipYPadding: 6,
167
-
168
- // Number - pixel width of padding around tooltip text
169
- tooltipXPadding: 6,
170
-
171
- // Number - Size of the caret on the tooltip
172
- tooltipCaretSize: 8,
173
-
174
- // Number - Pixel radius of the tooltip border
175
- tooltipCornerRadius: 6,
176
-
177
- // Number - Pixel offset from point x to tooltip edge
178
- tooltipXOffset: 10,
179
- {% raw %}
180
- // String - Template string for single tooltips
181
- tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>",
182
- {% endraw %}
183
- // String - Template string for single tooltips
184
- multiTooltipTemplate: "<%= value %>",
185
-
186
- // Function - Will fire on animation progression.
187
- onAnimationProgress: function(){},
188
-
189
- // Function - Will fire on animation completion.
190
- onAnimationComplete: function(){}
191
- }
192
- ```
193
-
194
- If for example, you wanted all charts created to be responsive, and resize when the browser window does, the following setting can be changed:
195
-
196
- ```javascript
197
- Chart.defaults.global.responsive = true;
198
- ```
199
-
200
- Now, every time we create a chart, `options.responsive` will be `true`.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/01-Line-Chart.md DELETED
@@ -1,160 +0,0 @@
1
- ---
2
- title: Line Chart
3
- anchor: line-chart
4
- ---
5
- ###Introduction
6
- A line chart is a way of plotting data points on a line.
7
-
8
- Often, it is used to show trend data, and the comparison of two data sets.
9
-
10
- <div class="canvas-holder">
11
- <canvas width="250" height="125"></canvas>
12
- </div>
13
-
14
- ###Example usage
15
- ```javascript
16
- var myLineChart = new Chart(ctx).Line(data, options);
17
- ```
18
- ###Data structure
19
-
20
- ```javascript
21
- var data = {
22
- labels: ["January", "February", "March", "April", "May", "June", "July"],
23
- datasets: [
24
- {
25
- label: "My First dataset",
26
- fillColor: "rgba(220,220,220,0.2)",
27
- strokeColor: "rgba(220,220,220,1)",
28
- pointColor: "rgba(220,220,220,1)",
29
- pointStrokeColor: "#fff",
30
- pointHighlightFill: "#fff",
31
- pointHighlightStroke: "rgba(220,220,220,1)",
32
- data: [65, 59, 80, 81, 56, 55, 40]
33
- },
34
- {
35
- label: "My Second dataset",
36
- fillColor: "rgba(151,187,205,0.2)",
37
- strokeColor: "rgba(151,187,205,1)",
38
- pointColor: "rgba(151,187,205,1)",
39
- pointStrokeColor: "#fff",
40
- pointHighlightFill: "#fff",
41
- pointHighlightStroke: "rgba(151,187,205,1)",
42
- data: [28, 48, 40, 19, 86, 27, 90]
43
- }
44
- ]
45
- };
46
- ```
47
-
48
- The line chart requires an array of labels for each of the data points. This is shown on the X axis.
49
- The data for line charts is broken up into an array of datasets. Each dataset has a colour for the fill, a colour for the line and colours for the points and strokes of the points. These colours are strings just like CSS. You can use RGBA, RGB, HEX or HSL notation.
50
-
51
- The label key on each dataset is optional, and can be used when generating a scale for the chart.
52
-
53
- ### Chart options
54
-
55
- These are the customisation options specific to Line charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
56
-
57
- ```javascript
58
- {
59
-
60
- ///Boolean - Whether grid lines are shown across the chart
61
- scaleShowGridLines : true,
62
-
63
- //String - Colour of the grid lines
64
- scaleGridLineColor : "rgba(0,0,0,.05)",
65
-
66
- //Number - Width of the grid lines
67
- scaleGridLineWidth : 1,
68
-
69
- //Boolean - Whether the line is curved between points
70
- bezierCurve : true,
71
-
72
- //Number - Tension of the bezier curve between points
73
- bezierCurveTension : 0.4,
74
-
75
- //Boolean - Whether to show a dot for each point
76
- pointDot : true,
77
-
78
- //Number - Radius of each point dot in pixels
79
- pointDotRadius : 4,
80
-
81
- //Number - Pixel width of point dot stroke
82
- pointDotStrokeWidth : 1,
83
-
84
- //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
85
- pointHitDetectionRadius : 20,
86
-
87
- //Boolean - Whether to show a stroke for datasets
88
- datasetStroke : true,
89
-
90
- //Number - Pixel width of dataset stroke
91
- datasetStrokeWidth : 2,
92
-
93
- //Boolean - Whether to fill the dataset with a colour
94
- datasetFill : true,
95
- {% raw %}
96
- //String - A legend template
97
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].lineColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
98
- {% endraw %}
99
- };
100
- ```
101
-
102
- You can override these for your `Chart` instance by passing a second argument into the `Line` method as an object with the keys you want to override.
103
-
104
- For example, we could have a line chart without bezier curves between points by doing the following:
105
-
106
- ```javascript
107
- new Chart(ctx).Line(data, {
108
- bezierCurve: false
109
- });
110
- // This will create a chart with all of the default options, merged from the global config,
111
- // and the Line chart defaults, but this particular instance will have `bezierCurve` set to false.
112
- ```
113
-
114
- We can also change these defaults values for each Line type that is created, this object is available at `Chart.defaults.Line`.
115
-
116
-
117
- ### Prototype methods
118
-
119
- #### .getPointsAtEvent( event )
120
-
121
- Calling `getPointsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the point elements that are at that the same position of that event.
122
-
123
- ```javascript
124
- canvas.onclick = function(evt){
125
- var activePoints = myLineChart.getPointsAtEvent(evt);
126
- // => activePoints is an array of points on the canvas that are at the same position as the click event.
127
- };
128
- ```
129
-
130
- This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
131
-
132
- #### .update( )
133
-
134
- Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
135
-
136
- ```javascript
137
- myLineChart.datasets[0].points[2].value = 50;
138
- // Would update the first dataset's value of 'March' to be 50
139
- myLineChart.update();
140
- // Calling update now animates the position of March from 90 to 50.
141
- ```
142
-
143
- #### .addData( valuesArray, label )
144
-
145
- Calling `addData(valuesArray, label)` on your Chart instance passing an array of values for each dataset, along with a label for those points.
146
-
147
- ```javascript
148
- // The values array passed into addData should be one for each dataset in the chart
149
- myLineChart.addData([40, 60], "August");
150
- // This new data will now animate at the end of the chart.
151
- ```
152
-
153
- #### .removeData( )
154
-
155
- Calling `removeData()` on your Chart instance will remove the first value for all datasets on the chart.
156
-
157
- ```javascript
158
- myLineChart.removeData();
159
- // The chart will remove the first point and animate other points into place
160
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/02-Bar-Chart.md DELETED
@@ -1,143 +0,0 @@
1
- ---
2
- title: Bar Chart
3
- anchor: bar-chart
4
- ---
5
-
6
- ### Introduction
7
- A bar chart is a way of showing data as bars.
8
-
9
- It is sometimes used to show trend data, and the comparison of multiple data sets side by side.
10
-
11
- <div class="canvas-holder">
12
- <canvas width="250" height="125"></canvas>
13
- </div>
14
-
15
- ### Example usage
16
- ```javascript
17
- var myBarChart = new Chart(ctx).Bar(data, options);
18
- ```
19
-
20
- ### Data structure
21
-
22
- ```javascript
23
- var data = {
24
- labels: ["January", "February", "March", "April", "May", "June", "July"],
25
- datasets: [
26
- {
27
- label: "My First dataset",
28
- fillColor: "rgba(220,220,220,0.5)",
29
- strokeColor: "rgba(220,220,220,0.8)",
30
- highlightFill: "rgba(220,220,220,0.75)",
31
- highlightStroke: "rgba(220,220,220,1)",
32
- data: [65, 59, 80, 81, 56, 55, 40]
33
- },
34
- {
35
- label: "My Second dataset",
36
- fillColor: "rgba(151,187,205,0.5)",
37
- strokeColor: "rgba(151,187,205,0.8)",
38
- highlightFill: "rgba(151,187,205,0.75)",
39
- highlightStroke: "rgba(151,187,205,1)",
40
- data: [28, 48, 40, 19, 86, 27, 90]
41
- }
42
- ]
43
- };
44
- ```
45
- The bar chart has the a very similar data structure to the line chart, and has an array of datasets, each with colours and an array of data. Again, colours are in CSS format.
46
- We have an array of labels too for display. In the example, we are showing the same data as the previous line chart example.
47
-
48
- The label key on each dataset is optional, and can be used when generating a scale for the chart.
49
-
50
- ### Chart Options
51
-
52
- These are the customisation options specific to Bar charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
53
-
54
- ```javascript
55
- {
56
- //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
57
- scaleBeginAtZero : true,
58
-
59
- //Boolean - Whether grid lines are shown across the chart
60
- scaleShowGridLines : true,
61
-
62
- //String - Colour of the grid lines
63
- scaleGridLineColor : "rgba(0,0,0,.05)",
64
-
65
- //Number - Width of the grid lines
66
- scaleGridLineWidth : 1,
67
-
68
- //Boolean - If there is a stroke on each bar
69
- barShowStroke : true,
70
-
71
- //Number - Pixel width of the bar stroke
72
- barStrokeWidth : 2,
73
-
74
- //Number - Spacing between each of the X value sets
75
- barValueSpacing : 5,
76
-
77
- //Number - Spacing between data sets within X values
78
- barDatasetSpacing : 1,
79
- {% raw %}
80
- //String - A legend template
81
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].lineColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
82
- {% endraw %}
83
- }
84
- ```
85
-
86
- You can override these for your `Chart` instance by passing a second argument into the `Bar` method as an object with the keys you want to override.
87
-
88
- For example, we could have a bar chart without a stroke on each bar by doing the following:
89
-
90
- ```javascript
91
- new Chart(ctx).Bar(data, {
92
- barShowStroke: false
93
- });
94
- // This will create a chart with all of the default options, merged from the global config,
95
- // and the Bar chart defaults but this particular instance will have `barShowStroke` set to false.
96
- ```
97
-
98
- We can also change these defaults values for each Bar type that is created, this object is available at `Chart.defaults.Bar`.
99
-
100
- ### Prototype methods
101
-
102
- #### .getBarsAtEvent( event )
103
-
104
- Calling `getBarsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the bar elements that are at that the same position of that event.
105
-
106
- ```javascript
107
- canvas.onclick = function(evt){
108
- var activeBars = myBarChart.getBarsAtEvent(evt);
109
- // => activeBars is an array of bars on the canvas that are at the same position as the click event.
110
- };
111
- ```
112
-
113
- This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
114
-
115
- #### .update( )
116
-
117
- Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
118
-
119
- ```javascript
120
- myBarChart.datasets[0].bars[2].value = 50;
121
- // Would update the first dataset's value of 'March' to be 50
122
- myBarChart.update();
123
- // Calling update now animates the position of March from 90 to 50.
124
- ```
125
-
126
- #### .addData( valuesArray, label )
127
-
128
- Calling `addData(valuesArray, label)` on your Chart instance passing an array of values for each dataset, along with a label for those bars.
129
-
130
- ```javascript
131
- // The values array passed into addData should be one for each dataset in the chart
132
- myBarChart.addData([40, 60], "August");
133
- // The new data will now animate at the end of the chart.
134
- ```
135
-
136
- #### .removeData( )
137
-
138
- Calling `removeData()` on your Chart instance will remove the first value for all datasets on the chart.
139
-
140
- ```javascript
141
- myBarChart.removeData();
142
- // The chart will now animate and remove the first bar
143
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/03-Radar-Chart.md DELETED
@@ -1,177 +0,0 @@
1
- ---
2
- title: Radar Chart
3
- anchor: radar-chart
4
- ---
5
-
6
- ###Introduction
7
- A radar chart is a way of showing multiple data points and the variation between them.
8
-
9
- They are often useful for comparing the points of two or more different data sets.
10
-
11
- <div class="canvas-holder">
12
- <canvas width="250" height="125"></canvas>
13
- </div>
14
-
15
- ###Example usage
16
-
17
- ```javascript
18
- var myRadarChart = new Chart(ctx).Radar(data, options);
19
- ```
20
-
21
- ###Data structure
22
- ```javascript
23
- var data = {
24
- labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
25
- datasets: [
26
- {
27
- label: "My First dataset",
28
- fillColor: "rgba(220,220,220,0.2)",
29
- strokeColor: "rgba(220,220,220,1)",
30
- pointColor: "rgba(220,220,220,1)",
31
- pointStrokeColor: "#fff",
32
- pointHighlightFill: "#fff",
33
- pointHighlightStroke: "rgba(220,220,220,1)",
34
- data: [65, 59, 90, 81, 56, 55, 40]
35
- },
36
- {
37
- label: "My Second dataset",
38
- fillColor: "rgba(151,187,205,0.2)",
39
- strokeColor: "rgba(151,187,205,1)",
40
- pointColor: "rgba(151,187,205,1)",
41
- pointStrokeColor: "#fff",
42
- pointHighlightFill: "#fff",
43
- pointHighlightStroke: "rgba(151,187,205,1)",
44
- data: [28, 48, 40, 19, 96, 27, 100]
45
- }
46
- ]
47
- };
48
- ```
49
- For a radar chart, to provide context of what each point means, we include an array of strings that show around each point in the chart.
50
- For the radar chart data, we have an array of datasets. Each of these is an object, with a fill colour, a stroke colour, a colour for the fill of each point, and a colour for the stroke of each point. We also have an array of data values.
51
-
52
- The label key on each dataset is optional, and can be used when generating a scale for the chart.
53
-
54
- ### Chart options
55
-
56
- These are the customisation options specific to Radar charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
57
-
58
-
59
- ```javascript
60
- {
61
- //Boolean - Whether to show lines for each scale point
62
- scaleShowLine : true,
63
-
64
- //Boolean - Whether we show the angle lines out of the radar
65
- angleShowLineOut : true,
66
-
67
- //Boolean - Whether to show labels on the scale
68
- scaleShowLabels : false,
69
-
70
- // Boolean - Whether the scale should begin at zero
71
- scaleBeginAtZero : true,
72
-
73
- //String - Colour of the angle line
74
- angleLineColor : "rgba(0,0,0,.1)",
75
-
76
- //Number - Pixel width of the angle line
77
- angleLineWidth : 1,
78
-
79
- //String - Point label font declaration
80
- pointLabelFontFamily : "'Arial'",
81
-
82
- //String - Point label font weight
83
- pointLabelFontStyle : "normal",
84
-
85
- //Number - Point label font size in pixels
86
- pointLabelFontSize : 10,
87
-
88
- //String - Point label font colour
89
- pointLabelFontColor : "#666",
90
-
91
- //Boolean - Whether to show a dot for each point
92
- pointDot : true,
93
-
94
- //Number - Radius of each point dot in pixels
95
- pointDotRadius : 3,
96
-
97
- //Number - Pixel width of point dot stroke
98
- pointDotStrokeWidth : 1,
99
-
100
- //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
101
- pointHitDetectionRadius : 20,
102
-
103
- //Boolean - Whether to show a stroke for datasets
104
- datasetStroke : true,
105
-
106
- //Number - Pixel width of dataset stroke
107
- datasetStrokeWidth : 2,
108
-
109
- //Boolean - Whether to fill the dataset with a colour
110
- datasetFill : true,
111
- {% raw %}
112
- //String - A legend template
113
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].lineColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
114
- {% endraw %}
115
- }
116
- ```
117
-
118
-
119
- You can override these for your `Chart` instance by passing a second argument into the `Radar` method as an object with the keys you want to override.
120
-
121
- For example, we could have a radar chart without a point for each on piece of data by doing the following:
122
-
123
- ```javascript
124
- new Chart(ctx).Radar(data, {
125
- pointDot: false
126
- });
127
- // This will create a chart with all of the default options, merged from the global config,
128
- // and the Bar chart defaults but this particular instance will have `pointDot` set to false.
129
- ```
130
-
131
- We can also change these defaults values for each Radar type that is created, this object is available at `Chart.defaults.Radar`.
132
-
133
-
134
- ### Prototype methods
135
-
136
- #### .getPointsAtEvent( event )
137
-
138
- Calling `getPointsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the point elements that are at that the same position of that event.
139
-
140
- ```javascript
141
- canvas.onclick = function(evt){
142
- var activePoints = myRadarChart.getPointsAtEvent(evt);
143
- // => activePoints is an array of points on the canvas that are at the same position as the click event.
144
- };
145
- ```
146
-
147
- This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
148
-
149
- #### .update( )
150
-
151
- Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
152
-
153
- ```javascript
154
- myRadarChart.datasets[0].points[2].value = 50;
155
- // Would update the first dataset's value of 'Sleeping' to be 50
156
- myRadarChart.update();
157
- // Calling update now animates the position of Sleeping from 90 to 50.
158
- ```
159
-
160
- #### .addData( valuesArray, label )
161
-
162
- Calling `addData(valuesArray, label)` on your Chart instance passing an array of values for each dataset, along with a label for those points.
163
-
164
- ```javascript
165
- // The values array passed into addData should be one for each dataset in the chart
166
- myRadarChart.addData([40, 60], "Dancing");
167
- // The new data will now animate at the end of the chart.
168
- ```
169
-
170
- #### .removeData( )
171
-
172
- Calling `removeData()` on your Chart instance will remove the first value for all datasets on the chart.
173
-
174
- ```javascript
175
- myRadarChart.removeData();
176
- // Other points will now animate to their correct positions.
177
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/04-Polar-Area-Chart.md DELETED
@@ -1,172 +0,0 @@
1
- ---
2
- title: Polar Area Chart
3
- anchor: polar-area-chart
4
- ---
5
- ### Introduction
6
- Polar area charts are similar to pie charts, but each segment has the same angle - the radius of the segment differs depending on the value.
7
-
8
- This type of chart is often useful when we want to show a comparison data similar to a pie chart, but also show a scale of values for context.
9
-
10
- <div class="canvas-holder">
11
- <canvas width="250" height="125"></canvas>
12
- </div>
13
-
14
- ### Example usage
15
-
16
- ```javascript
17
- new Chart(ctx).PolarArea(data, options);
18
- ```
19
-
20
- ### Data structure
21
-
22
- ```javascript
23
- var data = [
24
- {
25
- value: 300,
26
- color:"#F7464A",
27
- highlight: "#FF5A5E",
28
- label: "Red"
29
- },
30
- {
31
- value: 50,
32
- color: "#46BFBD",
33
- highlight: "#5AD3D1",
34
- label: "Green"
35
- },
36
- {
37
- value: 100,
38
- color: "#FDB45C",
39
- highlight: "#FFC870",
40
- label: "Yellow"
41
- },
42
- {
43
- value: 40,
44
- color: "#949FB1",
45
- highlight: "#A8B3C5",
46
- label: "Grey"
47
- },
48
- {
49
- value: 120,
50
- color: "#4D5360",
51
- highlight: "#616774",
52
- label: "Dark Grey"
53
- }
54
-
55
- ];
56
- ```
57
- As you can see, for the chart data you pass in an array of objects, with a value and a colour. The value attribute should be a number, while the color attribute should be a string. Similar to CSS, for this string you can use HEX notation, RGB, RGBA or HSL.
58
-
59
- ### Chart options
60
-
61
- These are the customisation options specific to Polar Area charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
62
-
63
- ```javascript
64
- {
65
- //Boolean - Show a backdrop to the scale label
66
- scaleShowLabelBackdrop : true,
67
-
68
- //String - The colour of the label backdrop
69
- scaleBackdropColor : "rgba(255,255,255,0.75)",
70
-
71
- // Boolean - Whether the scale should begin at zero
72
- scaleBeginAtZero : true,
73
-
74
- //Number - The backdrop padding above & below the label in pixels
75
- scaleBackdropPaddingY : 2,
76
-
77
- //Number - The backdrop padding to the side of the label in pixels
78
- scaleBackdropPaddingX : 2,
79
-
80
- //Boolean - Show line for each value in the scale
81
- scaleShowLine : true,
82
-
83
- //Boolean - Stroke a line around each segment in the chart
84
- segmentShowStroke : true,
85
-
86
- //String - The colour of the stroke on each segement.
87
- segmentStrokeColor : "#fff",
88
-
89
- //Number - The width of the stroke value in pixels
90
- segmentStrokeWidth : 2,
91
-
92
- //Number - Amount of animation steps
93
- animationSteps : 100,
94
-
95
- //String - Animation easing effect.
96
- animationEasing : "easeOutBounce",
97
-
98
- //Boolean - Whether to animate the rotation of the chart
99
- animateRotate : true,
100
-
101
- //Boolean - Whether to animate scaling the chart from the centre
102
- animateScale : false,
103
- {% raw %}
104
- //String - A legend template
105
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
106
- {% endraw %}
107
- }
108
- ```
109
-
110
- You can override these for your `Chart` instance by passing a second argument into the `PolarArea` method as an object with the keys you want to override.
111
-
112
- For example, we could have a polar area chart with a black stroke on each segment like so:
113
-
114
- ```javascript
115
- new Chart(ctx).PolarArea(data, {
116
- segmentStrokeColor: "#000000"
117
- });
118
- // This will create a chart with all of the default options, merged from the global config,
119
- // and the PolarArea chart defaults but this particular instance will have `segmentStrokeColor` set to `"#000000"`.
120
- ```
121
-
122
- We can also change these defaults values for each PolarArea type that is created, this object is available at `Chart.defaults.PolarArea`.
123
-
124
- ### Prototype methods
125
-
126
- #### .getSegmentsAtEvent( event )
127
-
128
- Calling `getSegmentsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the segment elements that are at that the same position of that event.
129
-
130
- ```javascript
131
- canvas.onclick = function(evt){
132
- var activePoints = myPolarAreaChart.getSegmentsAtEvent(evt);
133
- // => activePoints is an array of segments on the canvas that are at the same position as the click event.
134
- };
135
- ```
136
-
137
- This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
138
-
139
- #### .update( )
140
-
141
- Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
142
-
143
- ```javascript
144
- myPolarAreaChart.segments[1].value = 10;
145
- // Would update the first dataset's value of 'Green' to be 10
146
- myPolarAreaChart.update();
147
- // Calling update now animates the position of Green from 50 to 10.
148
- ```
149
-
150
- #### .addData( segmentData, index )
151
-
152
- Calling `addData(segmentData, index)` on your Chart instance passing an object in the same format as in the constructor. There is an option second argument of 'index', this determines at what index the new segment should be inserted into the chart.
153
-
154
- ```javascript
155
- // An object in the same format as the original data source
156
- myPolarAreaChart.addData({
157
- value: 130,
158
- color: "#B48EAD",
159
- highlight: "#C69CBE",
160
- label: "Purple"
161
- });
162
- // The new segment will now animate in.
163
- ```
164
-
165
- #### .removeData( index )
166
-
167
- Calling `removeData(index)` on your Chart instance will remove segment at that particular index. If none is provided, it will default to the last segment.
168
-
169
- ```javascript
170
- myPolarAreaChart.removeData();
171
- // Other segments will update to fill the empty space left.
172
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/05-Pie-Doughnut-Chart.md DELETED
@@ -1,158 +0,0 @@
1
- ---
2
- title: Pie & Doughnut Charts
3
- anchor: doughnut-pie-chart
4
- ---
5
- ###Introduction
6
- Pie and doughnut charts are probably the most commonly used chart there are. They are divided into segments, the arc of each segment shows the proportional value of each piece of data.
7
-
8
- They are excellent at showing the relational proportions between data.
9
-
10
- Pie and doughnut charts are effectively the same class in Chart.js, but have one different default value - their `percentageInnerCutout`. This equates what percentage of the inner should be cut out. This defaults to `0` for pie charts, and `50` for doughnuts.
11
-
12
- They are also registered under two aliases in the `Chart` core. Other than their different default value, and different alias, they are exactly the same.
13
-
14
- <div class="canvas-holder half">
15
- <canvas width="250" height="125"></canvas>
16
- </div>
17
-
18
- <div class="canvas-holder half">
19
- <canvas width="250" height="125"></canvas>
20
- </div>
21
-
22
-
23
- ### Example usage
24
-
25
- ```javascript
26
- // For a pie chart
27
- var myPieChart = new Chart(ctx[0]).Pie(data,options);
28
-
29
- // And for a doughnut chart
30
- var myDoughnutChart = new Chart(ctx[1]).Doughnut(data,options);
31
- ```
32
-
33
- ### Data structure
34
-
35
- ```javascript
36
- var data = [
37
- {
38
- value: 300,
39
- color:"#F7464A",
40
- highlight: "#FF5A5E",
41
- label: "Red"
42
- },
43
- {
44
- value: 50,
45
- color: "#46BFBD",
46
- highlight: "#5AD3D1",
47
- label: "Green"
48
- },
49
- {
50
- value: 100,
51
- color: "#FDB45C",
52
- highlight: "#FFC870",
53
- label: "Yellow"
54
- }
55
- ]
56
- ```
57
-
58
- For a pie chart, you must pass in an array of objects with a value and a color property. The value attribute should be a number, Chart.js will total all of the numbers and calculate the relative proportion of each. The color attribute should be a string. Similar to CSS, for this string you can use HEX notation, RGB, RGBA or HSL.
59
-
60
- ### Chart options
61
-
62
- These are the customisation options specific to Pie & Doughnut charts. These options are merged with the [global chart configuration options](#getting-started-global-chart-configuration), and form the options of the chart.
63
-
64
- ```javascript
65
- {
66
- //Boolean - Whether we should show a stroke on each segment
67
- segmentShowStroke : true,
68
-
69
- //String - The colour of each segment stroke
70
- segmentStrokeColor : "#fff",
71
-
72
- //Number - The width of each segment stroke
73
- segmentStrokeWidth : 2,
74
-
75
- //Number - The percentage of the chart that we cut out of the middle
76
- percentageInnerCutout : 50, // This is 0 for Pie charts
77
-
78
- //Number - Amount of animation steps
79
- animationSteps : 100,
80
-
81
- //String - Animation easing effect
82
- animationEasing : "easeOutBounce",
83
-
84
- //Boolean - Whether we animate the rotation of the Doughnut
85
- animateRotate : true,
86
-
87
- //Boolean - Whether we animate scaling the Doughnut from the centre
88
- animateScale : false,
89
- {% raw %}
90
- //String - A legend template
91
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
92
- {% endraw %}
93
- }
94
- ```
95
- You can override these for your `Chart` instance by passing a second argument into the `Doughnut` method as an object with the keys you want to override.
96
-
97
- For example, we could have a doughnut chart that animates by scaling out from the centre like so:
98
-
99
- ```javascript
100
- new Chart(ctx).Doughnut(data, {
101
- animateScale: true
102
- });
103
- // This will create a chart with all of the default options, merged from the global config,
104
- // and the Doughnut chart defaults but this particular instance will have `animateScale` set to `true`.
105
- ```
106
-
107
- We can also change these default values for each Doughnut type that is created, this object is available at `Chart.defaults.Doughnut`. Pie charts also have a clone of these defaults available to change at `Chart.defaults.Pie`, with the only difference being `percentageInnerCutout` being set to 0.
108
-
109
- ### Prototype methods
110
-
111
- #### .getSegmentsAtEvent( event )
112
-
113
- Calling `getSegmentsAtEvent(event)` on your Chart instance passing an argument of an event, or jQuery event, will return the segment elements that are at the same position of that event.
114
-
115
- ```javascript
116
- canvas.onclick = function(evt){
117
- var activePoints = myDoughnutChart.getSegmentsAtEvent(evt);
118
- // => activePoints is an array of segments on the canvas that are at the same position as the click event.
119
- };
120
- ```
121
-
122
- This functionality may be useful for implementing DOM based tooltips, or triggering custom behaviour in your application.
123
-
124
- #### .update( )
125
-
126
- Calling `update()` on your Chart instance will re-render the chart with any updated values, allowing you to edit the value of multiple existing points, then render those in one animated render loop.
127
-
128
- ```javascript
129
- myDoughnutChart.segments[1].value = 10;
130
- // Would update the first dataset's value of 'Green' to be 10
131
- myDoughnutChart.update();
132
- // Calling update now animates the circumference of the segment 'Green' from 50 to 10.
133
- // and transitions other segment widths
134
- ```
135
-
136
- #### .addData( segmentData, index )
137
-
138
- Calling `addData(segmentData, index)` on your Chart instance passing an object in the same format as in the constructor. There is an optional second argument of 'index', this determines at what index the new segment should be inserted into the chart.
139
-
140
- ```javascript
141
- // An object in the same format as the original data source
142
- myDoughnutChart.addData({
143
- value: 130,
144
- color: "#B48EAD",
145
- highlight: "#C69CBE",
146
- label: "Purple"
147
- });
148
- // The new segment will now animate in.
149
- ```
150
-
151
- #### .removeData( index )
152
-
153
- Calling `removeData(index)` on your Chart instance will remove segment at that particular index. If none is provided, it will default to the last segment.
154
-
155
- ```javascript
156
- myDoughnutChart.removeData();
157
- // Other segments will update to fill the empty space left.
158
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/06-Advanced.md DELETED
@@ -1,152 +0,0 @@
1
- ---
2
- title: Advanced usage
3
- anchor: advanced-usage
4
- ---
5
-
6
-
7
- ### Prototype methods
8
-
9
- For each chart, there are a set of global prototype methods on the shared `ChartType` which you may find useful. These are available on all charts created with Chart.js, but for the examples, let's use a line chart we've made.
10
-
11
- ```javascript
12
- // For example:
13
- var myLineChart = new Chart(ctx).Line(data);
14
- ```
15
-
16
- #### .clear()
17
-
18
- Will clear the chart canvas. Used extensively internally between animation frames, but you might find it useful.
19
-
20
- ```javascript
21
- // Will clear the canvas that myLineChart is drawn on
22
- myLineChart.clear();
23
- // => returns 'this' for chainability
24
- ```
25
-
26
- #### .stop()
27
-
28
- Use this to stop any current animation loop. This will pause the chart during any current animation frame. Call `.render()` to re-animate.
29
-
30
- ```javascript
31
- // Stops the charts animation loop at its current frame
32
- myLineChart.stop();
33
- // => returns 'this' for chainability
34
- ```
35
-
36
- #### .resize()
37
-
38
- Use this to manually resize the canvas element. This is run each time the browser is resized, but you can call this method manually if you change the size of the canvas nodes container element.
39
-
40
- ```javascript
41
- // Resizes & redraws to fill its container element
42
- myLineChart.resize();
43
- // => returns 'this' for chainability
44
- ```
45
-
46
- #### .destroy()
47
-
48
- Use this to destroy any chart instances that are created. This will clean up any references stored to the chart object within Chart.js, along with any associated event listeners attached by Chart.js.
49
-
50
- ```javascript
51
- // Destroys a specific chart instance
52
- myLineChart.destroy();
53
- ```
54
-
55
- #### .toBase64Image()
56
-
57
- This returns a base 64 encoded string of the chart in it's current state.
58
-
59
- ```javascript
60
- myLineChart.toBase64Image();
61
- // => returns png data url of the image on the canvas
62
- ```
63
-
64
- #### .generateLegend()
65
-
66
- Returns an HTML string of a legend for that chart. The template for this legend is at `legendTemplate` in the chart options.
67
-
68
- ```javascript
69
- myLineChart.generateLegend();
70
- // => returns HTML string of a legend for this chart
71
- ```
72
-
73
- ### Writing new chart types
74
-
75
- Chart.js 1.0 has been rewritten to provide a platform for developers to create their own custom chart types, and be able to share and utilise them through the Chart.js API.
76
-
77
- The format is relatively simple, there are a set of utility helper methods under `Chart.helpers`, including things such as looping over collections, requesting animation frames, and easing equations.
78
-
79
- On top of this, there are also some simple base classes of Chart elements, these all extend from `Chart.Element`, and include things such as points, bars and scales.
80
-
81
- ```javascript
82
- Chart.Type.extend({
83
- // Passing in a name registers this chart in the Chart namespace
84
- name: "Scatter",
85
- // Providing a defaults will also register the deafults in the chart namespace
86
- defaults : {
87
- options: "Here",
88
- available: "at this.options"
89
- },
90
- // Initialize is fired when the chart is initialized - Data is passed in as a parameter
91
- // Config is automatically merged by the core of Chart.js, and is available at this.options
92
- initialize: function(data){
93
- this.chart.ctx // The drawing context for this chart
94
- this.chart.canvas // the canvas node for this chart
95
- },
96
- // Used to draw something on the canvas
97
- draw: function() {
98
- }
99
- });
100
-
101
- // Now we can create a new instance of our chart, using the Chart.js API
102
- new Chart(ctx).Scatter(data);
103
- // initialize is now run
104
- ```
105
-
106
- ### Extending existing chart types
107
-
108
- We can also extend existing chart types, and expose them to the API in the same way. Let's say for example, we might want to run some more code when we initialize every Line chart.
109
-
110
- ```javascript
111
- // Notice now we're extending the particular Line chart type, rather than the base class.
112
- Chart.types.Line.extend({
113
- // Passing in a name registers this chart in the Chart namespace in the same way
114
- name: "LineAlt",
115
- initialize: function(data){
116
- console.log('My Line chart extension');
117
- Chart.types.Line.prototype.initialize.apply(this, arguments);
118
- }
119
- });
120
-
121
- // Creates a line chart in the same way
122
- new Chart(ctx).LineAlt(data);
123
- // but this logs 'My Line chart extension' in the console.
124
- ```
125
-
126
- ### Community extensions
127
-
128
- - <a href="https://github.com/Regaddi/Chart.StackedBar.js" target"_blank">Stacked Bar Chart</a> by <a href="https://twitter.com/Regaddi" target="_blank">@Regaddi</a>
129
- - <a href="https://github.com/CAYdenberg/Chart.js" target"_blank">Error bars (bar and line charts)</a> by <a href="https://twitter.com/CAYdenberg" target="_blank">@CAYdenberg</a>
130
-
131
- ### Creating custom builds
132
-
133
- Chart.js uses <a href="http://gulpjs.com/" target="_blank">gulp</a> to build the library into a single JavaScript file. We can use this same build script with custom parameters in order to build a custom version.
134
-
135
- Firstly, we need to ensure development dependencies are installed. With node and npm installed, after cloning the Chart.js repo to a local directory, and navigating to that directory in the command line, we can run the following:
136
-
137
- ```bash
138
- npm install
139
- npm install -g gulp
140
- ```
141
-
142
- This will install the local development dependencies for Chart.js, along with a CLI for the JavaScript task runner <a href="http://gulpjs.com/" target="_blank">gulp</a>.
143
-
144
- Now, we can run the `gulp build` task, and pass in a comma seperated list of types as an argument to build a custom version of Chart.js with only specified chart types.
145
-
146
- Here we will create a version of Chart.js with only Line, Radar and Bar charts included:
147
-
148
- ```bash
149
- gulp build --types=Line,Radar,Bar
150
- ```
151
-
152
- This will output to the `/custom` directory, and write two files, Chart.js, and Chart.min.js with only those chart types included.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/docs/07-Notes.md DELETED
@@ -1,42 +0,0 @@
1
- ---
2
- title: Notes
3
- anchor: notes
4
- ---
5
-
6
- ### Browser support
7
- Browser support for the canvas element is available in all modern & major mobile browsers <a href="http://caniuse.com/canvas" target="_blank">(caniuse.com/canvas)</a>.
8
-
9
- For IE8 & below, I would recommend using the polyfill ExplorerCanvas - available at <a href="https://code.google.com/p/explorercanvas/" target="_blank">https://code.google.com/p/explorercanvas/</a>. It falls back to Internet explorer's format VML when canvas support is not available. Example use:
10
-
11
- ```html
12
- <head>
13
- <!--[if lte IE 8]>
14
- <script src="excanvas.js"></script>
15
- <![endif]-->
16
- </head>
17
- ```
18
-
19
- Usually I would recommend feature detection to choose whether or not to load a polyfill, rather than IE conditional comments, however in this case, VML is a Microsoft proprietary format, so it will only work in IE.
20
-
21
- Some important points to note in my experience using ExplorerCanvas as a fallback.
22
-
23
- - Initialise charts on load rather than DOMContentReady when using the library, as sometimes a race condition will occur, and it will result in an error when trying to get the 2d context of a canvas.
24
- - New VML DOM elements are being created for each animation frame and there is no hardware acceleration. As a result animation is usually slow and jerky, with flashing text. It is a good idea to dynamically turn off animation based on canvas support. I recommend using the excellent <a href="http://modernizr.com/" target="_blank">Modernizr</a> to do this.
25
- - When declaring fonts, the library explorercanvas requires the font name to be in single quotes inside the string. For example, instead of your scaleFontFamily property being simply "Arial", explorercanvas support, use "'Arial'" instead. Chart.js does this for default values.
26
-
27
- ### Bugs & issues
28
-
29
- Please report these on the GitHub page - at <a href="https://github.com/nnnick/Chart.js" target="_blank">github.com/nnnick/Chart.js</a>. If you could include a link to a simple <a href="http://jsbin.com/" target="_blank">jsbin</a> or similar to demonstrate the issue, that'd be really helpful.
30
-
31
-
32
- ### Contributing
33
- New contributions to the library are welcome, just a couple of guidelines:
34
-
35
- - Tabs for indentation, not spaces please.
36
- - Please ensure you're changing the individual files in `/src`, not the concatenated output in the `Chart.js` file in the root of the repo.
37
- - Please check that your code will pass `jshint` code standards, `gulp jshint` will run this for you.
38
- - Please keep pull requests concise, and document new functionality in the relevant `.md` file.
39
- - Consider whether your changes are useful for all users, or if creating a Chart.js extension would be more appropriate.
40
-
41
- ### License
42
- Chart.js is open source and available under the <a href="http://opensource.org/licenses/MIT" target="_blank">MIT license</a>.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/gulpfile.js DELETED
@@ -1,131 +0,0 @@
1
- var gulp = require('gulp'),
2
- concat = require('gulp-concat'),
3
- uglify = require('gulp-uglify'),
4
- util = require('gulp-util'),
5
- jshint = require('gulp-jshint'),
6
- size = require('gulp-size'),
7
- connect = require('gulp-connect'),
8
- replace = require('gulp-replace'),
9
- inquirer = require('inquirer'),
10
- semver = require('semver'),
11
- exec = require('child_process').exec,
12
- fs = require('fs'),
13
- package = require('./package.json'),
14
- bower = require('./bower.json');
15
-
16
- var srcDir = './src/';
17
- /*
18
- * Usage : gulp build --types=Bar,Line,Doughnut
19
- * Output: - A built Chart.js file with Core and types Bar, Line and Doughnut concatenated together
20
- * - A minified version of this code, in Chart.min.js
21
- */
22
-
23
- gulp.task('build', function(){
24
-
25
- // Default to all of the chart types, with Chart.Core first
26
- var srcFiles = [FileName('Core')],
27
- isCustom = !!(util.env.types),
28
- outputDir = (isCustom) ? 'custom' : '.';
29
- if (isCustom){
30
- util.env.types.split(',').forEach(function(type){ return srcFiles.push(FileName(type))});
31
- }
32
- else{
33
- // Seems gulp-concat remove duplicates - nice!
34
- // So we can use this to sort out dependency order - aka include Core first!
35
- srcFiles.push(srcDir+'*');
36
- }
37
-
38
- return gulp.src(srcFiles)
39
- .pipe(concat('Chart.js'))
40
- .pipe(replace('{{ version }}', package.version))
41
- .pipe(gulp.dest(outputDir))
42
- .pipe(uglify({preserveComments:'some'}))
43
- .pipe(concat('Chart.min.js'))
44
- .pipe(gulp.dest(outputDir));
45
-
46
- function FileName(moduleName){
47
- return srcDir+'Chart.'+moduleName+'.js';
48
- };
49
- });
50
-
51
- /*
52
- * Usage : gulp bump
53
- * Prompts: Version increment to bump
54
- * Output: - New version number written into package.json & bower.json
55
- */
56
-
57
- gulp.task('bump', function(complete){
58
- util.log('Current version:', util.colors.cyan(package.version));
59
- var choices = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'].map(function(versionType){
60
- return versionType + ' (v' + semver.inc(package.version, versionType) + ')';
61
- });
62
- inquirer.prompt({
63
- type: 'list',
64
- name: 'version',
65
- message: 'What version update would you like?',
66
- choices: choices
67
- }, function(res){
68
- var increment = res.version.split(' ')[0],
69
- newVersion = semver.inc(package.version, increment);
70
-
71
- // Set the new versions into the bower/package object
72
- package.version = newVersion;
73
- bower.version = newVersion;
74
-
75
- // Write these to their own files, then build the output
76
- fs.writeFileSync('package.json', JSON.stringify(package, null, 2));
77
- fs.writeFileSync('bower.json', JSON.stringify(bower, null, 2));
78
-
79
- complete();
80
- });
81
- });
82
-
83
- gulp.task('release', ['build'], function(){
84
- exec('git tag -a v' + package.version);
85
- });
86
-
87
- gulp.task('jshint', function(){
88
- return gulp.src(srcDir + '*.js')
89
- .pipe(jshint())
90
- .pipe(jshint.reporter('default'));
91
- });
92
-
93
- gulp.task('library-size', function(){
94
- return gulp.src('Chart.min.js')
95
- .pipe(size({
96
- gzip: true
97
- }));
98
- });
99
-
100
- gulp.task('module-sizes', function(){
101
- return gulp.src(srcDir + '*.js')
102
- .pipe(uglify({preserveComments:'some'}))
103
- .pipe(size({
104
- showFiles: true,
105
- gzip: true
106
- }))
107
- });
108
-
109
- gulp.task('watch', function(){
110
- gulp.watch('./src/*', ['build']);
111
- });
112
-
113
- gulp.task('test', ['jshint']);
114
-
115
- gulp.task('size', ['library-size', 'module-sizes']);
116
-
117
- gulp.task('default', ['build', 'watch']);
118
-
119
- gulp.task('server', function(){
120
- connect.server({
121
- port: 8000,
122
- });
123
- });
124
-
125
- // Convenience task for opening the project straight from the command line
126
- gulp.task('_open', function(){
127
- exec('open http://localhost:8000');
128
- exec('subl .');
129
- });
130
-
131
- gulp.task('dev', ['server', 'default']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/package.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "name": "chart.js",
3
- "homepage": "http://www.chartjs.org",
4
- "description": "Simple HTML5 charts using the canvas element.",
5
- "version": "1.0.1-beta.4",
6
- "main": "Chart.js",
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/nnnick/Chart.js.git"
10
- },
11
- "dependences": {},
12
- "devDependencies": {
13
- "gulp": "3.5.x",
14
- "gulp-concat": "~2.1.x",
15
- "gulp-connect": "~2.0.5",
16
- "gulp-jshint": "~1.5.1",
17
- "gulp-replace": "^0.4.0",
18
- "gulp-size": "~0.4.0",
19
- "gulp-uglify": "~0.2.x",
20
- "gulp-util": "~2.2.x",
21
- "inquirer": "^0.5.1",
22
- "semver": "^3.0.1"
23
- }
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/samples/bar.html DELETED
@@ -1,48 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Bar Chart</title>
5
- <script src="../Chart.js"></script>
6
- </head>
7
- <body>
8
- <div style="width: 50%">
9
- <canvas id="canvas" height="450" width="600"></canvas>
10
- </div>
11
-
12
-
13
- <script>
14
- var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
15
-
16
- var barChartData = {
17
- labels : ["January","February","March","April","May","June","July"],
18
- datasets : [
19
- {
20
- showTooltips:true,
21
- label: "My Second dataset",
22
- fillColor : "rgba(220,220,220,0.5)",
23
- strokeColor : "rgba(220,220,220,0.8)",
24
- highlightFill: "rgba(220,220,220,0.75)",
25
- highlightStroke: "rgba(220,220,220,1)",
26
- data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
27
- },
28
- {
29
- label: "My Second dataset",
30
- fillColor : "rgba(151,187,205,0.5)",
31
- strokeColor : "rgba(151,187,205,0.8)",
32
- highlightFill : "rgba(151,187,205,0.75)",
33
- highlightStroke : "rgba(151,187,205,1)",
34
- data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
35
- }
36
- ]
37
-
38
- }
39
- window.onload = function(){
40
- var ctx = document.getElementById("canvas").getContext("2d");
41
- window.myBar = new Chart(ctx).Bar(barChartData, {
42
- responsive : true
43
- });
44
- }
45
-
46
- </script>
47
- </body>
48
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/samples/doughnut.html DELETED
@@ -1,67 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Doughnut Chart</title>
5
- <script src="../Chart.js"></script>
6
- <style>
7
- body{
8
- padding: 0;
9
- margin: 0;
10
- }
11
- #canvas-holder{
12
- width:30%;
13
- }
14
- </style>
15
- </head>
16
- <body>
17
- <div id="canvas-holder">
18
- <canvas id="chart-area" width="500" height="500"/>
19
- </div>
20
-
21
-
22
- <script>
23
-
24
- var doughnutData = [
25
- {
26
- value: 300,
27
- color:"#F7464A",
28
- highlight: "#FF5A5E",
29
- label: "Red"
30
- },
31
- {
32
- value: 50,
33
- color: "#46BFBD",
34
- highlight: "#5AD3D1",
35
- label: "Green"
36
- },
37
- {
38
- value: 100,
39
- color: "#FDB45C",
40
- highlight: "#FFC870",
41
- label: "Yellow"
42
- },
43
- {
44
- value: 40,
45
- color: "#949FB1",
46
- highlight: "#A8B3C5",
47
- label: "Grey"
48
- },
49
- {
50
- value: 120,
51
- color: "#4D5360",
52
- highlight: "#616774",
53
- label: "Dark Grey"
54
- }
55
-
56
- ];
57
-
58
- window.onload = function(){
59
- var ctx = document.getElementById("chart-area").getContext("2d");
60
- window.myDoughnut = new Chart(ctx).Doughnut(doughnutData, {responsive : true});
61
- };
62
-
63
-
64
-
65
- </script>
66
- </body>
67
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/samples/line.html DELETED
@@ -1,54 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Line Chart</title>
5
- <script src="../Chart.js"></script>
6
- </head>
7
- <body>
8
- <div style="width:30%">
9
- <div>
10
- <canvas id="canvas" height="450" width="600"></canvas>
11
- </div>
12
- </div>
13
-
14
-
15
- <script>
16
- var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
17
- var lineChartData = {
18
- labels : ["January","February","March","April","May","June","July"],
19
- datasets : [
20
- {
21
- label: "My First dataset",
22
- fillColor : "rgba(220,220,220,0.2)",
23
- strokeColor : "rgba(220,220,220,1)",
24
- pointColor : "rgba(220,220,220,1)",
25
- pointStrokeColor : "#fff",
26
- pointHighlightFill : "#fff",
27
- pointHighlightStroke : "rgba(220,220,220,1)",
28
- data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
29
- },
30
- {
31
- label: "My Second dataset",
32
- fillColor : "rgba(151,187,205,0.2)",
33
- strokeColor : "rgba(151,187,205,1)",
34
- pointColor : "rgba(151,187,205,1)",
35
- pointStrokeColor : "#fff",
36
- pointHighlightFill : "#fff",
37
- pointHighlightStroke : "rgba(151,187,205,1)",
38
- data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
39
- }
40
- ]
41
-
42
- }
43
-
44
- window.onload = function(){
45
- var ctx = document.getElementById("canvas").getContext("2d");
46
- window.myLine = new Chart(ctx).Line(lineChartData, {
47
- responsive: true
48
- });
49
- }
50
-
51
-
52
- </script>
53
- </body>
54
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/samples/pie.html DELETED
@@ -1,58 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Pie Chart</title>
5
- <script src="../Chart.js"></script>
6
- </head>
7
- <body>
8
- <div id="canvas-holder">
9
- <canvas id="chart-area" width="300" height="300"/>
10
- </div>
11
-
12
-
13
- <script>
14
-
15
- var pieData = [
16
- {
17
- value: 300,
18
- color:"#F7464A",
19
- highlight: "#FF5A5E",
20
- label: "Red"
21
- },
22
- {
23
- value: 50,
24
- color: "#46BFBD",
25
- highlight: "#5AD3D1",
26
- label: "Green"
27
- },
28
- {
29
- value: 100,
30
- color: "#FDB45C",
31
- highlight: "#FFC870",
32
- label: "Yellow"
33
- },
34
- {
35
- value: 40,
36
- color: "#949FB1",
37
- highlight: "#A8B3C5",
38
- label: "Grey"
39
- },
40
- {
41
- value: 120,
42
- color: "#4D5360",
43
- highlight: "#616774",
44
- label: "Dark Grey"
45
- }
46
-
47
- ];
48
-
49
- window.onload = function(){
50
- var ctx = document.getElementById("chart-area").getContext("2d");
51
- window.myPie = new Chart(ctx).Pie(pieData);
52
- };
53
-
54
-
55
-
56
- </script>
57
- </body>
58
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/samples/polar-area.html DELETED
@@ -1,60 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Polar Area Chart</title>
5
- <script src="../Chart.js"></script>
6
- </head>
7
- <body>
8
- <div id="canvas-holder" style="width:30%">
9
- <canvas id="chart-area" width="300" height="300"/>
10
- </div>
11
-
12
-
13
- <script>
14
-
15
- var polarData = [
16
- {
17
- value: 300,
18
- color:"#F7464A",
19
- highlight: "#FF5A5E",
20
- label: "Red"
21
- },
22
- {
23
- value: 50,
24
- color: "#46BFBD",
25
- highlight: "#5AD3D1",
26
- label: "Green"
27
- },
28
- {
29
- value: 100,
30
- color: "#FDB45C",
31
- highlight: "#FFC870",
32
- label: "Yellow"
33
- },
34
- {
35
- value: 40,
36
- color: "#949FB1",
37
- highlight: "#A8B3C5",
38
- label: "Grey"
39
- },
40
- {
41
- value: 120,
42
- color: "#4D5360",
43
- highlight: "#616774",
44
- label: "Dark Grey"
45
- }
46
-
47
- ];
48
-
49
- window.onload = function(){
50
- var ctx = document.getElementById("chart-area").getContext("2d");
51
- window.myPolarArea = new Chart(ctx).PolarArea(polarData, {
52
- responsive:true
53
- });
54
- };
55
-
56
-
57
-
58
- </script>
59
- </body>
60
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/samples/radar.html DELETED
@@ -1,53 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Radar Chart</title>
5
- <script src="../Chart.js"></script>
6
- <meta name = "viewport" content = "initial-scale = 1, user-scalable = no">
7
- <style>
8
- canvas{
9
- }
10
- </style>
11
- </head>
12
- <body>
13
- <div style="width:30%">
14
- <canvas id="canvas" height="450" width="450"></canvas>
15
- </div>
16
-
17
-
18
- <script>
19
- var radarChartData = {
20
- labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
21
- datasets: [
22
- {
23
- label: "My First dataset",
24
- fillColor: "rgba(220,220,220,0.2)",
25
- strokeColor: "rgba(220,220,220,1)",
26
- pointColor: "rgba(220,220,220,1)",
27
- pointStrokeColor: "#fff",
28
- pointHighlightFill: "#fff",
29
- pointHighlightStroke: "rgba(220,220,220,1)",
30
- data: [65,59,90,81,56,55,40]
31
- },
32
- {
33
- label: "My Second dataset",
34
- fillColor: "rgba(151,187,205,0.2)",
35
- strokeColor: "rgba(151,187,205,1)",
36
- pointColor: "rgba(151,187,205,1)",
37
- pointStrokeColor: "#fff",
38
- pointHighlightFill: "#fff",
39
- pointHighlightStroke: "rgba(151,187,205,1)",
40
- data: [28,48,40,19,96,27,100]
41
- }
42
- ]
43
- };
44
-
45
- window.onload = function(){
46
- window.myRadar = new Chart(document.getElementById("canvas").getContext("2d")).Radar(radarChartData, {
47
- responsive: true
48
- });
49
- }
50
-
51
- </script>
52
- </body>
53
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/src/Chart.Bar.js DELETED
@@ -1,294 +0,0 @@
1
- (function(){
2
- "use strict";
3
-
4
- var root = this,
5
- Chart = root.Chart,
6
- helpers = Chart.helpers;
7
-
8
-
9
- var defaultConfig = {
10
- //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
11
- scaleBeginAtZero : true,
12
-
13
- //Boolean - Whether grid lines are shown across the chart
14
- scaleShowGridLines : true,
15
-
16
- //String - Colour of the grid lines
17
- scaleGridLineColor : "rgba(0,0,0,.05)",
18
-
19
- //Number - Width of the grid lines
20
- scaleGridLineWidth : 1,
21
-
22
- //Boolean - If there is a stroke on each bar
23
- barShowStroke : true,
24
-
25
- //Number - Pixel width of the bar stroke
26
- barStrokeWidth : 2,
27
-
28
- //Number - Spacing between each of the X value sets
29
- barValueSpacing : 5,
30
-
31
- //Number - Spacing between data sets within X values
32
- barDatasetSpacing : 1,
33
-
34
- //String - A legend template
35
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].fillColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
36
-
37
- };
38
-
39
-
40
- Chart.Type.extend({
41
- name: "Bar",
42
- defaults : defaultConfig,
43
- initialize: function(data){
44
-
45
- //Expose options as a scope variable here so we can access it in the ScaleClass
46
- var options = this.options;
47
-
48
- this.ScaleClass = Chart.Scale.extend({
49
- offsetGridLines : true,
50
- calculateBarX : function(datasetCount, datasetIndex, barIndex){
51
- //Reusable method for calculating the xPosition of a given bar based on datasetIndex & width of the bar
52
- var xWidth = this.calculateBaseWidth(),
53
- xAbsolute = this.calculateX(barIndex) - (xWidth/2),
54
- barWidth = this.calculateBarWidth(datasetCount);
55
-
56
- return xAbsolute + (barWidth * datasetIndex) + (datasetIndex * options.barDatasetSpacing) + barWidth/2;
57
- },
58
- calculateBaseWidth : function(){
59
- return (this.calculateX(1) - this.calculateX(0)) - (2*options.barValueSpacing);
60
- },
61
- calculateBarWidth : function(datasetCount){
62
- //The padding between datasets is to the right of each bar, providing that there are more than 1 dataset
63
- var baseWidth = this.calculateBaseWidth() - ((datasetCount - 1) * options.barDatasetSpacing);
64
-
65
- return (baseWidth / datasetCount);
66
- }
67
- });
68
-
69
- this.datasets = [];
70
-
71
- //Set up tooltip events on the chart
72
- if (this.options.showTooltips){
73
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
74
- var activeBars = (evt.type !== 'mouseout') ? this.getBarsAtEvent(evt) : [];
75
-
76
- this.eachBars(function(bar){
77
- bar.restore(['fillColor', 'strokeColor']);
78
- });
79
- helpers.each(activeBars, function(activeBar){
80
- activeBar.fillColor = activeBar.highlightFill;
81
- activeBar.strokeColor = activeBar.highlightStroke;
82
- });
83
- this.showTooltip(activeBars);
84
- });
85
- }
86
-
87
- //Declare the extension of the default point, to cater for the options passed in to the constructor
88
- this.BarClass = Chart.Rectangle.extend({
89
- strokeWidth : this.options.barStrokeWidth,
90
- showStroke : this.options.barShowStroke,
91
- ctx : this.chart.ctx
92
- });
93
-
94
- //Iterate through each of the datasets, and build this into a property of the chart
95
- helpers.each(data.datasets,function(dataset,datasetIndex){
96
-
97
- var datasetObject = {
98
- label : dataset.label || null,
99
- fillColor : dataset.fillColor,
100
- strokeColor : dataset.strokeColor,
101
- bars : []
102
- };
103
-
104
- this.datasets.push(datasetObject);
105
-
106
- helpers.each(dataset.data,function(dataPoint,index){
107
- //Add a new point for each piece of data, passing any required data to draw.
108
- datasetObject.bars.push(new this.BarClass({
109
- value : dataPoint,
110
- label : data.labels[index],
111
- datasetLabel: dataset.label,
112
- strokeColor : dataset.strokeColor,
113
- fillColor : dataset.fillColor,
114
- highlightFill : dataset.highlightFill || dataset.fillColor,
115
- highlightStroke : dataset.highlightStroke || dataset.strokeColor
116
- }));
117
- },this);
118
-
119
- },this);
120
-
121
- this.buildScale(data.labels);
122
-
123
- this.BarClass.prototype.base = this.scale.endPoint;
124
-
125
- this.eachBars(function(bar, index, datasetIndex){
126
- helpers.extend(bar, {
127
- width : this.scale.calculateBarWidth(this.datasets.length),
128
- x: this.scale.calculateBarX(this.datasets.length, datasetIndex, index),
129
- y: this.scale.endPoint
130
- });
131
- bar.save();
132
- }, this);
133
-
134
- this.render();
135
- },
136
- update : function(){
137
- this.scale.update();
138
- // Reset any highlight colours before updating.
139
- helpers.each(this.activeElements, function(activeElement){
140
- activeElement.restore(['fillColor', 'strokeColor']);
141
- });
142
-
143
- this.eachBars(function(bar){
144
- bar.save();
145
- });
146
- this.render();
147
- },
148
- eachBars : function(callback){
149
- helpers.each(this.datasets,function(dataset, datasetIndex){
150
- helpers.each(dataset.bars, callback, this, datasetIndex);
151
- },this);
152
- },
153
- getBarsAtEvent : function(e){
154
- var barsArray = [],
155
- eventPosition = helpers.getRelativePosition(e),
156
- datasetIterator = function(dataset){
157
- barsArray.push(dataset.bars[barIndex]);
158
- },
159
- barIndex;
160
-
161
- for (var datasetIndex = 0; datasetIndex < this.datasets.length; datasetIndex++) {
162
- for (barIndex = 0; barIndex < this.datasets[datasetIndex].bars.length; barIndex++) {
163
- if (this.datasets[datasetIndex].bars[barIndex].inRange(eventPosition.x,eventPosition.y)){
164
- helpers.each(this.datasets, datasetIterator);
165
- return barsArray;
166
- }
167
- }
168
- }
169
-
170
- return barsArray;
171
- },
172
- buildScale : function(labels){
173
- var self = this;
174
-
175
- var dataTotal = function(){
176
- var values = [];
177
- self.eachBars(function(bar){
178
- values.push(bar.value);
179
- });
180
- return values;
181
- };
182
-
183
- var scaleOptions = {
184
- templateString : this.options.scaleLabel,
185
- height : this.chart.height,
186
- width : this.chart.width,
187
- ctx : this.chart.ctx,
188
- textColor : this.options.scaleFontColor,
189
- fontSize : this.options.scaleFontSize,
190
- fontStyle : this.options.scaleFontStyle,
191
- fontFamily : this.options.scaleFontFamily,
192
- valuesCount : labels.length,
193
- beginAtZero : this.options.scaleBeginAtZero,
194
- integersOnly : this.options.scaleIntegersOnly,
195
- calculateYRange: function(currentHeight){
196
- var updatedRanges = helpers.calculateScaleRange(
197
- dataTotal(),
198
- currentHeight,
199
- this.fontSize,
200
- this.beginAtZero,
201
- this.integersOnly
202
- );
203
- helpers.extend(this, updatedRanges);
204
- },
205
- xLabels : labels,
206
- font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),
207
- lineWidth : this.options.scaleLineWidth,
208
- lineColor : this.options.scaleLineColor,
209
- gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,
210
- gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)",
211
- padding : (this.options.showScale) ? 0 : (this.options.barShowStroke) ? this.options.barStrokeWidth : 0,
212
- showLabels : this.options.scaleShowLabels,
213
- display : this.options.showScale
214
- };
215
-
216
- if (this.options.scaleOverride){
217
- helpers.extend(scaleOptions, {
218
- calculateYRange: helpers.noop,
219
- steps: this.options.scaleSteps,
220
- stepValue: this.options.scaleStepWidth,
221
- min: this.options.scaleStartValue,
222
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
223
- });
224
- }
225
-
226
- this.scale = new this.ScaleClass(scaleOptions);
227
- },
228
- addData : function(valuesArray,label){
229
- //Map the values array for each of the datasets
230
- helpers.each(valuesArray,function(value,datasetIndex){
231
- //Add a new point for each piece of data, passing any required data to draw.
232
- this.datasets[datasetIndex].bars.push(new this.BarClass({
233
- value : value,
234
- label : label,
235
- x: this.scale.calculateBarX(this.datasets.length, datasetIndex, this.scale.valuesCount+1),
236
- y: this.scale.endPoint,
237
- width : this.scale.calculateBarWidth(this.datasets.length),
238
- base : this.scale.endPoint,
239
- strokeColor : this.datasets[datasetIndex].strokeColor,
240
- fillColor : this.datasets[datasetIndex].fillColor
241
- }));
242
- },this);
243
-
244
- this.scale.addXLabel(label);
245
- //Then re-render the chart.
246
- this.update();
247
- },
248
- removeData : function(){
249
- this.scale.removeXLabel();
250
- //Then re-render the chart.
251
- helpers.each(this.datasets,function(dataset){
252
- dataset.bars.shift();
253
- },this);
254
- this.update();
255
- },
256
- reflow : function(){
257
- helpers.extend(this.BarClass.prototype,{
258
- y: this.scale.endPoint,
259
- base : this.scale.endPoint
260
- });
261
- var newScaleProps = helpers.extend({
262
- height : this.chart.height,
263
- width : this.chart.width
264
- });
265
- this.scale.update(newScaleProps);
266
- },
267
- draw : function(ease){
268
- var easingDecimal = ease || 1;
269
- this.clear();
270
-
271
- var ctx = this.chart.ctx;
272
-
273
- this.scale.draw(easingDecimal);
274
-
275
- //Draw all the bars for each dataset
276
- helpers.each(this.datasets,function(dataset,datasetIndex){
277
- helpers.each(dataset.bars,function(bar,index){
278
- if (bar.hasValue()){
279
- bar.base = this.scale.endPoint;
280
- //Transition then draw
281
- bar.transition({
282
- x : this.scale.calculateBarX(this.datasets.length, datasetIndex, index),
283
- y : this.scale.calculateY(bar.value),
284
- width : this.scale.calculateBarWidth(this.datasets.length)
285
- }, easingDecimal).draw();
286
- }
287
- },this);
288
-
289
- },this);
290
- }
291
- });
292
-
293
-
294
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/src/Chart.Core.js DELETED
@@ -1,1943 +0,0 @@
1
- /*!
2
- * Chart.js
3
- * http://chartjs.org/
4
- * Version: {{ version }}
5
- *
6
- * Copyright 2014 Nick Downie
7
- * Released under the MIT license
8
- * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md
9
- */
10
-
11
-
12
- (function(){
13
-
14
- "use strict";
15
-
16
- //Declare root variable - window in the browser, global on the server
17
- var root = this,
18
- previous = root.Chart;
19
-
20
- //Occupy the global variable of Chart, and create a simple base class
21
- var Chart = function(context){
22
- var chart = this;
23
- this.canvas = context.canvas;
24
-
25
- this.ctx = context;
26
-
27
- //Variables global to the chart
28
- var width = this.width = context.canvas.width;
29
- var height = this.height = context.canvas.height;
30
- this.aspectRatio = this.width / this.height;
31
- //High pixel density displays - multiply the size of the canvas height/width by the device pixel ratio, then scale.
32
- helpers.retinaScale(this);
33
-
34
- return this;
35
- };
36
- //Globally expose the defaults to allow for user updating/changing
37
- Chart.defaults = {
38
- global: {
39
- // Boolean - Whether to animate the chart
40
- animation: true,
41
-
42
- // Number - Number of animation steps
43
- animationSteps: 60,
44
-
45
- // String - Animation easing effect
46
- animationEasing: "easeOutQuart",
47
-
48
- // Boolean - If we should show the scale at all
49
- showScale: true,
50
-
51
- // Boolean - If we want to override with a hard coded scale
52
- scaleOverride: false,
53
-
54
- // ** Required if scaleOverride is true **
55
- // Number - The number of steps in a hard coded scale
56
- scaleSteps: null,
57
- // Number - The value jump in the hard coded scale
58
- scaleStepWidth: null,
59
- // Number - The scale starting value
60
- scaleStartValue: null,
61
-
62
- // String - Colour of the scale line
63
- scaleLineColor: "rgba(0,0,0,.1)",
64
-
65
- // Number - Pixel width of the scale line
66
- scaleLineWidth: 1,
67
-
68
- // Boolean - Whether to show labels on the scale
69
- scaleShowLabels: true,
70
-
71
- // Interpolated JS string - can access value
72
- scaleLabel: "<%=value%>",
73
-
74
- // Boolean - Whether the scale should stick to integers, and not show any floats even if drawing space is there
75
- scaleIntegersOnly: true,
76
-
77
- // Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
78
- scaleBeginAtZero: false,
79
-
80
- // String - Scale label font declaration for the scale label
81
- scaleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
82
-
83
- // Number - Scale label font size in pixels
84
- scaleFontSize: 12,
85
-
86
- // String - Scale label font weight style
87
- scaleFontStyle: "normal",
88
-
89
- // String - Scale label font colour
90
- scaleFontColor: "#666",
91
-
92
- // Boolean - whether or not the chart should be responsive and resize when the browser does.
93
- responsive: false,
94
-
95
- // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
96
- maintainAspectRatio: true,
97
-
98
- // Boolean - Determines whether to draw tooltips on the canvas or not - attaches events to touchmove & mousemove
99
- showTooltips: true,
100
-
101
- // Array - Array of string names to attach tooltip events
102
- tooltipEvents: ["mousemove", "touchstart", "touchmove", "mouseout"],
103
-
104
- // String - Tooltip background colour
105
- tooltipFillColor: "rgba(0,0,0,0.8)",
106
-
107
- // String - Tooltip label font declaration for the scale label
108
- tooltipFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
109
-
110
- // Number - Tooltip label font size in pixels
111
- tooltipFontSize: 14,
112
-
113
- // String - Tooltip font weight style
114
- tooltipFontStyle: "normal",
115
-
116
- // String - Tooltip label font colour
117
- tooltipFontColor: "#fff",
118
-
119
- // String - Tooltip title font declaration for the scale label
120
- tooltipTitleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
121
-
122
- // Number - Tooltip title font size in pixels
123
- tooltipTitleFontSize: 14,
124
-
125
- // String - Tooltip title font weight style
126
- tooltipTitleFontStyle: "bold",
127
-
128
- // String - Tooltip title font colour
129
- tooltipTitleFontColor: "#fff",
130
-
131
- // Number - pixel width of padding around tooltip text
132
- tooltipYPadding: 6,
133
-
134
- // Number - pixel width of padding around tooltip text
135
- tooltipXPadding: 6,
136
-
137
- // Number - Size of the caret on the tooltip
138
- tooltipCaretSize: 8,
139
-
140
- // Number - Pixel radius of the tooltip border
141
- tooltipCornerRadius: 6,
142
-
143
- // Number - Pixel offset from point x to tooltip edge
144
- tooltipXOffset: 10,
145
-
146
- // String - Template string for single tooltips
147
- tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>",
148
-
149
- // String - Template string for single tooltips
150
- multiTooltipTemplate: "<%= value %>",
151
-
152
- // String - Colour behind the legend colour block
153
- multiTooltipKeyBackground: '#fff',
154
-
155
- // Function - Will fire on animation progression.
156
- onAnimationProgress: function(){},
157
-
158
- // Function - Will fire on animation completion.
159
- onAnimationComplete: function(){}
160
-
161
- }
162
- };
163
-
164
- //Create a dictionary of chart types, to allow for extension of existing types
165
- Chart.types = {};
166
-
167
- //Global Chart helpers object for utility methods and classes
168
- var helpers = Chart.helpers = {};
169
-
170
- //-- Basic js utility methods
171
- var each = helpers.each = function(loopable,callback,self){
172
- var additionalArgs = Array.prototype.slice.call(arguments, 3);
173
- // Check to see if null or undefined firstly.
174
- if (loopable){
175
- if (loopable.length === +loopable.length){
176
- var i;
177
- for (i=0; i<loopable.length; i++){
178
- callback.apply(self,[loopable[i], i].concat(additionalArgs));
179
- }
180
- }
181
- else{
182
- for (var item in loopable){
183
- callback.apply(self,[loopable[item],item].concat(additionalArgs));
184
- }
185
- }
186
- }
187
- },
188
- clone = helpers.clone = function(obj){
189
- var objClone = {};
190
- each(obj,function(value,key){
191
- if (obj.hasOwnProperty(key)) objClone[key] = value;
192
- });
193
- return objClone;
194
- },
195
- extend = helpers.extend = function(base){
196
- each(Array.prototype.slice.call(arguments,1), function(extensionObject) {
197
- each(extensionObject,function(value,key){
198
- if (extensionObject.hasOwnProperty(key)) base[key] = value;
199
- });
200
- });
201
- return base;
202
- },
203
- merge = helpers.merge = function(base,master){
204
- //Merge properties in left object over to a shallow clone of object right.
205
- var args = Array.prototype.slice.call(arguments,0);
206
- args.unshift({});
207
- return extend.apply(null, args);
208
- },
209
- indexOf = helpers.indexOf = function(arrayToSearch, item){
210
- if (Array.prototype.indexOf) {
211
- return arrayToSearch.indexOf(item);
212
- }
213
- else{
214
- for (var i = 0; i < arrayToSearch.length; i++) {
215
- if (arrayToSearch[i] === item) return i;
216
- }
217
- return -1;
218
- }
219
- },
220
- where = helpers.where = function(collection, filterCallback){
221
- var filtered = [];
222
-
223
- helpers.each(collection, function(item){
224
- if (filterCallback(item)){
225
- filtered.push(item);
226
- }
227
- });
228
-
229
- return filtered;
230
- },
231
- findNextWhere = helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex){
232
- // Default to start of the array
233
- if (!startIndex){
234
- startIndex = -1;
235
- }
236
- for (var i = startIndex + 1; i < arrayToSearch.length; i++) {
237
- var currentItem = arrayToSearch[i];
238
- if (filterCallback(currentItem)){
239
- return currentItem;
240
- }
241
- };
242
- },
243
- findPreviousWhere = helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex){
244
- // Default to end of the array
245
- if (!startIndex){
246
- startIndex = arrayToSearch.length;
247
- }
248
- for (var i = startIndex - 1; i >= 0; i--) {
249
- var currentItem = arrayToSearch[i];
250
- if (filterCallback(currentItem)){
251
- return currentItem;
252
- }
253
- };
254
- },
255
- inherits = helpers.inherits = function(extensions){
256
- //Basic javascript inheritance based on the model created in Backbone.js
257
- var parent = this;
258
- var ChartElement = (extensions && extensions.hasOwnProperty("constructor")) ? extensions.constructor : function(){ return parent.apply(this, arguments); };
259
-
260
- var Surrogate = function(){ this.constructor = ChartElement;};
261
- Surrogate.prototype = parent.prototype;
262
- ChartElement.prototype = new Surrogate();
263
-
264
- ChartElement.extend = inherits;
265
-
266
- if (extensions) extend(ChartElement.prototype, extensions);
267
-
268
- ChartElement.__super__ = parent.prototype;
269
-
270
- return ChartElement;
271
- },
272
- noop = helpers.noop = function(){},
273
- uid = helpers.uid = (function(){
274
- var id=0;
275
- return function(){
276
- return "chart-" + id++;
277
- };
278
- })(),
279
- warn = helpers.warn = function(str){
280
- //Method for warning of errors
281
- if (window.console && typeof window.console.warn == "function") console.warn(str);
282
- },
283
- amd = helpers.amd = (typeof define == 'function' && define.amd),
284
- //-- Math methods
285
- isNumber = helpers.isNumber = function(n){
286
- return !isNaN(parseFloat(n)) && isFinite(n);
287
- },
288
- max = helpers.max = function(array){
289
- return Math.max.apply( Math, array );
290
- },
291
- min = helpers.min = function(array){
292
- return Math.min.apply( Math, array );
293
- },
294
- cap = helpers.cap = function(valueToCap,maxValue,minValue){
295
- if(isNumber(maxValue)) {
296
- if( valueToCap > maxValue ) {
297
- return maxValue;
298
- }
299
- }
300
- else if(isNumber(minValue)){
301
- if ( valueToCap < minValue ){
302
- return minValue;
303
- }
304
- }
305
- return valueToCap;
306
- },
307
- getDecimalPlaces = helpers.getDecimalPlaces = function(num){
308
- if (num%1!==0 && isNumber(num)){
309
- return num.toString().split(".")[1].length;
310
- }
311
- else {
312
- return 0;
313
- }
314
- },
315
- toRadians = helpers.radians = function(degrees){
316
- return degrees * (Math.PI/180);
317
- },
318
- // Gets the angle from vertical upright to the point about a centre.
319
- getAngleFromPoint = helpers.getAngleFromPoint = function(centrePoint, anglePoint){
320
- var distanceFromXCenter = anglePoint.x - centrePoint.x,
321
- distanceFromYCenter = anglePoint.y - centrePoint.y,
322
- radialDistanceFromCenter = Math.sqrt( distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
323
-
324
-
325
- var angle = Math.PI * 2 + Math.atan2(distanceFromYCenter, distanceFromXCenter);
326
-
327
- //If the segment is in the top left quadrant, we need to add another rotation to the angle
328
- if (distanceFromXCenter < 0 && distanceFromYCenter < 0){
329
- angle += Math.PI*2;
330
- }
331
-
332
- return {
333
- angle: angle,
334
- distance: radialDistanceFromCenter
335
- };
336
- },
337
- aliasPixel = helpers.aliasPixel = function(pixelWidth){
338
- return (pixelWidth % 2 === 0) ? 0 : 0.5;
339
- },
340
- splineCurve = helpers.splineCurve = function(FirstPoint,MiddlePoint,AfterPoint,t){
341
- //Props to Rob Spencer at scaled innovation for his post on splining between points
342
- //http://scaledinnovation.com/analytics/splines/aboutSplines.html
343
- var d01=Math.sqrt(Math.pow(MiddlePoint.x-FirstPoint.x,2)+Math.pow(MiddlePoint.y-FirstPoint.y,2)),
344
- d12=Math.sqrt(Math.pow(AfterPoint.x-MiddlePoint.x,2)+Math.pow(AfterPoint.y-MiddlePoint.y,2)),
345
- fa=t*d01/(d01+d12),// scaling factor for triangle Ta
346
- fb=t*d12/(d01+d12);
347
- return {
348
- inner : {
349
- x : MiddlePoint.x-fa*(AfterPoint.x-FirstPoint.x),
350
- y : MiddlePoint.y-fa*(AfterPoint.y-FirstPoint.y)
351
- },
352
- outer : {
353
- x: MiddlePoint.x+fb*(AfterPoint.x-FirstPoint.x),
354
- y : MiddlePoint.y+fb*(AfterPoint.y-FirstPoint.y)
355
- }
356
- };
357
- },
358
- calculateOrderOfMagnitude = helpers.calculateOrderOfMagnitude = function(val){
359
- return Math.floor(Math.log(val) / Math.LN10);
360
- },
361
- calculateScaleRange = helpers.calculateScaleRange = function(valuesArray, drawingSize, textSize, startFromZero, integersOnly){
362
-
363
- //Set a minimum step of two - a point at the top of the graph, and a point at the base
364
- var minSteps = 2,
365
- maxSteps = Math.floor(drawingSize/(textSize * 1.5)),
366
- skipFitting = (minSteps >= maxSteps);
367
-
368
- var maxValue = max(valuesArray),
369
- minValue = min(valuesArray);
370
-
371
- // We need some degree of seperation here to calculate the scales if all the values are the same
372
- // Adding/minusing 0.5 will give us a range of 1.
373
- if (maxValue === minValue){
374
- maxValue += 0.5;
375
- // So we don't end up with a graph with a negative start value if we've said always start from zero
376
- if (minValue >= 0.5 && !startFromZero){
377
- minValue -= 0.5;
378
- }
379
- else{
380
- // Make up a whole number above the values
381
- maxValue += 0.5;
382
- }
383
- }
384
-
385
- var valueRange = Math.abs(maxValue - minValue),
386
- rangeOrderOfMagnitude = calculateOrderOfMagnitude(valueRange),
387
- graphMax = Math.ceil(maxValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude),
388
- graphMin = (startFromZero) ? 0 : Math.floor(minValue / (1 * Math.pow(10, rangeOrderOfMagnitude))) * Math.pow(10, rangeOrderOfMagnitude),
389
- graphRange = graphMax - graphMin,
390
- stepValue = Math.pow(10, rangeOrderOfMagnitude),
391
- numberOfSteps = Math.round(graphRange / stepValue);
392
-
393
- //If we have more space on the graph we'll use it to give more definition to the data
394
- while((numberOfSteps > maxSteps || (numberOfSteps * 2) < maxSteps) && !skipFitting) {
395
- if(numberOfSteps > maxSteps){
396
- stepValue *=2;
397
- numberOfSteps = Math.round(graphRange/stepValue);
398
- // Don't ever deal with a decimal number of steps - cancel fitting and just use the minimum number of steps.
399
- if (numberOfSteps % 1 !== 0){
400
- skipFitting = true;
401
- }
402
- }
403
- //We can fit in double the amount of scale points on the scale
404
- else{
405
- //If user has declared ints only, and the step value isn't a decimal
406
- if (integersOnly && rangeOrderOfMagnitude >= 0){
407
- //If the user has said integers only, we need to check that making the scale more granular wouldn't make it a float
408
- if(stepValue/2 % 1 === 0){
409
- stepValue /=2;
410
- numberOfSteps = Math.round(graphRange/stepValue);
411
- }
412
- //If it would make it a float break out of the loop
413
- else{
414
- break;
415
- }
416
- }
417
- //If the scale doesn't have to be an int, make the scale more granular anyway.
418
- else{
419
- stepValue /=2;
420
- numberOfSteps = Math.round(graphRange/stepValue);
421
- }
422
-
423
- }
424
- }
425
-
426
- if (skipFitting){
427
- numberOfSteps = minSteps;
428
- stepValue = graphRange / numberOfSteps;
429
- }
430
-
431
- return {
432
- steps : numberOfSteps,
433
- stepValue : stepValue,
434
- min : graphMin,
435
- max : graphMin + (numberOfSteps * stepValue)
436
- };
437
-
438
- },
439
- /* jshint ignore:start */
440
- // Blows up jshint errors based on the new Function constructor
441
- //Templating methods
442
- //Javascript micro templating by John Resig - source at http://ejohn.org/blog/javascript-micro-templating/
443
- template = helpers.template = function(templateString, valuesObject){
444
- // If templateString is function rather than string-template - call the function for valuesObject
445
- if(templateString instanceof Function){
446
- return templateString(valuesObject);
447
- }
448
-
449
- var cache = {};
450
- function tmpl(str, data){
451
- // Figure out if we're getting a template, or if we need to
452
- // load the template - and be sure to cache the result.
453
- var fn = !/\W/.test(str) ?
454
- cache[str] = cache[str] :
455
-
456
- // Generate a reusable function that will serve as a template
457
- // generator (and which will be cached).
458
- new Function("obj",
459
- "var p=[],print=function(){p.push.apply(p,arguments);};" +
460
-
461
- // Introduce the data as local variables using with(){}
462
- "with(obj){p.push('" +
463
-
464
- // Convert the template into pure JavaScript
465
- str
466
- .replace(/[\r\t\n]/g, " ")
467
- .split("<%").join("\t")
468
- .replace(/((^|%>)[^\t]*)'/g, "$1\r")
469
- .replace(/\t=(.*?)%>/g, "',$1,'")
470
- .split("\t").join("');")
471
- .split("%>").join("p.push('")
472
- .split("\r").join("\\'") +
473
- "');}return p.join('');"
474
- );
475
-
476
- // Provide some basic currying to the user
477
- return data ? fn( data ) : fn;
478
- }
479
- return tmpl(templateString,valuesObject);
480
- },
481
- /* jshint ignore:end */
482
- generateLabels = helpers.generateLabels = function(templateString,numberOfSteps,graphMin,stepValue){
483
- var labelsArray = new Array(numberOfSteps);
484
- if (labelTemplateString){
485
- each(labelsArray,function(val,index){
486
- labelsArray[index] = template(templateString,{value: (graphMin + (stepValue*(index+1)))});
487
- });
488
- }
489
- return labelsArray;
490
- },
491
- //--Animation methods
492
- //Easing functions adapted from Robert Penner's easing equations
493
- //http://www.robertpenner.com/easing/
494
- easingEffects = helpers.easingEffects = {
495
- linear: function (t) {
496
- return t;
497
- },
498
- easeInQuad: function (t) {
499
- return t * t;
500
- },
501
- easeOutQuad: function (t) {
502
- return -1 * t * (t - 2);
503
- },
504
- easeInOutQuad: function (t) {
505
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t;
506
- return -1 / 2 * ((--t) * (t - 2) - 1);
507
- },
508
- easeInCubic: function (t) {
509
- return t * t * t;
510
- },
511
- easeOutCubic: function (t) {
512
- return 1 * ((t = t / 1 - 1) * t * t + 1);
513
- },
514
- easeInOutCubic: function (t) {
515
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t;
516
- return 1 / 2 * ((t -= 2) * t * t + 2);
517
- },
518
- easeInQuart: function (t) {
519
- return t * t * t * t;
520
- },
521
- easeOutQuart: function (t) {
522
- return -1 * ((t = t / 1 - 1) * t * t * t - 1);
523
- },
524
- easeInOutQuart: function (t) {
525
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t * t;
526
- return -1 / 2 * ((t -= 2) * t * t * t - 2);
527
- },
528
- easeInQuint: function (t) {
529
- return 1 * (t /= 1) * t * t * t * t;
530
- },
531
- easeOutQuint: function (t) {
532
- return 1 * ((t = t / 1 - 1) * t * t * t * t + 1);
533
- },
534
- easeInOutQuint: function (t) {
535
- if ((t /= 1 / 2) < 1) return 1 / 2 * t * t * t * t * t;
536
- return 1 / 2 * ((t -= 2) * t * t * t * t + 2);
537
- },
538
- easeInSine: function (t) {
539
- return -1 * Math.cos(t / 1 * (Math.PI / 2)) + 1;
540
- },
541
- easeOutSine: function (t) {
542
- return 1 * Math.sin(t / 1 * (Math.PI / 2));
543
- },
544
- easeInOutSine: function (t) {
545
- return -1 / 2 * (Math.cos(Math.PI * t / 1) - 1);
546
- },
547
- easeInExpo: function (t) {
548
- return (t === 0) ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1));
549
- },
550
- easeOutExpo: function (t) {
551
- return (t === 1) ? 1 : 1 * (-Math.pow(2, -10 * t / 1) + 1);
552
- },
553
- easeInOutExpo: function (t) {
554
- if (t === 0) return 0;
555
- if (t === 1) return 1;
556
- if ((t /= 1 / 2) < 1) return 1 / 2 * Math.pow(2, 10 * (t - 1));
557
- return 1 / 2 * (-Math.pow(2, -10 * --t) + 2);
558
- },
559
- easeInCirc: function (t) {
560
- if (t >= 1) return t;
561
- return -1 * (Math.sqrt(1 - (t /= 1) * t) - 1);
562
- },
563
- easeOutCirc: function (t) {
564
- return 1 * Math.sqrt(1 - (t = t / 1 - 1) * t);
565
- },
566
- easeInOutCirc: function (t) {
567
- if ((t /= 1 / 2) < 1) return -1 / 2 * (Math.sqrt(1 - t * t) - 1);
568
- return 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1);
569
- },
570
- easeInElastic: function (t) {
571
- var s = 1.70158;
572
- var p = 0;
573
- var a = 1;
574
- if (t === 0) return 0;
575
- if ((t /= 1) == 1) return 1;
576
- if (!p) p = 1 * 0.3;
577
- if (a < Math.abs(1)) {
578
- a = 1;
579
- s = p / 4;
580
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
581
- return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));
582
- },
583
- easeOutElastic: function (t) {
584
- var s = 1.70158;
585
- var p = 0;
586
- var a = 1;
587
- if (t === 0) return 0;
588
- if ((t /= 1) == 1) return 1;
589
- if (!p) p = 1 * 0.3;
590
- if (a < Math.abs(1)) {
591
- a = 1;
592
- s = p / 4;
593
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
594
- return a * Math.pow(2, -10 * t) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) + 1;
595
- },
596
- easeInOutElastic: function (t) {
597
- var s = 1.70158;
598
- var p = 0;
599
- var a = 1;
600
- if (t === 0) return 0;
601
- if ((t /= 1 / 2) == 2) return 1;
602
- if (!p) p = 1 * (0.3 * 1.5);
603
- if (a < Math.abs(1)) {
604
- a = 1;
605
- s = p / 4;
606
- } else s = p / (2 * Math.PI) * Math.asin(1 / a);
607
- if (t < 1) return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));
608
- return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) * 0.5 + 1;
609
- },
610
- easeInBack: function (t) {
611
- var s = 1.70158;
612
- return 1 * (t /= 1) * t * ((s + 1) * t - s);
613
- },
614
- easeOutBack: function (t) {
615
- var s = 1.70158;
616
- return 1 * ((t = t / 1 - 1) * t * ((s + 1) * t + s) + 1);
617
- },
618
- easeInOutBack: function (t) {
619
- var s = 1.70158;
620
- if ((t /= 1 / 2) < 1) return 1 / 2 * (t * t * (((s *= (1.525)) + 1) * t - s));
621
- return 1 / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);
622
- },
623
- easeInBounce: function (t) {
624
- return 1 - easingEffects.easeOutBounce(1 - t);
625
- },
626
- easeOutBounce: function (t) {
627
- if ((t /= 1) < (1 / 2.75)) {
628
- return 1 * (7.5625 * t * t);
629
- } else if (t < (2 / 2.75)) {
630
- return 1 * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75);
631
- } else if (t < (2.5 / 2.75)) {
632
- return 1 * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375);
633
- } else {
634
- return 1 * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375);
635
- }
636
- },
637
- easeInOutBounce: function (t) {
638
- if (t < 1 / 2) return easingEffects.easeInBounce(t * 2) * 0.5;
639
- return easingEffects.easeOutBounce(t * 2 - 1) * 0.5 + 1 * 0.5;
640
- }
641
- },
642
- //Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/
643
- requestAnimFrame = helpers.requestAnimFrame = (function(){
644
- return window.requestAnimationFrame ||
645
- window.webkitRequestAnimationFrame ||
646
- window.mozRequestAnimationFrame ||
647
- window.oRequestAnimationFrame ||
648
- window.msRequestAnimationFrame ||
649
- function(callback) {
650
- return window.setTimeout(callback, 1000 / 60);
651
- };
652
- })(),
653
- cancelAnimFrame = helpers.cancelAnimFrame = (function(){
654
- return window.cancelAnimationFrame ||
655
- window.webkitCancelAnimationFrame ||
656
- window.mozCancelAnimationFrame ||
657
- window.oCancelAnimationFrame ||
658
- window.msCancelAnimationFrame ||
659
- function(callback) {
660
- return window.clearTimeout(callback, 1000 / 60);
661
- };
662
- })(),
663
- animationLoop = helpers.animationLoop = function(callback,totalSteps,easingString,onProgress,onComplete,chartInstance){
664
-
665
- var currentStep = 0,
666
- easingFunction = easingEffects[easingString] || easingEffects.linear;
667
-
668
- var animationFrame = function(){
669
- currentStep++;
670
- var stepDecimal = currentStep/totalSteps;
671
- var easeDecimal = easingFunction(stepDecimal);
672
-
673
- callback.call(chartInstance,easeDecimal,stepDecimal, currentStep);
674
- onProgress.call(chartInstance,easeDecimal,stepDecimal);
675
- if (currentStep < totalSteps){
676
- chartInstance.animationFrame = requestAnimFrame(animationFrame);
677
- } else{
678
- onComplete.apply(chartInstance);
679
- }
680
- };
681
- requestAnimFrame(animationFrame);
682
- },
683
- //-- DOM methods
684
- getRelativePosition = helpers.getRelativePosition = function(evt){
685
- var mouseX, mouseY;
686
- var e = evt.originalEvent || evt,
687
- canvas = evt.currentTarget || evt.srcElement,
688
- boundingRect = canvas.getBoundingClientRect();
689
-
690
- if (e.touches){
691
- mouseX = e.touches[0].clientX - boundingRect.left;
692
- mouseY = e.touches[0].clientY - boundingRect.top;
693
-
694
- }
695
- else{
696
- mouseX = e.clientX - boundingRect.left;
697
- mouseY = e.clientY - boundingRect.top;
698
- }
699
-
700
- return {
701
- x : mouseX,
702
- y : mouseY
703
- };
704
-
705
- },
706
- addEvent = helpers.addEvent = function(node,eventType,method){
707
- if (node.addEventListener){
708
- node.addEventListener(eventType,method);
709
- } else if (node.attachEvent){
710
- node.attachEvent("on"+eventType, method);
711
- } else {
712
- node["on"+eventType] = method;
713
- }
714
- },
715
- removeEvent = helpers.removeEvent = function(node, eventType, handler){
716
- if (node.removeEventListener){
717
- node.removeEventListener(eventType, handler, false);
718
- } else if (node.detachEvent){
719
- node.detachEvent("on"+eventType,handler);
720
- } else{
721
- node["on" + eventType] = noop;
722
- }
723
- },
724
- bindEvents = helpers.bindEvents = function(chartInstance, arrayOfEvents, handler){
725
- // Create the events object if it's not already present
726
- if (!chartInstance.events) chartInstance.events = {};
727
-
728
- each(arrayOfEvents,function(eventName){
729
- chartInstance.events[eventName] = function(){
730
- handler.apply(chartInstance, arguments);
731
- };
732
- addEvent(chartInstance.chart.canvas,eventName,chartInstance.events[eventName]);
733
- });
734
- },
735
- unbindEvents = helpers.unbindEvents = function (chartInstance, arrayOfEvents) {
736
- each(arrayOfEvents, function(handler,eventName){
737
- removeEvent(chartInstance.chart.canvas, eventName, handler);
738
- });
739
- },
740
- getMaximumWidth = helpers.getMaximumWidth = function(domNode){
741
- var container = domNode.parentNode;
742
- // TODO = check cross browser stuff with this.
743
- return container.clientWidth;
744
- },
745
- getMaximumHeight = helpers.getMaximumHeight = function(domNode){
746
- var container = domNode.parentNode;
747
- // TODO = check cross browser stuff with this.
748
- return container.clientHeight;
749
- },
750
- getMaximumSize = helpers.getMaximumSize = helpers.getMaximumWidth, // legacy support
751
- retinaScale = helpers.retinaScale = function(chart){
752
- var ctx = chart.ctx,
753
- width = chart.canvas.width,
754
- height = chart.canvas.height;
755
-
756
- if (window.devicePixelRatio) {
757
- ctx.canvas.style.width = width + "px";
758
- ctx.canvas.style.height = height + "px";
759
- ctx.canvas.height = height * window.devicePixelRatio;
760
- ctx.canvas.width = width * window.devicePixelRatio;
761
- ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
762
- }
763
- },
764
- //-- Canvas methods
765
- clear = helpers.clear = function(chart){
766
- chart.ctx.clearRect(0,0,chart.width,chart.height);
767
- },
768
- fontString = helpers.fontString = function(pixelSize,fontStyle,fontFamily){
769
- return fontStyle + " " + pixelSize+"px " + fontFamily;
770
- },
771
- longestText = helpers.longestText = function(ctx,font,arrayOfStrings){
772
- ctx.font = font;
773
- var longest = 0;
774
- each(arrayOfStrings,function(string){
775
- var textWidth = ctx.measureText(string).width;
776
- longest = (textWidth > longest) ? textWidth : longest;
777
- });
778
- return longest;
779
- },
780
- drawRoundedRectangle = helpers.drawRoundedRectangle = function(ctx,x,y,width,height,radius){
781
- ctx.beginPath();
782
- ctx.moveTo(x + radius, y);
783
- ctx.lineTo(x + width - radius, y);
784
- ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
785
- ctx.lineTo(x + width, y + height - radius);
786
- ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
787
- ctx.lineTo(x + radius, y + height);
788
- ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
789
- ctx.lineTo(x, y + radius);
790
- ctx.quadraticCurveTo(x, y, x + radius, y);
791
- ctx.closePath();
792
- };
793
-
794
-
795
- //Store a reference to each instance - allowing us to globally resize chart instances on window resize.
796
- //Destroy method on the chart will remove the instance of the chart from this reference.
797
- Chart.instances = {};
798
-
799
- Chart.Type = function(data,options,chart){
800
- this.options = options;
801
- this.chart = chart;
802
- this.id = uid();
803
- //Add the chart instance to the global namespace
804
- Chart.instances[this.id] = this;
805
-
806
- // Initialize is always called when a chart type is created
807
- // By default it is a no op, but it should be extended
808
- if (options.responsive){
809
- this.resize();
810
- }
811
- this.initialize.call(this,data);
812
- };
813
-
814
- //Core methods that'll be a part of every chart type
815
- extend(Chart.Type.prototype,{
816
- initialize : function(){return this;},
817
- clear : function(){
818
- clear(this.chart);
819
- return this;
820
- },
821
- stop : function(){
822
- // Stops any current animation loop occuring
823
- helpers.cancelAnimFrame.call(root, this.animationFrame);
824
- return this;
825
- },
826
- resize : function(callback){
827
- this.stop();
828
- var canvas = this.chart.canvas,
829
- newWidth = getMaximumWidth(this.chart.canvas),
830
- newHeight = this.options.maintainAspectRatio ? newWidth / this.chart.aspectRatio : getMaximumHeight(this.chart.canvas);
831
-
832
- canvas.width = this.chart.width = newWidth;
833
- canvas.height = this.chart.height = newHeight;
834
-
835
- retinaScale(this.chart);
836
-
837
- if (typeof callback === "function"){
838
- callback.apply(this, Array.prototype.slice.call(arguments, 1));
839
- }
840
- return this;
841
- },
842
- reflow : noop,
843
- render : function(reflow){
844
- if (reflow){
845
- this.reflow();
846
- }
847
- if (this.options.animation && !reflow){
848
- helpers.animationLoop(
849
- this.draw,
850
- this.options.animationSteps,
851
- this.options.animationEasing,
852
- this.options.onAnimationProgress,
853
- this.options.onAnimationComplete,
854
- this
855
- );
856
- }
857
- else{
858
- this.draw();
859
- this.options.onAnimationComplete.call(this);
860
- }
861
- return this;
862
- },
863
- generateLegend : function(){
864
- return template(this.options.legendTemplate,this);
865
- },
866
- destroy : function(){
867
- this.clear();
868
- unbindEvents(this, this.events);
869
- delete Chart.instances[this.id];
870
- },
871
- showTooltip : function(ChartElements, forceRedraw){
872
- // Only redraw the chart if we've actually changed what we're hovering on.
873
- if (typeof this.activeElements === 'undefined') this.activeElements = [];
874
-
875
- var isChanged = (function(Elements){
876
- var changed = false;
877
-
878
- if (Elements.length !== this.activeElements.length){
879
- changed = true;
880
- return changed;
881
- }
882
-
883
- each(Elements, function(element, index){
884
- if (element !== this.activeElements[index]){
885
- changed = true;
886
- }
887
- }, this);
888
- return changed;
889
- }).call(this, ChartElements);
890
-
891
- if (!isChanged && !forceRedraw){
892
- return;
893
- }
894
- else{
895
- this.activeElements = ChartElements;
896
- }
897
- this.draw();
898
- if (ChartElements.length > 0){
899
- // If we have multiple datasets, show a MultiTooltip for all of the data points at that index
900
- if (this.datasets && this.datasets.length > 1) {
901
- var dataArray,
902
- dataIndex;
903
-
904
- for (var i = this.datasets.length - 1; i >= 0; i--) {
905
- dataArray = this.datasets[i].points || this.datasets[i].bars || this.datasets[i].segments;
906
- dataIndex = indexOf(dataArray, ChartElements[0]);
907
- if (dataIndex !== -1){
908
- break;
909
- }
910
- }
911
- var tooltipLabels = [],
912
- tooltipColors = [],
913
- medianPosition = (function(index) {
914
-
915
- // Get all the points at that particular index
916
- var Elements = [],
917
- dataCollection,
918
- xPositions = [],
919
- yPositions = [],
920
- xMax,
921
- yMax,
922
- xMin,
923
- yMin;
924
- helpers.each(this.datasets, function(dataset){
925
- dataCollection = dataset.points || dataset.bars || dataset.segments;
926
- if (dataCollection[dataIndex] && dataCollection[dataIndex].hasValue()){
927
- Elements.push(dataCollection[dataIndex]);
928
- }
929
- });
930
-
931
- helpers.each(Elements, function(element) {
932
- xPositions.push(element.x);
933
- yPositions.push(element.y);
934
-
935
-
936
- //Include any colour information about the element
937
- tooltipLabels.push(helpers.template(this.options.multiTooltipTemplate, element));
938
- tooltipColors.push({
939
- fill: element._saved.fillColor || element.fillColor,
940
- stroke: element._saved.strokeColor || element.strokeColor
941
- });
942
-
943
- }, this);
944
-
945
- yMin = min(yPositions);
946
- yMax = max(yPositions);
947
-
948
- xMin = min(xPositions);
949
- xMax = max(xPositions);
950
-
951
- return {
952
- x: (xMin > this.chart.width/2) ? xMin : xMax,
953
- y: (yMin + yMax)/2
954
- };
955
- }).call(this, dataIndex);
956
-
957
- new Chart.MultiTooltip({
958
- x: medianPosition.x,
959
- y: medianPosition.y,
960
- xPadding: this.options.tooltipXPadding,
961
- yPadding: this.options.tooltipYPadding,
962
- xOffset: this.options.tooltipXOffset,
963
- fillColor: this.options.tooltipFillColor,
964
- textColor: this.options.tooltipFontColor,
965
- fontFamily: this.options.tooltipFontFamily,
966
- fontStyle: this.options.tooltipFontStyle,
967
- fontSize: this.options.tooltipFontSize,
968
- titleTextColor: this.options.tooltipTitleFontColor,
969
- titleFontFamily: this.options.tooltipTitleFontFamily,
970
- titleFontStyle: this.options.tooltipTitleFontStyle,
971
- titleFontSize: this.options.tooltipTitleFontSize,
972
- cornerRadius: this.options.tooltipCornerRadius,
973
- labels: tooltipLabels,
974
- legendColors: tooltipColors,
975
- legendColorBackground : this.options.multiTooltipKeyBackground,
976
- title: ChartElements[0].label,
977
- chart: this.chart,
978
- ctx: this.chart.ctx
979
- }).draw();
980
-
981
- } else {
982
- each(ChartElements, function(Element) {
983
- var tooltipPosition = Element.tooltipPosition();
984
- new Chart.Tooltip({
985
- x: Math.round(tooltipPosition.x),
986
- y: Math.round(tooltipPosition.y),
987
- xPadding: this.options.tooltipXPadding,
988
- yPadding: this.options.tooltipYPadding,
989
- fillColor: this.options.tooltipFillColor,
990
- textColor: this.options.tooltipFontColor,
991
- fontFamily: this.options.tooltipFontFamily,
992
- fontStyle: this.options.tooltipFontStyle,
993
- fontSize: this.options.tooltipFontSize,
994
- caretHeight: this.options.tooltipCaretSize,
995
- cornerRadius: this.options.tooltipCornerRadius,
996
- text: template(this.options.tooltipTemplate, Element),
997
- chart: this.chart
998
- }).draw();
999
- }, this);
1000
- }
1001
- }
1002
- return this;
1003
- },
1004
- toBase64Image : function(){
1005
- return this.chart.canvas.toDataURL.apply(this.chart.canvas, arguments);
1006
- }
1007
- });
1008
-
1009
- Chart.Type.extend = function(extensions){
1010
-
1011
- var parent = this;
1012
-
1013
- var ChartType = function(){
1014
- return parent.apply(this,arguments);
1015
- };
1016
-
1017
- //Copy the prototype object of the this class
1018
- ChartType.prototype = clone(parent.prototype);
1019
- //Now overwrite some of the properties in the base class with the new extensions
1020
- extend(ChartType.prototype, extensions);
1021
-
1022
- ChartType.extend = Chart.Type.extend;
1023
-
1024
- if (extensions.name || parent.prototype.name){
1025
-
1026
- var chartName = extensions.name || parent.prototype.name;
1027
- //Assign any potential default values of the new chart type
1028
-
1029
- //If none are defined, we'll use a clone of the chart type this is being extended from.
1030
- //I.e. if we extend a line chart, we'll use the defaults from the line chart if our new chart
1031
- //doesn't define some defaults of their own.
1032
-
1033
- var baseDefaults = (Chart.defaults[parent.prototype.name]) ? clone(Chart.defaults[parent.prototype.name]) : {};
1034
-
1035
- Chart.defaults[chartName] = extend(baseDefaults,extensions.defaults);
1036
-
1037
- Chart.types[chartName] = ChartType;
1038
-
1039
- //Register this new chart type in the Chart prototype
1040
- Chart.prototype[chartName] = function(data,options){
1041
- var config = merge(Chart.defaults.global, Chart.defaults[chartName], options || {});
1042
- return new ChartType(data,config,this);
1043
- };
1044
- } else{
1045
- warn("Name not provided for this chart, so it hasn't been registered");
1046
- }
1047
- return parent;
1048
- };
1049
-
1050
- Chart.Element = function(configuration){
1051
- extend(this,configuration);
1052
- this.initialize.apply(this,arguments);
1053
- this.save();
1054
- };
1055
- extend(Chart.Element.prototype,{
1056
- initialize : function(){},
1057
- restore : function(props){
1058
- if (!props){
1059
- extend(this,this._saved);
1060
- } else {
1061
- each(props,function(key){
1062
- this[key] = this._saved[key];
1063
- },this);
1064
- }
1065
- return this;
1066
- },
1067
- save : function(){
1068
- this._saved = clone(this);
1069
- delete this._saved._saved;
1070
- return this;
1071
- },
1072
- update : function(newProps){
1073
- each(newProps,function(value,key){
1074
- this._saved[key] = this[key];
1075
- this[key] = value;
1076
- },this);
1077
- return this;
1078
- },
1079
- transition : function(props,ease){
1080
- each(props,function(value,key){
1081
- this[key] = ((value - this._saved[key]) * ease) + this._saved[key];
1082
- },this);
1083
- return this;
1084
- },
1085
- tooltipPosition : function(){
1086
- return {
1087
- x : this.x,
1088
- y : this.y
1089
- };
1090
- },
1091
- hasValue: function(){
1092
- return isNumber(this.value);
1093
- }
1094
- });
1095
-
1096
- Chart.Element.extend = inherits;
1097
-
1098
-
1099
- Chart.Point = Chart.Element.extend({
1100
- display: true,
1101
- inRange: function(chartX,chartY){
1102
- var hitDetectionRange = this.hitDetectionRadius + this.radius;
1103
- return ((Math.pow(chartX-this.x, 2)+Math.pow(chartY-this.y, 2)) < Math.pow(hitDetectionRange,2));
1104
- },
1105
- draw : function(){
1106
- if (this.display){
1107
- var ctx = this.ctx;
1108
- ctx.beginPath();
1109
-
1110
- ctx.arc(this.x, this.y, this.radius, 0, Math.PI*2);
1111
- ctx.closePath();
1112
-
1113
- ctx.strokeStyle = this.strokeColor;
1114
- ctx.lineWidth = this.strokeWidth;
1115
-
1116
- ctx.fillStyle = this.fillColor;
1117
-
1118
- ctx.fill();
1119
- ctx.stroke();
1120
- }
1121
-
1122
-
1123
- //Quick debug for bezier curve splining
1124
- //Highlights control points and the line between them.
1125
- //Handy for dev - stripped in the min version.
1126
-
1127
- // ctx.save();
1128
- // ctx.fillStyle = "black";
1129
- // ctx.strokeStyle = "black"
1130
- // ctx.beginPath();
1131
- // ctx.arc(this.controlPoints.inner.x,this.controlPoints.inner.y, 2, 0, Math.PI*2);
1132
- // ctx.fill();
1133
-
1134
- // ctx.beginPath();
1135
- // ctx.arc(this.controlPoints.outer.x,this.controlPoints.outer.y, 2, 0, Math.PI*2);
1136
- // ctx.fill();
1137
-
1138
- // ctx.moveTo(this.controlPoints.inner.x,this.controlPoints.inner.y);
1139
- // ctx.lineTo(this.x, this.y);
1140
- // ctx.lineTo(this.controlPoints.outer.x,this.controlPoints.outer.y);
1141
- // ctx.stroke();
1142
-
1143
- // ctx.restore();
1144
-
1145
-
1146
-
1147
- }
1148
- });
1149
-
1150
- Chart.Arc = Chart.Element.extend({
1151
- inRange : function(chartX,chartY){
1152
-
1153
- var pointRelativePosition = helpers.getAngleFromPoint(this, {
1154
- x: chartX,
1155
- y: chartY
1156
- });
1157
-
1158
- //Check if within the range of the open/close angle
1159
- var betweenAngles = (pointRelativePosition.angle >= this.startAngle && pointRelativePosition.angle <= this.endAngle),
1160
- withinRadius = (pointRelativePosition.distance >= this.innerRadius && pointRelativePosition.distance <= this.outerRadius);
1161
-
1162
- return (betweenAngles && withinRadius);
1163
- //Ensure within the outside of the arc centre, but inside arc outer
1164
- },
1165
- tooltipPosition : function(){
1166
- var centreAngle = this.startAngle + ((this.endAngle - this.startAngle) / 2),
1167
- rangeFromCentre = (this.outerRadius - this.innerRadius) / 2 + this.innerRadius;
1168
- return {
1169
- x : this.x + (Math.cos(centreAngle) * rangeFromCentre),
1170
- y : this.y + (Math.sin(centreAngle) * rangeFromCentre)
1171
- };
1172
- },
1173
- draw : function(animationPercent){
1174
-
1175
- var easingDecimal = animationPercent || 1;
1176
-
1177
- var ctx = this.ctx;
1178
-
1179
- ctx.beginPath();
1180
-
1181
- ctx.arc(this.x, this.y, this.outerRadius, this.startAngle, this.endAngle);
1182
-
1183
- ctx.arc(this.x, this.y, this.innerRadius, this.endAngle, this.startAngle, true);
1184
-
1185
- ctx.closePath();
1186
- ctx.strokeStyle = this.strokeColor;
1187
- ctx.lineWidth = this.strokeWidth;
1188
-
1189
- ctx.fillStyle = this.fillColor;
1190
-
1191
- ctx.fill();
1192
- ctx.lineJoin = 'bevel';
1193
-
1194
- if (this.showStroke){
1195
- ctx.stroke();
1196
- }
1197
- }
1198
- });
1199
-
1200
- Chart.Rectangle = Chart.Element.extend({
1201
- draw : function(){
1202
- var ctx = this.ctx,
1203
- halfWidth = this.width/2,
1204
- leftX = this.x - halfWidth,
1205
- rightX = this.x + halfWidth,
1206
- top = this.base - (this.base - this.y),
1207
- halfStroke = this.strokeWidth / 2;
1208
-
1209
- // Canvas doesn't allow us to stroke inside the width so we can
1210
- // adjust the sizes to fit if we're setting a stroke on the line
1211
- if (this.showStroke){
1212
- leftX += halfStroke;
1213
- rightX -= halfStroke;
1214
- top += halfStroke;
1215
- }
1216
-
1217
- ctx.beginPath();
1218
-
1219
- ctx.fillStyle = this.fillColor;
1220
- ctx.strokeStyle = this.strokeColor;
1221
- ctx.lineWidth = this.strokeWidth;
1222
-
1223
- // It'd be nice to keep this class totally generic to any rectangle
1224
- // and simply specify which border to miss out.
1225
- ctx.moveTo(leftX, this.base);
1226
- ctx.lineTo(leftX, top);
1227
- ctx.lineTo(rightX, top);
1228
- ctx.lineTo(rightX, this.base);
1229
- ctx.fill();
1230
- if (this.showStroke){
1231
- ctx.stroke();
1232
- }
1233
- },
1234
- height : function(){
1235
- return this.base - this.y;
1236
- },
1237
- inRange : function(chartX,chartY){
1238
- return (chartX >= this.x - this.width/2 && chartX <= this.x + this.width/2) && (chartY >= this.y && chartY <= this.base);
1239
- }
1240
- });
1241
-
1242
- Chart.Tooltip = Chart.Element.extend({
1243
- draw : function(){
1244
-
1245
- var ctx = this.chart.ctx;
1246
-
1247
- ctx.font = fontString(this.fontSize,this.fontStyle,this.fontFamily);
1248
-
1249
- this.xAlign = "center";
1250
- this.yAlign = "above";
1251
-
1252
- //Distance between the actual element.y position and the start of the tooltip caret
1253
- var caretPadding = 2;
1254
-
1255
- var tooltipWidth = ctx.measureText(this.text).width + 2*this.xPadding,
1256
- tooltipRectHeight = this.fontSize + 2*this.yPadding,
1257
- tooltipHeight = tooltipRectHeight + this.caretHeight + caretPadding;
1258
-
1259
- if (this.x + tooltipWidth/2 >this.chart.width){
1260
- this.xAlign = "left";
1261
- } else if (this.x - tooltipWidth/2 < 0){
1262
- this.xAlign = "right";
1263
- }
1264
-
1265
- if (this.y - tooltipHeight < 0){
1266
- this.yAlign = "below";
1267
- }
1268
-
1269
-
1270
- var tooltipX = this.x - tooltipWidth/2,
1271
- tooltipY = this.y - tooltipHeight;
1272
-
1273
- ctx.fillStyle = this.fillColor;
1274
-
1275
- switch(this.yAlign)
1276
- {
1277
- case "above":
1278
- //Draw a caret above the x/y
1279
- ctx.beginPath();
1280
- ctx.moveTo(this.x,this.y - caretPadding);
1281
- ctx.lineTo(this.x + this.caretHeight, this.y - (caretPadding + this.caretHeight));
1282
- ctx.lineTo(this.x - this.caretHeight, this.y - (caretPadding + this.caretHeight));
1283
- ctx.closePath();
1284
- ctx.fill();
1285
- break;
1286
- case "below":
1287
- tooltipY = this.y + caretPadding + this.caretHeight;
1288
- //Draw a caret below the x/y
1289
- ctx.beginPath();
1290
- ctx.moveTo(this.x, this.y + caretPadding);
1291
- ctx.lineTo(this.x + this.caretHeight, this.y + caretPadding + this.caretHeight);
1292
- ctx.lineTo(this.x - this.caretHeight, this.y + caretPadding + this.caretHeight);
1293
- ctx.closePath();
1294
- ctx.fill();
1295
- break;
1296
- }
1297
-
1298
- switch(this.xAlign)
1299
- {
1300
- case "left":
1301
- tooltipX = this.x - tooltipWidth + (this.cornerRadius + this.caretHeight);
1302
- break;
1303
- case "right":
1304
- tooltipX = this.x - (this.cornerRadius + this.caretHeight);
1305
- break;
1306
- }
1307
-
1308
- drawRoundedRectangle(ctx,tooltipX,tooltipY,tooltipWidth,tooltipRectHeight,this.cornerRadius);
1309
-
1310
- ctx.fill();
1311
-
1312
- ctx.fillStyle = this.textColor;
1313
- ctx.textAlign = "center";
1314
- ctx.textBaseline = "middle";
1315
- ctx.fillText(this.text, tooltipX + tooltipWidth/2, tooltipY + tooltipRectHeight/2);
1316
- }
1317
- });
1318
-
1319
- Chart.MultiTooltip = Chart.Element.extend({
1320
- initialize : function(){
1321
- this.font = fontString(this.fontSize,this.fontStyle,this.fontFamily);
1322
-
1323
- this.titleFont = fontString(this.titleFontSize,this.titleFontStyle,this.titleFontFamily);
1324
-
1325
- this.height = (this.labels.length * this.fontSize) + ((this.labels.length-1) * (this.fontSize/2)) + (this.yPadding*2) + this.titleFontSize *1.5;
1326
-
1327
- this.ctx.font = this.titleFont;
1328
-
1329
- var titleWidth = this.ctx.measureText(this.title).width,
1330
- //Label has a legend square as well so account for this.
1331
- labelWidth = longestText(this.ctx,this.font,this.labels) + this.fontSize + 3,
1332
- longestTextWidth = max([labelWidth,titleWidth]);
1333
-
1334
- this.width = longestTextWidth + (this.xPadding*2);
1335
-
1336
-
1337
- var halfHeight = this.height/2;
1338
-
1339
- //Check to ensure the height will fit on the canvas
1340
- //The three is to buffer form the very
1341
- if (this.y - halfHeight < 0 ){
1342
- this.y = halfHeight;
1343
- } else if (this.y + halfHeight > this.chart.height){
1344
- this.y = this.chart.height - halfHeight;
1345
- }
1346
-
1347
- //Decide whether to align left or right based on position on canvas
1348
- if (this.x > this.chart.width/2){
1349
- this.x -= this.xOffset + this.width;
1350
- } else {
1351
- this.x += this.xOffset;
1352
- }
1353
-
1354
-
1355
- },
1356
- getLineHeight : function(index){
1357
- var baseLineHeight = this.y - (this.height/2) + this.yPadding,
1358
- afterTitleIndex = index-1;
1359
-
1360
- //If the index is zero, we're getting the title
1361
- if (index === 0){
1362
- return baseLineHeight + this.titleFontSize/2;
1363
- } else{
1364
- return baseLineHeight + ((this.fontSize*1.5*afterTitleIndex) + this.fontSize/2) + this.titleFontSize * 1.5;
1365
- }
1366
-
1367
- },
1368
- draw : function(){
1369
- drawRoundedRectangle(this.ctx,this.x,this.y - this.height/2,this.width,this.height,this.cornerRadius);
1370
- var ctx = this.ctx;
1371
- ctx.fillStyle = this.fillColor;
1372
- ctx.fill();
1373
- ctx.closePath();
1374
-
1375
- ctx.textAlign = "left";
1376
- ctx.textBaseline = "middle";
1377
- ctx.fillStyle = this.titleTextColor;
1378
- ctx.font = this.titleFont;
1379
-
1380
- ctx.fillText(this.title,this.x + this.xPadding, this.getLineHeight(0));
1381
-
1382
- ctx.font = this.font;
1383
- helpers.each(this.labels,function(label,index){
1384
- ctx.fillStyle = this.textColor;
1385
- ctx.fillText(label,this.x + this.xPadding + this.fontSize + 3, this.getLineHeight(index + 1));
1386
-
1387
- //A bit gnarly, but clearing this rectangle breaks when using explorercanvas (clears whole canvas)
1388
- //ctx.clearRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize);
1389
- //Instead we'll make a white filled block to put the legendColour palette over.
1390
-
1391
- ctx.fillStyle = this.legendColorBackground;
1392
- ctx.fillRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize);
1393
-
1394
- ctx.fillStyle = this.legendColors[index].fill;
1395
- ctx.fillRect(this.x + this.xPadding, this.getLineHeight(index + 1) - this.fontSize/2, this.fontSize, this.fontSize);
1396
-
1397
-
1398
- },this);
1399
- }
1400
- });
1401
-
1402
- Chart.Scale = Chart.Element.extend({
1403
- initialize : function(){
1404
- this.fit();
1405
- },
1406
- buildYLabels : function(){
1407
- this.yLabels = [];
1408
-
1409
- var stepDecimalPlaces = getDecimalPlaces(this.stepValue);
1410
-
1411
- for (var i=0; i<=this.steps; i++){
1412
- this.yLabels.push(template(this.templateString,{value:(this.min + (i * this.stepValue)).toFixed(stepDecimalPlaces)}));
1413
- }
1414
- this.yLabelWidth = (this.display && this.showLabels) ? longestText(this.ctx,this.font,this.yLabels) : 0;
1415
- },
1416
- addXLabel : function(label){
1417
- this.xLabels.push(label);
1418
- this.valuesCount++;
1419
- this.fit();
1420
- },
1421
- removeXLabel : function(){
1422
- this.xLabels.shift();
1423
- this.valuesCount--;
1424
- this.fit();
1425
- },
1426
- // Fitting loop to rotate x Labels and figure out what fits there, and also calculate how many Y steps to use
1427
- fit: function(){
1428
- // First we need the width of the yLabels, assuming the xLabels aren't rotated
1429
-
1430
- // To do that we need the base line at the top and base of the chart, assuming there is no x label rotation
1431
- this.startPoint = (this.display) ? this.fontSize : 0;
1432
- this.endPoint = (this.display) ? this.height - (this.fontSize * 1.5) - 5 : this.height; // -5 to pad labels
1433
-
1434
- // Apply padding settings to the start and end point.
1435
- this.startPoint += this.padding;
1436
- this.endPoint -= this.padding;
1437
-
1438
- // Cache the starting height, so can determine if we need to recalculate the scale yAxis
1439
- var cachedHeight = this.endPoint - this.startPoint,
1440
- cachedYLabelWidth;
1441
-
1442
- // Build the current yLabels so we have an idea of what size they'll be to start
1443
- /*
1444
- * This sets what is returned from calculateScaleRange as static properties of this class:
1445
- *
1446
- this.steps;
1447
- this.stepValue;
1448
- this.min;
1449
- this.max;
1450
- *
1451
- */
1452
- this.calculateYRange(cachedHeight);
1453
-
1454
- // With these properties set we can now build the array of yLabels
1455
- // and also the width of the largest yLabel
1456
- this.buildYLabels();
1457
-
1458
- this.calculateXLabelRotation();
1459
-
1460
- while((cachedHeight > this.endPoint - this.startPoint)){
1461
- cachedHeight = this.endPoint - this.startPoint;
1462
- cachedYLabelWidth = this.yLabelWidth;
1463
-
1464
- this.calculateYRange(cachedHeight);
1465
- this.buildYLabels();
1466
-
1467
- // Only go through the xLabel loop again if the yLabel width has changed
1468
- if (cachedYLabelWidth < this.yLabelWidth){
1469
- this.calculateXLabelRotation();
1470
- }
1471
- }
1472
-
1473
- },
1474
- calculateXLabelRotation : function(){
1475
- //Get the width of each grid by calculating the difference
1476
- //between x offsets between 0 and 1.
1477
-
1478
- this.ctx.font = this.font;
1479
-
1480
- var firstWidth = this.ctx.measureText(this.xLabels[0]).width,
1481
- lastWidth = this.ctx.measureText(this.xLabels[this.xLabels.length - 1]).width,
1482
- firstRotated,
1483
- lastRotated;
1484
-
1485
-
1486
- this.xScalePaddingRight = lastWidth/2 + 3;
1487
- this.xScalePaddingLeft = (firstWidth/2 > this.yLabelWidth + 10) ? firstWidth/2 : this.yLabelWidth + 10;
1488
-
1489
- this.xLabelRotation = 0;
1490
- if (this.display){
1491
- var originalLabelWidth = longestText(this.ctx,this.font,this.xLabels),
1492
- cosRotation,
1493
- firstRotatedWidth;
1494
- this.xLabelWidth = originalLabelWidth;
1495
- //Allow 3 pixels x2 padding either side for label readability
1496
- var xGridWidth = Math.floor(this.calculateX(1) - this.calculateX(0)) - 6;
1497
-
1498
- //Max label rotate should be 90 - also act as a loop counter
1499
- while ((this.xLabelWidth > xGridWidth && this.xLabelRotation === 0) || (this.xLabelWidth > xGridWidth && this.xLabelRotation <= 90 && this.xLabelRotation > 0)){
1500
- cosRotation = Math.cos(toRadians(this.xLabelRotation));
1501
-
1502
- firstRotated = cosRotation * firstWidth;
1503
- lastRotated = cosRotation * lastWidth;
1504
-
1505
- // We're right aligning the text now.
1506
- if (firstRotated + this.fontSize / 2 > this.yLabelWidth + 8){
1507
- this.xScalePaddingLeft = firstRotated + this.fontSize / 2;
1508
- }
1509
- this.xScalePaddingRight = this.fontSize/2;
1510
-
1511
-
1512
- this.xLabelRotation++;
1513
- this.xLabelWidth = cosRotation * originalLabelWidth;
1514
-
1515
- }
1516
- if (this.xLabelRotation > 0){
1517
- this.endPoint -= Math.sin(toRadians(this.xLabelRotation))*originalLabelWidth + 3;
1518
- }
1519
- }
1520
- else{
1521
- this.xLabelWidth = 0;
1522
- this.xScalePaddingRight = this.padding;
1523
- this.xScalePaddingLeft = this.padding;
1524
- }
1525
-
1526
- },
1527
- // Needs to be overidden in each Chart type
1528
- // Otherwise we need to pass all the data into the scale class
1529
- calculateYRange: noop,
1530
- drawingArea: function(){
1531
- return this.startPoint - this.endPoint;
1532
- },
1533
- calculateY : function(value){
1534
- var scalingFactor = this.drawingArea() / (this.min - this.max);
1535
- return this.endPoint - (scalingFactor * (value - this.min));
1536
- },
1537
- calculateX : function(index){
1538
- var isRotated = (this.xLabelRotation > 0),
1539
- // innerWidth = (this.offsetGridLines) ? this.width - offsetLeft - this.padding : this.width - (offsetLeft + halfLabelWidth * 2) - this.padding,
1540
- innerWidth = this.width - (this.xScalePaddingLeft + this.xScalePaddingRight),
1541
- valueWidth = innerWidth/(this.valuesCount - ((this.offsetGridLines) ? 0 : 1)),
1542
- valueOffset = (valueWidth * index) + this.xScalePaddingLeft;
1543
-
1544
- if (this.offsetGridLines){
1545
- valueOffset += (valueWidth/2);
1546
- }
1547
-
1548
- return Math.round(valueOffset);
1549
- },
1550
- update : function(newProps){
1551
- helpers.extend(this, newProps);
1552
- this.fit();
1553
- },
1554
- draw : function(){
1555
- var ctx = this.ctx,
1556
- yLabelGap = (this.endPoint - this.startPoint) / this.steps,
1557
- xStart = Math.round(this.xScalePaddingLeft);
1558
- if (this.display){
1559
- ctx.fillStyle = this.textColor;
1560
- ctx.font = this.font;
1561
- each(this.yLabels,function(labelString,index){
1562
- var yLabelCenter = this.endPoint - (yLabelGap * index),
1563
- linePositionY = Math.round(yLabelCenter);
1564
-
1565
- ctx.textAlign = "right";
1566
- ctx.textBaseline = "middle";
1567
- if (this.showLabels){
1568
- ctx.fillText(labelString,xStart - 10,yLabelCenter);
1569
- }
1570
- ctx.beginPath();
1571
- if (index > 0){
1572
- // This is a grid line in the centre, so drop that
1573
- ctx.lineWidth = this.gridLineWidth;
1574
- ctx.strokeStyle = this.gridLineColor;
1575
- } else {
1576
- // This is the first line on the scale
1577
- ctx.lineWidth = this.lineWidth;
1578
- ctx.strokeStyle = this.lineColor;
1579
- }
1580
-
1581
- linePositionY += helpers.aliasPixel(ctx.lineWidth);
1582
-
1583
- ctx.moveTo(xStart, linePositionY);
1584
- ctx.lineTo(this.width, linePositionY);
1585
- ctx.stroke();
1586
- ctx.closePath();
1587
-
1588
- ctx.lineWidth = this.lineWidth;
1589
- ctx.strokeStyle = this.lineColor;
1590
- ctx.beginPath();
1591
- ctx.moveTo(xStart - 5, linePositionY);
1592
- ctx.lineTo(xStart, linePositionY);
1593
- ctx.stroke();
1594
- ctx.closePath();
1595
-
1596
- },this);
1597
-
1598
- each(this.xLabels,function(label,index){
1599
- var xPos = this.calculateX(index) + aliasPixel(this.lineWidth),
1600
- // Check to see if line/bar here and decide where to place the line
1601
- linePos = this.calculateX(index - (this.offsetGridLines ? 0.5 : 0)) + aliasPixel(this.lineWidth),
1602
- isRotated = (this.xLabelRotation > 0);
1603
-
1604
- ctx.beginPath();
1605
-
1606
- if (index > 0){
1607
- // This is a grid line in the centre, so drop that
1608
- ctx.lineWidth = this.gridLineWidth;
1609
- ctx.strokeStyle = this.gridLineColor;
1610
- } else {
1611
- // This is the first line on the scale
1612
- ctx.lineWidth = this.lineWidth;
1613
- ctx.strokeStyle = this.lineColor;
1614
- }
1615
- ctx.moveTo(linePos,this.endPoint);
1616
- ctx.lineTo(linePos,this.startPoint - 3);
1617
- ctx.stroke();
1618
- ctx.closePath();
1619
-
1620
-
1621
- ctx.lineWidth = this.lineWidth;
1622
- ctx.strokeStyle = this.lineColor;
1623
-
1624
-
1625
- // Small lines at the bottom of the base grid line
1626
- ctx.beginPath();
1627
- ctx.moveTo(linePos,this.endPoint);
1628
- ctx.lineTo(linePos,this.endPoint + 5);
1629
- ctx.stroke();
1630
- ctx.closePath();
1631
-
1632
- ctx.save();
1633
- ctx.translate(xPos,(isRotated) ? this.endPoint + 12 : this.endPoint + 8);
1634
- ctx.rotate(toRadians(this.xLabelRotation)*-1);
1635
- ctx.font = this.font;
1636
- ctx.textAlign = (isRotated) ? "right" : "center";
1637
- ctx.textBaseline = (isRotated) ? "middle" : "top";
1638
- ctx.fillText(label, 0, 0);
1639
- ctx.restore();
1640
- },this);
1641
-
1642
- }
1643
- }
1644
-
1645
- });
1646
-
1647
- Chart.RadialScale = Chart.Element.extend({
1648
- initialize: function(){
1649
- this.size = min([this.height, this.width]);
1650
- this.drawingArea = (this.display) ? (this.size/2) - (this.fontSize/2 + this.backdropPaddingY) : (this.size/2);
1651
- },
1652
- calculateCenterOffset: function(value){
1653
- // Take into account half font size + the yPadding of the top value
1654
- var scalingFactor = this.drawingArea / (this.max - this.min);
1655
-
1656
- return (value - this.min) * scalingFactor;
1657
- },
1658
- update : function(){
1659
- if (!this.lineArc){
1660
- this.setScaleSize();
1661
- } else {
1662
- this.drawingArea = (this.display) ? (this.size/2) - (this.fontSize/2 + this.backdropPaddingY) : (this.size/2);
1663
- }
1664
- this.buildYLabels();
1665
- },
1666
- buildYLabels: function(){
1667
- this.yLabels = [];
1668
-
1669
- var stepDecimalPlaces = getDecimalPlaces(this.stepValue);
1670
-
1671
- for (var i=0; i<=this.steps; i++){
1672
- this.yLabels.push(template(this.templateString,{value:(this.min + (i * this.stepValue)).toFixed(stepDecimalPlaces)}));
1673
- }
1674
- },
1675
- getCircumference : function(){
1676
- return ((Math.PI*2) / this.valuesCount);
1677
- },
1678
- setScaleSize: function(){
1679
- /*
1680
- * Right, this is really confusing and there is a lot of maths going on here
1681
- * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9
1682
- *
1683
- * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif
1684
- *
1685
- * Solution:
1686
- *
1687
- * We assume the radius of the polygon is half the size of the canvas at first
1688
- * at each index we check if the text overlaps.
1689
- *
1690
- * Where it does, we store that angle and that index.
1691
- *
1692
- * After finding the largest index and angle we calculate how much we need to remove
1693
- * from the shape radius to move the point inwards by that x.
1694
- *
1695
- * We average the left and right distances to get the maximum shape radius that can fit in the box
1696
- * along with labels.
1697
- *
1698
- * Once we have that, we can find the centre point for the chart, by taking the x text protrusion
1699
- * on each side, removing that from the size, halving it and adding the left x protrusion width.
1700
- *
1701
- * This will mean we have a shape fitted to the canvas, as large as it can be with the labels
1702
- * and position it in the most space efficient manner
1703
- *
1704
- * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif
1705
- */
1706
-
1707
-
1708
- // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.
1709
- // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points
1710
- var largestPossibleRadius = min([(this.height/2 - this.pointLabelFontSize - 5), this.width/2]),
1711
- pointPosition,
1712
- i,
1713
- textWidth,
1714
- halfTextWidth,
1715
- furthestRight = this.width,
1716
- furthestRightIndex,
1717
- furthestRightAngle,
1718
- furthestLeft = 0,
1719
- furthestLeftIndex,
1720
- furthestLeftAngle,
1721
- xProtrusionLeft,
1722
- xProtrusionRight,
1723
- radiusReductionRight,
1724
- radiusReductionLeft,
1725
- maxWidthRadius;
1726
- this.ctx.font = fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily);
1727
- for (i=0;i<this.valuesCount;i++){
1728
- // 5px to space the text slightly out - similar to what we do in the draw function.
1729
- pointPosition = this.getPointPosition(i, largestPossibleRadius);
1730
- textWidth = this.ctx.measureText(template(this.templateString, { value: this.labels[i] })).width + 5;
1731
- if (i === 0 || i === this.valuesCount/2){
1732
- // If we're at index zero, or exactly the middle, we're at exactly the top/bottom
1733
- // of the radar chart, so text will be aligned centrally, so we'll half it and compare
1734
- // w/left and right text sizes
1735
- halfTextWidth = textWidth/2;
1736
- if (pointPosition.x + halfTextWidth > furthestRight) {
1737
- furthestRight = pointPosition.x + halfTextWidth;
1738
- furthestRightIndex = i;
1739
- }
1740
- if (pointPosition.x - halfTextWidth < furthestLeft) {
1741
- furthestLeft = pointPosition.x - halfTextWidth;
1742
- furthestLeftIndex = i;
1743
- }
1744
- }
1745
- else if (i < this.valuesCount/2) {
1746
- // Less than half the values means we'll left align the text
1747
- if (pointPosition.x + textWidth > furthestRight) {
1748
- furthestRight = pointPosition.x + textWidth;
1749
- furthestRightIndex = i;
1750
- }
1751
- }
1752
- else if (i > this.valuesCount/2){
1753
- // More than half the values means we'll right align the text
1754
- if (pointPosition.x - textWidth < furthestLeft) {
1755
- furthestLeft = pointPosition.x - textWidth;
1756
- furthestLeftIndex = i;
1757
- }
1758
- }
1759
- }
1760
-
1761
- xProtrusionLeft = furthestLeft;
1762
-
1763
- xProtrusionRight = Math.ceil(furthestRight - this.width);
1764
-
1765
- furthestRightAngle = this.getIndexAngle(furthestRightIndex);
1766
-
1767
- furthestLeftAngle = this.getIndexAngle(furthestLeftIndex);
1768
-
1769
- radiusReductionRight = xProtrusionRight / Math.sin(furthestRightAngle + Math.PI/2);
1770
-
1771
- radiusReductionLeft = xProtrusionLeft / Math.sin(furthestLeftAngle + Math.PI/2);
1772
-
1773
- // Ensure we actually need to reduce the size of the chart
1774
- radiusReductionRight = (isNumber(radiusReductionRight)) ? radiusReductionRight : 0;
1775
- radiusReductionLeft = (isNumber(radiusReductionLeft)) ? radiusReductionLeft : 0;
1776
-
1777
- this.drawingArea = largestPossibleRadius - (radiusReductionLeft + radiusReductionRight)/2;
1778
-
1779
- //this.drawingArea = min([maxWidthRadius, (this.height - (2 * (this.pointLabelFontSize + 5)))/2])
1780
- this.setCenterPoint(radiusReductionLeft, radiusReductionRight);
1781
-
1782
- },
1783
- setCenterPoint: function(leftMovement, rightMovement){
1784
-
1785
- var maxRight = this.width - rightMovement - this.drawingArea,
1786
- maxLeft = leftMovement + this.drawingArea;
1787
-
1788
- this.xCenter = (maxLeft + maxRight)/2;
1789
- // Always vertically in the centre as the text height doesn't change
1790
- this.yCenter = (this.height/2);
1791
- },
1792
-
1793
- getIndexAngle : function(index){
1794
- var angleMultiplier = (Math.PI * 2) / this.valuesCount;
1795
- // Start from the top instead of right, so remove a quarter of the circle
1796
-
1797
- return index * angleMultiplier - (Math.PI/2);
1798
- },
1799
- getPointPosition : function(index, distanceFromCenter){
1800
- var thisAngle = this.getIndexAngle(index);
1801
- return {
1802
- x : (Math.cos(thisAngle) * distanceFromCenter) + this.xCenter,
1803
- y : (Math.sin(thisAngle) * distanceFromCenter) + this.yCenter
1804
- };
1805
- },
1806
- draw: function(){
1807
- if (this.display){
1808
- var ctx = this.ctx;
1809
- each(this.yLabels, function(label, index){
1810
- // Don't draw a centre value
1811
- if (index > 0){
1812
- var yCenterOffset = index * (this.drawingArea/this.steps),
1813
- yHeight = this.yCenter - yCenterOffset,
1814
- pointPosition;
1815
-
1816
- // Draw circular lines around the scale
1817
- if (this.lineWidth > 0){
1818
- ctx.strokeStyle = this.lineColor;
1819
- ctx.lineWidth = this.lineWidth;
1820
-
1821
- if(this.lineArc){
1822
- ctx.beginPath();
1823
- ctx.arc(this.xCenter, this.yCenter, yCenterOffset, 0, Math.PI*2);
1824
- ctx.closePath();
1825
- ctx.stroke();
1826
- } else{
1827
- ctx.beginPath();
1828
- for (var i=0;i<this.valuesCount;i++)
1829
- {
1830
- pointPosition = this.getPointPosition(i, this.calculateCenterOffset(this.min + (index * this.stepValue)));
1831
- if (i === 0){
1832
- ctx.moveTo(pointPosition.x, pointPosition.y);
1833
- } else {
1834
- ctx.lineTo(pointPosition.x, pointPosition.y);
1835
- }
1836
- }
1837
- ctx.closePath();
1838
- ctx.stroke();
1839
- }
1840
- }
1841
- if(this.showLabels){
1842
- ctx.font = fontString(this.fontSize,this.fontStyle,this.fontFamily);
1843
- if (this.showLabelBackdrop){
1844
- var labelWidth = ctx.measureText(label).width;
1845
- ctx.fillStyle = this.backdropColor;
1846
- ctx.fillRect(
1847
- this.xCenter - labelWidth/2 - this.backdropPaddingX,
1848
- yHeight - this.fontSize/2 - this.backdropPaddingY,
1849
- labelWidth + this.backdropPaddingX*2,
1850
- this.fontSize + this.backdropPaddingY*2
1851
- );
1852
- }
1853
- ctx.textAlign = 'center';
1854
- ctx.textBaseline = "middle";
1855
- ctx.fillStyle = this.fontColor;
1856
- ctx.fillText(label, this.xCenter, yHeight);
1857
- }
1858
- }
1859
- }, this);
1860
-
1861
- if (!this.lineArc){
1862
- ctx.lineWidth = this.angleLineWidth;
1863
- ctx.strokeStyle = this.angleLineColor;
1864
- for (var i = this.valuesCount - 1; i >= 0; i--) {
1865
- if (this.angleLineWidth > 0){
1866
- var outerPosition = this.getPointPosition(i, this.calculateCenterOffset(this.max));
1867
- ctx.beginPath();
1868
- ctx.moveTo(this.xCenter, this.yCenter);
1869
- ctx.lineTo(outerPosition.x, outerPosition.y);
1870
- ctx.stroke();
1871
- ctx.closePath();
1872
- }
1873
- // Extra 3px out for some label spacing
1874
- var pointLabelPosition = this.getPointPosition(i, this.calculateCenterOffset(this.max) + 5);
1875
- ctx.font = fontString(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily);
1876
- ctx.fillStyle = this.pointLabelFontColor;
1877
-
1878
- var labelsCount = this.labels.length,
1879
- halfLabelsCount = this.labels.length/2,
1880
- quarterLabelsCount = halfLabelsCount/2,
1881
- upperHalf = (i < quarterLabelsCount || i > labelsCount - quarterLabelsCount),
1882
- exactQuarter = (i === quarterLabelsCount || i === labelsCount - quarterLabelsCount);
1883
- if (i === 0){
1884
- ctx.textAlign = 'center';
1885
- } else if(i === halfLabelsCount){
1886
- ctx.textAlign = 'center';
1887
- } else if (i < halfLabelsCount){
1888
- ctx.textAlign = 'left';
1889
- } else {
1890
- ctx.textAlign = 'right';
1891
- }
1892
-
1893
- // Set the correct text baseline based on outer positioning
1894
- if (exactQuarter){
1895
- ctx.textBaseline = 'middle';
1896
- } else if (upperHalf){
1897
- ctx.textBaseline = 'bottom';
1898
- } else {
1899
- ctx.textBaseline = 'top';
1900
- }
1901
-
1902
- ctx.fillText(this.labels[i], pointLabelPosition.x, pointLabelPosition.y);
1903
- }
1904
- }
1905
- }
1906
- }
1907
- });
1908
-
1909
- // Attach global event to resize each chart instance when the browser resizes
1910
- helpers.addEvent(window, "resize", (function(){
1911
- // Basic debounce of resize function so it doesn't hurt performance when resizing browser.
1912
- var timeout;
1913
- return function(){
1914
- clearTimeout(timeout);
1915
- timeout = setTimeout(function(){
1916
- each(Chart.instances,function(instance){
1917
- // If the responsive flag is set in the chart instance config
1918
- // Cascade the resize event down to the chart.
1919
- if (instance.options.responsive){
1920
- instance.resize(instance.render, true);
1921
- }
1922
- });
1923
- }, 50);
1924
- };
1925
- })());
1926
-
1927
-
1928
- if (amd) {
1929
- define(function(){
1930
- return Chart;
1931
- });
1932
- } else if (typeof module === 'object' && module.exports) {
1933
- module.exports = Chart;
1934
- }
1935
-
1936
- root.Chart = Chart;
1937
-
1938
- Chart.noConflict = function(){
1939
- root.Chart = previous;
1940
- return Chart;
1941
- };
1942
-
1943
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/src/Chart.Doughnut.js DELETED
@@ -1,184 +0,0 @@
1
- (function(){
2
- "use strict";
3
-
4
- var root = this,
5
- Chart = root.Chart,
6
- //Cache a local reference to Chart.helpers
7
- helpers = Chart.helpers;
8
-
9
- var defaultConfig = {
10
- //Boolean - Whether we should show a stroke on each segment
11
- segmentShowStroke : true,
12
-
13
- //String - The colour of each segment stroke
14
- segmentStrokeColor : "#fff",
15
-
16
- //Number - The width of each segment stroke
17
- segmentStrokeWidth : 2,
18
-
19
- //The percentage of the chart that we cut out of the middle.
20
- percentageInnerCutout : 50,
21
-
22
- //Number - Amount of animation steps
23
- animationSteps : 100,
24
-
25
- //String - Animation easing effect
26
- animationEasing : "easeOutBounce",
27
-
28
- //Boolean - Whether we animate the rotation of the Doughnut
29
- animateRotate : true,
30
-
31
- //Boolean - Whether we animate scaling the Doughnut from the centre
32
- animateScale : false,
33
-
34
- //String - A legend template
35
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
36
-
37
- };
38
-
39
-
40
- Chart.Type.extend({
41
- //Passing in a name registers this chart in the Chart namespace
42
- name: "Doughnut",
43
- //Providing a defaults will also register the deafults in the chart namespace
44
- defaults : defaultConfig,
45
- //Initialize is fired when the chart is initialized - Data is passed in as a parameter
46
- //Config is automatically merged by the core of Chart.js, and is available at this.options
47
- initialize: function(data){
48
-
49
- //Declare segments as a static property to prevent inheriting across the Chart type prototype
50
- this.segments = [];
51
- this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2;
52
-
53
- this.SegmentArc = Chart.Arc.extend({
54
- ctx : this.chart.ctx,
55
- x : this.chart.width/2,
56
- y : this.chart.height/2
57
- });
58
-
59
- //Set up tooltip events on the chart
60
- if (this.options.showTooltips){
61
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
62
- var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : [];
63
-
64
- helpers.each(this.segments,function(segment){
65
- segment.restore(["fillColor"]);
66
- });
67
- helpers.each(activeSegments,function(activeSegment){
68
- activeSegment.fillColor = activeSegment.highlightColor;
69
- });
70
- this.showTooltip(activeSegments);
71
- });
72
- }
73
- this.calculateTotal(data);
74
-
75
- helpers.each(data,function(datapoint, index){
76
- this.addData(datapoint, index, true);
77
- },this);
78
-
79
- this.render();
80
- },
81
- getSegmentsAtEvent : function(e){
82
- var segmentsArray = [];
83
-
84
- var location = helpers.getRelativePosition(e);
85
-
86
- helpers.each(this.segments,function(segment){
87
- if (segment.inRange(location.x,location.y)) segmentsArray.push(segment);
88
- },this);
89
- return segmentsArray;
90
- },
91
- addData : function(segment, atIndex, silent){
92
- var index = atIndex || this.segments.length;
93
- this.segments.splice(index, 0, new this.SegmentArc({
94
- value : segment.value,
95
- outerRadius : (this.options.animateScale) ? 0 : this.outerRadius,
96
- innerRadius : (this.options.animateScale) ? 0 : (this.outerRadius/100) * this.options.percentageInnerCutout,
97
- fillColor : segment.color,
98
- highlightColor : segment.highlight || segment.color,
99
- showStroke : this.options.segmentShowStroke,
100
- strokeWidth : this.options.segmentStrokeWidth,
101
- strokeColor : this.options.segmentStrokeColor,
102
- startAngle : Math.PI * 1.5,
103
- circumference : (this.options.animateRotate) ? 0 : this.calculateCircumference(segment.value),
104
- label : segment.label
105
- }));
106
- if (!silent){
107
- this.reflow();
108
- this.update();
109
- }
110
- },
111
- calculateCircumference : function(value){
112
- return (Math.PI*2)*(value / this.total);
113
- },
114
- calculateTotal : function(data){
115
- this.total = 0;
116
- helpers.each(data,function(segment){
117
- this.total += segment.value;
118
- },this);
119
- },
120
- update : function(){
121
- this.calculateTotal(this.segments);
122
-
123
- // Reset any highlight colours before updating.
124
- helpers.each(this.activeElements, function(activeElement){
125
- activeElement.restore(['fillColor']);
126
- });
127
-
128
- helpers.each(this.segments,function(segment){
129
- segment.save();
130
- });
131
- this.render();
132
- },
133
-
134
- removeData: function(atIndex){
135
- var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1;
136
- this.segments.splice(indexToDelete, 1);
137
- this.reflow();
138
- this.update();
139
- },
140
-
141
- reflow : function(){
142
- helpers.extend(this.SegmentArc.prototype,{
143
- x : this.chart.width/2,
144
- y : this.chart.height/2
145
- });
146
- this.outerRadius = (helpers.min([this.chart.width,this.chart.height]) - this.options.segmentStrokeWidth/2)/2;
147
- helpers.each(this.segments, function(segment){
148
- segment.update({
149
- outerRadius : this.outerRadius,
150
- innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout
151
- });
152
- }, this);
153
- },
154
- draw : function(easeDecimal){
155
- var animDecimal = (easeDecimal) ? easeDecimal : 1;
156
- this.clear();
157
- helpers.each(this.segments,function(segment,index){
158
- segment.transition({
159
- circumference : this.calculateCircumference(segment.value),
160
- outerRadius : this.outerRadius,
161
- innerRadius : (this.outerRadius/100) * this.options.percentageInnerCutout
162
- },animDecimal);
163
-
164
- segment.endAngle = segment.startAngle + segment.circumference;
165
-
166
- segment.draw();
167
- if (index === 0){
168
- segment.startAngle = Math.PI * 1.5;
169
- }
170
- //Check to see if it's the last segment, if not get the next and update the start angle
171
- if (index < this.segments.length-1){
172
- this.segments[index+1].startAngle = segment.endAngle;
173
- }
174
- },this);
175
-
176
- }
177
- });
178
-
179
- Chart.types.Doughnut.extend({
180
- name : "Pie",
181
- defaults : helpers.merge(defaultConfig,{percentageInnerCutout : 0})
182
- });
183
-
184
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/src/Chart.Line.js DELETED
@@ -1,366 +0,0 @@
1
- (function(){
2
- "use strict";
3
-
4
- var root = this,
5
- Chart = root.Chart,
6
- helpers = Chart.helpers;
7
-
8
- var defaultConfig = {
9
-
10
- ///Boolean - Whether grid lines are shown across the chart
11
- scaleShowGridLines : true,
12
-
13
- //String - Colour of the grid lines
14
- scaleGridLineColor : "rgba(0,0,0,.05)",
15
-
16
- //Number - Width of the grid lines
17
- scaleGridLineWidth : 1,
18
-
19
- //Boolean - Whether the line is curved between points
20
- bezierCurve : true,
21
-
22
- //Number - Tension of the bezier curve between points
23
- bezierCurveTension : 0.4,
24
-
25
- //Boolean - Whether to show a dot for each point
26
- pointDot : true,
27
-
28
- //Number - Radius of each point dot in pixels
29
- pointDotRadius : 4,
30
-
31
- //Number - Pixel width of point dot stroke
32
- pointDotStrokeWidth : 1,
33
-
34
- //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
35
- pointHitDetectionRadius : 20,
36
-
37
- //Boolean - Whether to show a stroke for datasets
38
- datasetStroke : true,
39
-
40
- //Number - Pixel width of dataset stroke
41
- datasetStrokeWidth : 2,
42
-
43
- //Boolean - Whether to fill the dataset with a colour
44
- datasetFill : true,
45
-
46
- //String - A legend template
47
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
48
-
49
- };
50
-
51
-
52
- Chart.Type.extend({
53
- name: "Line",
54
- defaults : defaultConfig,
55
- initialize: function(data){
56
- //Declare the extension of the default point, to cater for the options passed in to the constructor
57
- this.PointClass = Chart.Point.extend({
58
- strokeWidth : this.options.pointDotStrokeWidth,
59
- radius : this.options.pointDotRadius,
60
- display: this.options.pointDot,
61
- hitDetectionRadius : this.options.pointHitDetectionRadius,
62
- ctx : this.chart.ctx,
63
- inRange : function(mouseX){
64
- return (Math.pow(mouseX-this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius,2));
65
- }
66
- });
67
-
68
- this.datasets = [];
69
-
70
- //Set up tooltip events on the chart
71
- if (this.options.showTooltips){
72
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
73
- var activePoints = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : [];
74
- this.eachPoints(function(point){
75
- point.restore(['fillColor', 'strokeColor']);
76
- });
77
- helpers.each(activePoints, function(activePoint){
78
- activePoint.fillColor = activePoint.highlightFill;
79
- activePoint.strokeColor = activePoint.highlightStroke;
80
- });
81
- this.showTooltip(activePoints);
82
- });
83
- }
84
-
85
- //Iterate through each of the datasets, and build this into a property of the chart
86
- helpers.each(data.datasets,function(dataset){
87
-
88
- var datasetObject = {
89
- label : dataset.label || null,
90
- fillColor : dataset.fillColor,
91
- strokeColor : dataset.strokeColor,
92
- pointColor : dataset.pointColor,
93
- pointStrokeColor : dataset.pointStrokeColor,
94
- points : []
95
- };
96
-
97
- this.datasets.push(datasetObject);
98
-
99
-
100
- helpers.each(dataset.data,function(dataPoint,index){
101
- //Add a new point for each piece of data, passing any required data to draw.
102
- datasetObject.points.push(new this.PointClass({
103
- value : dataPoint,
104
- label : data.labels[index],
105
- datasetLabel: dataset.label,
106
- strokeColor : dataset.pointStrokeColor,
107
- fillColor : dataset.pointColor,
108
- highlightFill : dataset.pointHighlightFill || dataset.pointColor,
109
- highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor
110
- }));
111
- },this);
112
-
113
- this.buildScale(data.labels);
114
-
115
-
116
- this.eachPoints(function(point, index){
117
- helpers.extend(point, {
118
- x: this.scale.calculateX(index),
119
- y: this.scale.endPoint
120
- });
121
- point.save();
122
- }, this);
123
-
124
- },this);
125
-
126
-
127
- this.render();
128
- },
129
- update : function(){
130
- this.scale.update();
131
- // Reset any highlight colours before updating.
132
- helpers.each(this.activeElements, function(activeElement){
133
- activeElement.restore(['fillColor', 'strokeColor']);
134
- });
135
- this.eachPoints(function(point){
136
- point.save();
137
- });
138
- this.render();
139
- },
140
- eachPoints : function(callback){
141
- helpers.each(this.datasets,function(dataset){
142
- helpers.each(dataset.points,callback,this);
143
- },this);
144
- },
145
- getPointsAtEvent : function(e){
146
- var pointsArray = [],
147
- eventPosition = helpers.getRelativePosition(e);
148
- helpers.each(this.datasets,function(dataset){
149
- helpers.each(dataset.points,function(point){
150
- if (point.inRange(eventPosition.x,eventPosition.y)) pointsArray.push(point);
151
- });
152
- },this);
153
- return pointsArray;
154
- },
155
- buildScale : function(labels){
156
- var self = this;
157
-
158
- var dataTotal = function(){
159
- var values = [];
160
- self.eachPoints(function(point){
161
- values.push(point.value);
162
- });
163
-
164
- return values;
165
- };
166
-
167
- var scaleOptions = {
168
- templateString : this.options.scaleLabel,
169
- height : this.chart.height,
170
- width : this.chart.width,
171
- ctx : this.chart.ctx,
172
- textColor : this.options.scaleFontColor,
173
- fontSize : this.options.scaleFontSize,
174
- fontStyle : this.options.scaleFontStyle,
175
- fontFamily : this.options.scaleFontFamily,
176
- valuesCount : labels.length,
177
- beginAtZero : this.options.scaleBeginAtZero,
178
- integersOnly : this.options.scaleIntegersOnly,
179
- calculateYRange : function(currentHeight){
180
- var updatedRanges = helpers.calculateScaleRange(
181
- dataTotal(),
182
- currentHeight,
183
- this.fontSize,
184
- this.beginAtZero,
185
- this.integersOnly
186
- );
187
- helpers.extend(this, updatedRanges);
188
- },
189
- xLabels : labels,
190
- font : helpers.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily),
191
- lineWidth : this.options.scaleLineWidth,
192
- lineColor : this.options.scaleLineColor,
193
- gridLineWidth : (this.options.scaleShowGridLines) ? this.options.scaleGridLineWidth : 0,
194
- gridLineColor : (this.options.scaleShowGridLines) ? this.options.scaleGridLineColor : "rgba(0,0,0,0)",
195
- padding: (this.options.showScale) ? 0 : this.options.pointDotRadius + this.options.pointDotStrokeWidth,
196
- showLabels : this.options.scaleShowLabels,
197
- display : this.options.showScale
198
- };
199
-
200
- if (this.options.scaleOverride){
201
- helpers.extend(scaleOptions, {
202
- calculateYRange: helpers.noop,
203
- steps: this.options.scaleSteps,
204
- stepValue: this.options.scaleStepWidth,
205
- min: this.options.scaleStartValue,
206
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
207
- });
208
- }
209
-
210
-
211
- this.scale = new Chart.Scale(scaleOptions);
212
- },
213
- addData : function(valuesArray,label){
214
- //Map the values array for each of the datasets
215
-
216
- helpers.each(valuesArray,function(value,datasetIndex){
217
- //Add a new point for each piece of data, passing any required data to draw.
218
- this.datasets[datasetIndex].points.push(new this.PointClass({
219
- value : value,
220
- label : label,
221
- x: this.scale.calculateX(this.scale.valuesCount+1),
222
- y: this.scale.endPoint,
223
- strokeColor : this.datasets[datasetIndex].pointStrokeColor,
224
- fillColor : this.datasets[datasetIndex].pointColor
225
- }));
226
- },this);
227
-
228
- this.scale.addXLabel(label);
229
- //Then re-render the chart.
230
- this.update();
231
- },
232
- removeData : function(){
233
- this.scale.removeXLabel();
234
- //Then re-render the chart.
235
- helpers.each(this.datasets,function(dataset){
236
- dataset.points.shift();
237
- },this);
238
- this.update();
239
- },
240
- reflow : function(){
241
- var newScaleProps = helpers.extend({
242
- height : this.chart.height,
243
- width : this.chart.width
244
- });
245
- this.scale.update(newScaleProps);
246
- },
247
- draw : function(ease){
248
- var easingDecimal = ease || 1;
249
- this.clear();
250
-
251
- var ctx = this.chart.ctx;
252
-
253
- // Some helper methods for getting the next/prev points
254
- var hasValue = function(item){
255
- return item.value !== null;
256
- },
257
- nextPoint = function(point, collection, index){
258
- return helpers.findNextWhere(collection, hasValue, index) || point;
259
- },
260
- previousPoint = function(point, collection, index){
261
- return helpers.findPreviousWhere(collection, hasValue, index) || point;
262
- };
263
-
264
- this.scale.draw(easingDecimal);
265
-
266
-
267
- helpers.each(this.datasets,function(dataset){
268
- var pointsWithValues = helpers.where(dataset.points, hasValue);
269
-
270
- //Transition each point first so that the line and point drawing isn't out of sync
271
- //We can use this extra loop to calculate the control points of this dataset also in this loop
272
-
273
- helpers.each(dataset.points, function(point, index){
274
- if (point.hasValue()){
275
- point.transition({
276
- y : this.scale.calculateY(point.value),
277
- x : this.scale.calculateX(index)
278
- }, easingDecimal);
279
- }
280
- },this);
281
-
282
-
283
- // Control points need to be calculated in a seperate loop, because we need to know the current x/y of the point
284
- // This would cause issues when there is no animation, because the y of the next point would be 0, so beziers would be skewed
285
- if (this.options.bezierCurve){
286
- helpers.each(pointsWithValues, function(point, index){
287
- var tension = (index > 0 && index < pointsWithValues.length - 1) ? this.options.bezierCurveTension : 0;
288
- point.controlPoints = helpers.splineCurve(
289
- previousPoint(point, pointsWithValues, index),
290
- point,
291
- nextPoint(point, pointsWithValues, index),
292
- tension
293
- );
294
-
295
- // Prevent the bezier going outside of the bounds of the graph
296
-
297
- // Cap puter bezier handles to the upper/lower scale bounds
298
- if (point.controlPoints.outer.y > this.scale.endPoint){
299
- point.controlPoints.outer.y = this.scale.endPoint;
300
- }
301
- else if (point.controlPoints.outer.y < this.scale.startPoint){
302
- point.controlPoints.outer.y = this.scale.startPoint;
303
- }
304
-
305
- // Cap inner bezier handles to the upper/lower scale bounds
306
- if (point.controlPoints.inner.y > this.scale.endPoint){
307
- point.controlPoints.inner.y = this.scale.endPoint;
308
- }
309
- else if (point.controlPoints.inner.y < this.scale.startPoint){
310
- point.controlPoints.inner.y = this.scale.startPoint;
311
- }
312
- },this);
313
- }
314
-
315
-
316
- //Draw the line between all the points
317
- ctx.lineWidth = this.options.datasetStrokeWidth;
318
- ctx.strokeStyle = dataset.strokeColor;
319
- ctx.beginPath();
320
-
321
- helpers.each(pointsWithValues, function(point, index){
322
- if (index === 0){
323
- ctx.moveTo(point.x, point.y);
324
- }
325
- else{
326
- if(this.options.bezierCurve){
327
- var previous = previousPoint(point, pointsWithValues, index);
328
-
329
- ctx.bezierCurveTo(
330
- previous.controlPoints.outer.x,
331
- previous.controlPoints.outer.y,
332
- point.controlPoints.inner.x,
333
- point.controlPoints.inner.y,
334
- point.x,
335
- point.y
336
- );
337
- }
338
- else{
339
- ctx.lineTo(point.x,point.y);
340
- }
341
- }
342
- }, this);
343
-
344
- ctx.stroke();
345
-
346
- if (this.options.datasetFill && pointsWithValues.length > 0){
347
- //Round off the line by going to the base of the chart, back to the start, then fill.
348
- ctx.lineTo(pointsWithValues[pointsWithValues.length - 1].x, this.scale.endPoint);
349
- ctx.lineTo(pointsWithValues[0].x, this.scale.endPoint);
350
- ctx.fillStyle = dataset.fillColor;
351
- ctx.closePath();
352
- ctx.fill();
353
- }
354
-
355
- //Now draw the points over the line
356
- //A little inefficient double looping, but better than the line
357
- //lagging behind the point positions
358
- helpers.each(pointsWithValues,function(point){
359
- point.draw();
360
- });
361
- },this);
362
- }
363
- });
364
-
365
-
366
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/src/Chart.PolarArea.js DELETED
@@ -1,248 +0,0 @@
1
- (function(){
2
- "use strict";
3
-
4
- var root = this,
5
- Chart = root.Chart,
6
- //Cache a local reference to Chart.helpers
7
- helpers = Chart.helpers;
8
-
9
- var defaultConfig = {
10
- //Boolean - Show a backdrop to the scale label
11
- scaleShowLabelBackdrop : true,
12
-
13
- //String - The colour of the label backdrop
14
- scaleBackdropColor : "rgba(255,255,255,0.75)",
15
-
16
- // Boolean - Whether the scale should begin at zero
17
- scaleBeginAtZero : true,
18
-
19
- //Number - The backdrop padding above & below the label in pixels
20
- scaleBackdropPaddingY : 2,
21
-
22
- //Number - The backdrop padding to the side of the label in pixels
23
- scaleBackdropPaddingX : 2,
24
-
25
- //Boolean - Show line for each value in the scale
26
- scaleShowLine : true,
27
-
28
- //Boolean - Stroke a line around each segment in the chart
29
- segmentShowStroke : true,
30
-
31
- //String - The colour of the stroke on each segement.
32
- segmentStrokeColor : "#fff",
33
-
34
- //Number - The width of the stroke value in pixels
35
- segmentStrokeWidth : 2,
36
-
37
- //Number - Amount of animation steps
38
- animationSteps : 100,
39
-
40
- //String - Animation easing effect.
41
- animationEasing : "easeOutBounce",
42
-
43
- //Boolean - Whether to animate the rotation of the chart
44
- animateRotate : true,
45
-
46
- //Boolean - Whether to animate scaling the chart from the centre
47
- animateScale : false,
48
-
49
- //String - A legend template
50
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
51
- };
52
-
53
-
54
- Chart.Type.extend({
55
- //Passing in a name registers this chart in the Chart namespace
56
- name: "PolarArea",
57
- //Providing a defaults will also register the deafults in the chart namespace
58
- defaults : defaultConfig,
59
- //Initialize is fired when the chart is initialized - Data is passed in as a parameter
60
- //Config is automatically merged by the core of Chart.js, and is available at this.options
61
- initialize: function(data){
62
- this.segments = [];
63
- //Declare segment class as a chart instance specific class, so it can share props for this instance
64
- this.SegmentArc = Chart.Arc.extend({
65
- showStroke : this.options.segmentShowStroke,
66
- strokeWidth : this.options.segmentStrokeWidth,
67
- strokeColor : this.options.segmentStrokeColor,
68
- ctx : this.chart.ctx,
69
- innerRadius : 0,
70
- x : this.chart.width/2,
71
- y : this.chart.height/2
72
- });
73
- this.scale = new Chart.RadialScale({
74
- display: this.options.showScale,
75
- fontStyle: this.options.scaleFontStyle,
76
- fontSize: this.options.scaleFontSize,
77
- fontFamily: this.options.scaleFontFamily,
78
- fontColor: this.options.scaleFontColor,
79
- showLabels: this.options.scaleShowLabels,
80
- showLabelBackdrop: this.options.scaleShowLabelBackdrop,
81
- backdropColor: this.options.scaleBackdropColor,
82
- backdropPaddingY : this.options.scaleBackdropPaddingY,
83
- backdropPaddingX: this.options.scaleBackdropPaddingX,
84
- lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0,
85
- lineColor: this.options.scaleLineColor,
86
- lineArc: true,
87
- width: this.chart.width,
88
- height: this.chart.height,
89
- xCenter: this.chart.width/2,
90
- yCenter: this.chart.height/2,
91
- ctx : this.chart.ctx,
92
- templateString: this.options.scaleLabel,
93
- valuesCount: data.length
94
- });
95
-
96
- this.updateScaleRange(data);
97
-
98
- this.scale.update();
99
-
100
- helpers.each(data,function(segment,index){
101
- this.addData(segment,index,true);
102
- },this);
103
-
104
- //Set up tooltip events on the chart
105
- if (this.options.showTooltips){
106
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
107
- var activeSegments = (evt.type !== 'mouseout') ? this.getSegmentsAtEvent(evt) : [];
108
- helpers.each(this.segments,function(segment){
109
- segment.restore(["fillColor"]);
110
- });
111
- helpers.each(activeSegments,function(activeSegment){
112
- activeSegment.fillColor = activeSegment.highlightColor;
113
- });
114
- this.showTooltip(activeSegments);
115
- });
116
- }
117
-
118
- this.render();
119
- },
120
- getSegmentsAtEvent : function(e){
121
- var segmentsArray = [];
122
-
123
- var location = helpers.getRelativePosition(e);
124
-
125
- helpers.each(this.segments,function(segment){
126
- if (segment.inRange(location.x,location.y)) segmentsArray.push(segment);
127
- },this);
128
- return segmentsArray;
129
- },
130
- addData : function(segment, atIndex, silent){
131
- var index = atIndex || this.segments.length;
132
-
133
- this.segments.splice(index, 0, new this.SegmentArc({
134
- fillColor: segment.color,
135
- highlightColor: segment.highlight || segment.color,
136
- label: segment.label,
137
- value: segment.value,
138
- outerRadius: (this.options.animateScale) ? 0 : this.scale.calculateCenterOffset(segment.value),
139
- circumference: (this.options.animateRotate) ? 0 : this.scale.getCircumference(),
140
- startAngle: Math.PI * 1.5
141
- }));
142
- if (!silent){
143
- this.reflow();
144
- this.update();
145
- }
146
- },
147
- removeData: function(atIndex){
148
- var indexToDelete = (helpers.isNumber(atIndex)) ? atIndex : this.segments.length-1;
149
- this.segments.splice(indexToDelete, 1);
150
- this.reflow();
151
- this.update();
152
- },
153
- calculateTotal: function(data){
154
- this.total = 0;
155
- helpers.each(data,function(segment){
156
- this.total += segment.value;
157
- },this);
158
- this.scale.valuesCount = this.segments.length;
159
- },
160
- updateScaleRange: function(datapoints){
161
- var valuesArray = [];
162
- helpers.each(datapoints,function(segment){
163
- valuesArray.push(segment.value);
164
- });
165
-
166
- var scaleSizes = (this.options.scaleOverride) ?
167
- {
168
- steps: this.options.scaleSteps,
169
- stepValue: this.options.scaleStepWidth,
170
- min: this.options.scaleStartValue,
171
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
172
- } :
173
- helpers.calculateScaleRange(
174
- valuesArray,
175
- helpers.min([this.chart.width, this.chart.height])/2,
176
- this.options.scaleFontSize,
177
- this.options.scaleBeginAtZero,
178
- this.options.scaleIntegersOnly
179
- );
180
-
181
- helpers.extend(
182
- this.scale,
183
- scaleSizes,
184
- {
185
- size: helpers.min([this.chart.width, this.chart.height]),
186
- xCenter: this.chart.width/2,
187
- yCenter: this.chart.height/2
188
- }
189
- );
190
-
191
- },
192
- update : function(){
193
- this.calculateTotal(this.segments);
194
-
195
- helpers.each(this.segments,function(segment){
196
- segment.save();
197
- });
198
- this.render();
199
- },
200
- reflow : function(){
201
- helpers.extend(this.SegmentArc.prototype,{
202
- x : this.chart.width/2,
203
- y : this.chart.height/2
204
- });
205
- this.updateScaleRange(this.segments);
206
- this.scale.update();
207
-
208
- helpers.extend(this.scale,{
209
- xCenter: this.chart.width/2,
210
- yCenter: this.chart.height/2
211
- });
212
-
213
- helpers.each(this.segments, function(segment){
214
- segment.update({
215
- outerRadius : this.scale.calculateCenterOffset(segment.value)
216
- });
217
- }, this);
218
-
219
- },
220
- draw : function(ease){
221
- var easingDecimal = ease || 1;
222
- //Clear & draw the canvas
223
- this.clear();
224
- helpers.each(this.segments,function(segment, index){
225
- segment.transition({
226
- circumference : this.scale.getCircumference(),
227
- outerRadius : this.scale.calculateCenterOffset(segment.value)
228
- },easingDecimal);
229
-
230
- segment.endAngle = segment.startAngle + segment.circumference;
231
-
232
- // If we've removed the first segment we need to set the first one to
233
- // start at the top.
234
- if (index === 0){
235
- segment.startAngle = Math.PI * 1.5;
236
- }
237
-
238
- //Check to see if it's the last segment, if not get the next and update the start angle
239
- if (index < this.segments.length - 1){
240
- this.segments[index+1].startAngle = segment.endAngle;
241
- }
242
- segment.draw();
243
- }, this);
244
- this.scale.draw();
245
- }
246
- });
247
-
248
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/src/Chart.Radar.js DELETED
@@ -1,343 +0,0 @@
1
- (function(){
2
- "use strict";
3
-
4
- var root = this,
5
- Chart = root.Chart,
6
- helpers = Chart.helpers;
7
-
8
-
9
-
10
- Chart.Type.extend({
11
- name: "Radar",
12
- defaults:{
13
- //Boolean - Whether to show lines for each scale point
14
- scaleShowLine : true,
15
-
16
- //Boolean - Whether we show the angle lines out of the radar
17
- angleShowLineOut : true,
18
-
19
- //Boolean - Whether to show labels on the scale
20
- scaleShowLabels : false,
21
-
22
- // Boolean - Whether the scale should begin at zero
23
- scaleBeginAtZero : true,
24
-
25
- //String - Colour of the angle line
26
- angleLineColor : "rgba(0,0,0,.1)",
27
-
28
- //Number - Pixel width of the angle line
29
- angleLineWidth : 1,
30
-
31
- //String - Point label font declaration
32
- pointLabelFontFamily : "'Arial'",
33
-
34
- //String - Point label font weight
35
- pointLabelFontStyle : "normal",
36
-
37
- //Number - Point label font size in pixels
38
- pointLabelFontSize : 10,
39
-
40
- //String - Point label font colour
41
- pointLabelFontColor : "#666",
42
-
43
- //Boolean - Whether to show a dot for each point
44
- pointDot : true,
45
-
46
- //Number - Radius of each point dot in pixels
47
- pointDotRadius : 3,
48
-
49
- //Number - Pixel width of point dot stroke
50
- pointDotStrokeWidth : 1,
51
-
52
- //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
53
- pointHitDetectionRadius : 20,
54
-
55
- //Boolean - Whether to show a stroke for datasets
56
- datasetStroke : true,
57
-
58
- //Number - Pixel width of dataset stroke
59
- datasetStrokeWidth : 2,
60
-
61
- //Boolean - Whether to fill the dataset with a colour
62
- datasetFill : true,
63
-
64
- //String - A legend template
65
- legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
66
-
67
- },
68
-
69
- initialize: function(data){
70
- this.PointClass = Chart.Point.extend({
71
- strokeWidth : this.options.pointDotStrokeWidth,
72
- radius : this.options.pointDotRadius,
73
- display: this.options.pointDot,
74
- hitDetectionRadius : this.options.pointHitDetectionRadius,
75
- ctx : this.chart.ctx
76
- });
77
-
78
- this.datasets = [];
79
-
80
- this.buildScale(data);
81
-
82
- //Set up tooltip events on the chart
83
- if (this.options.showTooltips){
84
- helpers.bindEvents(this, this.options.tooltipEvents, function(evt){
85
- var activePointsCollection = (evt.type !== 'mouseout') ? this.getPointsAtEvent(evt) : [];
86
-
87
- this.eachPoints(function(point){
88
- point.restore(['fillColor', 'strokeColor']);
89
- });
90
- helpers.each(activePointsCollection, function(activePoint){
91
- activePoint.fillColor = activePoint.highlightFill;
92
- activePoint.strokeColor = activePoint.highlightStroke;
93
- });
94
-
95
- this.showTooltip(activePointsCollection);
96
- });
97
- }
98
-
99
- //Iterate through each of the datasets, and build this into a property of the chart
100
- helpers.each(data.datasets,function(dataset){
101
-
102
- var datasetObject = {
103
- label: dataset.label || null,
104
- fillColor : dataset.fillColor,
105
- strokeColor : dataset.strokeColor,
106
- pointColor : dataset.pointColor,
107
- pointStrokeColor : dataset.pointStrokeColor,
108
- points : []
109
- };
110
-
111
- this.datasets.push(datasetObject);
112
-
113
- helpers.each(dataset.data,function(dataPoint,index){
114
- //Add a new point for each piece of data, passing any required data to draw.
115
- var pointPosition;
116
- if (!this.scale.animation){
117
- pointPosition = this.scale.getPointPosition(index, this.scale.calculateCenterOffset(dataPoint));
118
- }
119
- datasetObject.points.push(new this.PointClass({
120
- value : dataPoint,
121
- label : data.labels[index],
122
- datasetLabel: dataset.label,
123
- x: (this.options.animation) ? this.scale.xCenter : pointPosition.x,
124
- y: (this.options.animation) ? this.scale.yCenter : pointPosition.y,
125
- strokeColor : dataset.pointStrokeColor,
126
- fillColor : dataset.pointColor,
127
- highlightFill : dataset.pointHighlightFill || dataset.pointColor,
128
- highlightStroke : dataset.pointHighlightStroke || dataset.pointStrokeColor
129
- }));
130
- },this);
131
-
132
- },this);
133
-
134
- this.render();
135
- },
136
- eachPoints : function(callback){
137
- helpers.each(this.datasets,function(dataset){
138
- helpers.each(dataset.points,callback,this);
139
- },this);
140
- },
141
-
142
- getPointsAtEvent : function(evt){
143
- var mousePosition = helpers.getRelativePosition(evt),
144
- fromCenter = helpers.getAngleFromPoint({
145
- x: this.scale.xCenter,
146
- y: this.scale.yCenter
147
- }, mousePosition);
148
-
149
- var anglePerIndex = (Math.PI * 2) /this.scale.valuesCount,
150
- pointIndex = Math.round((fromCenter.angle - Math.PI * 1.5) / anglePerIndex),
151
- activePointsCollection = [];
152
-
153
- // If we're at the top, make the pointIndex 0 to get the first of the array.
154
- if (pointIndex >= this.scale.valuesCount || pointIndex < 0){
155
- pointIndex = 0;
156
- }
157
-
158
- if (fromCenter.distance <= this.scale.drawingArea){
159
- helpers.each(this.datasets, function(dataset){
160
- activePointsCollection.push(dataset.points[pointIndex]);
161
- });
162
- }
163
-
164
- return activePointsCollection;
165
- },
166
-
167
- buildScale : function(data){
168
- this.scale = new Chart.RadialScale({
169
- display: this.options.showScale,
170
- fontStyle: this.options.scaleFontStyle,
171
- fontSize: this.options.scaleFontSize,
172
- fontFamily: this.options.scaleFontFamily,
173
- fontColor: this.options.scaleFontColor,
174
- showLabels: this.options.scaleShowLabels,
175
- showLabelBackdrop: this.options.scaleShowLabelBackdrop,
176
- backdropColor: this.options.scaleBackdropColor,
177
- backdropPaddingY : this.options.scaleBackdropPaddingY,
178
- backdropPaddingX: this.options.scaleBackdropPaddingX,
179
- lineWidth: (this.options.scaleShowLine) ? this.options.scaleLineWidth : 0,
180
- lineColor: this.options.scaleLineColor,
181
- angleLineColor : this.options.angleLineColor,
182
- angleLineWidth : (this.options.angleShowLineOut) ? this.options.angleLineWidth : 0,
183
- // Point labels at the edge of each line
184
- pointLabelFontColor : this.options.pointLabelFontColor,
185
- pointLabelFontSize : this.options.pointLabelFontSize,
186
- pointLabelFontFamily : this.options.pointLabelFontFamily,
187
- pointLabelFontStyle : this.options.pointLabelFontStyle,
188
- height : this.chart.height,
189
- width: this.chart.width,
190
- xCenter: this.chart.width/2,
191
- yCenter: this.chart.height/2,
192
- ctx : this.chart.ctx,
193
- templateString: this.options.scaleLabel,
194
- labels: data.labels,
195
- valuesCount: data.datasets[0].data.length
196
- });
197
-
198
- this.scale.setScaleSize();
199
- this.updateScaleRange(data.datasets);
200
- this.scale.buildYLabels();
201
- },
202
- updateScaleRange: function(datasets){
203
- var valuesArray = (function(){
204
- var totalDataArray = [];
205
- helpers.each(datasets,function(dataset){
206
- if (dataset.data){
207
- totalDataArray = totalDataArray.concat(dataset.data);
208
- }
209
- else {
210
- helpers.each(dataset.points, function(point){
211
- totalDataArray.push(point.value);
212
- });
213
- }
214
- });
215
- return totalDataArray;
216
- })();
217
-
218
-
219
- var scaleSizes = (this.options.scaleOverride) ?
220
- {
221
- steps: this.options.scaleSteps,
222
- stepValue: this.options.scaleStepWidth,
223
- min: this.options.scaleStartValue,
224
- max: this.options.scaleStartValue + (this.options.scaleSteps * this.options.scaleStepWidth)
225
- } :
226
- helpers.calculateScaleRange(
227
- valuesArray,
228
- helpers.min([this.chart.width, this.chart.height])/2,
229
- this.options.scaleFontSize,
230
- this.options.scaleBeginAtZero,
231
- this.options.scaleIntegersOnly
232
- );
233
-
234
- helpers.extend(
235
- this.scale,
236
- scaleSizes
237
- );
238
-
239
- },
240
- addData : function(valuesArray,label){
241
- //Map the values array for each of the datasets
242
- this.scale.valuesCount++;
243
- helpers.each(valuesArray,function(value,datasetIndex){
244
- var pointPosition = this.scale.getPointPosition(this.scale.valuesCount, this.scale.calculateCenterOffset(value));
245
- this.datasets[datasetIndex].points.push(new this.PointClass({
246
- value : value,
247
- label : label,
248
- x: pointPosition.x,
249
- y: pointPosition.y,
250
- strokeColor : this.datasets[datasetIndex].pointStrokeColor,
251
- fillColor : this.datasets[datasetIndex].pointColor
252
- }));
253
- },this);
254
-
255
- this.scale.labels.push(label);
256
-
257
- this.reflow();
258
-
259
- this.update();
260
- },
261
- removeData : function(){
262
- this.scale.valuesCount--;
263
- this.scale.labels.shift();
264
- helpers.each(this.datasets,function(dataset){
265
- dataset.points.shift();
266
- },this);
267
- this.reflow();
268
- this.update();
269
- },
270
- update : function(){
271
- this.eachPoints(function(point){
272
- point.save();
273
- });
274
- this.reflow();
275
- this.render();
276
- },
277
- reflow: function(){
278
- helpers.extend(this.scale, {
279
- width : this.chart.width,
280
- height: this.chart.height,
281
- size : helpers.min([this.chart.width, this.chart.height]),
282
- xCenter: this.chart.width/2,
283
- yCenter: this.chart.height/2
284
- });
285
- this.updateScaleRange(this.datasets);
286
- this.scale.setScaleSize();
287
- this.scale.buildYLabels();
288
- },
289
- draw : function(ease){
290
- var easeDecimal = ease || 1,
291
- ctx = this.chart.ctx;
292
- this.clear();
293
- this.scale.draw();
294
-
295
- helpers.each(this.datasets,function(dataset){
296
-
297
- //Transition each point first so that the line and point drawing isn't out of sync
298
- helpers.each(dataset.points,function(point,index){
299
- if (point.hasValue()){
300
- point.transition(this.scale.getPointPosition(index, this.scale.calculateCenterOffset(point.value)), easeDecimal);
301
- }
302
- },this);
303
-
304
-
305
-
306
- //Draw the line between all the points
307
- ctx.lineWidth = this.options.datasetStrokeWidth;
308
- ctx.strokeStyle = dataset.strokeColor;
309
- ctx.beginPath();
310
- helpers.each(dataset.points,function(point,index){
311
- if (index === 0){
312
- ctx.moveTo(point.x,point.y);
313
- }
314
- else{
315
- ctx.lineTo(point.x,point.y);
316
- }
317
- },this);
318
- ctx.closePath();
319
- ctx.stroke();
320
-
321
- ctx.fillStyle = dataset.fillColor;
322
- ctx.fill();
323
-
324
- //Now draw the points over the line
325
- //A little inefficient double looping, but better than the line
326
- //lagging behind the point positions
327
- helpers.each(dataset.points,function(point){
328
- if (point.hasValue()){
329
- point.draw();
330
- }
331
- });
332
-
333
- },this);
334
-
335
- }
336
-
337
- });
338
-
339
-
340
-
341
-
342
-
343
- }).call(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Chart_js/utils.js DELETED
@@ -1,147 +0,0 @@
1
- 'use strict';
2
-
3
- window.chartColors = {
4
- red: 'rgb(255, 99, 132)',
5
- orange: 'rgb(255, 159, 64)',
6
- yellow: 'rgb(255, 205, 86)',
7
- green: 'rgb(75, 192, 192)',
8
- blue: 'rgb(54, 162, 235)',
9
- purple: 'rgb(153, 102, 255)',
10
- grey: 'rgb(201, 203, 207)'
11
- };
12
-
13
- (function(global) {
14
- var MONTHS = [
15
- 'January',
16
- 'February',
17
- 'March',
18
- 'April',
19
- 'May',
20
- 'June',
21
- 'July',
22
- 'August',
23
- 'September',
24
- 'October',
25
- 'November',
26
- 'December'
27
- ];
28
-
29
- var COLORS = [
30
- '#4dc9f6',
31
- '#f67019',
32
- '#f53794',
33
- '#537bc4',
34
- '#acc236',
35
- '#166a8f',
36
- '#00a950',
37
- '#58595b',
38
- '#8549ba'
39
- ];
40
-
41
- var Samples = global.Samples || (global.Samples = {});
42
- var Color = global.Color;
43
-
44
- Samples.utils = {
45
- // Adapted from http://indiegamr.com/generate-repeatable-random-numbers-in-js/
46
- srand: function(seed) {
47
- this._seed = seed;
48
- },
49
-
50
- rand: function(min, max) {
51
- var seed = this._seed;
52
- min = min === undefined ? 0 : min;
53
- max = max === undefined ? 1 : max;
54
- this._seed = (seed * 9301 + 49297) % 233280;
55
- return min + (this._seed / 233280) * (max - min);
56
- },
57
-
58
- numbers: function(config) {
59
- var cfg = config || {};
60
- var min = cfg.min || 0;
61
- var max = cfg.max || 1;
62
- var from = cfg.from || [];
63
- var count = cfg.count || 8;
64
- var decimals = cfg.decimals || 8;
65
- var continuity = cfg.continuity || 1;
66
- var dfactor = Math.pow(10, decimals) || 0;
67
- var data = [];
68
- var i, value;
69
-
70
- for (i = 0; i < count; ++i) {
71
- value = (from[i] || 0) + this.rand(min, max);
72
- if (this.rand() <= continuity) {
73
- data.push(Math.round(dfactor * value) / dfactor);
74
- } else {
75
- data.push(null);
76
- }
77
- }
78
-
79
- return data;
80
- },
81
-
82
- labels: function(config) {
83
- var cfg = config || {};
84
- var min = cfg.min || 0;
85
- var max = cfg.max || 100;
86
- var count = cfg.count || 8;
87
- var step = (max - min) / count;
88
- var decimals = cfg.decimals || 8;
89
- var dfactor = Math.pow(10, decimals) || 0;
90
- var prefix = cfg.prefix || '';
91
- var values = [];
92
- var i;
93
-
94
- for (i = min; i < max; i += step) {
95
- values.push(prefix + Math.round(dfactor * i) / dfactor);
96
- }
97
-
98
- return values;
99
- },
100
-
101
- months: function(config) {
102
- var cfg = config || {};
103
- var count = cfg.count || 12;
104
- var section = cfg.section;
105
- var values = [];
106
- var i, value;
107
-
108
- for (i = 0; i < count; ++i) {
109
- value = MONTHS[Math.ceil(i) % 12];
110
- values.push(value.substring(0, section));
111
- }
112
-
113
- return values;
114
- },
115
-
116
- color: function(index) {
117
- return COLORS[index % COLORS.length];
118
- },
119
-
120
- transparentize: function(color, opacity) {
121
- var alpha = opacity === undefined ? 0.5 : 1 - opacity;
122
- return Color(color).alpha(alpha).rgbString();
123
- }
124
- };
125
-
126
- // DEPRECATED
127
- window.randomScalingFactor = function() {
128
- return Math.round(Samples.utils.rand(-100, 100));
129
- };
130
-
131
- // INITIALIZATION
132
-
133
- Samples.utils.srand(Date.now());
134
-
135
- // Google Analytics
136
- /* eslint-disable */
137
- if (document.location.hostname.match(/^(www\.)?chartjs\.org$/)) {
138
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
139
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
140
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
141
- })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
142
- ga('create', 'UA-28909194-3', 'auto');
143
- ga('send', 'pageview');
144
- }
145
- /* eslint-enable */
146
-
147
- }(this));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/bootstrap/css/bootstrap-rtl.min.css DELETED
@@ -1,9 +0,0 @@
1
- @charset "UTF-8";/*!
2
- * Bootstrap v4.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors
4
- * Copyright 2011-2019 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
- * RTL-ized by Arash Laylazi (https://github.com/PerseusTheGreat)
7
- * RTL rev. 1 (https://github.com/PerseusTheGreat/bootstrap-rtl)
8
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;direction:rtl}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:right;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-right:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:right;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}[type=email],[type=file],[type=number],[type=password],[type=tel],[type=url],code,samp,var{text-align:left;direction:ltr}kbd{display:inline-block}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-right:0;list-style:none}.list-inline{padding-right:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-left:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-right:8.333333%}.offset-2{margin-right:16.666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.333333%}.offset-5{margin-right:41.666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.333333%}.offset-8{margin-right:66.666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.333333%}.offset-11{margin-right:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.333333%}.offset-sm-2{margin-right:16.666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.333333%}.offset-sm-5{margin-right:41.666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.333333%}.offset-sm-8{margin-right:66.666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.333333%}.offset-sm-11{margin-right:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.333333%}.offset-md-2{margin-right:16.666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.333333%}.offset-md-5{margin-right:41.666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.333333%}.offset-md-8{margin-right:66.666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.333333%}.offset-md-11{margin-right:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.333333%}.offset-lg-2{margin-right:16.666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.333333%}.offset-lg-5{margin-right:41.666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.333333%}.offset-lg-8{margin-right:66.666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.333333%}.offset-lg-11{margin-right:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.333333%}.offset-xl-2{margin-right:16.666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.333333%}.offset-xl-5{margin-right:41.666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.333333%}.offset-xl-8{margin-right:66.666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.333333%}.offset-xl-11{margin-right:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-right:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-right:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-right:0;margin-left:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0;margin-left:.3125rem}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-left:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-left:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) left calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-left:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat left .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center left 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-left:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-left:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) left calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-left:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat left .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center left 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-right:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:0;margin-left:.25rem}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-right:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:right;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-right:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:""}.dropright .dropdown-toggle::after{display:none}.dropright .dropdown-toggle::before{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-right:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-right:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-right:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-right:0}.dropleft .dropdown-toggle-split::before{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-right:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-right:-1px}.input-group-prepend{margin-left:-1px}.input-group-append{margin-right:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-left:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-right:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-left:1rem}.custom-control-input{position:absolute;right:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;right:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;right:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-right:2.25rem}.custom-switch .custom-control-label::before{right:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);right:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(-.75rem);transform:translateX(-.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem .375rem 1.75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat left .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-left:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-right:.5rem;padding-bottom:.25rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-right:1rem;padding-bottom:.5rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input:lang(fa)~.custom-file-label::after{content:"از فهرست"}.custom-file-input:lang(ar)~.custom-file-label::after{content:"تصفح"}.custom-file-input:lang(iw)~.custom-file-label::after{content:"דפדוף"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;bottom:0;left:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-right:inherit;border-radius:.25rem 0 0 .25rem}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-left:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-right:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-left:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-right:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-right:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-right:0;border-right:0}.card-group>.card:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-right-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-right:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-right:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-right:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item:last-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-left:4rem}.alert-dismissible .close{position:absolute;top:0;left:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-right:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:left;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;right:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem auto -1rem -1rem}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;right:50%;display:block;width:1rem;margin-right:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:right;width:100%;margin-left:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(100%);transform:translateX(100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{right:0}.carousel-control-next{left:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-right:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-left-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
9
- /*# sourceMappingURL=bootstrap-rtl.min.css.map */
 
 
 
 
 
 
 
 
 
lib/bootstrap/css/bootstrap-theme.css DELETED
@@ -1,457 +0,0 @@
1
- /*!
2
- * Bootstrap v3.3.0 (http://getbootstrap.com)
3
- * Copyright 2011-2014 Twitter, Inc.
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- */
6
-
7
- .btn-default,
8
- .btn-primary,
9
- .btn-success,
10
- .btn-info,
11
- .btn-warning,
12
- .btn-danger {
13
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
14
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
16
- }
17
- .btn-default:active,
18
- .btn-primary:active,
19
- .btn-success:active,
20
- .btn-info:active,
21
- .btn-warning:active,
22
- .btn-danger:active,
23
- .btn-default.active,
24
- .btn-primary.active,
25
- .btn-success.active,
26
- .btn-info.active,
27
- .btn-warning.active,
28
- .btn-danger.active {
29
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
31
- }
32
- .btn-default .badge,
33
- .btn-primary .badge,
34
- .btn-success .badge,
35
- .btn-info .badge,
36
- .btn-warning .badge,
37
- .btn-danger .badge {
38
- text-shadow: none;
39
- }
40
- .btn:active,
41
- .btn.active {
42
- background-image: none;
43
- }
44
- .btn-default {
45
- text-shadow: 0 1px 0 #fff;
46
- background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
47
- background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
48
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
49
- background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
50
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
51
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
52
- background-repeat: repeat-x;
53
- border-color: #dbdbdb;
54
- border-color: #ccc;
55
- }
56
- .btn-default:hover,
57
- .btn-default:focus {
58
- background-color: #e0e0e0;
59
- background-position: 0 -15px;
60
- }
61
- .btn-default:active,
62
- .btn-default.active {
63
- background-color: #e0e0e0;
64
- border-color: #dbdbdb;
65
- }
66
- .btn-default:disabled,
67
- .btn-default[disabled] {
68
- background-color: #e0e0e0;
69
- background-image: none;
70
- }
71
- .btn-primary {
72
- background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
73
- background-image: -o-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
74
- background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#2d6ca2));
75
- background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
76
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
77
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
78
- background-repeat: repeat-x;
79
- border-color: #2b669a;
80
- }
81
- .btn-primary:hover,
82
- .btn-primary:focus {
83
- background-color: #2d6ca2;
84
- background-position: 0 -15px;
85
- }
86
- .btn-primary:active,
87
- .btn-primary.active {
88
- background-color: #2d6ca2;
89
- border-color: #2b669a;
90
- }
91
- .btn-primary:disabled,
92
- .btn-primary[disabled] {
93
- background-color: #2d6ca2;
94
- background-image: none;
95
- }
96
- .btn-success {
97
- background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
98
- background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
99
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
100
- background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
101
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
102
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
103
- background-repeat: repeat-x;
104
- border-color: #3e8f3e;
105
- }
106
- .btn-success:hover,
107
- .btn-success:focus {
108
- background-color: #419641;
109
- background-position: 0 -15px;
110
- }
111
- .btn-success:active,
112
- .btn-success.active {
113
- background-color: #419641;
114
- border-color: #3e8f3e;
115
- }
116
- .btn-success:disabled,
117
- .btn-success[disabled] {
118
- background-color: #419641;
119
- background-image: none;
120
- }
121
- .btn-info {
122
- background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
123
- background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
124
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
125
- background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
126
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
127
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
128
- background-repeat: repeat-x;
129
- border-color: #28a4c9;
130
- }
131
- .btn-info:hover,
132
- .btn-info:focus {
133
- background-color: #2aabd2;
134
- background-position: 0 -15px;
135
- }
136
- .btn-info:active,
137
- .btn-info.active {
138
- background-color: #2aabd2;
139
- border-color: #28a4c9;
140
- }
141
- .btn-info:disabled,
142
- .btn-info[disabled] {
143
- background-color: #2aabd2;
144
- background-image: none;
145
- }
146
- .btn-warning {
147
- background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
148
- background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
149
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
150
- background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
151
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
152
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
153
- background-repeat: repeat-x;
154
- border-color: #e38d13;
155
- }
156
- .btn-warning:hover,
157
- .btn-warning:focus {
158
- background-color: #eb9316;
159
- background-position: 0 -15px;
160
- }
161
- .btn-warning:active,
162
- .btn-warning.active {
163
- background-color: #eb9316;
164
- border-color: #e38d13;
165
- }
166
- .btn-warning:disabled,
167
- .btn-warning[disabled] {
168
- background-color: #eb9316;
169
- background-image: none;
170
- }
171
- .btn-danger {
172
- background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
173
- background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
174
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
175
- background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
176
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
177
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
178
- background-repeat: repeat-x;
179
- border-color: #b92c28;
180
- }
181
- .btn-danger:hover,
182
- .btn-danger:focus {
183
- background-color: #c12e2a;
184
- background-position: 0 -15px;
185
- }
186
- .btn-danger:active,
187
- .btn-danger.active {
188
- background-color: #c12e2a;
189
- border-color: #b92c28;
190
- }
191
- .btn-danger:disabled,
192
- .btn-danger[disabled] {
193
- background-color: #c12e2a;
194
- background-image: none;
195
- }
196
- .thumbnail,
197
- .img-thumbnail {
198
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
199
- box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
200
- }
201
- .dropdown-menu > li > a:hover,
202
- .dropdown-menu > li > a:focus {
203
- background-color: #e8e8e8;
204
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
205
- background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
206
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
207
- background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
208
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
209
- background-repeat: repeat-x;
210
- }
211
- .dropdown-menu > .active > a,
212
- .dropdown-menu > .active > a:hover,
213
- .dropdown-menu > .active > a:focus {
214
- background-color: #357ebd;
215
- background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
216
- background-image: -o-linear-gradient(top, #428bca 0%, #357ebd 100%);
217
- background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#357ebd));
218
- background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
219
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
220
- background-repeat: repeat-x;
221
- }
222
- .navbar-default {
223
- background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
224
- background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
225
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
226
- background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
227
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
228
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
229
- background-repeat: repeat-x;
230
- border-radius: 4px;
231
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
232
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
233
- }
234
- .navbar-default .navbar-nav > .open > a,
235
- .navbar-default .navbar-nav > .active > a {
236
- background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
237
- background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
238
- background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
239
- background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
240
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
241
- background-repeat: repeat-x;
242
- -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
243
- box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
244
- }
245
- .navbar-brand,
246
- .navbar-nav > li > a {
247
- text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
248
- }
249
- .navbar-inverse {
250
- background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
251
- background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
252
- background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
253
- background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
254
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
255
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
256
- background-repeat: repeat-x;
257
- }
258
- .navbar-inverse .navbar-nav > .open > a,
259
- .navbar-inverse .navbar-nav > .active > a {
260
- background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
261
- background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
262
- background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
263
- background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
264
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
265
- background-repeat: repeat-x;
266
- -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
267
- box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
268
- }
269
- .navbar-inverse .navbar-brand,
270
- .navbar-inverse .navbar-nav > li > a {
271
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
272
- }
273
- .navbar-static-top,
274
- .navbar-fixed-top,
275
- .navbar-fixed-bottom {
276
- border-radius: 0;
277
- }
278
- .alert {
279
- text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
280
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
281
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
282
- }
283
- .alert-success {
284
- background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
285
- background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
286
- background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
287
- background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
288
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
289
- background-repeat: repeat-x;
290
- border-color: #b2dba1;
291
- }
292
- .alert-info {
293
- background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
294
- background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
295
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
296
- background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
297
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
298
- background-repeat: repeat-x;
299
- border-color: #9acfea;
300
- }
301
- .alert-warning {
302
- background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
303
- background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
304
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
305
- background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
306
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
307
- background-repeat: repeat-x;
308
- border-color: #f5e79e;
309
- }
310
- .alert-danger {
311
- background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
312
- background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
313
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
314
- background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
315
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
316
- background-repeat: repeat-x;
317
- border-color: #dca7a7;
318
- }
319
- .progress {
320
- background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
321
- background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
322
- background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
323
- background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
324
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
325
- background-repeat: repeat-x;
326
- }
327
- .progress-bar {
328
- background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
329
- background-image: -o-linear-gradient(top, #428bca 0%, #3071a9 100%);
330
- background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#3071a9));
331
- background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
332
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
333
- background-repeat: repeat-x;
334
- }
335
- .progress-bar-success {
336
- background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
337
- background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
338
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
339
- background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
340
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
341
- background-repeat: repeat-x;
342
- }
343
- .progress-bar-info {
344
- background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
345
- background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
346
- background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
347
- background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
348
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
349
- background-repeat: repeat-x;
350
- }
351
- .progress-bar-warning {
352
- background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
353
- background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
354
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
355
- background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
356
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
357
- background-repeat: repeat-x;
358
- }
359
- .progress-bar-danger {
360
- background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
361
- background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
362
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
363
- background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
364
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
365
- background-repeat: repeat-x;
366
- }
367
- .progress-bar-striped {
368
- 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);
369
- 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);
370
- 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);
371
- }
372
- .list-group {
373
- border-radius: 4px;
374
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
375
- box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
376
- }
377
- .list-group-item.active,
378
- .list-group-item.active:hover,
379
- .list-group-item.active:focus {
380
- text-shadow: 0 -1px 0 #3071a9;
381
- background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
382
- background-image: -o-linear-gradient(top, #428bca 0%, #3278b3 100%);
383
- background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#3278b3));
384
- background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
385
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
386
- background-repeat: repeat-x;
387
- border-color: #3278b3;
388
- }
389
- .list-group-item.active .badge,
390
- .list-group-item.active:hover .badge,
391
- .list-group-item.active:focus .badge {
392
- text-shadow: none;
393
- }
394
- .panel {
395
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
396
- box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
397
- }
398
- .panel-default > .panel-heading {
399
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
400
- background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
401
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
402
- background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
403
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
404
- background-repeat: repeat-x;
405
- }
406
- .panel-primary > .panel-heading {
407
- background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
408
- background-image: -o-linear-gradient(top, #428bca 0%, #357ebd 100%);
409
- background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#357ebd));
410
- background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
411
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
412
- background-repeat: repeat-x;
413
- }
414
- .panel-success > .panel-heading {
415
- background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
416
- background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
417
- background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
418
- background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
419
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
420
- background-repeat: repeat-x;
421
- }
422
- .panel-info > .panel-heading {
423
- background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
424
- background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
425
- background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
426
- background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
427
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
428
- background-repeat: repeat-x;
429
- }
430
- .panel-warning > .panel-heading {
431
- background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
432
- background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
433
- background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
434
- background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
435
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
436
- background-repeat: repeat-x;
437
- }
438
- .panel-danger > .panel-heading {
439
- background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
440
- background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
441
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
442
- background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
443
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
444
- background-repeat: repeat-x;
445
- }
446
- .well {
447
- background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
448
- background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
449
- background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
450
- background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
451
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
452
- background-repeat: repeat-x;
453
- border-color: #dcdcdc;
454
- -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
455
- box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
456
- }
457
- /*# sourceMappingURL=bootstrap-theme.css.map */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/bootstrap/css/bootstrap-theme.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","bootstrap-theme.css","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAcA;;;;;;EAME,0CAAA;ECgDA,6FAAA;EACQ,qFAAA;EC5DT;AFgBC;;;;;;;;;;;;EC2CA,0DAAA;EACQ,kDAAA;EC7CT;AFVD;;;;;;EAiBI,mBAAA;EECH;AFgCC;;EAEE,wBAAA;EE9BH;AFmCD;EGlDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EA+B2C,2BAAA;EAA2B,oBAAA;EExBvE;AFLC;;EAEE,2BAAA;EACA,8BAAA;EEOH;AFJC;;EAEE,2BAAA;EACA,uBAAA;EEMH;AFHC;;EAEE,2BAAA;EACA,wBAAA;EEKH;AFUD;EGnDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE+BD;AF7BC;;EAEE,2BAAA;EACA,8BAAA;EE+BH;AF5BC;;EAEE,2BAAA;EACA,uBAAA;EE8BH;AF3BC;;EAEE,2BAAA;EACA,wBAAA;EE6BH;AFbD;EGpDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEuDD;AFrDC;;EAEE,2BAAA;EACA,8BAAA;EEuDH;AFpDC;;EAEE,2BAAA;EACA,uBAAA;EEsDH;AFnDC;;EAEE,2BAAA;EACA,wBAAA;EEqDH;AFpCD;EGrDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE+ED;AF7EC;;EAEE,2BAAA;EACA,8BAAA;EE+EH;AF5EC;;EAEE,2BAAA;EACA,uBAAA;EE8EH;AF3EC;;EAEE,2BAAA;EACA,wBAAA;EE6EH;AF3DD;EGtDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEuGD;AFrGC;;EAEE,2BAAA;EACA,8BAAA;EEuGH;AFpGC;;EAEE,2BAAA;EACA,uBAAA;EEsGH;AFnGC;;EAEE,2BAAA;EACA,wBAAA;EEqGH;AFlFD;EGvDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE+HD;AF7HC;;EAEE,2BAAA;EACA,8BAAA;EE+HH;AF5HC;;EAEE,2BAAA;EACA,uBAAA;EE8HH;AF3HC;;EAEE,2BAAA;EACA,wBAAA;EE6HH;AFnGD;;ECfE,oDAAA;EACQ,4CAAA;ECsHT;AF9FD;;EGxEI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHuEF,2BAAA;EEoGD;AFlGD;;;EG7EI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH6EF,2BAAA;EEwGD;AF/FD;EG1FI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ECnBF,qEAAA;EJ4GA,oBAAA;EC9CA,6FAAA;EACQ,qFAAA;ECoJT;AF1GD;;EG1FI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EF2CF,0DAAA;EACQ,kDAAA;EC8JT;AFvGD;;EAEE,gDAAA;EEyGD;AFrGD;EG7GI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ECnBF,qEAAA;EFyOD;AF7GD;;EG7GI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EF2CF,yDAAA;EACQ,iDAAA;ECoLT;AFvHD;;EAYI,2CAAA;EE+GH;AF1GD;;;EAGE,kBAAA;EE4GD;AFnGD;EACE,+CAAA;EC5FA,4FAAA;EACQ,oFAAA;ECkMT;AF3FD;EGvJI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH+IF,uBAAA;EEuGD;AFlGD;EGxJI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH+IF,uBAAA;EE+GD;AFzGD;EGzJI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH+IF,uBAAA;EEuHD;AFhHD;EG1JI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH+IF,uBAAA;EE+HD;AFhHD;EGlKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDqRH;AF7GD;EG5KI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED4RH;AFnHD;EG7KI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDmSH;AFzHD;EG9KI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED0SH;AF/HD;EG/KI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDiTH;AFrID;EGhLI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDwTH;AFxID;EGnJI,+MAAA;EACA,0MAAA;EACA,uMAAA;ED8RH;AFpID;EACE,oBAAA;EC/IA,oDAAA;EACQ,4CAAA;ECsRT;AFrID;;;EAGE,+BAAA;EGpME,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHkMF,uBAAA;EE2ID;AFhJD;;;EAQI,mBAAA;EE6IH;AFnID;ECpKE,mDAAA;EACQ,2CAAA;EC0ST;AF7HD;EG7NI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED6VH;AFnID;EG9NI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDoWH;AFzID;EG/NI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED2WH;AF/ID;EGhOI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDkXH;AFrJD;EGjOI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDyXH;AF3JD;EGlOI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDgYH;AF3JD;EGzOI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHuOF,uBAAA;EC5LA,2FAAA;EACQ,mFAAA;EC8VT","file":"bootstrap-theme.css","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &:disabled,\n &[disabled] {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n",".btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default:disabled,\n.btn-default[disabled] {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);\n background-image: -o-linear-gradient(top, #428bca 0%, #2d6ca2 100%);\n background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #2d6ca2;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #2d6ca2;\n border-color: #2b669a;\n}\n.btn-primary:disabled,\n.btn-primary[disabled] {\n background-color: #2d6ca2;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success:disabled,\n.btn-success[disabled] {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info:disabled,\n.btn-info[disabled] {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning:disabled,\n.btn-warning[disabled] {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger:disabled,\n.btn-danger[disabled] {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);\n background-image: -o-linear-gradient(top, #428bca 0%, #357ebd 100%);\n background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);\n background-color: #357ebd;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);\n background-image: -o-linear-gradient(top, #428bca 0%, #3071a9 100%);\n background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #3071a9;\n background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);\n background-image: -o-linear-gradient(top, #428bca 0%, #3278b3 100%);\n background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);\n border-color: #3278b3;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);\n background-image: -o-linear-gradient(top, #428bca 0%, #357ebd 100%);\n background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
 
lib/bootstrap/css/bootstrap-theme.min.css DELETED
@@ -1,5 +0,0 @@
1
- /*!
2
- * Bootstrap v3.3.0 (http://getbootstrap.com)
3
- * Copyright 2011-2014 Twitter, Inc.
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:-o-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#2d6ca2));background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-primary:disabled,.btn-primary[disabled]{background-color:#2d6ca2;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-o-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#357ebd));background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:-o-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#3071a9));background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:-o-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#3278b3));background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);background-repeat:repeat-x;border-color:#3278b3}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-o-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#357ebd));background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
 
 
 
 
 
lib/bootstrap/css/bootstrap.css CHANGED
@@ -1,6358 +1,7 @@
1
- /*!
2
- * Bootstrap v3.3.0 (http://getbootstrap.com)
3
- * Copyright 2011-2014 Twitter, Inc.
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- */
6
-
7
- /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
8
- html {
9
- font-family: sans-serif;
10
- -webkit-text-size-adjust: 100%;
11
- -ms-text-size-adjust: 100%;
12
- }
13
- body {
14
- margin: 0;
15
- }
16
- article,
17
- aside,
18
- details,
19
- figcaption,
20
- figure,
21
- footer,
22
- header,
23
- hgroup,
24
- main,
25
- menu,
26
- nav,
27
- section,
28
- summary {
29
- display: block;
30
- }
31
- audio,
32
- canvas,
33
- progress,
34
- video {
35
- display: inline-block;
36
- vertical-align: baseline;
37
- }
38
- audio:not([controls]) {
39
- display: none;
40
- height: 0;
41
- }
42
- [hidden],
43
- template {
44
- display: none;
45
- }
46
- a {
47
- background-color: transparent;
48
- }
49
- a:active,
50
- a:hover {
51
- outline: 0;
52
- }
53
- abbr[title] {
54
- border-bottom: 1px dotted;
55
- }
56
- b,
57
- strong {
58
- font-weight: bold;
59
- }
60
- dfn {
61
- font-style: italic;
62
- }
63
- h1 {
64
- margin: .67em 0;
65
- font-size: 2em;
66
- }
67
- mark {
68
- color: #000;
69
- background: #ff0;
70
- }
71
- small {
72
- font-size: 80%;
73
- }
74
- sub,
75
- sup {
76
- position: relative;
77
- font-size: 75%;
78
- line-height: 0;
79
- vertical-align: baseline;
80
- }
81
- sup {
82
- top: -.5em;
83
- }
84
- sub {
85
- bottom: -.25em;
86
- }
87
- img {
88
- border: 0;
89
- }
90
- svg:not(:root) {
91
- overflow: hidden;
92
- }
93
- figure {
94
- margin: 1em 40px;
95
- }
96
- hr {
97
- height: 0;
98
- -webkit-box-sizing: content-box;
99
- -moz-box-sizing: content-box;
100
- box-sizing: content-box;
101
- }
102
- pre {
103
- overflow: auto;
104
- }
105
- code,
106
- kbd,
107
- pre,
108
- samp {
109
- font-family: monospace, monospace;
110
- font-size: 1em;
111
- }
112
- button,
113
- input,
114
- optgroup,
115
- select,
116
- textarea {
117
- margin: 0;
118
- font: inherit;
119
- color: inherit;
120
- }
121
- button {
122
- overflow: visible;
123
- }
124
- button,
125
- select {
126
- text-transform: none;
127
- }
128
- button,
129
- html input[type="button"],
130
- input[type="reset"],
131
- input[type="submit"] {
132
- -webkit-appearance: button;
133
- cursor: pointer;
134
- }
135
- button[disabled],
136
- html input[disabled] {
137
- cursor: default;
138
- }
139
- button::-moz-focus-inner,
140
- input::-moz-focus-inner {
141
- padding: 0;
142
- border: 0;
143
- }
144
- input {
145
- line-height: normal;
146
- }
147
- input[type="checkbox"],
148
- input[type="radio"] {
149
- -webkit-box-sizing: border-box;
150
- -moz-box-sizing: border-box;
151
- box-sizing: border-box;
152
- padding: 0;
153
- }
154
- input[type="number"]::-webkit-inner-spin-button,
155
- input[type="number"]::-webkit-outer-spin-button {
156
- height: auto;
157
- }
158
- input[type="search"] {
159
- -webkit-box-sizing: content-box;
160
- -moz-box-sizing: content-box;
161
- box-sizing: content-box;
162
- -webkit-appearance: textfield;
163
- }
164
- input[type="search"]::-webkit-search-cancel-button,
165
- input[type="search"]::-webkit-search-decoration {
166
- -webkit-appearance: none;
167
- }
168
- fieldset {
169
- padding: .35em .625em .75em;
170
- margin: 0 2px;
171
- border: 1px solid #c0c0c0;
172
- }
173
- legend {
174
- padding: 0;
175
- border: 0;
176
- }
177
- textarea {
178
- overflow: auto;
179
- }
180
- optgroup {
181
- font-weight: bold;
182
- }
183
- table {
184
- border-spacing: 0;
185
- border-collapse: collapse;
186
- }
187
- td,
188
- th {
189
- padding: 0;
190
- }
191
- /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
192
- @media print {
193
- *,
194
- *:before,
195
- *:after {
196
- color: #000 !important;
197
- text-shadow: none !important;
198
- background: transparent !important;
199
- -webkit-box-shadow: none !important;
200
- box-shadow: none !important;
201
- }
202
- a,
203
- a:visited {
204
- text-decoration: underline;
205
- }
206
- a[href]:after {
207
- content: " (" attr(href) ")";
208
- }
209
- abbr[title]:after {
210
- content: " (" attr(title) ")";
211
- }
212
- a[href^="#"]:after,
213
- a[href^="javascript:"]:after {
214
- content: "";
215
- }
216
- pre,
217
- blockquote {
218
- border: 1px solid #999;
219
-
220
- page-break-inside: avoid;
221
- }
222
- thead {
223
- display: table-header-group;
224
- }
225
- tr,
226
- img {
227
- page-break-inside: avoid;
228
- }
229
- img {
230
- max-width: 100% !important;
231
- }
232
- p,
233
- h2,
234
- h3 {
235
- orphans: 3;
236
- widows: 3;
237
- }
238
- h2,
239
- h3 {
240
- page-break-after: avoid;
241
- }
242
- select {
243
- background: #fff !important;
244
- }
245
- .navbar {
246
- display: none;
247
- }
248
- .btn > .caret,
249
- .dropup > .btn > .caret {
250
- border-top-color: #000 !important;
251
- }
252
- .label {
253
- border: 1px solid #000;
254
- }
255
- .table {
256
- border-collapse: collapse !important;
257
- }
258
- .table td,
259
- .table th {
260
- background-color: #fff !important;
261
- }
262
- .table-bordered th,
263
- .table-bordered td {
264
- border: 1px solid #ddd !important;
265
- }
266
- }
267
- @font-face {
268
- font-family: 'Glyphicons Halflings';
269
-
270
- src: url('../fonts/glyphicons-halflings-regular.eot');
271
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
272
- }
273
- .glyphicon {
274
- position: relative;
275
- top: 1px;
276
- display: inline-block;
277
- font-family: 'Glyphicons Halflings';
278
- font-style: normal;
279
- font-weight: normal;
280
- line-height: 1;
281
-
282
- -webkit-font-smoothing: antialiased;
283
- -moz-osx-font-smoothing: grayscale;
284
- }
285
- .glyphicon-asterisk:before {
286
- content: "\2a";
287
- }
288
- .glyphicon-plus:before {
289
- content: "\2b";
290
- }
291
- .glyphicon-euro:before,
292
- .glyphicon-eur:before {
293
- content: "\20ac";
294
- }
295
- .glyphicon-minus:before {
296
- content: "\2212";
297
- }
298
- .glyphicon-cloud:before {
299
- content: "\2601";
300
- }
301
- .glyphicon-envelope:before {
302
- content: "\2709";
303
- }
304
- .glyphicon-pencil:before {
305
- content: "\270f";
306
- }
307
- .glyphicon-glass:before {
308
- content: "\e001";
309
- }
310
- .glyphicon-music:before {
311
- content: "\e002";
312
- }
313
- .glyphicon-search:before {
314
- content: "\e003";
315
- }
316
- .glyphicon-heart:before {
317
- content: "\e005";
318
- }
319
- .glyphicon-star:before {
320
- content: "\e006";
321
- }
322
- .glyphicon-star-empty:before {
323
- content: "\e007";
324
- }
325
- .glyphicon-user:before {
326
- content: "\e008";
327
- }
328
- .glyphicon-film:before {
329
- content: "\e009";
330
- }
331
- .glyphicon-th-large:before {
332
- content: "\e010";
333
- }
334
- .glyphicon-th:before {
335
- content: "\e011";
336
- }
337
- .glyphicon-th-list:before {
338
- content: "\e012";
339
- }
340
- .glyphicon-ok:before {
341
- content: "\e013";
342
- }
343
- .glyphicon-remove:before {
344
- content: "\e014";
345
- }
346
- .glyphicon-zoom-in:before {
347
- content: "\e015";
348
- }
349
- .glyphicon-zoom-out:before {
350
- content: "\e016";
351
- }
352
- .glyphicon-off:before {
353
- content: "\e017";
354
- }
355
- .glyphicon-signal:before {
356
- content: "\e018";
357
- }
358
- .glyphicon-cog:before {
359
- content: "\e019";
360
- }
361
- .glyphicon-trash:before {
362
- content: "\e020";
363
- }
364
- .glyphicon-home:before {
365
- content: "\e021";
366
- }
367
- .glyphicon-file:before {
368
- content: "\e022";
369
- }
370
- .glyphicon-time:before {
371
- content: "\e023";
372
- }
373
- .glyphicon-road:before {
374
- content: "\e024";
375
- }
376
- .glyphicon-download-alt:before {
377
- content: "\e025";
378
- }
379
- .glyphicon-download:before {
380
- content: "\e026";
381
- }
382
- .glyphicon-upload:before {
383
- content: "\e027";
384
- }
385
- .glyphicon-inbox:before {
386
- content: "\e028";
387
- }
388
- .glyphicon-play-circle:before {
389
- content: "\e029";
390
- }
391
- .glyphicon-repeat:before {
392
- content: "\e030";
393
- }
394
- .glyphicon-refresh:before {
395
- content: "\e031";
396
- }
397
- .glyphicon-list-alt:before {
398
- content: "\e032";
399
- }
400
- .glyphicon-lock:before {
401
- content: "\e033";
402
- }
403
- .glyphicon-flag:before {
404
- content: "\e034";
405
- }
406
- .glyphicon-headphones:before {
407
- content: "\e035";
408
- }
409
- .glyphicon-volume-off:before {
410
- content: "\e036";
411
- }
412
- .glyphicon-volume-down:before {
413
- content: "\e037";
414
- }
415
- .glyphicon-volume-up:before {
416
- content: "\e038";
417
- }
418
- .glyphicon-qrcode:before {
419
- content: "\e039";
420
- }
421
- .glyphicon-barcode:before {
422
- content: "\e040";
423
- }
424
- .glyphicon-tag:before {
425
- content: "\e041";
426
- }
427
- .glyphicon-tags:before {
428
- content: "\e042";
429
- }
430
- .glyphicon-book:before {
431
- content: "\e043";
432
- }
433
- .glyphicon-bookmark:before {
434
- content: "\e044";
435
- }
436
- .glyphicon-print:before {
437
- content: "\e045";
438
- }
439
- .glyphicon-camera:before {
440
- content: "\e046";
441
- }
442
- .glyphicon-font:before {
443
- content: "\e047";
444
- }
445
- .glyphicon-bold:before {
446
- content: "\e048";
447
- }
448
- .glyphicon-italic:before {
449
- content: "\e049";
450
- }
451
- .glyphicon-text-height:before {
452
- content: "\e050";
453
- }
454
- .glyphicon-text-width:before {
455
- content: "\e051";
456
- }
457
- .glyphicon-align-left:before {
458
- content: "\e052";
459
- }
460
- .glyphicon-align-center:before {
461
- content: "\e053";
462
- }
463
- .glyphicon-align-right:before {
464
- content: "\e054";
465
- }
466
- .glyphicon-align-justify:before {
467
- content: "\e055";
468
- }
469
- .glyphicon-list:before {
470
- content: "\e056";
471
- }
472
- .glyphicon-indent-left:before {
473
- content: "\e057";
474
- }
475
- .glyphicon-indent-right:before {
476
- content: "\e058";
477
- }
478
- .glyphicon-facetime-video:before {
479
- content: "\e059";
480
- }
481
- .glyphicon-picture:before {
482
- content: "\e060";
483
- }
484
- .glyphicon-map-marker:before {
485
- content: "\e062";
486
- }
487
- .glyphicon-adjust:before {
488
- content: "\e063";
489
- }
490
- .glyphicon-tint:before {
491
- content: "\e064";
492
- }
493
- .glyphicon-edit:before {
494
- content: "\e065";
495
- }
496
- .glyphicon-share:before {
497
- content: "\e066";
498
- }
499
- .glyphicon-check:before {
500
- content: "\e067";
501
- }
502
- .glyphicon-move:before {
503
- content: "\e068";
504
- }
505
- .glyphicon-step-backward:before {
506
- content: "\e069";
507
- }
508
- .glyphicon-fast-backward:before {
509
- content: "\e070";
510
- }
511
- .glyphicon-backward:before {
512
- content: "\e071";
513
- }
514
- .glyphicon-play:before {
515
- content: "\e072";
516
- }
517
- .glyphicon-pause:before {
518
- content: "\e073";
519
- }
520
- .glyphicon-stop:before {
521
- content: "\e074";
522
- }
523
- .glyphicon-forward:before {
524
- content: "\e075";
525
- }
526
- .glyphicon-fast-forward:before {
527
- content: "\e076";
528
- }
529
- .glyphicon-step-forward:before {
530
- content: "\e077";
531
- }
532
- .glyphicon-eject:before {
533
- content: "\e078";
534
- }
535
- .glyphicon-chevron-left:before {
536
- content: "\e079";
537
- }
538
- .glyphicon-chevron-right:before {
539
- content: "\e080";
540
- }
541
- .glyphicon-plus-sign:before {
542
- content: "\e081";
543
- }
544
- .glyphicon-minus-sign:before {
545
- content: "\e082";
546
- }
547
- .glyphicon-remove-sign:before {
548
- content: "\e083";
549
- }
550
- .glyphicon-ok-sign:before {
551
- content: "\e084";
552
- }
553
- .glyphicon-question-sign:before {
554
- content: "\e085";
555
- }
556
- .glyphicon-info-sign:before {
557
- content: "\e086";
558
- }
559
- .glyphicon-screenshot:before {
560
- content: "\e087";
561
- }
562
- .glyphicon-remove-circle:before {
563
- content: "\e088";
564
- }
565
- .glyphicon-ok-circle:before {
566
- content: "\e089";
567
- }
568
- .glyphicon-ban-circle:before {
569
- content: "\e090";
570
- }
571
- .glyphicon-arrow-left:before {
572
- content: "\e091";
573
- }
574
- .glyphicon-arrow-right:before {
575
- content: "\e092";
576
- }
577
- .glyphicon-arrow-up:before {
578
- content: "\e093";
579
- }
580
- .glyphicon-arrow-down:before {
581
- content: "\e094";
582
- }
583
- .glyphicon-share-alt:before {
584
- content: "\e095";
585
- }
586
- .glyphicon-resize-full:before {
587
- content: "\e096";
588
- }
589
- .glyphicon-resize-small:before {
590
- content: "\e097";
591
- }
592
- .glyphicon-exclamation-sign:before {
593
- content: "\e101";
594
- }
595
- .glyphicon-gift:before {
596
- content: "\e102";
597
- }
598
- .glyphicon-leaf:before {
599
- content: "\e103";
600
- }
601
- .glyphicon-fire:before {
602
- content: "\e104";
603
- }
604
- .glyphicon-eye-open:before {
605
- content: "\e105";
606
- }
607
- .glyphicon-eye-close:before {
608
- content: "\e106";
609
- }
610
- .glyphicon-warning-sign:before {
611
- content: "\e107";
612
- }
613
- .glyphicon-plane:before {
614
- content: "\e108";
615
- }
616
- .glyphicon-calendar:before {
617
- content: "\e109";
618
- }
619
- .glyphicon-random:before {
620
- content: "\e110";
621
- }
622
- .glyphicon-comment:before {
623
- content: "\e111";
624
- }
625
- .glyphicon-magnet:before {
626
- content: "\e112";
627
- }
628
- .glyphicon-chevron-up:before {
629
- content: "\e113";
630
- }
631
- .glyphicon-chevron-down:before {
632
- content: "\e114";
633
- }
634
- .glyphicon-retweet:before {
635
- content: "\e115";
636
- }
637
- .glyphicon-shopping-cart:before {
638
- content: "\e116";
639
- }
640
- .glyphicon-folder-close:before {
641
- content: "\e117";
642
- }
643
- .glyphicon-folder-open:before {
644
- content: "\e118";
645
- }
646
- .glyphicon-resize-vertical:before {
647
- content: "\e119";
648
- }
649
- .glyphicon-resize-horizontal:before {
650
- content: "\e120";
651
- }
652
- .glyphicon-hdd:before {
653
- content: "\e121";
654
- }
655
- .glyphicon-bullhorn:before {
656
- content: "\e122";
657
- }
658
- .glyphicon-bell:before {
659
- content: "\e123";
660
- }
661
- .glyphicon-certificate:before {
662
- content: "\e124";
663
- }
664
- .glyphicon-thumbs-up:before {
665
- content: "\e125";
666
- }
667
- .glyphicon-thumbs-down:before {
668
- content: "\e126";
669
- }
670
- .glyphicon-hand-right:before {
671
- content: "\e127";
672
- }
673
- .glyphicon-hand-left:before {
674
- content: "\e128";
675
- }
676
- .glyphicon-hand-up:before {
677
- content: "\e129";
678
- }
679
- .glyphicon-hand-down:before {
680
- content: "\e130";
681
- }
682
- .glyphicon-circle-arrow-right:before {
683
- content: "\e131";
684
- }
685
- .glyphicon-circle-arrow-left:before {
686
- content: "\e132";
687
- }
688
- .glyphicon-circle-arrow-up:before {
689
- content: "\e133";
690
- }
691
- .glyphicon-circle-arrow-down:before {
692
- content: "\e134";
693
- }
694
- .glyphicon-globe:before {
695
- content: "\e135";
696
- }
697
- .glyphicon-wrench:before {
698
- content: "\e136";
699
- }
700
- .glyphicon-tasks:before {
701
- content: "\e137";
702
- }
703
- .glyphicon-filter:before {
704
- content: "\e138";
705
- }
706
- .glyphicon-briefcase:before {
707
- content: "\e139";
708
- }
709
- .glyphicon-fullscreen:before {
710
- content: "\e140";
711
- }
712
- .glyphicon-dashboard:before {
713
- content: "\e141";
714
- }
715
- .glyphicon-paperclip:before {
716
- content: "\e142";
717
- }
718
- .glyphicon-heart-empty:before {
719
- content: "\e143";
720
- }
721
- .glyphicon-link:before {
722
- content: "\e144";
723
- }
724
- .glyphicon-phone:before {
725
- content: "\e145";
726
- }
727
- .glyphicon-pushpin:before {
728
- content: "\e146";
729
- }
730
- .glyphicon-usd:before {
731
- content: "\e148";
732
- }
733
- .glyphicon-gbp:before {
734
- content: "\e149";
735
- }
736
- .glyphicon-sort:before {
737
- content: "\e150";
738
- }
739
- .glyphicon-sort-by-alphabet:before {
740
- content: "\e151";
741
- }
742
- .glyphicon-sort-by-alphabet-alt:before {
743
- content: "\e152";
744
- }
745
- .glyphicon-sort-by-order:before {
746
- content: "\e153";
747
- }
748
- .glyphicon-sort-by-order-alt:before {
749
- content: "\e154";
750
- }
751
- .glyphicon-sort-by-attributes:before {
752
- content: "\e155";
753
- }
754
- .glyphicon-sort-by-attributes-alt:before {
755
- content: "\e156";
756
- }
757
- .glyphicon-unchecked:before {
758
- content: "\e157";
759
- }
760
- .glyphicon-expand:before {
761
- content: "\e158";
762
- }
763
- .glyphicon-collapse-down:before {
764
- content: "\e159";
765
- }
766
- .glyphicon-collapse-up:before {
767
- content: "\e160";
768
- }
769
- .glyphicon-log-in:before {
770
- content: "\e161";
771
- }
772
- .glyphicon-flash:before {
773
- content: "\e162";
774
- }
775
- .glyphicon-log-out:before {
776
- content: "\e163";
777
- }
778
- .glyphicon-new-window:before {
779
- content: "\e164";
780
- }
781
- .glyphicon-record:before {
782
- content: "\e165";
783
- }
784
- .glyphicon-save:before {
785
- content: "\e166";
786
- }
787
- .glyphicon-open:before {
788
- content: "\e167";
789
- }
790
- .glyphicon-saved:before {
791
- content: "\e168";
792
- }
793
- .glyphicon-import:before {
794
- content: "\e169";
795
- }
796
- .glyphicon-export:before {
797
- content: "\e170";
798
- }
799
- .glyphicon-send:before {
800
- content: "\e171";
801
- }
802
- .glyphicon-floppy-disk:before {
803
- content: "\e172";
804
- }
805
- .glyphicon-floppy-saved:before {
806
- content: "\e173";
807
- }
808
- .glyphicon-floppy-remove:before {
809
- content: "\e174";
810
- }
811
- .glyphicon-floppy-save:before {
812
- content: "\e175";
813
- }
814
- .glyphicon-floppy-open:before {
815
- content: "\e176";
816
- }
817
- .glyphicon-credit-card:before {
818
- content: "\e177";
819
- }
820
- .glyphicon-transfer:before {
821
- content: "\e178";
822
- }
823
- .glyphicon-cutlery:before {
824
- content: "\e179";
825
- }
826
- .glyphicon-header:before {
827
- content: "\e180";
828
- }
829
- .glyphicon-compressed:before {
830
- content: "\e181";
831
- }
832
- .glyphicon-earphone:before {
833
- content: "\e182";
834
- }
835
- .glyphicon-phone-alt:before {
836
- content: "\e183";
837
- }
838
- .glyphicon-tower:before {
839
- content: "\e184";
840
- }
841
- .glyphicon-stats:before {
842
- content: "\e185";
843
- }
844
- .glyphicon-sd-video:before {
845
- content: "\e186";
846
- }
847
- .glyphicon-hd-video:before {
848
- content: "\e187";
849
- }
850
- .glyphicon-subtitles:before {
851
- content: "\e188";
852
- }
853
- .glyphicon-sound-stereo:before {
854
- content: "\e189";
855
- }
856
- .glyphicon-sound-dolby:before {
857
- content: "\e190";
858
- }
859
- .glyphicon-sound-5-1:before {
860
- content: "\e191";
861
- }
862
- .glyphicon-sound-6-1:before {
863
- content: "\e192";
864
- }
865
- .glyphicon-sound-7-1:before {
866
- content: "\e193";
867
- }
868
- .glyphicon-copyright-mark:before {
869
- content: "\e194";
870
- }
871
- .glyphicon-registration-mark:before {
872
- content: "\e195";
873
- }
874
- .glyphicon-cloud-download:before {
875
- content: "\e197";
876
- }
877
- .glyphicon-cloud-upload:before {
878
- content: "\e198";
879
- }
880
- .glyphicon-tree-conifer:before {
881
- content: "\e199";
882
- }
883
- .glyphicon-tree-deciduous:before {
884
- content: "\e200";
885
- }
886
- * {
887
- -webkit-box-sizing: border-box;
888
- -moz-box-sizing: border-box;
889
- box-sizing: border-box;
890
- }
891
- *:before,
892
- *:after {
893
- -webkit-box-sizing: border-box;
894
- -moz-box-sizing: border-box;
895
- box-sizing: border-box;
896
- }
897
- html {
898
- font-size: 10px;
899
-
900
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
901
- }
902
- body {
903
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
904
- font-size: 14px;
905
- line-height: 1.42857143;
906
- color: #333;
907
- background-color: #fff;
908
- }
909
- input,
910
- button,
911
- select,
912
- textarea {
913
- font-family: inherit;
914
- font-size: inherit;
915
- line-height: inherit;
916
- }
917
- a {
918
- color: #428bca;
919
- text-decoration: none;
920
- }
921
- a:hover,
922
- a:focus {
923
- color: #2a6496;
924
- text-decoration: underline;
925
- }
926
- a:focus {
927
- outline: thin dotted;
928
- outline: 5px auto -webkit-focus-ring-color;
929
- outline-offset: -2px;
930
- }
931
- figure {
932
- margin: 0;
933
- }
934
- img {
935
- vertical-align: middle;
936
- }
937
- .img-responsive,
938
- .thumbnail > img,
939
- .thumbnail a > img,
940
- .carousel-inner > .item > img,
941
- .carousel-inner > .item > a > img {
942
- display: block;
943
- max-width: 100%;
944
- height: auto;
945
- }
946
- .img-rounded {
947
- border-radius: 6px;
948
- }
949
- .img-thumbnail {
950
- display: inline-block;
951
- max-width: 100%;
952
- height: auto;
953
- padding: 4px;
954
- line-height: 1.42857143;
955
- background-color: #fff;
956
- border: 1px solid #ddd;
957
- border-radius: 4px;
958
- -webkit-transition: all .2s ease-in-out;
959
- -o-transition: all .2s ease-in-out;
960
- transition: all .2s ease-in-out;
961
- }
962
- .img-circle {
963
- border-radius: 50%;
964
- }
965
- hr {
966
- margin-top: 20px;
967
- margin-bottom: 20px;
968
- border: 0;
969
- border-top: 1px solid #eee;
970
- }
971
- .sr-only {
972
- position: absolute;
973
- width: 1px;
974
- height: 1px;
975
- padding: 0;
976
- margin: -1px;
977
- overflow: hidden;
978
- clip: rect(0, 0, 0, 0);
979
- border: 0;
980
- }
981
- .sr-only-focusable:active,
982
- .sr-only-focusable:focus {
983
- position: static;
984
- width: auto;
985
- height: auto;
986
- margin: 0;
987
- overflow: visible;
988
- clip: auto;
989
- }
990
- h1,
991
- h2,
992
- h3,
993
- h4,
994
- h5,
995
- h6,
996
- .h1,
997
- .h2,
998
- .h3,
999
- .h4,
1000
- .h5,
1001
- .h6 {
1002
- font-family: inherit;
1003
- font-weight: 500;
1004
- line-height: 1.1;
1005
- color: inherit;
1006
- }
1007
- h1 small,
1008
- h2 small,
1009
- h3 small,
1010
- h4 small,
1011
- h5 small,
1012
- h6 small,
1013
- .h1 small,
1014
- .h2 small,
1015
- .h3 small,
1016
- .h4 small,
1017
- .h5 small,
1018
- .h6 small,
1019
- h1 .small,
1020
- h2 .small,
1021
- h3 .small,
1022
- h4 .small,
1023
- h5 .small,
1024
- h6 .small,
1025
- .h1 .small,
1026
- .h2 .small,
1027
- .h3 .small,
1028
- .h4 .small,
1029
- .h5 .small,
1030
- .h6 .small {
1031
- font-weight: normal;
1032
- line-height: 1;
1033
- color: #777;
1034
- }
1035
- h1,
1036
- .h1,
1037
- h2,
1038
- .h2,
1039
- h3,
1040
- .h3 {
1041
- margin-top: 20px;
1042
- margin-bottom: 10px;
1043
- }
1044
- h1 small,
1045
- .h1 small,
1046
- h2 small,
1047
- .h2 small,
1048
- h3 small,
1049
- .h3 small,
1050
- h1 .small,
1051
- .h1 .small,
1052
- h2 .small,
1053
- .h2 .small,
1054
- h3 .small,
1055
- .h3 .small {
1056
- font-size: 65%;
1057
- }
1058
- h4,
1059
- .h4,
1060
- h5,
1061
- .h5,
1062
- h6,
1063
- .h6 {
1064
- margin-top: 10px;
1065
- margin-bottom: 10px;
1066
- }
1067
- h4 small,
1068
- .h4 small,
1069
- h5 small,
1070
- .h5 small,
1071
- h6 small,
1072
- .h6 small,
1073
- h4 .small,
1074
- .h4 .small,
1075
- h5 .small,
1076
- .h5 .small,
1077
- h6 .small,
1078
- .h6 .small {
1079
- font-size: 75%;
1080
- }
1081
- h1,
1082
- .h1 {
1083
- font-size: 36px;
1084
- }
1085
- h2,
1086
- .h2 {
1087
- font-size: 30px;
1088
- }
1089
- h3,
1090
- .h3 {
1091
- font-size: 24px;
1092
- }
1093
- h4,
1094
- .h4 {
1095
- font-size: 18px;
1096
- }
1097
- h5,
1098
- .h5 {
1099
- font-size: 14px;
1100
- }
1101
- h6,
1102
- .h6 {
1103
- font-size: 12px;
1104
- }
1105
- p {
1106
- margin: 0 0 10px;
1107
- }
1108
- .lead {
1109
- margin-bottom: 20px;
1110
- font-size: 16px;
1111
- font-weight: 300;
1112
- line-height: 1.4;
1113
- }
1114
- @media (min-width: 768px) {
1115
- .lead {
1116
- font-size: 21px;
1117
- }
1118
- }
1119
- small,
1120
- .small {
1121
- font-size: 85%;
1122
- }
1123
- mark,
1124
- .mark {
1125
- padding: .2em;
1126
- background-color: #fcf8e3;
1127
- }
1128
- .text-left {
1129
- text-align: left;
1130
- }
1131
- .text-right {
1132
- text-align: right;
1133
- }
1134
- .text-center {
1135
- text-align: center;
1136
- }
1137
- .text-justify {
1138
- text-align: justify;
1139
- }
1140
- .text-nowrap {
1141
- white-space: nowrap;
1142
- }
1143
- .text-lowercase {
1144
- text-transform: lowercase;
1145
- }
1146
- .text-uppercase {
1147
- text-transform: uppercase;
1148
- }
1149
- .text-capitalize {
1150
- text-transform: capitalize;
1151
- }
1152
- .text-muted {
1153
- color: #777;
1154
- }
1155
- .text-primary {
1156
- color: #428bca;
1157
- }
1158
- a.text-primary:hover {
1159
- color: #3071a9;
1160
- }
1161
- .text-success {
1162
- color: #3c763d;
1163
- }
1164
- a.text-success:hover {
1165
- color: #2b542c;
1166
- }
1167
- .text-info {
1168
- color: #31708f;
1169
- }
1170
- a.text-info:hover {
1171
- color: #245269;
1172
- }
1173
- .text-warning {
1174
- color: #8a6d3b;
1175
- }
1176
- a.text-warning:hover {
1177
- color: #66512c;
1178
- }
1179
- .text-danger {
1180
- color: #a94442;
1181
- }
1182
- a.text-danger:hover {
1183
- color: #843534;
1184
- }
1185
- .bg-primary {
1186
- color: #fff;
1187
- background-color: #428bca;
1188
- }
1189
- a.bg-primary:hover {
1190
- background-color: #3071a9;
1191
- }
1192
- .bg-success {
1193
- background-color: #dff0d8;
1194
- }
1195
- a.bg-success:hover {
1196
- background-color: #c1e2b3;
1197
- }
1198
- .bg-info {
1199
- background-color: #d9edf7;
1200
- }
1201
- a.bg-info:hover {
1202
- background-color: #afd9ee;
1203
- }
1204
- .bg-warning {
1205
- background-color: #fcf8e3;
1206
- }
1207
- a.bg-warning:hover {
1208
- background-color: #f7ecb5;
1209
- }
1210
- .bg-danger {
1211
- background-color: #f2dede;
1212
- }
1213
- a.bg-danger:hover {
1214
- background-color: #e4b9b9;
1215
- }
1216
- .page-header {
1217
- padding-bottom: 9px;
1218
- margin: 40px 0 20px;
1219
- border-bottom: 1px solid #eee;
1220
- }
1221
- ul,
1222
- ol {
1223
- margin-top: 0;
1224
- margin-bottom: 10px;
1225
- }
1226
- ul ul,
1227
- ol ul,
1228
- ul ol,
1229
- ol ol {
1230
- margin-bottom: 0;
1231
- }
1232
- .list-unstyled {
1233
- padding-left: 0;
1234
- list-style: none;
1235
- }
1236
- .list-inline {
1237
- padding-left: 0;
1238
- margin-left: -5px;
1239
- list-style: none;
1240
- }
1241
- .list-inline > li {
1242
- display: inline-block;
1243
- padding-right: 5px;
1244
- padding-left: 5px;
1245
- }
1246
- dl {
1247
- margin-top: 0;
1248
- margin-bottom: 20px;
1249
- }
1250
- dt,
1251
- dd {
1252
- line-height: 1.42857143;
1253
- }
1254
- dt {
1255
- font-weight: bold;
1256
- }
1257
- dd {
1258
- margin-left: 0;
1259
- }
1260
- @media (min-width: 768px) {
1261
- .dl-horizontal dt {
1262
- float: left;
1263
- width: 160px;
1264
- overflow: hidden;
1265
- clear: left;
1266
- text-align: right;
1267
- text-overflow: ellipsis;
1268
- white-space: nowrap;
1269
- }
1270
- .dl-horizontal dd {
1271
- margin-left: 180px;
1272
- }
1273
- }
1274
- abbr[title],
1275
- abbr[data-original-title] {
1276
- cursor: help;
1277
- border-bottom: 1px dotted #777;
1278
- }
1279
- .initialism {
1280
- font-size: 90%;
1281
- text-transform: uppercase;
1282
- }
1283
- blockquote {
1284
- padding: 10px 20px;
1285
- margin: 0 0 20px;
1286
- font-size: 17.5px;
1287
- border-left: 5px solid #eee;
1288
- }
1289
- blockquote p:last-child,
1290
- blockquote ul:last-child,
1291
- blockquote ol:last-child {
1292
- margin-bottom: 0;
1293
- }
1294
- blockquote footer,
1295
- blockquote small,
1296
- blockquote .small {
1297
- display: block;
1298
- font-size: 80%;
1299
- line-height: 1.42857143;
1300
- color: #777;
1301
- }
1302
- blockquote footer:before,
1303
- blockquote small:before,
1304
- blockquote .small:before {
1305
- content: '\2014 \00A0';
1306
- }
1307
- .blockquote-reverse,
1308
- blockquote.pull-right {
1309
- padding-right: 15px;
1310
- padding-left: 0;
1311
- text-align: right;
1312
- border-right: 5px solid #eee;
1313
- border-left: 0;
1314
- }
1315
- .blockquote-reverse footer:before,
1316
- blockquote.pull-right footer:before,
1317
- .blockquote-reverse small:before,
1318
- blockquote.pull-right small:before,
1319
- .blockquote-reverse .small:before,
1320
- blockquote.pull-right .small:before {
1321
- content: '';
1322
- }
1323
- .blockquote-reverse footer:after,
1324
- blockquote.pull-right footer:after,
1325
- .blockquote-reverse small:after,
1326
- blockquote.pull-right small:after,
1327
- .blockquote-reverse .small:after,
1328
- blockquote.pull-right .small:after {
1329
- content: '\00A0 \2014';
1330
- }
1331
- address {
1332
- margin-bottom: 20px;
1333
- font-style: normal;
1334
- line-height: 1.42857143;
1335
- }
1336
- code,
1337
- kbd,
1338
- pre,
1339
- samp {
1340
- font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1341
- }
1342
- code {
1343
- padding: 2px 4px;
1344
- font-size: 90%;
1345
- color: #c7254e;
1346
- background-color: #f9f2f4;
1347
- border-radius: 4px;
1348
- }
1349
- kbd {
1350
- padding: 2px 4px;
1351
- font-size: 90%;
1352
- color: #fff;
1353
- background-color: #333;
1354
- border-radius: 3px;
1355
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1356
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1357
- }
1358
- kbd kbd {
1359
- padding: 0;
1360
- font-size: 100%;
1361
- font-weight: bold;
1362
- -webkit-box-shadow: none;
1363
- box-shadow: none;
1364
- }
1365
- pre {
1366
- display: block;
1367
- padding: 9.5px;
1368
- margin: 0 0 10px;
1369
- font-size: 13px;
1370
- line-height: 1.42857143;
1371
- color: #333;
1372
- word-break: break-all;
1373
- word-wrap: break-word;
1374
- background-color: #f5f5f5;
1375
- border: 1px solid #ccc;
1376
- border-radius: 4px;
1377
- }
1378
- pre code {
1379
- padding: 0;
1380
- font-size: inherit;
1381
- color: inherit;
1382
- white-space: pre-wrap;
1383
- background-color: transparent;
1384
- border-radius: 0;
1385
- }
1386
- .pre-scrollable {
1387
- max-height: 340px;
1388
- overflow-y: scroll;
1389
- }
1390
- .container {
1391
- padding-right: 15px;
1392
- padding-left: 15px;
1393
- margin-right: auto;
1394
- margin-left: auto;
1395
- }
1396
- @media (min-width: 768px) {
1397
- .container {
1398
- width: 750px;
1399
- }
1400
- }
1401
- @media (min-width: 992px) {
1402
- .container {
1403
- width: 970px;
1404
- }
1405
- }
1406
- @media (min-width: 1200px) {
1407
- .container {
1408
- width: 1170px;
1409
- }
1410
- }
1411
- .container-fluid {
1412
- padding-right: 15px;
1413
- padding-left: 15px;
1414
- margin-right: auto;
1415
- margin-left: auto;
1416
- }
1417
- .row {
1418
- margin-right: -15px;
1419
- margin-left: -15px;
1420
- }
1421
- .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
1422
- position: relative;
1423
- min-height: 1px;
1424
- padding-right: 15px;
1425
- padding-left: 15px;
1426
- }
1427
- .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 {
1428
- float: left;
1429
- }
1430
- .col-xs-12 {
1431
- width: 100%;
1432
- }
1433
- .col-xs-11 {
1434
- width: 91.66666667%;
1435
- }
1436
- .col-xs-10 {
1437
- width: 83.33333333%;
1438
- }
1439
- .col-xs-9 {
1440
- width: 75%;
1441
- }
1442
- .col-xs-8 {
1443
- width: 66.66666667%;
1444
- }
1445
- .col-xs-7 {
1446
- width: 58.33333333%;
1447
- }
1448
- .col-xs-6 {
1449
- width: 50%;
1450
- }
1451
- .col-xs-5 {
1452
- width: 41.66666667%;
1453
- }
1454
- .col-xs-4 {
1455
- width: 33.33333333%;
1456
- }
1457
- .col-xs-3 {
1458
- width: 25%;
1459
- }
1460
- .col-xs-2 {
1461
- width: 16.66666667%;
1462
- }
1463
- .col-xs-1 {
1464
- width: 8.33333333%;
1465
- }
1466
- .col-xs-pull-12 {
1467
- right: 100%;
1468
- }
1469
- .col-xs-pull-11 {
1470
- right: 91.66666667%;
1471
- }
1472
- .col-xs-pull-10 {
1473
- right: 83.33333333%;
1474
- }
1475
- .col-xs-pull-9 {
1476
- right: 75%;
1477
- }
1478
- .col-xs-pull-8 {
1479
- right: 66.66666667%;
1480
- }
1481
- .col-xs-pull-7 {
1482
- right: 58.33333333%;
1483
- }
1484
- .col-xs-pull-6 {
1485
- right: 50%;
1486
- }
1487
- .col-xs-pull-5 {
1488
- right: 41.66666667%;
1489
- }
1490
- .col-xs-pull-4 {
1491
- right: 33.33333333%;
1492
- }
1493
- .col-xs-pull-3 {
1494
- right: 25%;
1495
- }
1496
- .col-xs-pull-2 {
1497
- right: 16.66666667%;
1498
- }
1499
- .col-xs-pull-1 {
1500
- right: 8.33333333%;
1501
- }
1502
- .col-xs-pull-0 {
1503
- right: auto;
1504
- }
1505
- .col-xs-push-12 {
1506
- left: 100%;
1507
- }
1508
- .col-xs-push-11 {
1509
- left: 91.66666667%;
1510
- }
1511
- .col-xs-push-10 {
1512
- left: 83.33333333%;
1513
- }
1514
- .col-xs-push-9 {
1515
- left: 75%;
1516
- }
1517
- .col-xs-push-8 {
1518
- left: 66.66666667%;
1519
- }
1520
- .col-xs-push-7 {
1521
- left: 58.33333333%;
1522
- }
1523
- .col-xs-push-6 {
1524
- left: 50%;
1525
- }
1526
- .col-xs-push-5 {
1527
- left: 41.66666667%;
1528
- }
1529
- .col-xs-push-4 {
1530
- left: 33.33333333%;
1531
- }
1532
- .col-xs-push-3 {
1533
- left: 25%;
1534
- }
1535
- .col-xs-push-2 {
1536
- left: 16.66666667%;
1537
- }
1538
- .col-xs-push-1 {
1539
- left: 8.33333333%;
1540
- }
1541
- .col-xs-push-0 {
1542
- left: auto;
1543
- }
1544
- .col-xs-offset-12 {
1545
- margin-left: 100%;
1546
- }
1547
- .col-xs-offset-11 {
1548
- margin-left: 91.66666667%;
1549
- }
1550
- .col-xs-offset-10 {
1551
- margin-left: 83.33333333%;
1552
- }
1553
- .col-xs-offset-9 {
1554
- margin-left: 75%;
1555
- }
1556
- .col-xs-offset-8 {
1557
- margin-left: 66.66666667%;
1558
- }
1559
- .col-xs-offset-7 {
1560
- margin-left: 58.33333333%;
1561
- }
1562
- .col-xs-offset-6 {
1563
- margin-left: 50%;
1564
- }
1565
- .col-xs-offset-5 {
1566
- margin-left: 41.66666667%;
1567
- }
1568
- .col-xs-offset-4 {
1569
- margin-left: 33.33333333%;
1570
- }
1571
- .col-xs-offset-3 {
1572
- margin-left: 25%;
1573
- }
1574
- .col-xs-offset-2 {
1575
- margin-left: 16.66666667%;
1576
- }
1577
- .col-xs-offset-1 {
1578
- margin-left: 8.33333333%;
1579
- }
1580
- .col-xs-offset-0 {
1581
- margin-left: 0;
1582
- }
1583
- @media (min-width: 768px) {
1584
- .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 {
1585
- float: left;
1586
- }
1587
- .col-sm-12 {
1588
- width: 100%;
1589
- }
1590
- .col-sm-11 {
1591
- width: 91.66666667%;
1592
- }
1593
- .col-sm-10 {
1594
- width: 83.33333333%;
1595
- }
1596
- .col-sm-9 {
1597
- width: 75%;
1598
- }
1599
- .col-sm-8 {
1600
- width: 66.66666667%;
1601
- }
1602
- .col-sm-7 {
1603
- width: 58.33333333%;
1604
- }
1605
- .col-sm-6 {
1606
- width: 50%;
1607
- }
1608
- .col-sm-5 {
1609
- width: 41.66666667%;
1610
- }
1611
- .col-sm-4 {
1612
- width: 33.33333333%;
1613
- }
1614
- .col-sm-3 {
1615
- width: 25%;
1616
- }
1617
- .col-sm-2 {
1618
- width: 16.66666667%;
1619
- }
1620
- .col-sm-1 {
1621
- width: 8.33333333%;
1622
- }
1623
- .col-sm-pull-12 {
1624
- right: 100%;
1625
- }
1626
- .col-sm-pull-11 {
1627
- right: 91.66666667%;
1628
- }
1629
- .col-sm-pull-10 {
1630
- right: 83.33333333%;
1631
- }
1632
- .col-sm-pull-9 {
1633
- right: 75%;
1634
- }
1635
- .col-sm-pull-8 {
1636
- right: 66.66666667%;
1637
- }
1638
- .col-sm-pull-7 {
1639
- right: 58.33333333%;
1640
- }
1641
- .col-sm-pull-6 {
1642
- right: 50%;
1643
- }
1644
- .col-sm-pull-5 {
1645
- right: 41.66666667%;
1646
- }
1647
- .col-sm-pull-4 {
1648
- right: 33.33333333%;
1649
- }
1650
- .col-sm-pull-3 {
1651
- right: 25%;
1652
- }
1653
- .col-sm-pull-2 {
1654
- right: 16.66666667%;
1655
- }
1656
- .col-sm-pull-1 {
1657
- right: 8.33333333%;
1658
- }
1659
- .col-sm-pull-0 {
1660
- right: auto;
1661
- }
1662
- .col-sm-push-12 {
1663
- left: 100%;
1664
- }
1665
- .col-sm-push-11 {
1666
- left: 91.66666667%;
1667
- }
1668
- .col-sm-push-10 {
1669
- left: 83.33333333%;
1670
- }
1671
- .col-sm-push-9 {
1672
- left: 75%;
1673
- }
1674
- .col-sm-push-8 {
1675
- left: 66.66666667%;
1676
- }
1677
- .col-sm-push-7 {
1678
- left: 58.33333333%;
1679
- }
1680
- .col-sm-push-6 {
1681
- left: 50%;
1682
- }
1683
- .col-sm-push-5 {
1684
- left: 41.66666667%;
1685
- }
1686
- .col-sm-push-4 {
1687
- left: 33.33333333%;
1688
- }
1689
- .col-sm-push-3 {
1690
- left: 25%;
1691
- }
1692
- .col-sm-push-2 {
1693
- left: 16.66666667%;
1694
- }
1695
- .col-sm-push-1 {
1696
- left: 8.33333333%;
1697
- }
1698
- .col-sm-push-0 {
1699
- left: auto;
1700
- }
1701
- .col-sm-offset-12 {
1702
- margin-left: 100%;
1703
- }
1704
- .col-sm-offset-11 {
1705
- margin-left: 91.66666667%;
1706
- }
1707
- .col-sm-offset-10 {
1708
- margin-left: 83.33333333%;
1709
- }
1710
- .col-sm-offset-9 {
1711
- margin-left: 75%;
1712
- }
1713
- .col-sm-offset-8 {
1714
- margin-left: 66.66666667%;
1715
- }
1716
- .col-sm-offset-7 {
1717
- margin-left: 58.33333333%;
1718
- }
1719
- .col-sm-offset-6 {
1720
- margin-left: 50%;
1721
- }
1722
- .col-sm-offset-5 {
1723
- margin-left: 41.66666667%;
1724
- }
1725
- .col-sm-offset-4 {
1726
- margin-left: 33.33333333%;
1727
- }
1728
- .col-sm-offset-3 {
1729
- margin-left: 25%;
1730
- }
1731
- .col-sm-offset-2 {
1732
- margin-left: 16.66666667%;
1733
- }
1734
- .col-sm-offset-1 {
1735
- margin-left: 8.33333333%;
1736
- }
1737
- .col-sm-offset-0 {
1738
- margin-left: 0;
1739
- }
1740
- }
1741
- @media (min-width: 992px) {
1742
- .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 {
1743
- float: left;
1744
- }
1745
- .col-md-12 {
1746
- width: 100%;
1747
- }
1748
- .col-md-11 {
1749
- width: 91.66666667%;
1750
- }
1751
- .col-md-10 {
1752
- width: 83.33333333%;
1753
- }
1754
- .col-md-9 {
1755
- width: 75%;
1756
- }
1757
- .col-md-8 {
1758
- width: 66.66666667%;
1759
- }
1760
- .col-md-7 {
1761
- width: 58.33333333%;
1762
- }
1763
- .col-md-6 {
1764
- width: 50%;
1765
- }
1766
- .col-md-5 {
1767
- width: 41.66666667%;
1768
- }
1769
- .col-md-4 {
1770
- width: 33.33333333%;
1771
- }
1772
- .col-md-3 {
1773
- width: 25%;
1774
- }
1775
- .col-md-2 {
1776
- width: 16.66666667%;
1777
- }
1778
- .col-md-1 {
1779
- width: 8.33333333%;
1780
- }
1781
- .col-md-pull-12 {
1782
- right: 100%;
1783
- }
1784
- .col-md-pull-11 {
1785
- right: 91.66666667%;
1786
- }
1787
- .col-md-pull-10 {
1788
- right: 83.33333333%;
1789
- }
1790
- .col-md-pull-9 {
1791
- right: 75%;
1792
- }
1793
- .col-md-pull-8 {
1794
- right: 66.66666667%;
1795
- }
1796
- .col-md-pull-7 {
1797
- right: 58.33333333%;
1798
- }
1799
- .col-md-pull-6 {
1800
- right: 50%;
1801
- }
1802
- .col-md-pull-5 {
1803
- right: 41.66666667%;
1804
- }
1805
- .col-md-pull-4 {
1806
- right: 33.33333333%;
1807
- }
1808
- .col-md-pull-3 {
1809
- right: 25%;
1810
- }
1811
- .col-md-pull-2 {
1812
- right: 16.66666667%;
1813
- }
1814
- .col-md-pull-1 {
1815
- right: 8.33333333%;
1816
- }
1817
- .col-md-pull-0 {
1818
- right: auto;
1819
- }
1820
- .col-md-push-12 {
1821
- left: 100%;
1822
- }
1823
- .col-md-push-11 {
1824
- left: 91.66666667%;
1825
- }
1826
- .col-md-push-10 {
1827
- left: 83.33333333%;
1828
- }
1829
- .col-md-push-9 {
1830
- left: 75%;
1831
- }
1832
- .col-md-push-8 {
1833
- left: 66.66666667%;
1834
- }
1835
- .col-md-push-7 {
1836
- left: 58.33333333%;
1837
- }
1838
- .col-md-push-6 {
1839
- left: 50%;
1840
- }
1841
- .col-md-push-5 {
1842
- left: 41.66666667%;
1843
- }
1844
- .col-md-push-4 {
1845
- left: 33.33333333%;
1846
- }
1847
- .col-md-push-3 {
1848
- left: 25%;
1849
- }
1850
- .col-md-push-2 {
1851
- left: 16.66666667%;
1852
- }
1853
- .col-md-push-1 {
1854
- left: 8.33333333%;
1855
- }
1856
- .col-md-push-0 {
1857
- left: auto;
1858
- }
1859
- .col-md-offset-12 {
1860
- margin-left: 100%;
1861
- }
1862
- .col-md-offset-11 {
1863
- margin-left: 91.66666667%;
1864
- }
1865
- .col-md-offset-10 {
1866
- margin-left: 83.33333333%;
1867
- }
1868
- .col-md-offset-9 {
1869
- margin-left: 75%;
1870
- }
1871
- .col-md-offset-8 {
1872
- margin-left: 66.66666667%;
1873
- }
1874
- .col-md-offset-7 {
1875
- margin-left: 58.33333333%;
1876
- }
1877
- .col-md-offset-6 {
1878
- margin-left: 50%;
1879
- }
1880
- .col-md-offset-5 {
1881
- margin-left: 41.66666667%;
1882
- }
1883
- .col-md-offset-4 {
1884
- margin-left: 33.33333333%;
1885
- }
1886
- .col-md-offset-3 {
1887
- margin-left: 25%;
1888
- }
1889
- .col-md-offset-2 {
1890
- margin-left: 16.66666667%;
1891
- }
1892
- .col-md-offset-1 {
1893
- margin-left: 8.33333333%;
1894
- }
1895
- .col-md-offset-0 {
1896
- margin-left: 0;
1897
- }
1898
- }
1899
- @media (min-width: 1200px) {
1900
- .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 {
1901
- float: left;
1902
- }
1903
- .col-lg-12 {
1904
- width: 100%;
1905
- }
1906
- .col-lg-11 {
1907
- width: 91.66666667%;
1908
- }
1909
- .col-lg-10 {
1910
- width: 83.33333333%;
1911
- }
1912
- .col-lg-9 {
1913
- width: 75%;
1914
- }
1915
- .col-lg-8 {
1916
- width: 66.66666667%;
1917
- }
1918
- .col-lg-7 {
1919
- width: 58.33333333%;
1920
- }
1921
- .col-lg-6 {
1922
- width: 50%;
1923
- }
1924
- .col-lg-5 {
1925
- width: 41.66666667%;
1926
- }
1927
- .col-lg-4 {
1928
- width: 33.33333333%;
1929
- }
1930
- .col-lg-3 {
1931
- width: 25%;
1932
- }
1933
- .col-lg-2 {
1934
- width: 16.66666667%;
1935
- }
1936
- .col-lg-1 {
1937
- width: 8.33333333%;
1938
- }
1939
- .col-lg-pull-12 {
1940
- right: 100%;
1941
- }
1942
- .col-lg-pull-11 {
1943
- right: 91.66666667%;
1944
- }
1945
- .col-lg-pull-10 {
1946
- right: 83.33333333%;
1947
- }
1948
- .col-lg-pull-9 {
1949
- right: 75%;
1950
- }
1951
- .col-lg-pull-8 {
1952
- right: 66.66666667%;
1953
- }
1954
- .col-lg-pull-7 {
1955
- right: 58.33333333%;
1956
- }
1957
- .col-lg-pull-6 {
1958
- right: 50%;
1959
- }
1960
- .col-lg-pull-5 {
1961
- right: 41.66666667%;
1962
- }
1963
- .col-lg-pull-4 {
1964
- right: 33.33333333%;
1965
- }
1966
- .col-lg-pull-3 {
1967
- right: 25%;
1968
- }
1969
- .col-lg-pull-2 {
1970
- right: 16.66666667%;
1971
- }
1972
- .col-lg-pull-1 {
1973
- right: 8.33333333%;
1974
- }
1975
- .col-lg-pull-0 {
1976
- right: auto;
1977
- }
1978
- .col-lg-push-12 {
1979
- left: 100%;
1980
- }
1981
- .col-lg-push-11 {
1982
- left: 91.66666667%;
1983
- }
1984
- .col-lg-push-10 {
1985
- left: 83.33333333%;
1986
- }
1987
- .col-lg-push-9 {
1988
- left: 75%;
1989
- }
1990
- .col-lg-push-8 {
1991
- left: 66.66666667%;
1992
- }
1993
- .col-lg-push-7 {
1994
- left: 58.33333333%;
1995
- }
1996
- .col-lg-push-6 {
1997
- left: 50%;
1998
- }
1999
- .col-lg-push-5 {
2000
- left: 41.66666667%;
2001
- }
2002
- .col-lg-push-4 {
2003
- left: 33.33333333%;
2004
- }
2005
- .col-lg-push-3 {
2006
- left: 25%;
2007
- }
2008
- .col-lg-push-2 {
2009
- left: 16.66666667%;
2010
- }
2011
- .col-lg-push-1 {
2012
- left: 8.33333333%;
2013
- }
2014
- .col-lg-push-0 {
2015
- left: auto;
2016
- }
2017
- .col-lg-offset-12 {
2018
- margin-left: 100%;
2019
- }
2020
- .col-lg-offset-11 {
2021
- margin-left: 91.66666667%;
2022
- }
2023
- .col-lg-offset-10 {
2024
- margin-left: 83.33333333%;
2025
- }
2026
- .col-lg-offset-9 {
2027
- margin-left: 75%;
2028
- }
2029
- .col-lg-offset-8 {
2030
- margin-left: 66.66666667%;
2031
- }
2032
- .col-lg-offset-7 {
2033
- margin-left: 58.33333333%;
2034
- }
2035
- .col-lg-offset-6 {
2036
- margin-left: 50%;
2037
- }
2038
- .col-lg-offset-5 {
2039
- margin-left: 41.66666667%;
2040
- }
2041
- .col-lg-offset-4 {
2042
- margin-left: 33.33333333%;
2043
- }
2044
- .col-lg-offset-3 {
2045
- margin-left: 25%;
2046
- }
2047
- .col-lg-offset-2 {
2048
- margin-left: 16.66666667%;
2049
- }
2050
- .col-lg-offset-1 {
2051
- margin-left: 8.33333333%;
2052
- }
2053
- .col-lg-offset-0 {
2054
- margin-left: 0;
2055
- }
2056
- }
2057
- table {
2058
- background-color: transparent;
2059
- }
2060
- caption {
2061
- padding-top: 8px;
2062
- padding-bottom: 8px;
2063
- color: #777;
2064
- text-align: left;
2065
- }
2066
- th {
2067
- text-align: left;
2068
- }
2069
- .table {
2070
- width: 100%;
2071
- max-width: 100%;
2072
- margin-bottom: 20px;
2073
- }
2074
- .table > thead > tr > th,
2075
- .table > tbody > tr > th,
2076
- .table > tfoot > tr > th,
2077
- .table > thead > tr > td,
2078
- .table > tbody > tr > td,
2079
- .table > tfoot > tr > td {
2080
- padding: 8px;
2081
- line-height: 1.42857143;
2082
- vertical-align: top;
2083
- border-top: 1px solid #ddd;
2084
- }
2085
- .table > thead > tr > th {
2086
- vertical-align: bottom;
2087
- border-bottom: 2px solid #ddd;
2088
- }
2089
- .table > caption + thead > tr:first-child > th,
2090
- .table > colgroup + thead > tr:first-child > th,
2091
- .table > thead:first-child > tr:first-child > th,
2092
- .table > caption + thead > tr:first-child > td,
2093
- .table > colgroup + thead > tr:first-child > td,
2094
- .table > thead:first-child > tr:first-child > td {
2095
- border-top: 0;
2096
- }
2097
- .table > tbody + tbody {
2098
- border-top: 2px solid #ddd;
2099
- }
2100
- .table .table {
2101
- background-color: #fff;
2102
- }
2103
- .table-condensed > thead > tr > th,
2104
- .table-condensed > tbody > tr > th,
2105
- .table-condensed > tfoot > tr > th,
2106
- .table-condensed > thead > tr > td,
2107
- .table-condensed > tbody > tr > td,
2108
- .table-condensed > tfoot > tr > td {
2109
- padding: 5px;
2110
- }
2111
- .table-bordered {
2112
- border: 1px solid #ddd;
2113
- }
2114
- .table-bordered > thead > tr > th,
2115
- .table-bordered > tbody > tr > th,
2116
- .table-bordered > tfoot > tr > th,
2117
- .table-bordered > thead > tr > td,
2118
- .table-bordered > tbody > tr > td,
2119
- .table-bordered > tfoot > tr > td {
2120
- border: 1px solid #ddd;
2121
- }
2122
- .table-bordered > thead > tr > th,
2123
- .table-bordered > thead > tr > td {
2124
- border-bottom-width: 2px;
2125
- }
2126
- .table-striped > tbody > tr:nth-child(odd) {
2127
- background-color: #f9f9f9;
2128
- }
2129
- .table-hover > tbody > tr:hover {
2130
- background-color: #f5f5f5;
2131
- }
2132
- table col[class*="col-"] {
2133
- position: static;
2134
- display: table-column;
2135
- float: none;
2136
- }
2137
- table td[class*="col-"],
2138
- table th[class*="col-"] {
2139
- position: static;
2140
- display: table-cell;
2141
- float: none;
2142
- }
2143
- .table > thead > tr > td.active,
2144
- .table > tbody > tr > td.active,
2145
- .table > tfoot > tr > td.active,
2146
- .table > thead > tr > th.active,
2147
- .table > tbody > tr > th.active,
2148
- .table > tfoot > tr > th.active,
2149
- .table > thead > tr.active > td,
2150
- .table > tbody > tr.active > td,
2151
- .table > tfoot > tr.active > td,
2152
- .table > thead > tr.active > th,
2153
- .table > tbody > tr.active > th,
2154
- .table > tfoot > tr.active > th {
2155
- background-color: #f5f5f5;
2156
- }
2157
- .table-hover > tbody > tr > td.active:hover,
2158
- .table-hover > tbody > tr > th.active:hover,
2159
- .table-hover > tbody > tr.active:hover > td,
2160
- .table-hover > tbody > tr:hover > .active,
2161
- .table-hover > tbody > tr.active:hover > th {
2162
- background-color: #e8e8e8;
2163
- }
2164
- .table > thead > tr > td.success,
2165
- .table > tbody > tr > td.success,
2166
- .table > tfoot > tr > td.success,
2167
- .table > thead > tr > th.success,
2168
- .table > tbody > tr > th.success,
2169
- .table > tfoot > tr > th.success,
2170
- .table > thead > tr.success > td,
2171
- .table > tbody > tr.success > td,
2172
- .table > tfoot > tr.success > td,
2173
- .table > thead > tr.success > th,
2174
- .table > tbody > tr.success > th,
2175
- .table > tfoot > tr.success > th {
2176
- background-color: #dff0d8;
2177
- }
2178
- .table-hover > tbody > tr > td.success:hover,
2179
- .table-hover > tbody > tr > th.success:hover,
2180
- .table-hover > tbody > tr.success:hover > td,
2181
- .table-hover > tbody > tr:hover > .success,
2182
- .table-hover > tbody > tr.success:hover > th {
2183
- background-color: #d0e9c6;
2184
- }
2185
- .table > thead > tr > td.info,
2186
- .table > tbody > tr > td.info,
2187
- .table > tfoot > tr > td.info,
2188
- .table > thead > tr > th.info,
2189
- .table > tbody > tr > th.info,
2190
- .table > tfoot > tr > th.info,
2191
- .table > thead > tr.info > td,
2192
- .table > tbody > tr.info > td,
2193
- .table > tfoot > tr.info > td,
2194
- .table > thead > tr.info > th,
2195
- .table > tbody > tr.info > th,
2196
- .table > tfoot > tr.info > th {
2197
- background-color: #d9edf7;
2198
- }
2199
- .table-hover > tbody > tr > td.info:hover,
2200
- .table-hover > tbody > tr > th.info:hover,
2201
- .table-hover > tbody > tr.info:hover > td,
2202
- .table-hover > tbody > tr:hover > .info,
2203
- .table-hover > tbody > tr.info:hover > th {
2204
- background-color: #c4e3f3;
2205
- }
2206
- .table > thead > tr > td.warning,
2207
- .table > tbody > tr > td.warning,
2208
- .table > tfoot > tr > td.warning,
2209
- .table > thead > tr > th.warning,
2210
- .table > tbody > tr > th.warning,
2211
- .table > tfoot > tr > th.warning,
2212
- .table > thead > tr.warning > td,
2213
- .table > tbody > tr.warning > td,
2214
- .table > tfoot > tr.warning > td,
2215
- .table > thead > tr.warning > th,
2216
- .table > tbody > tr.warning > th,
2217
- .table > tfoot > tr.warning > th {
2218
- background-color: #fcf8e3;
2219
- }
2220
- .table-hover > tbody > tr > td.warning:hover,
2221
- .table-hover > tbody > tr > th.warning:hover,
2222
- .table-hover > tbody > tr.warning:hover > td,
2223
- .table-hover > tbody > tr:hover > .warning,
2224
- .table-hover > tbody > tr.warning:hover > th {
2225
- background-color: #faf2cc;
2226
- }
2227
- .table > thead > tr > td.danger,
2228
- .table > tbody > tr > td.danger,
2229
- .table > tfoot > tr > td.danger,
2230
- .table > thead > tr > th.danger,
2231
- .table > tbody > tr > th.danger,
2232
- .table > tfoot > tr > th.danger,
2233
- .table > thead > tr.danger > td,
2234
- .table > tbody > tr.danger > td,
2235
- .table > tfoot > tr.danger > td,
2236
- .table > thead > tr.danger > th,
2237
- .table > tbody > tr.danger > th,
2238
- .table > tfoot > tr.danger > th {
2239
- background-color: #f2dede;
2240
- }
2241
- .table-hover > tbody > tr > td.danger:hover,
2242
- .table-hover > tbody > tr > th.danger:hover,
2243
- .table-hover > tbody > tr.danger:hover > td,
2244
- .table-hover > tbody > tr:hover > .danger,
2245
- .table-hover > tbody > tr.danger:hover > th {
2246
- background-color: #ebcccc;
2247
- }
2248
- .table-responsive {
2249
- min-height: .01%;
2250
- overflow-x: auto;
2251
- }
2252
- @media screen and (max-width: 767px) {
2253
- .table-responsive {
2254
- width: 100%;
2255
- margin-bottom: 15px;
2256
- overflow-y: hidden;
2257
- -ms-overflow-style: -ms-autohiding-scrollbar;
2258
- border: 1px solid #ddd;
2259
- }
2260
- .table-responsive > .table {
2261
- margin-bottom: 0;
2262
- }
2263
- .table-responsive > .table > thead > tr > th,
2264
- .table-responsive > .table > tbody > tr > th,
2265
- .table-responsive > .table > tfoot > tr > th,
2266
- .table-responsive > .table > thead > tr > td,
2267
- .table-responsive > .table > tbody > tr > td,
2268
- .table-responsive > .table > tfoot > tr > td {
2269
- white-space: nowrap;
2270
- }
2271
- .table-responsive > .table-bordered {
2272
- border: 0;
2273
- }
2274
- .table-responsive > .table-bordered > thead > tr > th:first-child,
2275
- .table-responsive > .table-bordered > tbody > tr > th:first-child,
2276
- .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2277
- .table-responsive > .table-bordered > thead > tr > td:first-child,
2278
- .table-responsive > .table-bordered > tbody > tr > td:first-child,
2279
- .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2280
- border-left: 0;
2281
- }
2282
- .table-responsive > .table-bordered > thead > tr > th:last-child,
2283
- .table-responsive > .table-bordered > tbody > tr > th:last-child,
2284
- .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2285
- .table-responsive > .table-bordered > thead > tr > td:last-child,
2286
- .table-responsive > .table-bordered > tbody > tr > td:last-child,
2287
- .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2288
- border-right: 0;
2289
- }
2290
- .table-responsive > .table-bordered > tbody > tr:last-child > th,
2291
- .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2292
- .table-responsive > .table-bordered > tbody > tr:last-child > td,
2293
- .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2294
- border-bottom: 0;
2295
- }
2296
- }
2297
- fieldset {
2298
- min-width: 0;
2299
- padding: 0;
2300
- margin: 0;
2301
- border: 0;
2302
- }
2303
- legend {
2304
- display: block;
2305
- width: 100%;
2306
- padding: 0;
2307
- margin-bottom: 20px;
2308
- font-size: 21px;
2309
- line-height: inherit;
2310
- color: #333;
2311
- border: 0;
2312
- border-bottom: 1px solid #e5e5e5;
2313
- }
2314
- label {
2315
- display: inline-block;
2316
- max-width: 100%;
2317
- margin-bottom: 5px;
2318
- font-weight: bold;
2319
- }
2320
- input[type="search"] {
2321
- -webkit-box-sizing: border-box;
2322
- -moz-box-sizing: border-box;
2323
- box-sizing: border-box;
2324
- }
2325
- input[type="radio"],
2326
- input[type="checkbox"] {
2327
- margin: 4px 0 0;
2328
- margin-top: 1px \9;
2329
- line-height: normal;
2330
- }
2331
- input[type="file"] {
2332
- display: block;
2333
- }
2334
- input[type="range"] {
2335
- display: block;
2336
- width: 100%;
2337
- }
2338
- select[multiple],
2339
- select[size] {
2340
- height: auto;
2341
- }
2342
- input[type="file"]:focus,
2343
- input[type="radio"]:focus,
2344
- input[type="checkbox"]:focus {
2345
- outline: thin dotted;
2346
- outline: 5px auto -webkit-focus-ring-color;
2347
- outline-offset: -2px;
2348
- }
2349
- output {
2350
- display: block;
2351
- padding-top: 7px;
2352
- font-size: 14px;
2353
- line-height: 1.42857143;
2354
- color: #555;
2355
- }
2356
- .form-control {
2357
- display: block;
2358
- width: 100%;
2359
- height: 34px;
2360
- padding: 6px 12px;
2361
- font-size: 14px;
2362
- line-height: 1.42857143;
2363
- color: #555;
2364
- background-color: #fff;
2365
- background-image: none;
2366
- border: 1px solid #ccc;
2367
- border-radius: 4px;
2368
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2369
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2370
- -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2371
- -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2372
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2373
- }
2374
- .form-control:focus {
2375
- border-color: #66afe9;
2376
- outline: 0;
2377
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2378
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2379
- }
2380
- .form-control::-moz-placeholder {
2381
- color: #999;
2382
- opacity: 1;
2383
- }
2384
- .form-control:-ms-input-placeholder {
2385
- color: #999;
2386
- }
2387
- .form-control::-webkit-input-placeholder {
2388
- color: #999;
2389
- }
2390
- .form-control[disabled],
2391
- .form-control[readonly],
2392
- fieldset[disabled] .form-control {
2393
- cursor: not-allowed;
2394
- background-color: #eee;
2395
- opacity: 1;
2396
- }
2397
- textarea.form-control {
2398
- height: auto;
2399
- }
2400
- input[type="search"] {
2401
- -webkit-appearance: none;
2402
- }
2403
- input[type="date"],
2404
- input[type="time"],
2405
- input[type="datetime-local"],
2406
- input[type="month"] {
2407
- line-height: 34px;
2408
- line-height: 1.42857143 \0;
2409
- }
2410
- input[type="date"].input-sm,
2411
- input[type="time"].input-sm,
2412
- input[type="datetime-local"].input-sm,
2413
- input[type="month"].input-sm {
2414
- line-height: 30px;
2415
- line-height: 1.5 \0;
2416
- }
2417
- input[type="date"].input-lg,
2418
- input[type="time"].input-lg,
2419
- input[type="datetime-local"].input-lg,
2420
- input[type="month"].input-lg {
2421
- line-height: 46px;
2422
- line-height: 1.33 \0;
2423
- }
2424
- _:-ms-fullscreen,
2425
- :root input[type="date"],
2426
- _:-ms-fullscreen,
2427
- :root input[type="time"],
2428
- _:-ms-fullscreen,
2429
- :root input[type="datetime-local"],
2430
- _:-ms-fullscreen,
2431
- :root input[type="month"] {
2432
- line-height: 1.42857143;
2433
- }
2434
- _:-ms-fullscreen.input-sm,
2435
- :root input[type="date"].input-sm,
2436
- _:-ms-fullscreen.input-sm,
2437
- :root input[type="time"].input-sm,
2438
- _:-ms-fullscreen.input-sm,
2439
- :root input[type="datetime-local"].input-sm,
2440
- _:-ms-fullscreen.input-sm,
2441
- :root input[type="month"].input-sm {
2442
- line-height: 1.5;
2443
- }
2444
- _:-ms-fullscreen.input-lg,
2445
- :root input[type="date"].input-lg,
2446
- _:-ms-fullscreen.input-lg,
2447
- :root input[type="time"].input-lg,
2448
- _:-ms-fullscreen.input-lg,
2449
- :root input[type="datetime-local"].input-lg,
2450
- _:-ms-fullscreen.input-lg,
2451
- :root input[type="month"].input-lg {
2452
- line-height: 1.33;
2453
- }
2454
- .form-group {
2455
- margin-bottom: 15px;
2456
- }
2457
- .radio,
2458
- .checkbox {
2459
- position: relative;
2460
- display: block;
2461
- margin-top: 10px;
2462
- margin-bottom: 10px;
2463
- }
2464
- .radio label,
2465
- .checkbox label {
2466
- min-height: 20px;
2467
- padding-left: 20px;
2468
- margin-bottom: 0;
2469
- font-weight: normal;
2470
- cursor: pointer;
2471
- }
2472
- .radio input[type="radio"],
2473
- .radio-inline input[type="radio"],
2474
- .checkbox input[type="checkbox"],
2475
- .checkbox-inline input[type="checkbox"] {
2476
- position: absolute;
2477
- margin-top: 4px \9;
2478
- margin-left: -20px;
2479
- }
2480
- .radio + .radio,
2481
- .checkbox + .checkbox {
2482
- margin-top: -5px;
2483
- }
2484
- .radio-inline,
2485
- .checkbox-inline {
2486
- display: inline-block;
2487
- padding-left: 20px;
2488
- margin-bottom: 0;
2489
- font-weight: normal;
2490
- vertical-align: middle;
2491
- cursor: pointer;
2492
- }
2493
- .radio-inline + .radio-inline,
2494
- .checkbox-inline + .checkbox-inline {
2495
- margin-top: 0;
2496
- margin-left: 10px;
2497
- }
2498
- input[type="radio"][disabled],
2499
- input[type="checkbox"][disabled],
2500
- input[type="radio"].disabled,
2501
- input[type="checkbox"].disabled,
2502
- fieldset[disabled] input[type="radio"],
2503
- fieldset[disabled] input[type="checkbox"] {
2504
- cursor: not-allowed;
2505
- }
2506
- .radio-inline.disabled,
2507
- .checkbox-inline.disabled,
2508
- fieldset[disabled] .radio-inline,
2509
- fieldset[disabled] .checkbox-inline {
2510
- cursor: not-allowed;
2511
- }
2512
- .radio.disabled label,
2513
- .checkbox.disabled label,
2514
- fieldset[disabled] .radio label,
2515
- fieldset[disabled] .checkbox label {
2516
- cursor: not-allowed;
2517
- }
2518
- .form-control-static {
2519
- padding-top: 7px;
2520
- padding-bottom: 7px;
2521
- margin-bottom: 0;
2522
- }
2523
- .form-control-static.input-lg,
2524
- .form-control-static.input-sm {
2525
- padding-right: 0;
2526
- padding-left: 0;
2527
- }
2528
- .input-sm,
2529
- .form-group-sm .form-control {
2530
- height: 30px;
2531
- padding: 5px 10px;
2532
- font-size: 12px;
2533
- line-height: 1.5;
2534
- border-radius: 3px;
2535
- }
2536
- select.input-sm,
2537
- select.form-group-sm .form-control {
2538
- height: 30px;
2539
- line-height: 30px;
2540
- }
2541
- textarea.input-sm,
2542
- textarea.form-group-sm .form-control,
2543
- select[multiple].input-sm,
2544
- select[multiple].form-group-sm .form-control {
2545
- height: auto;
2546
- }
2547
- .input-lg,
2548
- .form-group-lg .form-control {
2549
- height: 46px;
2550
- padding: 10px 16px;
2551
- font-size: 18px;
2552
- line-height: 1.33;
2553
- border-radius: 6px;
2554
- }
2555
- select.input-lg,
2556
- select.form-group-lg .form-control {
2557
- height: 46px;
2558
- line-height: 46px;
2559
- }
2560
- textarea.input-lg,
2561
- textarea.form-group-lg .form-control,
2562
- select[multiple].input-lg,
2563
- select[multiple].form-group-lg .form-control {
2564
- height: auto;
2565
- }
2566
- .has-feedback {
2567
- position: relative;
2568
- }
2569
- .has-feedback .form-control {
2570
- padding-right: 42.5px;
2571
- }
2572
- .form-control-feedback {
2573
- position: absolute;
2574
- top: 0;
2575
- right: 0;
2576
- z-index: 2;
2577
- display: block;
2578
- width: 34px;
2579
- height: 34px;
2580
- line-height: 34px;
2581
- text-align: center;
2582
- pointer-events: none;
2583
- }
2584
- .input-lg + .form-control-feedback {
2585
- width: 46px;
2586
- height: 46px;
2587
- line-height: 46px;
2588
- }
2589
- .input-sm + .form-control-feedback {
2590
- width: 30px;
2591
- height: 30px;
2592
- line-height: 30px;
2593
- }
2594
- .has-success .help-block,
2595
- .has-success .control-label,
2596
- .has-success .radio,
2597
- .has-success .checkbox,
2598
- .has-success .radio-inline,
2599
- .has-success .checkbox-inline,
2600
- .has-success.radio label,
2601
- .has-success.checkbox label,
2602
- .has-success.radio-inline label,
2603
- .has-success.checkbox-inline label {
2604
- color: #3c763d;
2605
- }
2606
- .has-success .form-control {
2607
- border-color: #3c763d;
2608
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2609
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2610
- }
2611
- .has-success .form-control:focus {
2612
- border-color: #2b542c;
2613
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2614
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2615
- }
2616
- .has-success .input-group-addon {
2617
- color: #3c763d;
2618
- background-color: #dff0d8;
2619
- border-color: #3c763d;
2620
- }
2621
- .has-success .form-control-feedback {
2622
- color: #3c763d;
2623
- }
2624
- .has-warning .help-block,
2625
- .has-warning .control-label,
2626
- .has-warning .radio,
2627
- .has-warning .checkbox,
2628
- .has-warning .radio-inline,
2629
- .has-warning .checkbox-inline,
2630
- .has-warning.radio label,
2631
- .has-warning.checkbox label,
2632
- .has-warning.radio-inline label,
2633
- .has-warning.checkbox-inline label {
2634
- color: #8a6d3b;
2635
- }
2636
- .has-warning .form-control {
2637
- border-color: #8a6d3b;
2638
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2639
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2640
- }
2641
- .has-warning .form-control:focus {
2642
- border-color: #66512c;
2643
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2644
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2645
- }
2646
- .has-warning .input-group-addon {
2647
- color: #8a6d3b;
2648
- background-color: #fcf8e3;
2649
- border-color: #8a6d3b;
2650
- }
2651
- .has-warning .form-control-feedback {
2652
- color: #8a6d3b;
2653
- }
2654
- .has-error .help-block,
2655
- .has-error .control-label,
2656
- .has-error .radio,
2657
- .has-error .checkbox,
2658
- .has-error .radio-inline,
2659
- .has-error .checkbox-inline,
2660
- .has-error.radio label,
2661
- .has-error.checkbox label,
2662
- .has-error.radio-inline label,
2663
- .has-error.checkbox-inline label {
2664
- color: #a94442;
2665
- }
2666
- .has-error .form-control {
2667
- border-color: #a94442;
2668
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2669
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2670
- }
2671
- .has-error .form-control:focus {
2672
- border-color: #843534;
2673
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2674
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2675
- }
2676
- .has-error .input-group-addon {
2677
- color: #a94442;
2678
- background-color: #f2dede;
2679
- border-color: #a94442;
2680
- }
2681
- .has-error .form-control-feedback {
2682
- color: #a94442;
2683
- }
2684
- .has-feedback label ~ .form-control-feedback {
2685
- top: 25px;
2686
- }
2687
- .has-feedback label.sr-only ~ .form-control-feedback {
2688
- top: 0;
2689
- }
2690
- .help-block {
2691
- display: block;
2692
- margin-top: 5px;
2693
- margin-bottom: 10px;
2694
- color: #737373;
2695
- }
2696
- @media (min-width: 768px) {
2697
- .form-inline .form-group {
2698
- display: inline-block;
2699
- margin-bottom: 0;
2700
- vertical-align: middle;
2701
- }
2702
- .form-inline .form-control {
2703
- display: inline-block;
2704
- width: auto;
2705
- vertical-align: middle;
2706
- }
2707
- .form-inline .form-control-static {
2708
- display: inline-block;
2709
- }
2710
- .form-inline .input-group {
2711
- display: inline-table;
2712
- vertical-align: middle;
2713
- }
2714
- .form-inline .input-group .input-group-addon,
2715
- .form-inline .input-group .input-group-btn,
2716
- .form-inline .input-group .form-control {
2717
- width: auto;
2718
- }
2719
- .form-inline .input-group > .form-control {
2720
- width: 100%;
2721
- }
2722
- .form-inline .control-label {
2723
- margin-bottom: 0;
2724
- vertical-align: middle;
2725
- }
2726
- .form-inline .radio,
2727
- .form-inline .checkbox {
2728
- display: inline-block;
2729
- margin-top: 0;
2730
- margin-bottom: 0;
2731
- vertical-align: middle;
2732
- }
2733
- .form-inline .radio label,
2734
- .form-inline .checkbox label {
2735
- padding-left: 0;
2736
- }
2737
- .form-inline .radio input[type="radio"],
2738
- .form-inline .checkbox input[type="checkbox"] {
2739
- position: relative;
2740
- margin-left: 0;
2741
- }
2742
- .form-inline .has-feedback .form-control-feedback {
2743
- top: 0;
2744
- }
2745
- }
2746
- .form-horizontal .radio,
2747
- .form-horizontal .checkbox,
2748
- .form-horizontal .radio-inline,
2749
- .form-horizontal .checkbox-inline {
2750
- padding-top: 7px;
2751
- margin-top: 0;
2752
- margin-bottom: 0;
2753
- }
2754
- .form-horizontal .radio,
2755
- .form-horizontal .checkbox {
2756
- min-height: 27px;
2757
- }
2758
- .form-horizontal .form-group {
2759
- margin-right: -15px;
2760
- margin-left: -15px;
2761
- }
2762
- @media (min-width: 768px) {
2763
- .form-horizontal .control-label {
2764
- padding-top: 7px;
2765
- margin-bottom: 0;
2766
- text-align: right;
2767
- }
2768
- }
2769
- .form-horizontal .has-feedback .form-control-feedback {
2770
- right: 15px;
2771
- }
2772
- @media (min-width: 768px) {
2773
- .form-horizontal .form-group-lg .control-label {
2774
- padding-top: 14.3px;
2775
- }
2776
- }
2777
- @media (min-width: 768px) {
2778
- .form-horizontal .form-group-sm .control-label {
2779
- padding-top: 6px;
2780
- }
2781
- }
2782
- .btn {
2783
- display: inline-block;
2784
- padding: 6px 12px;
2785
- margin-bottom: 0;
2786
- font-size: 14px;
2787
- font-weight: normal;
2788
- line-height: 1.42857143;
2789
- text-align: center;
2790
- white-space: nowrap;
2791
- vertical-align: middle;
2792
- -ms-touch-action: manipulation;
2793
- touch-action: manipulation;
2794
- cursor: pointer;
2795
- -webkit-user-select: none;
2796
- -moz-user-select: none;
2797
- -ms-user-select: none;
2798
- user-select: none;
2799
- background-image: none;
2800
- border: 1px solid transparent;
2801
- border-radius: 4px;
2802
- }
2803
- .btn:focus,
2804
- .btn:active:focus,
2805
- .btn.active:focus,
2806
- .btn.focus,
2807
- .btn:active.focus,
2808
- .btn.active.focus {
2809
- outline: thin dotted;
2810
- outline: 5px auto -webkit-focus-ring-color;
2811
- outline-offset: -2px;
2812
- }
2813
- .btn:hover,
2814
- .btn:focus,
2815
- .btn.focus {
2816
- color: #333;
2817
- text-decoration: none;
2818
- }
2819
- .btn:active,
2820
- .btn.active {
2821
- background-image: none;
2822
- outline: 0;
2823
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
2824
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
2825
- }
2826
- .btn.disabled,
2827
- .btn[disabled],
2828
- fieldset[disabled] .btn {
2829
- pointer-events: none;
2830
- cursor: not-allowed;
2831
- filter: alpha(opacity=65);
2832
- -webkit-box-shadow: none;
2833
- box-shadow: none;
2834
- opacity: .65;
2835
- }
2836
- .btn-default {
2837
- color: #333;
2838
- background-color: #fff;
2839
- border-color: #ccc;
2840
- }
2841
- .btn-default:hover,
2842
- .btn-default:focus,
2843
- .btn-default.focus,
2844
- .btn-default:active,
2845
- .btn-default.active,
2846
- .open > .dropdown-toggle.btn-default {
2847
- color: #333;
2848
- background-color: #e6e6e6;
2849
- border-color: #adadad;
2850
- }
2851
- .btn-default:active,
2852
- .btn-default.active,
2853
- .open > .dropdown-toggle.btn-default {
2854
- background-image: none;
2855
- }
2856
- .btn-default.disabled,
2857
- .btn-default[disabled],
2858
- fieldset[disabled] .btn-default,
2859
- .btn-default.disabled:hover,
2860
- .btn-default[disabled]:hover,
2861
- fieldset[disabled] .btn-default:hover,
2862
- .btn-default.disabled:focus,
2863
- .btn-default[disabled]:focus,
2864
- fieldset[disabled] .btn-default:focus,
2865
- .btn-default.disabled.focus,
2866
- .btn-default[disabled].focus,
2867
- fieldset[disabled] .btn-default.focus,
2868
- .btn-default.disabled:active,
2869
- .btn-default[disabled]:active,
2870
- fieldset[disabled] .btn-default:active,
2871
- .btn-default.disabled.active,
2872
- .btn-default[disabled].active,
2873
- fieldset[disabled] .btn-default.active {
2874
- background-color: #fff;
2875
- border-color: #ccc;
2876
- }
2877
- .btn-default .badge {
2878
- color: #fff;
2879
- background-color: #333;
2880
- }
2881
- .btn-primary {
2882
- color: #fff;
2883
- background-color: #428bca;
2884
- border-color: #357ebd;
2885
- }
2886
- .btn-primary:hover,
2887
- .btn-primary:focus,
2888
- .btn-primary.focus,
2889
- .btn-primary:active,
2890
- .btn-primary.active,
2891
- .open > .dropdown-toggle.btn-primary {
2892
- color: #fff;
2893
- background-color: #3071a9;
2894
- border-color: #285e8e;
2895
- }
2896
- .btn-primary:active,
2897
- .btn-primary.active,
2898
- .open > .dropdown-toggle.btn-primary {
2899
- background-image: none;
2900
- }
2901
- .btn-primary.disabled,
2902
- .btn-primary[disabled],
2903
- fieldset[disabled] .btn-primary,
2904
- .btn-primary.disabled:hover,
2905
- .btn-primary[disabled]:hover,
2906
- fieldset[disabled] .btn-primary:hover,
2907
- .btn-primary.disabled:focus,
2908
- .btn-primary[disabled]:focus,
2909
- fieldset[disabled] .btn-primary:focus,
2910
- .btn-primary.disabled.focus,
2911
- .btn-primary[disabled].focus,
2912
- fieldset[disabled] .btn-primary.focus,
2913
- .btn-primary.disabled:active,
2914
- .btn-primary[disabled]:active,
2915
- fieldset[disabled] .btn-primary:active,
2916
- .btn-primary.disabled.active,
2917
- .btn-primary[disabled].active,
2918
- fieldset[disabled] .btn-primary.active {
2919
- background-color: #428bca;
2920
- border-color: #357ebd;
2921
- }
2922
- .btn-primary .badge {
2923
- color: #428bca;
2924
- background-color: #fff;
2925
- }
2926
- .btn-success {
2927
- color: #fff;
2928
- background-color: #5cb85c;
2929
- border-color: #4cae4c;
2930
- }
2931
- .btn-success:hover,
2932
- .btn-success:focus,
2933
- .btn-success.focus,
2934
- .btn-success:active,
2935
- .btn-success.active,
2936
- .open > .dropdown-toggle.btn-success {
2937
- color: #fff;
2938
- background-color: #449d44;
2939
- border-color: #398439;
2940
- }
2941
- .btn-success:active,
2942
- .btn-success.active,
2943
- .open > .dropdown-toggle.btn-success {
2944
- background-image: none;
2945
- }
2946
- .btn-success.disabled,
2947
- .btn-success[disabled],
2948
- fieldset[disabled] .btn-success,
2949
- .btn-success.disabled:hover,
2950
- .btn-success[disabled]:hover,
2951
- fieldset[disabled] .btn-success:hover,
2952
- .btn-success.disabled:focus,
2953
- .btn-success[disabled]:focus,
2954
- fieldset[disabled] .btn-success:focus,
2955
- .btn-success.disabled.focus,
2956
- .btn-success[disabled].focus,
2957
- fieldset[disabled] .btn-success.focus,
2958
- .btn-success.disabled:active,
2959
- .btn-success[disabled]:active,
2960
- fieldset[disabled] .btn-success:active,
2961
- .btn-success.disabled.active,
2962
- .btn-success[disabled].active,
2963
- fieldset[disabled] .btn-success.active {
2964
- background-color: #5cb85c;
2965
- border-color: #4cae4c;
2966
- }
2967
- .btn-success .badge {
2968
- color: #5cb85c;
2969
- background-color: #fff;
2970
- }
2971
- .btn-info {
2972
- color: #fff;
2973
- background-color: #5bc0de;
2974
- border-color: #46b8da;
2975
- }
2976
- .btn-info:hover,
2977
- .btn-info:focus,
2978
- .btn-info.focus,
2979
- .btn-info:active,
2980
- .btn-info.active,
2981
- .open > .dropdown-toggle.btn-info {
2982
- color: #fff;
2983
- background-color: #31b0d5;
2984
- border-color: #269abc;
2985
- }
2986
- .btn-info:active,
2987
- .btn-info.active,
2988
- .open > .dropdown-toggle.btn-info {
2989
- background-image: none;
2990
- }
2991
- .btn-info.disabled,
2992
- .btn-info[disabled],
2993
- fieldset[disabled] .btn-info,
2994
- .btn-info.disabled:hover,
2995
- .btn-info[disabled]:hover,
2996
- fieldset[disabled] .btn-info:hover,
2997
- .btn-info.disabled:focus,
2998
- .btn-info[disabled]:focus,
2999
- fieldset[disabled] .btn-info:focus,
3000
- .btn-info.disabled.focus,
3001
- .btn-info[disabled].focus,
3002
- fieldset[disabled] .btn-info.focus,
3003
- .btn-info.disabled:active,
3004
- .btn-info[disabled]:active,
3005
- fieldset[disabled] .btn-info:active,
3006
- .btn-info.disabled.active,
3007
- .btn-info[disabled].active,
3008
- fieldset[disabled] .btn-info.active {
3009
- background-color: #5bc0de;
3010
- border-color: #46b8da;
3011
- }
3012
- .btn-info .badge {
3013
- color: #5bc0de;
3014
- background-color: #fff;
3015
- }
3016
- .btn-warning {
3017
- color: #fff;
3018
- background-color: #f0ad4e;
3019
- border-color: #eea236;
3020
- }
3021
- .btn-warning:hover,
3022
- .btn-warning:focus,
3023
- .btn-warning.focus,
3024
- .btn-warning:active,
3025
- .btn-warning.active,
3026
- .open > .dropdown-toggle.btn-warning {
3027
- color: #fff;
3028
- background-color: #ec971f;
3029
- border-color: #d58512;
3030
- }
3031
- .btn-warning:active,
3032
- .btn-warning.active,
3033
- .open > .dropdown-toggle.btn-warning {
3034
- background-image: none;
3035
- }
3036
- .btn-warning.disabled,
3037
- .btn-warning[disabled],
3038
- fieldset[disabled] .btn-warning,
3039
- .btn-warning.disabled:hover,
3040
- .btn-warning[disabled]:hover,
3041
- fieldset[disabled] .btn-warning:hover,
3042
- .btn-warning.disabled:focus,
3043
- .btn-warning[disabled]:focus,
3044
- fieldset[disabled] .btn-warning:focus,
3045
- .btn-warning.disabled.focus,
3046
- .btn-warning[disabled].focus,
3047
- fieldset[disabled] .btn-warning.focus,
3048
- .btn-warning.disabled:active,
3049
- .btn-warning[disabled]:active,
3050
- fieldset[disabled] .btn-warning:active,
3051
- .btn-warning.disabled.active,
3052
- .btn-warning[disabled].active,
3053
- fieldset[disabled] .btn-warning.active {
3054
- background-color: #f0ad4e;
3055
- border-color: #eea236;
3056
- }
3057
- .btn-warning .badge {
3058
- color: #f0ad4e;
3059
- background-color: #fff;
3060
- }
3061
- .btn-danger {
3062
- color: #fff;
3063
- background-color: #d9534f;
3064
- border-color: #d43f3a;
3065
- }
3066
- .btn-danger:hover,
3067
- .btn-danger:focus,
3068
- .btn-danger.focus,
3069
- .btn-danger:active,
3070
- .btn-danger.active,
3071
- .open > .dropdown-toggle.btn-danger {
3072
- color: #fff;
3073
- background-color: #c9302c;
3074
- border-color: #ac2925;
3075
- }
3076
- .btn-danger:active,
3077
- .btn-danger.active,
3078
- .open > .dropdown-toggle.btn-danger {
3079
- background-image: none;
3080
- }
3081
- .btn-danger.disabled,
3082
- .btn-danger[disabled],
3083
- fieldset[disabled] .btn-danger,
3084
- .btn-danger.disabled:hover,
3085
- .btn-danger[disabled]:hover,
3086
- fieldset[disabled] .btn-danger:hover,
3087
- .btn-danger.disabled:focus,
3088
- .btn-danger[disabled]:focus,
3089
- fieldset[disabled] .btn-danger:focus,
3090
- .btn-danger.disabled.focus,
3091
- .btn-danger[disabled].focus,
3092
- fieldset[disabled] .btn-danger.focus,
3093
- .btn-danger.disabled:active,
3094
- .btn-danger[disabled]:active,
3095
- fieldset[disabled] .btn-danger:active,
3096
- .btn-danger.disabled.active,
3097
- .btn-danger[disabled].active,
3098
- fieldset[disabled] .btn-danger.active {
3099
- background-color: #d9534f;
3100
- border-color: #d43f3a;
3101
- }
3102
- .btn-danger .badge {
3103
- color: #d9534f;
3104
- background-color: #fff;
3105
- }
3106
- .btn-link {
3107
- font-weight: normal;
3108
- color: #428bca;
3109
- border-radius: 0;
3110
- }
3111
- .btn-link,
3112
- .btn-link:active,
3113
- .btn-link.active,
3114
- .btn-link[disabled],
3115
- fieldset[disabled] .btn-link {
3116
- background-color: transparent;
3117
- -webkit-box-shadow: none;
3118
- box-shadow: none;
3119
- }
3120
- .btn-link,
3121
- .btn-link:hover,
3122
- .btn-link:focus,
3123
- .btn-link:active {
3124
- border-color: transparent;
3125
- }
3126
- .btn-link:hover,
3127
- .btn-link:focus {
3128
- color: #2a6496;
3129
- text-decoration: underline;
3130
- background-color: transparent;
3131
- }
3132
- .btn-link[disabled]:hover,
3133
- fieldset[disabled] .btn-link:hover,
3134
- .btn-link[disabled]:focus,
3135
- fieldset[disabled] .btn-link:focus {
3136
- color: #777;
3137
- text-decoration: none;
3138
- }
3139
- .btn-lg,
3140
- .btn-group-lg > .btn {
3141
- padding: 10px 16px;
3142
- font-size: 18px;
3143
- line-height: 1.33;
3144
- border-radius: 6px;
3145
- }
3146
- .btn-sm,
3147
- .btn-group-sm > .btn {
3148
- padding: 5px 10px;
3149
- font-size: 12px;
3150
- line-height: 1.5;
3151
- border-radius: 3px;
3152
- }
3153
- .btn-xs,
3154
- .btn-group-xs > .btn {
3155
- padding: 1px 5px;
3156
- font-size: 12px;
3157
- line-height: 1.5;
3158
- border-radius: 3px;
3159
- }
3160
- .btn-block {
3161
- display: block;
3162
- width: 100%;
3163
- }
3164
- .btn-block + .btn-block {
3165
- margin-top: 5px;
3166
- }
3167
- input[type="submit"].btn-block,
3168
- input[type="reset"].btn-block,
3169
- input[type="button"].btn-block {
3170
- width: 100%;
3171
- }
3172
- .fade {
3173
- opacity: 0;
3174
- -webkit-transition: opacity .15s linear;
3175
- -o-transition: opacity .15s linear;
3176
- transition: opacity .15s linear;
3177
- }
3178
- .fade.in {
3179
- opacity: 1;
3180
- }
3181
- .collapse {
3182
- display: none;
3183
- visibility: hidden;
3184
- }
3185
- .collapse.in {
3186
- display: block;
3187
- visibility: visible;
3188
- }
3189
- tr.collapse.in {
3190
- display: table-row;
3191
- }
3192
- tbody.collapse.in {
3193
- display: table-row-group;
3194
- }
3195
- .collapsing {
3196
- position: relative;
3197
- height: 0;
3198
- overflow: hidden;
3199
- -webkit-transition-timing-function: ease;
3200
- -o-transition-timing-function: ease;
3201
- transition-timing-function: ease;
3202
- -webkit-transition-duration: .35s;
3203
- -o-transition-duration: .35s;
3204
- transition-duration: .35s;
3205
- -webkit-transition-property: height, visibility;
3206
- -o-transition-property: height, visibility;
3207
- transition-property: height, visibility;
3208
- }
3209
- .caret {
3210
- display: inline-block;
3211
- width: 0;
3212
- height: 0;
3213
- margin-left: 2px;
3214
- vertical-align: middle;
3215
- border-top: 4px solid;
3216
- border-right: 4px solid transparent;
3217
- border-left: 4px solid transparent;
3218
- }
3219
- .dropdown {
3220
- position: relative;
3221
- }
3222
- .dropdown-toggle:focus {
3223
- outline: 0;
3224
- }
3225
- .dropdown-menu {
3226
- position: absolute;
3227
- top: 100%;
3228
- left: 0;
3229
- z-index: 1000;
3230
- display: none;
3231
- float: left;
3232
- min-width: 160px;
3233
- padding: 5px 0;
3234
- margin: 2px 0 0;
3235
- font-size: 14px;
3236
- text-align: left;
3237
- list-style: none;
3238
- background-color: #fff;
3239
- -webkit-background-clip: padding-box;
3240
- background-clip: padding-box;
3241
- border: 1px solid #ccc;
3242
- border: 1px solid rgba(0, 0, 0, .15);
3243
- border-radius: 4px;
3244
- -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3245
- box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3246
- }
3247
- .dropdown-menu.pull-right {
3248
- right: 0;
3249
- left: auto;
3250
- }
3251
- .dropdown-menu .divider {
3252
- height: 1px;
3253
- margin: 9px 0;
3254
- overflow: hidden;
3255
- background-color: #e5e5e5;
3256
- }
3257
- .dropdown-menu > li > a {
3258
- display: block;
3259
- padding: 3px 20px;
3260
- clear: both;
3261
- font-weight: normal;
3262
- line-height: 1.42857143;
3263
- color: #333;
3264
- white-space: nowrap;
3265
- }
3266
- .dropdown-menu > li > a:hover,
3267
- .dropdown-menu > li > a:focus {
3268
- color: #262626;
3269
- text-decoration: none;
3270
- background-color: #f5f5f5;
3271
- }
3272
- .dropdown-menu > .active > a,
3273
- .dropdown-menu > .active > a:hover,
3274
- .dropdown-menu > .active > a:focus {
3275
- color: #fff;
3276
- text-decoration: none;
3277
- background-color: #428bca;
3278
- outline: 0;
3279
- }
3280
- .dropdown-menu > .disabled > a,
3281
- .dropdown-menu > .disabled > a:hover,
3282
- .dropdown-menu > .disabled > a:focus {
3283
- color: #777;
3284
- }
3285
- .dropdown-menu > .disabled > a:hover,
3286
- .dropdown-menu > .disabled > a:focus {
3287
- text-decoration: none;
3288
- cursor: not-allowed;
3289
- background-color: transparent;
3290
- background-image: none;
3291
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3292
- }
3293
- .open > .dropdown-menu {
3294
- display: block;
3295
- }
3296
- .open > a {
3297
- outline: 0;
3298
- }
3299
- .dropdown-menu-right {
3300
- right: 0;
3301
- left: auto;
3302
- }
3303
- .dropdown-menu-left {
3304
- right: auto;
3305
- left: 0;
3306
- }
3307
- .dropdown-header {
3308
- display: block;
3309
- padding: 3px 20px;
3310
- font-size: 12px;
3311
- line-height: 1.42857143;
3312
- color: #777;
3313
- white-space: nowrap;
3314
- }
3315
- .dropdown-backdrop {
3316
- position: fixed;
3317
- top: 0;
3318
- right: 0;
3319
- bottom: 0;
3320
- left: 0;
3321
- z-index: 990;
3322
- }
3323
- .pull-right > .dropdown-menu {
3324
- right: 0;
3325
- left: auto;
3326
- }
3327
- .dropup .caret,
3328
- .navbar-fixed-bottom .dropdown .caret {
3329
- content: "";
3330
- border-top: 0;
3331
- border-bottom: 4px solid;
3332
- }
3333
- .dropup .dropdown-menu,
3334
- .navbar-fixed-bottom .dropdown .dropdown-menu {
3335
- top: auto;
3336
- bottom: 100%;
3337
- margin-bottom: 1px;
3338
- }
3339
- @media (min-width: 768px) {
3340
- .navbar-right .dropdown-menu {
3341
- right: 0;
3342
- left: auto;
3343
- }
3344
- .navbar-right .dropdown-menu-left {
3345
- right: auto;
3346
- left: 0;
3347
- }
3348
- }
3349
- .btn-group,
3350
- .btn-group-vertical {
3351
- position: relative;
3352
- display: inline-block;
3353
- vertical-align: middle;
3354
- }
3355
- .btn-group > .btn,
3356
- .btn-group-vertical > .btn {
3357
- position: relative;
3358
- float: left;
3359
- }
3360
- .btn-group > .btn:hover,
3361
- .btn-group-vertical > .btn:hover,
3362
- .btn-group > .btn:focus,
3363
- .btn-group-vertical > .btn:focus,
3364
- .btn-group > .btn:active,
3365
- .btn-group-vertical > .btn:active,
3366
- .btn-group > .btn.active,
3367
- .btn-group-vertical > .btn.active {
3368
- z-index: 2;
3369
- }
3370
- .btn-group > .btn:focus,
3371
- .btn-group-vertical > .btn:focus {
3372
- outline: 0;
3373
- }
3374
- .btn-group .btn + .btn,
3375
- .btn-group .btn + .btn-group,
3376
- .btn-group .btn-group + .btn,
3377
- .btn-group .btn-group + .btn-group {
3378
- margin-left: -1px;
3379
- }
3380
- .btn-toolbar {
3381
- margin-left: -5px;
3382
- }
3383
- .btn-toolbar .btn-group,
3384
- .btn-toolbar .input-group {
3385
- float: left;
3386
- }
3387
- .btn-toolbar > .btn,
3388
- .btn-toolbar > .btn-group,
3389
- .btn-toolbar > .input-group {
3390
- margin-left: 5px;
3391
- }
3392
- .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3393
- border-radius: 0;
3394
- }
3395
- .btn-group > .btn:first-child {
3396
- margin-left: 0;
3397
- }
3398
- .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3399
- border-top-right-radius: 0;
3400
- border-bottom-right-radius: 0;
3401
- }
3402
- .btn-group > .btn:last-child:not(:first-child),
3403
- .btn-group > .dropdown-toggle:not(:first-child) {
3404
- border-top-left-radius: 0;
3405
- border-bottom-left-radius: 0;
3406
- }
3407
- .btn-group > .btn-group {
3408
- float: left;
3409
- }
3410
- .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3411
- border-radius: 0;
3412
- }
3413
- .btn-group > .btn-group:first-child > .btn:last-child,
3414
- .btn-group > .btn-group:first-child > .dropdown-toggle {
3415
- border-top-right-radius: 0;
3416
- border-bottom-right-radius: 0;
3417
- }
3418
- .btn-group > .btn-group:last-child > .btn:first-child {
3419
- border-top-left-radius: 0;
3420
- border-bottom-left-radius: 0;
3421
- }
3422
- .btn-group .dropdown-toggle:active,
3423
- .btn-group.open .dropdown-toggle {
3424
- outline: 0;
3425
- }
3426
- .btn-group > .btn + .dropdown-toggle {
3427
- padding-right: 8px;
3428
- padding-left: 8px;
3429
- }
3430
- .btn-group > .btn-lg + .dropdown-toggle {
3431
- padding-right: 12px;
3432
- padding-left: 12px;
3433
- }
3434
- .btn-group.open .dropdown-toggle {
3435
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3436
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3437
- }
3438
- .btn-group.open .dropdown-toggle.btn-link {
3439
- -webkit-box-shadow: none;
3440
- box-shadow: none;
3441
- }
3442
- .btn .caret {
3443
- margin-left: 0;
3444
- }
3445
- .btn-lg .caret {
3446
- border-width: 5px 5px 0;
3447
- border-bottom-width: 0;
3448
- }
3449
- .dropup .btn-lg .caret {
3450
- border-width: 0 5px 5px;
3451
- }
3452
- .btn-group-vertical > .btn,
3453
- .btn-group-vertical > .btn-group,
3454
- .btn-group-vertical > .btn-group > .btn {
3455
- display: block;
3456
- float: none;
3457
- width: 100%;
3458
- max-width: 100%;
3459
- }
3460
- .btn-group-vertical > .btn-group > .btn {
3461
- float: none;
3462
- }
3463
- .btn-group-vertical > .btn + .btn,
3464
- .btn-group-vertical > .btn + .btn-group,
3465
- .btn-group-vertical > .btn-group + .btn,
3466
- .btn-group-vertical > .btn-group + .btn-group {
3467
- margin-top: -1px;
3468
- margin-left: 0;
3469
- }
3470
- .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3471
- border-radius: 0;
3472
- }
3473
- .btn-group-vertical > .btn:first-child:not(:last-child) {
3474
- border-top-right-radius: 4px;
3475
- border-bottom-right-radius: 0;
3476
- border-bottom-left-radius: 0;
3477
- }
3478
- .btn-group-vertical > .btn:last-child:not(:first-child) {
3479
- border-top-left-radius: 0;
3480
- border-top-right-radius: 0;
3481
- border-bottom-left-radius: 4px;
3482
- }
3483
- .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3484
- border-radius: 0;
3485
- }
3486
- .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3487
- .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3488
- border-bottom-right-radius: 0;
3489
- border-bottom-left-radius: 0;
3490
- }
3491
- .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3492
- border-top-left-radius: 0;
3493
- border-top-right-radius: 0;
3494
- }
3495
- .btn-group-justified {
3496
- display: table;
3497
- width: 100%;
3498
- table-layout: fixed;
3499
- border-collapse: separate;
3500
- }
3501
- .btn-group-justified > .btn,
3502
- .btn-group-justified > .btn-group {
3503
- display: table-cell;
3504
- float: none;
3505
- width: 1%;
3506
- }
3507
- .btn-group-justified > .btn-group .btn {
3508
- width: 100%;
3509
- }
3510
- .btn-group-justified > .btn-group .dropdown-menu {
3511
- left: auto;
3512
- }
3513
- [data-toggle="buttons"] > .btn input[type="radio"],
3514
- [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3515
- [data-toggle="buttons"] > .btn input[type="checkbox"],
3516
- [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3517
- position: absolute;
3518
- clip: rect(0, 0, 0, 0);
3519
- pointer-events: none;
3520
- }
3521
- .input-group {
3522
- position: relative;
3523
- display: table;
3524
- border-collapse: separate;
3525
- }
3526
- .input-group[class*="col-"] {
3527
- float: none;
3528
- padding-right: 0;
3529
- padding-left: 0;
3530
- }
3531
- .input-group .form-control {
3532
- position: relative;
3533
- z-index: 2;
3534
- float: left;
3535
- width: 100%;
3536
- margin-bottom: 0;
3537
- }
3538
- .input-group-lg > .form-control,
3539
- .input-group-lg > .input-group-addon,
3540
- .input-group-lg > .input-group-btn > .btn {
3541
- height: 46px;
3542
- padding: 10px 16px;
3543
- font-size: 18px;
3544
- line-height: 1.33;
3545
- border-radius: 6px;
3546
- }
3547
- select.input-group-lg > .form-control,
3548
- select.input-group-lg > .input-group-addon,
3549
- select.input-group-lg > .input-group-btn > .btn {
3550
- height: 46px;
3551
- line-height: 46px;
3552
- }
3553
- textarea.input-group-lg > .form-control,
3554
- textarea.input-group-lg > .input-group-addon,
3555
- textarea.input-group-lg > .input-group-btn > .btn,
3556
- select[multiple].input-group-lg > .form-control,
3557
- select[multiple].input-group-lg > .input-group-addon,
3558
- select[multiple].input-group-lg > .input-group-btn > .btn {
3559
- height: auto;
3560
- }
3561
- .input-group-sm > .form-control,
3562
- .input-group-sm > .input-group-addon,
3563
- .input-group-sm > .input-group-btn > .btn {
3564
- height: 30px;
3565
- padding: 5px 10px;
3566
- font-size: 12px;
3567
- line-height: 1.5;
3568
- border-radius: 3px;
3569
- }
3570
- select.input-group-sm > .form-control,
3571
- select.input-group-sm > .input-group-addon,
3572
- select.input-group-sm > .input-group-btn > .btn {
3573
- height: 30px;
3574
- line-height: 30px;
3575
- }
3576
- textarea.input-group-sm > .form-control,
3577
- textarea.input-group-sm > .input-group-addon,
3578
- textarea.input-group-sm > .input-group-btn > .btn,
3579
- select[multiple].input-group-sm > .form-control,
3580
- select[multiple].input-group-sm > .input-group-addon,
3581
- select[multiple].input-group-sm > .input-group-btn > .btn {
3582
- height: auto;
3583
- }
3584
- .input-group-addon,
3585
- .input-group-btn,
3586
- .input-group .form-control {
3587
- display: table-cell;
3588
- }
3589
- .input-group-addon:not(:first-child):not(:last-child),
3590
- .input-group-btn:not(:first-child):not(:last-child),
3591
- .input-group .form-control:not(:first-child):not(:last-child) {
3592
- border-radius: 0;
3593
- }
3594
- .input-group-addon,
3595
- .input-group-btn {
3596
- width: 1%;
3597
- white-space: nowrap;
3598
- vertical-align: middle;
3599
- }
3600
- .input-group-addon {
3601
- padding: 6px 12px;
3602
- font-size: 14px;
3603
- font-weight: normal;
3604
- line-height: 1;
3605
- color: #555;
3606
- text-align: center;
3607
- background-color: #eee;
3608
- border: 1px solid #ccc;
3609
- border-radius: 4px;
3610
- }
3611
- .input-group-addon.input-sm {
3612
- padding: 5px 10px;
3613
- font-size: 12px;
3614
- border-radius: 3px;
3615
- }
3616
- .input-group-addon.input-lg {
3617
- padding: 10px 16px;
3618
- font-size: 18px;
3619
- border-radius: 6px;
3620
- }
3621
- .input-group-addon input[type="radio"],
3622
- .input-group-addon input[type="checkbox"] {
3623
- margin-top: 0;
3624
- }
3625
- .input-group .form-control:first-child,
3626
- .input-group-addon:first-child,
3627
- .input-group-btn:first-child > .btn,
3628
- .input-group-btn:first-child > .btn-group > .btn,
3629
- .input-group-btn:first-child > .dropdown-toggle,
3630
- .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3631
- .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3632
- border-top-right-radius: 0;
3633
- border-bottom-right-radius: 0;
3634
- }
3635
- .input-group-addon:first-child {
3636
- border-right: 0;
3637
- }
3638
- .input-group .form-control:last-child,
3639
- .input-group-addon:last-child,
3640
- .input-group-btn:last-child > .btn,
3641
- .input-group-btn:last-child > .btn-group > .btn,
3642
- .input-group-btn:last-child > .dropdown-toggle,
3643
- .input-group-btn:first-child > .btn:not(:first-child),
3644
- .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3645
- border-top-left-radius: 0;
3646
- border-bottom-left-radius: 0;
3647
- }
3648
- .input-group-addon:last-child {
3649
- border-left: 0;
3650
- }
3651
- .input-group-btn {
3652
- position: relative;
3653
- font-size: 0;
3654
- white-space: nowrap;
3655
- }
3656
- .input-group-btn > .btn {
3657
- position: relative;
3658
- }
3659
- .input-group-btn > .btn + .btn {
3660
- margin-left: -1px;
3661
- }
3662
- .input-group-btn > .btn:hover,
3663
- .input-group-btn > .btn:focus,
3664
- .input-group-btn > .btn:active {
3665
- z-index: 2;
3666
- }
3667
- .input-group-btn:first-child > .btn,
3668
- .input-group-btn:first-child > .btn-group {
3669
- margin-right: -1px;
3670
- }
3671
- .input-group-btn:last-child > .btn,
3672
- .input-group-btn:last-child > .btn-group {
3673
- margin-left: -1px;
3674
- }
3675
- .nav {
3676
- padding-left: 0;
3677
- margin-bottom: 0;
3678
- list-style: none;
3679
- }
3680
- .nav > li {
3681
- position: relative;
3682
- display: block;
3683
- }
3684
- .nav > li > a {
3685
- position: relative;
3686
- display: block;
3687
- padding: 10px 15px;
3688
- }
3689
- .nav > li > a:hover,
3690
- .nav > li > a:focus {
3691
- text-decoration: none;
3692
- background-color: #eee;
3693
- }
3694
- .nav > li.disabled > a {
3695
- color: #777;
3696
- }
3697
- .nav > li.disabled > a:hover,
3698
- .nav > li.disabled > a:focus {
3699
- color: #777;
3700
- text-decoration: none;
3701
- cursor: not-allowed;
3702
- background-color: transparent;
3703
- }
3704
- .nav .open > a,
3705
- .nav .open > a:hover,
3706
- .nav .open > a:focus {
3707
- background-color: #eee;
3708
- border-color: #428bca;
3709
- }
3710
- .nav .nav-divider {
3711
- height: 1px;
3712
- margin: 9px 0;
3713
- overflow: hidden;
3714
- background-color: #e5e5e5;
3715
- }
3716
- .nav > li > a > img {
3717
- max-width: none;
3718
- }
3719
- .nav-tabs {
3720
- border-bottom: 1px solid #ddd;
3721
- }
3722
- .nav-tabs > li {
3723
- float: left;
3724
- margin-bottom: -1px;
3725
- }
3726
- .nav-tabs > li > a {
3727
- margin-right: 2px;
3728
- line-height: 1.42857143;
3729
- border: 1px solid transparent;
3730
- border-radius: 4px 4px 0 0;
3731
- }
3732
- .nav-tabs > li > a:hover {
3733
- border-color: #eee #eee #ddd;
3734
- }
3735
- .nav-tabs > li.active > a,
3736
- .nav-tabs > li.active > a:hover,
3737
- .nav-tabs > li.active > a:focus {
3738
- color: #555;
3739
- cursor: default;
3740
- background-color: #fff;
3741
- border: 1px solid #ddd;
3742
- border-bottom-color: transparent;
3743
- }
3744
- .nav-tabs.nav-justified {
3745
- width: 100%;
3746
- border-bottom: 0;
3747
- }
3748
- .nav-tabs.nav-justified > li {
3749
- float: none;
3750
- }
3751
- .nav-tabs.nav-justified > li > a {
3752
- margin-bottom: 5px;
3753
- text-align: center;
3754
- }
3755
- .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3756
- top: auto;
3757
- left: auto;
3758
- }
3759
- @media (min-width: 768px) {
3760
- .nav-tabs.nav-justified > li {
3761
- display: table-cell;
3762
- width: 1%;
3763
- }
3764
- .nav-tabs.nav-justified > li > a {
3765
- margin-bottom: 0;
3766
- }
3767
- }
3768
- .nav-tabs.nav-justified > li > a {
3769
- margin-right: 0;
3770
- border-radius: 4px;
3771
- }
3772
- .nav-tabs.nav-justified > .active > a,
3773
- .nav-tabs.nav-justified > .active > a:hover,
3774
- .nav-tabs.nav-justified > .active > a:focus {
3775
- border: 1px solid #ddd;
3776
- }
3777
- @media (min-width: 768px) {
3778
- .nav-tabs.nav-justified > li > a {
3779
- border-bottom: 1px solid #ddd;
3780
- border-radius: 4px 4px 0 0;
3781
- }
3782
- .nav-tabs.nav-justified > .active > a,
3783
- .nav-tabs.nav-justified > .active > a:hover,
3784
- .nav-tabs.nav-justified > .active > a:focus {
3785
- border-bottom-color: #fff;
3786
- }
3787
- }
3788
- .nav-pills > li {
3789
- float: left;
3790
- }
3791
- .nav-pills > li > a {
3792
- border-radius: 4px;
3793
- }
3794
- .nav-pills > li + li {
3795
- margin-left: 2px;
3796
- }
3797
- .nav-pills > li.active > a,
3798
- .nav-pills > li.active > a:hover,
3799
- .nav-pills > li.active > a:focus {
3800
- color: #fff;
3801
- background-color: #428bca;
3802
- }
3803
- .nav-stacked > li {
3804
- float: none;
3805
- }
3806
- .nav-stacked > li + li {
3807
- margin-top: 2px;
3808
- margin-left: 0;
3809
- }
3810
- .nav-justified {
3811
- width: 100%;
3812
- }
3813
- .nav-justified > li {
3814
- float: none;
3815
- }
3816
- .nav-justified > li > a {
3817
- margin-bottom: 5px;
3818
- text-align: center;
3819
- }
3820
- .nav-justified > .dropdown .dropdown-menu {
3821
- top: auto;
3822
- left: auto;
3823
- }
3824
- @media (min-width: 768px) {
3825
- .nav-justified > li {
3826
- display: table-cell;
3827
- width: 1%;
3828
- }
3829
- .nav-justified > li > a {
3830
- margin-bottom: 0;
3831
- }
3832
- }
3833
- .nav-tabs-justified {
3834
- border-bottom: 0;
3835
- }
3836
- .nav-tabs-justified > li > a {
3837
- margin-right: 0;
3838
- border-radius: 4px;
3839
- }
3840
- .nav-tabs-justified > .active > a,
3841
- .nav-tabs-justified > .active > a:hover,
3842
- .nav-tabs-justified > .active > a:focus {
3843
- border: 1px solid #ddd;
3844
- }
3845
- @media (min-width: 768px) {
3846
- .nav-tabs-justified > li > a {
3847
- border-bottom: 1px solid #ddd;
3848
- border-radius: 4px 4px 0 0;
3849
- }
3850
- .nav-tabs-justified > .active > a,
3851
- .nav-tabs-justified > .active > a:hover,
3852
- .nav-tabs-justified > .active > a:focus {
3853
- border-bottom-color: #fff;
3854
- }
3855
- }
3856
- .tab-content > .tab-pane {
3857
- display: none;
3858
- visibility: hidden;
3859
- }
3860
- .tab-content > .active {
3861
- display: block;
3862
- visibility: visible;
3863
- }
3864
- .nav-tabs .dropdown-menu {
3865
- margin-top: -1px;
3866
- border-top-left-radius: 0;
3867
- border-top-right-radius: 0;
3868
- }
3869
- .navbar {
3870
- position: relative;
3871
- min-height: 50px;
3872
- margin-bottom: 20px;
3873
- border: 1px solid transparent;
3874
- }
3875
- @media (min-width: 768px) {
3876
- .navbar {
3877
- border-radius: 4px;
3878
- }
3879
- }
3880
- @media (min-width: 768px) {
3881
- .navbar-header {
3882
- float: left;
3883
- }
3884
- }
3885
- .navbar-collapse {
3886
- padding-right: 15px;
3887
- padding-left: 15px;
3888
- overflow-x: visible;
3889
- -webkit-overflow-scrolling: touch;
3890
- border-top: 1px solid transparent;
3891
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
3892
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
3893
- }
3894
- .navbar-collapse.in {
3895
- overflow-y: auto;
3896
- }
3897
- @media (min-width: 768px) {
3898
- .navbar-collapse {
3899
- width: auto;
3900
- border-top: 0;
3901
- -webkit-box-shadow: none;
3902
- box-shadow: none;
3903
- }
3904
- .navbar-collapse.collapse {
3905
- display: block !important;
3906
- height: auto !important;
3907
- padding-bottom: 0;
3908
- overflow: visible !important;
3909
- visibility: visible !important;
3910
- }
3911
- .navbar-collapse.in {
3912
- overflow-y: visible;
3913
- }
3914
- .navbar-fixed-top .navbar-collapse,
3915
- .navbar-static-top .navbar-collapse,
3916
- .navbar-fixed-bottom .navbar-collapse {
3917
- padding-right: 0;
3918
- padding-left: 0;
3919
- }
3920
- }
3921
- .navbar-fixed-top .navbar-collapse,
3922
- .navbar-fixed-bottom .navbar-collapse {
3923
- max-height: 340px;
3924
- }
3925
- @media (max-device-width: 480px) and (orientation: landscape) {
3926
- .navbar-fixed-top .navbar-collapse,
3927
- .navbar-fixed-bottom .navbar-collapse {
3928
- max-height: 200px;
3929
- }
3930
- }
3931
- .container > .navbar-header,
3932
- .container-fluid > .navbar-header,
3933
- .container > .navbar-collapse,
3934
- .container-fluid > .navbar-collapse {
3935
- margin-right: -15px;
3936
- margin-left: -15px;
3937
- }
3938
- @media (min-width: 768px) {
3939
- .container > .navbar-header,
3940
- .container-fluid > .navbar-header,
3941
- .container > .navbar-collapse,
3942
- .container-fluid > .navbar-collapse {
3943
- margin-right: 0;
3944
- margin-left: 0;
3945
- }
3946
- }
3947
- .navbar-static-top {
3948
- z-index: 1000;
3949
- border-width: 0 0 1px;
3950
- }
3951
- @media (min-width: 768px) {
3952
- .navbar-static-top {
3953
- border-radius: 0;
3954
- }
3955
- }
3956
- .navbar-fixed-top,
3957
- .navbar-fixed-bottom {
3958
- position: fixed;
3959
- right: 0;
3960
- left: 0;
3961
- z-index: 1030;
3962
- }
3963
- @media (min-width: 768px) {
3964
- .navbar-fixed-top,
3965
- .navbar-fixed-bottom {
3966
- border-radius: 0;
3967
- }
3968
- }
3969
- .navbar-fixed-top {
3970
- top: 0;
3971
- border-width: 0 0 1px;
3972
- }
3973
- .navbar-fixed-bottom {
3974
- bottom: 0;
3975
- margin-bottom: 0;
3976
- border-width: 1px 0 0;
3977
- }
3978
- .navbar-brand {
3979
- float: left;
3980
- height: 50px;
3981
- padding: 15px 15px;
3982
- font-size: 18px;
3983
- line-height: 20px;
3984
- }
3985
- .navbar-brand:hover,
3986
- .navbar-brand:focus {
3987
- text-decoration: none;
3988
- }
3989
- .navbar-brand > img {
3990
- display: block;
3991
- }
3992
- @media (min-width: 768px) {
3993
- .navbar > .container .navbar-brand,
3994
- .navbar > .container-fluid .navbar-brand {
3995
- margin-left: -15px;
3996
- }
3997
- }
3998
- .navbar-toggle {
3999
- position: relative;
4000
- float: right;
4001
- padding: 9px 10px;
4002
- margin-top: 8px;
4003
- margin-right: 15px;
4004
- margin-bottom: 8px;
4005
- background-color: transparent;
4006
- background-image: none;
4007
- border: 1px solid transparent;
4008
- border-radius: 4px;
4009
- }
4010
- .navbar-toggle:focus {
4011
- outline: 0;
4012
- }
4013
- .navbar-toggle .icon-bar {
4014
- display: block;
4015
- width: 22px;
4016
- height: 2px;
4017
- border-radius: 1px;
4018
- }
4019
- .navbar-toggle .icon-bar + .icon-bar {
4020
- margin-top: 4px;
4021
- }
4022
- @media (min-width: 768px) {
4023
- .navbar-toggle {
4024
- display: none;
4025
- }
4026
- }
4027
- .navbar-nav {
4028
- margin: 7.5px -15px;
4029
- }
4030
- .navbar-nav > li > a {
4031
- padding-top: 10px;
4032
- padding-bottom: 10px;
4033
- line-height: 20px;
4034
- }
4035
- @media (max-width: 767px) {
4036
- .navbar-nav .open .dropdown-menu {
4037
- position: static;
4038
- float: none;
4039
- width: auto;
4040
- margin-top: 0;
4041
- background-color: transparent;
4042
- border: 0;
4043
- -webkit-box-shadow: none;
4044
- box-shadow: none;
4045
- }
4046
- .navbar-nav .open .dropdown-menu > li > a,
4047
- .navbar-nav .open .dropdown-menu .dropdown-header {
4048
- padding: 5px 15px 5px 25px;
4049
- }
4050
- .navbar-nav .open .dropdown-menu > li > a {
4051
- line-height: 20px;
4052
- }
4053
- .navbar-nav .open .dropdown-menu > li > a:hover,
4054
- .navbar-nav .open .dropdown-menu > li > a:focus {
4055
- background-image: none;
4056
- }
4057
- }
4058
- @media (min-width: 768px) {
4059
- .navbar-nav {
4060
- float: left;
4061
- margin: 0;
4062
- }
4063
- .navbar-nav > li {
4064
- float: left;
4065
- }
4066
- .navbar-nav > li > a {
4067
- padding-top: 15px;
4068
- padding-bottom: 15px;
4069
- }
4070
- }
4071
- .navbar-form {
4072
- padding: 10px 15px;
4073
- margin-top: 8px;
4074
- margin-right: -15px;
4075
- margin-bottom: 8px;
4076
- margin-left: -15px;
4077
- border-top: 1px solid transparent;
4078
- border-bottom: 1px solid transparent;
4079
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
4080
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
4081
- }
4082
- @media (min-width: 768px) {
4083
- .navbar-form .form-group {
4084
- display: inline-block;
4085
- margin-bottom: 0;
4086
- vertical-align: middle;
4087
- }
4088
- .navbar-form .form-control {
4089
- display: inline-block;
4090
- width: auto;
4091
- vertical-align: middle;
4092
- }
4093
- .navbar-form .form-control-static {
4094
- display: inline-block;
4095
- }
4096
- .navbar-form .input-group {
4097
- display: inline-table;
4098
- vertical-align: middle;
4099
- }
4100
- .navbar-form .input-group .input-group-addon,
4101
- .navbar-form .input-group .input-group-btn,
4102
- .navbar-form .input-group .form-control {
4103
- width: auto;
4104
- }
4105
- .navbar-form .input-group > .form-control {
4106
- width: 100%;
4107
- }
4108
- .navbar-form .control-label {
4109
- margin-bottom: 0;
4110
- vertical-align: middle;
4111
- }
4112
- .navbar-form .radio,
4113
- .navbar-form .checkbox {
4114
- display: inline-block;
4115
- margin-top: 0;
4116
- margin-bottom: 0;
4117
- vertical-align: middle;
4118
- }
4119
- .navbar-form .radio label,
4120
- .navbar-form .checkbox label {
4121
- padding-left: 0;
4122
- }
4123
- .navbar-form .radio input[type="radio"],
4124
- .navbar-form .checkbox input[type="checkbox"] {
4125
- position: relative;
4126
- margin-left: 0;
4127
- }
4128
- .navbar-form .has-feedback .form-control-feedback {
4129
- top: 0;
4130
- }
4131
- }
4132
- @media (max-width: 767px) {
4133
- .navbar-form .form-group {
4134
- margin-bottom: 5px;
4135
- }
4136
- .navbar-form .form-group:last-child {
4137
- margin-bottom: 0;
4138
- }
4139
- }
4140
- @media (min-width: 768px) {
4141
- .navbar-form {
4142
- width: auto;
4143
- padding-top: 0;
4144
- padding-bottom: 0;
4145
- margin-right: 0;
4146
- margin-left: 0;
4147
- border: 0;
4148
- -webkit-box-shadow: none;
4149
- box-shadow: none;
4150
- }
4151
- }
4152
- .navbar-nav > li > .dropdown-menu {
4153
- margin-top: 0;
4154
- border-top-left-radius: 0;
4155
- border-top-right-radius: 0;
4156
- }
4157
- .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4158
- border-bottom-right-radius: 0;
4159
- border-bottom-left-radius: 0;
4160
- }
4161
- .navbar-btn {
4162
- margin-top: 8px;
4163
- margin-bottom: 8px;
4164
- }
4165
- .navbar-btn.btn-sm {
4166
- margin-top: 10px;
4167
- margin-bottom: 10px;
4168
- }
4169
- .navbar-btn.btn-xs {
4170
- margin-top: 14px;
4171
- margin-bottom: 14px;
4172
- }
4173
- .navbar-text {
4174
- margin-top: 15px;
4175
- margin-bottom: 15px;
4176
- }
4177
- @media (min-width: 768px) {
4178
- .navbar-text {
4179
- float: left;
4180
- margin-right: 15px;
4181
- margin-left: 15px;
4182
- }
4183
- }
4184
- @media (min-width: 768px) {
4185
- .navbar-left {
4186
- float: left !important;
4187
- }
4188
- .navbar-right {
4189
- float: right !important;
4190
- margin-right: -15px;
4191
- }
4192
- .navbar-right ~ .navbar-right {
4193
- margin-right: 0;
4194
- }
4195
- }
4196
- .navbar-default {
4197
- background-color: #f8f8f8;
4198
- border-color: #e7e7e7;
4199
- }
4200
- .navbar-default .navbar-brand {
4201
- color: #777;
4202
- }
4203
- .navbar-default .navbar-brand:hover,
4204
- .navbar-default .navbar-brand:focus {
4205
- color: #5e5e5e;
4206
- background-color: transparent;
4207
- }
4208
- .navbar-default .navbar-text {
4209
- color: #777;
4210
- }
4211
- .navbar-default .navbar-nav > li > a {
4212
- color: #777;
4213
- }
4214
- .navbar-default .navbar-nav > li > a:hover,
4215
- .navbar-default .navbar-nav > li > a:focus {
4216
- color: #333;
4217
- background-color: transparent;
4218
- }
4219
- .navbar-default .navbar-nav > .active > a,
4220
- .navbar-default .navbar-nav > .active > a:hover,
4221
- .navbar-default .navbar-nav > .active > a:focus {
4222
- color: #555;
4223
- background-color: #e7e7e7;
4224
- }
4225
- .navbar-default .navbar-nav > .disabled > a,
4226
- .navbar-default .navbar-nav > .disabled > a:hover,
4227
- .navbar-default .navbar-nav > .disabled > a:focus {
4228
- color: #ccc;
4229
- background-color: transparent;
4230
- }
4231
- .navbar-default .navbar-toggle {
4232
- border-color: #ddd;
4233
- }
4234
- .navbar-default .navbar-toggle:hover,
4235
- .navbar-default .navbar-toggle:focus {
4236
- background-color: #ddd;
4237
- }
4238
- .navbar-default .navbar-toggle .icon-bar {
4239
- background-color: #888;
4240
- }
4241
- .navbar-default .navbar-collapse,
4242
- .navbar-default .navbar-form {
4243
- border-color: #e7e7e7;
4244
- }
4245
- .navbar-default .navbar-nav > .open > a,
4246
- .navbar-default .navbar-nav > .open > a:hover,
4247
- .navbar-default .navbar-nav > .open > a:focus {
4248
- color: #555;
4249
- background-color: #e7e7e7;
4250
- }
4251
- @media (max-width: 767px) {
4252
- .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4253
- color: #777;
4254
- }
4255
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4256
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4257
- color: #333;
4258
- background-color: transparent;
4259
- }
4260
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4261
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4262
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4263
- color: #555;
4264
- background-color: #e7e7e7;
4265
- }
4266
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4267
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4268
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4269
- color: #ccc;
4270
- background-color: transparent;
4271
- }
4272
- }
4273
- .navbar-default .navbar-link {
4274
- color: #777;
4275
- }
4276
- .navbar-default .navbar-link:hover {
4277
- color: #333;
4278
- }
4279
- .navbar-default .btn-link {
4280
- color: #777;
4281
- }
4282
- .navbar-default .btn-link:hover,
4283
- .navbar-default .btn-link:focus {
4284
- color: #333;
4285
- }
4286
- .navbar-default .btn-link[disabled]:hover,
4287
- fieldset[disabled] .navbar-default .btn-link:hover,
4288
- .navbar-default .btn-link[disabled]:focus,
4289
- fieldset[disabled] .navbar-default .btn-link:focus {
4290
- color: #ccc;
4291
- }
4292
- .navbar-inverse {
4293
- background-color: #222;
4294
- border-color: #080808;
4295
- }
4296
- .navbar-inverse .navbar-brand {
4297
- color: #9d9d9d;
4298
- }
4299
- .navbar-inverse .navbar-brand:hover,
4300
- .navbar-inverse .navbar-brand:focus {
4301
- color: #fff;
4302
- background-color: transparent;
4303
- }
4304
- .navbar-inverse .navbar-text {
4305
- color: #9d9d9d;
4306
- }
4307
- .navbar-inverse .navbar-nav > li > a {
4308
- color: #9d9d9d;
4309
- }
4310
- .navbar-inverse .navbar-nav > li > a:hover,
4311
- .navbar-inverse .navbar-nav > li > a:focus {
4312
- color: #fff;
4313
- background-color: transparent;
4314
- }
4315
- .navbar-inverse .navbar-nav > .active > a,
4316
- .navbar-inverse .navbar-nav > .active > a:hover,
4317
- .navbar-inverse .navbar-nav > .active > a:focus {
4318
- color: #fff;
4319
- background-color: #080808;
4320
- }
4321
- .navbar-inverse .navbar-nav > .disabled > a,
4322
- .navbar-inverse .navbar-nav > .disabled > a:hover,
4323
- .navbar-inverse .navbar-nav > .disabled > a:focus {
4324
- color: #444;
4325
- background-color: transparent;
4326
- }
4327
- .navbar-inverse .navbar-toggle {
4328
- border-color: #333;
4329
- }
4330
- .navbar-inverse .navbar-toggle:hover,
4331
- .navbar-inverse .navbar-toggle:focus {
4332
- background-color: #333;
4333
- }
4334
- .navbar-inverse .navbar-toggle .icon-bar {
4335
- background-color: #fff;
4336
- }
4337
- .navbar-inverse .navbar-collapse,
4338
- .navbar-inverse .navbar-form {
4339
- border-color: #101010;
4340
- }
4341
- .navbar-inverse .navbar-nav > .open > a,
4342
- .navbar-inverse .navbar-nav > .open > a:hover,
4343
- .navbar-inverse .navbar-nav > .open > a:focus {
4344
- color: #fff;
4345
- background-color: #080808;
4346
- }
4347
- @media (max-width: 767px) {
4348
- .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4349
- border-color: #080808;
4350
- }
4351
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4352
- background-color: #080808;
4353
- }
4354
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4355
- color: #9d9d9d;
4356
- }
4357
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4358
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4359
- color: #fff;
4360
- background-color: transparent;
4361
- }
4362
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4363
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4364
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4365
- color: #fff;
4366
- background-color: #080808;
4367
- }
4368
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4369
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4370
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4371
- color: #444;
4372
- background-color: transparent;
4373
- }
4374
- }
4375
- .navbar-inverse .navbar-link {
4376
- color: #9d9d9d;
4377
- }
4378
- .navbar-inverse .navbar-link:hover {
4379
- color: #fff;
4380
- }
4381
- .navbar-inverse .btn-link {
4382
- color: #9d9d9d;
4383
- }
4384
- .navbar-inverse .btn-link:hover,
4385
- .navbar-inverse .btn-link:focus {
4386
- color: #fff;
4387
- }
4388
- .navbar-inverse .btn-link[disabled]:hover,
4389
- fieldset[disabled] .navbar-inverse .btn-link:hover,
4390
- .navbar-inverse .btn-link[disabled]:focus,
4391
- fieldset[disabled] .navbar-inverse .btn-link:focus {
4392
- color: #444;
4393
- }
4394
- .breadcrumb {
4395
- padding: 8px 15px;
4396
- margin-bottom: 20px;
4397
- list-style: none;
4398
- background-color: #f5f5f5;
4399
- border-radius: 4px;
4400
- }
4401
- .breadcrumb > li {
4402
- display: inline-block;
4403
- }
4404
- .breadcrumb > li + li:before {
4405
- padding: 0 5px;
4406
- color: #ccc;
4407
- content: "/\00a0";
4408
- }
4409
- .breadcrumb > .active {
4410
- color: #777;
4411
- }
4412
- .pagination {
4413
- display: inline-block;
4414
- padding-left: 0;
4415
- margin: 20px 0;
4416
- border-radius: 4px;
4417
- }
4418
- .pagination > li {
4419
- display: inline;
4420
- }
4421
- .pagination > li > a,
4422
- .pagination > li > span {
4423
- position: relative;
4424
- float: left;
4425
- padding: 6px 12px;
4426
- margin-left: -1px;
4427
- line-height: 1.42857143;
4428
- color: #428bca;
4429
- text-decoration: none;
4430
- background-color: #fff;
4431
- border: 1px solid #ddd;
4432
- }
4433
- .pagination > li:first-child > a,
4434
- .pagination > li:first-child > span {
4435
- margin-left: 0;
4436
- border-top-left-radius: 4px;
4437
- border-bottom-left-radius: 4px;
4438
- }
4439
- .pagination > li:last-child > a,
4440
- .pagination > li:last-child > span {
4441
- border-top-right-radius: 4px;
4442
- border-bottom-right-radius: 4px;
4443
- }
4444
- .pagination > li > a:hover,
4445
- .pagination > li > span:hover,
4446
- .pagination > li > a:focus,
4447
- .pagination > li > span:focus {
4448
- color: #2a6496;
4449
- background-color: #eee;
4450
- border-color: #ddd;
4451
- }
4452
- .pagination > .active > a,
4453
- .pagination > .active > span,
4454
- .pagination > .active > a:hover,
4455
- .pagination > .active > span:hover,
4456
- .pagination > .active > a:focus,
4457
- .pagination > .active > span:focus {
4458
- z-index: 2;
4459
- color: #fff;
4460
- cursor: default;
4461
- background-color: #428bca;
4462
- border-color: #428bca;
4463
- }
4464
- .pagination > .disabled > span,
4465
- .pagination > .disabled > span:hover,
4466
- .pagination > .disabled > span:focus,
4467
- .pagination > .disabled > a,
4468
- .pagination > .disabled > a:hover,
4469
- .pagination > .disabled > a:focus {
4470
- color: #777;
4471
- cursor: not-allowed;
4472
- background-color: #fff;
4473
- border-color: #ddd;
4474
- }
4475
- .pagination-lg > li > a,
4476
- .pagination-lg > li > span {
4477
- padding: 10px 16px;
4478
- font-size: 18px;
4479
- }
4480
- .pagination-lg > li:first-child > a,
4481
- .pagination-lg > li:first-child > span {
4482
- border-top-left-radius: 6px;
4483
- border-bottom-left-radius: 6px;
4484
- }
4485
- .pagination-lg > li:last-child > a,
4486
- .pagination-lg > li:last-child > span {
4487
- border-top-right-radius: 6px;
4488
- border-bottom-right-radius: 6px;
4489
- }
4490
- .pagination-sm > li > a,
4491
- .pagination-sm > li > span {
4492
- padding: 5px 10px;
4493
- font-size: 12px;
4494
- }
4495
- .pagination-sm > li:first-child > a,
4496
- .pagination-sm > li:first-child > span {
4497
- border-top-left-radius: 3px;
4498
- border-bottom-left-radius: 3px;
4499
- }
4500
- .pagination-sm > li:last-child > a,
4501
- .pagination-sm > li:last-child > span {
4502
- border-top-right-radius: 3px;
4503
- border-bottom-right-radius: 3px;
4504
- }
4505
- .pager {
4506
- padding-left: 0;
4507
- margin: 20px 0;
4508
- text-align: center;
4509
- list-style: none;
4510
- }
4511
- .pager li {
4512
- display: inline;
4513
- }
4514
- .pager li > a,
4515
- .pager li > span {
4516
- display: inline-block;
4517
- padding: 5px 14px;
4518
- background-color: #fff;
4519
- border: 1px solid #ddd;
4520
- border-radius: 15px;
4521
- }
4522
- .pager li > a:hover,
4523
- .pager li > a:focus {
4524
- text-decoration: none;
4525
- background-color: #eee;
4526
- }
4527
- .pager .next > a,
4528
- .pager .next > span {
4529
- float: right;
4530
- }
4531
- .pager .previous > a,
4532
- .pager .previous > span {
4533
- float: left;
4534
- }
4535
- .pager .disabled > a,
4536
- .pager .disabled > a:hover,
4537
- .pager .disabled > a:focus,
4538
- .pager .disabled > span {
4539
- color: #777;
4540
- cursor: not-allowed;
4541
- background-color: #fff;
4542
- }
4543
- .label {
4544
- display: inline;
4545
- padding: .2em .6em .3em;
4546
- font-size: 75%;
4547
- font-weight: bold;
4548
- line-height: 1;
4549
- color: #fff;
4550
- text-align: center;
4551
- white-space: nowrap;
4552
- vertical-align: baseline;
4553
- border-radius: .25em;
4554
- }
4555
- a.label:hover,
4556
- a.label:focus {
4557
- color: #fff;
4558
- text-decoration: none;
4559
- cursor: pointer;
4560
- }
4561
- .label:empty {
4562
- display: none;
4563
- }
4564
- .btn .label {
4565
- position: relative;
4566
- top: -1px;
4567
- }
4568
- .label-default {
4569
- background-color: #777;
4570
- }
4571
- .label-default[href]:hover,
4572
- .label-default[href]:focus {
4573
- background-color: #5e5e5e;
4574
- }
4575
- .label-primary {
4576
- background-color: #428bca;
4577
- }
4578
- .label-primary[href]:hover,
4579
- .label-primary[href]:focus {
4580
- background-color: #3071a9;
4581
- }
4582
- .label-success {
4583
- background-color: #5cb85c;
4584
- }
4585
- .label-success[href]:hover,
4586
- .label-success[href]:focus {
4587
- background-color: #449d44;
4588
- }
4589
- .label-info {
4590
- background-color: #5bc0de;
4591
- }
4592
- .label-info[href]:hover,
4593
- .label-info[href]:focus {
4594
- background-color: #31b0d5;
4595
- }
4596
- .label-warning {
4597
- background-color: #f0ad4e;
4598
- }
4599
- .label-warning[href]:hover,
4600
- .label-warning[href]:focus {
4601
- background-color: #ec971f;
4602
- }
4603
- .label-danger {
4604
- background-color: #d9534f;
4605
- }
4606
- .label-danger[href]:hover,
4607
- .label-danger[href]:focus {
4608
- background-color: #c9302c;
4609
- }
4610
- .badge {
4611
- display: inline-block;
4612
- min-width: 10px;
4613
- padding: 3px 7px;
4614
- font-size: 12px;
4615
- font-weight: bold;
4616
- line-height: 1;
4617
- color: #fff;
4618
- text-align: center;
4619
- white-space: nowrap;
4620
- vertical-align: baseline;
4621
- background-color: #777;
4622
- border-radius: 10px;
4623
- }
4624
- .badge:empty {
4625
- display: none;
4626
- }
4627
- .btn .badge {
4628
- position: relative;
4629
- top: -1px;
4630
- }
4631
- .btn-xs .badge {
4632
- top: 0;
4633
- padding: 1px 5px;
4634
- }
4635
- a.badge:hover,
4636
- a.badge:focus {
4637
- color: #fff;
4638
- text-decoration: none;
4639
- cursor: pointer;
4640
- }
4641
- a.list-group-item.active > .badge,
4642
- .nav-pills > .active > a > .badge {
4643
- color: #428bca;
4644
- background-color: #fff;
4645
- }
4646
- .nav-pills > li > a > .badge {
4647
- margin-left: 3px;
4648
- }
4649
- .jumbotron {
4650
- padding: 30px 15px;
4651
- margin-bottom: 30px;
4652
- color: inherit;
4653
- background-color: #eee;
4654
- }
4655
- .jumbotron h1,
4656
- .jumbotron .h1 {
4657
- color: inherit;
4658
- }
4659
- .jumbotron p {
4660
- margin-bottom: 15px;
4661
- font-size: 21px;
4662
- font-weight: 200;
4663
- }
4664
- .jumbotron > hr {
4665
- border-top-color: #d5d5d5;
4666
- }
4667
- .container .jumbotron,
4668
- .container-fluid .jumbotron {
4669
- border-radius: 6px;
4670
- }
4671
- .jumbotron .container {
4672
- max-width: 100%;
4673
- }
4674
- @media screen and (min-width: 768px) {
4675
- .jumbotron {
4676
- padding: 48px 0;
4677
- }
4678
- .container .jumbotron {
4679
- padding-right: 60px;
4680
- padding-left: 60px;
4681
- }
4682
- .jumbotron h1,
4683
- .jumbotron .h1 {
4684
- font-size: 63px;
4685
- }
4686
- }
4687
- .thumbnail {
4688
- display: block;
4689
- padding: 4px;
4690
- margin-bottom: 20px;
4691
- line-height: 1.42857143;
4692
- background-color: #fff;
4693
- border: 1px solid #ddd;
4694
- border-radius: 4px;
4695
- -webkit-transition: border .2s ease-in-out;
4696
- -o-transition: border .2s ease-in-out;
4697
- transition: border .2s ease-in-out;
4698
- }
4699
- .thumbnail > img,
4700
- .thumbnail a > img {
4701
- margin-right: auto;
4702
- margin-left: auto;
4703
- }
4704
- a.thumbnail:hover,
4705
- a.thumbnail:focus,
4706
- a.thumbnail.active {
4707
- border-color: #428bca;
4708
- }
4709
- .thumbnail .caption {
4710
- padding: 9px;
4711
- color: #333;
4712
- }
4713
- .alert {
4714
- padding: 15px;
4715
- margin-bottom: 20px;
4716
- border: 1px solid transparent;
4717
- border-radius: 4px;
4718
- }
4719
- .alert h4 {
4720
- margin-top: 0;
4721
- color: inherit;
4722
- }
4723
- .alert .alert-link {
4724
- font-weight: bold;
4725
- }
4726
- .alert > p,
4727
- .alert > ul {
4728
- margin-bottom: 0;
4729
- }
4730
- .alert > p + p {
4731
- margin-top: 5px;
4732
- }
4733
- .alert-dismissable,
4734
- .alert-dismissible {
4735
- padding-right: 35px;
4736
- }
4737
- .alert-dismissable .close,
4738
- .alert-dismissible .close {
4739
- position: relative;
4740
- top: -2px;
4741
- right: -21px;
4742
- color: inherit;
4743
- }
4744
- .alert-success {
4745
- color: #3c763d;
4746
- background-color: #dff0d8;
4747
- border-color: #d6e9c6;
4748
- }
4749
- .alert-success hr {
4750
- border-top-color: #c9e2b3;
4751
- }
4752
- .alert-success .alert-link {
4753
- color: #2b542c;
4754
- }
4755
- .alert-info {
4756
- color: #31708f;
4757
- background-color: #d9edf7;
4758
- border-color: #bce8f1;
4759
- }
4760
- .alert-info hr {
4761
- border-top-color: #a6e1ec;
4762
- }
4763
- .alert-info .alert-link {
4764
- color: #245269;
4765
- }
4766
- .alert-warning {
4767
- color: #8a6d3b;
4768
- background-color: #fcf8e3;
4769
- border-color: #faebcc;
4770
- }
4771
- .alert-warning hr {
4772
- border-top-color: #f7e1b5;
4773
- }
4774
- .alert-warning .alert-link {
4775
- color: #66512c;
4776
- }
4777
- .alert-danger {
4778
- color: #a94442;
4779
- background-color: #f2dede;
4780
- border-color: #ebccd1;
4781
- }
4782
- .alert-danger hr {
4783
- border-top-color: #e4b9c0;
4784
- }
4785
- .alert-danger .alert-link {
4786
- color: #843534;
4787
- }
4788
- @-webkit-keyframes progress-bar-stripes {
4789
- from {
4790
- background-position: 40px 0;
4791
- }
4792
- to {
4793
- background-position: 0 0;
4794
- }
4795
- }
4796
- @-o-keyframes progress-bar-stripes {
4797
- from {
4798
- background-position: 40px 0;
4799
- }
4800
- to {
4801
- background-position: 0 0;
4802
- }
4803
- }
4804
- @keyframes progress-bar-stripes {
4805
- from {
4806
- background-position: 40px 0;
4807
- }
4808
- to {
4809
- background-position: 0 0;
4810
- }
4811
- }
4812
- .progress {
4813
- height: 20px;
4814
- margin-bottom: 20px;
4815
- overflow: hidden;
4816
- background-color: #f5f5f5;
4817
- border-radius: 4px;
4818
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
4819
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
4820
- }
4821
- .progress-bar {
4822
- float: left;
4823
- width: 0;
4824
- height: 100%;
4825
- font-size: 12px;
4826
- line-height: 20px;
4827
- color: #fff;
4828
- text-align: center;
4829
- background-color: #428bca;
4830
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
4831
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
4832
- -webkit-transition: width .6s ease;
4833
- -o-transition: width .6s ease;
4834
- transition: width .6s ease;
4835
- }
4836
- .progress-striped .progress-bar,
4837
- .progress-bar-striped {
4838
- 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);
4839
- 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);
4840
- 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);
4841
- -webkit-background-size: 40px 40px;
4842
- background-size: 40px 40px;
4843
- }
4844
- .progress.active .progress-bar,
4845
- .progress-bar.active {
4846
- -webkit-animation: progress-bar-stripes 2s linear infinite;
4847
- -o-animation: progress-bar-stripes 2s linear infinite;
4848
- animation: progress-bar-stripes 2s linear infinite;
4849
- }
4850
- .progress-bar-success {
4851
- background-color: #5cb85c;
4852
- }
4853
- .progress-striped .progress-bar-success {
4854
- 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);
4855
- 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);
4856
- 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);
4857
- }
4858
- .progress-bar-info {
4859
- background-color: #5bc0de;
4860
- }
4861
- .progress-striped .progress-bar-info {
4862
- 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);
4863
- 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);
4864
- 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);
4865
- }
4866
- .progress-bar-warning {
4867
- background-color: #f0ad4e;
4868
- }
4869
- .progress-striped .progress-bar-warning {
4870
- 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);
4871
- 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);
4872
- 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);
4873
- }
4874
- .progress-bar-danger {
4875
- background-color: #d9534f;
4876
- }
4877
- .progress-striped .progress-bar-danger {
4878
- 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);
4879
- 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);
4880
- 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);
4881
- }
4882
- .media {
4883
- margin-top: 15px;
4884
- }
4885
- .media:first-child {
4886
- margin-top: 0;
4887
- }
4888
- .media-right,
4889
- .media > .pull-right {
4890
- padding-left: 10px;
4891
- }
4892
- .media-left,
4893
- .media > .pull-left {
4894
- padding-right: 10px;
4895
- }
4896
- .media-left,
4897
- .media-right,
4898
- .media-body {
4899
- display: table-cell;
4900
- vertical-align: top;
4901
- }
4902
- .media-middle {
4903
- vertical-align: middle;
4904
- }
4905
- .media-bottom {
4906
- vertical-align: bottom;
4907
- }
4908
- .media-heading {
4909
- margin-top: 0;
4910
- margin-bottom: 5px;
4911
- }
4912
- .media-list {
4913
- padding-left: 0;
4914
- list-style: none;
4915
- }
4916
- .list-group {
4917
- padding-left: 0;
4918
- margin-bottom: 20px;
4919
- }
4920
- .list-group-item {
4921
- position: relative;
4922
- display: block;
4923
- padding: 10px 15px;
4924
- margin-bottom: -1px;
4925
- background-color: #fff;
4926
- border: 1px solid #ddd;
4927
- }
4928
- .list-group-item:first-child {
4929
- border-top-left-radius: 4px;
4930
- border-top-right-radius: 4px;
4931
- }
4932
- .list-group-item:last-child {
4933
- margin-bottom: 0;
4934
- border-bottom-right-radius: 4px;
4935
- border-bottom-left-radius: 4px;
4936
- }
4937
- .list-group-item > .badge {
4938
- float: right;
4939
- }
4940
- .list-group-item > .badge + .badge {
4941
- margin-right: 5px;
4942
- }
4943
- a.list-group-item {
4944
- color: #555;
4945
- }
4946
- a.list-group-item .list-group-item-heading {
4947
- color: #333;
4948
- }
4949
- a.list-group-item:hover,
4950
- a.list-group-item:focus {
4951
- color: #555;
4952
- text-decoration: none;
4953
- background-color: #f5f5f5;
4954
- }
4955
- .list-group-item.disabled,
4956
- .list-group-item.disabled:hover,
4957
- .list-group-item.disabled:focus {
4958
- color: #777;
4959
- cursor: not-allowed;
4960
- background-color: #eee;
4961
- }
4962
- .list-group-item.disabled .list-group-item-heading,
4963
- .list-group-item.disabled:hover .list-group-item-heading,
4964
- .list-group-item.disabled:focus .list-group-item-heading {
4965
- color: inherit;
4966
- }
4967
- .list-group-item.disabled .list-group-item-text,
4968
- .list-group-item.disabled:hover .list-group-item-text,
4969
- .list-group-item.disabled:focus .list-group-item-text {
4970
- color: #777;
4971
- }
4972
- .list-group-item.active,
4973
- .list-group-item.active:hover,
4974
- .list-group-item.active:focus {
4975
- z-index: 2;
4976
- color: #fff;
4977
- background-color: #428bca;
4978
- border-color: #428bca;
4979
- }
4980
- .list-group-item.active .list-group-item-heading,
4981
- .list-group-item.active:hover .list-group-item-heading,
4982
- .list-group-item.active:focus .list-group-item-heading,
4983
- .list-group-item.active .list-group-item-heading > small,
4984
- .list-group-item.active:hover .list-group-item-heading > small,
4985
- .list-group-item.active:focus .list-group-item-heading > small,
4986
- .list-group-item.active .list-group-item-heading > .small,
4987
- .list-group-item.active:hover .list-group-item-heading > .small,
4988
- .list-group-item.active:focus .list-group-item-heading > .small {
4989
- color: inherit;
4990
- }
4991
- .list-group-item.active .list-group-item-text,
4992
- .list-group-item.active:hover .list-group-item-text,
4993
- .list-group-item.active:focus .list-group-item-text {
4994
- color: #e1edf7;
4995
- }
4996
- .list-group-item-success {
4997
- color: #3c763d;
4998
- background-color: #dff0d8;
4999
- }
5000
- a.list-group-item-success {
5001
- color: #3c763d;
5002
- }
5003
- a.list-group-item-success .list-group-item-heading {
5004
- color: inherit;
5005
- }
5006
- a.list-group-item-success:hover,
5007
- a.list-group-item-success:focus {
5008
- color: #3c763d;
5009
- background-color: #d0e9c6;
5010
- }
5011
- a.list-group-item-success.active,
5012
- a.list-group-item-success.active:hover,
5013
- a.list-group-item-success.active:focus {
5014
- color: #fff;
5015
- background-color: #3c763d;
5016
- border-color: #3c763d;
5017
- }
5018
- .list-group-item-info {
5019
- color: #31708f;
5020
- background-color: #d9edf7;
5021
- }
5022
- a.list-group-item-info {
5023
- color: #31708f;
5024
- }
5025
- a.list-group-item-info .list-group-item-heading {
5026
- color: inherit;
5027
- }
5028
- a.list-group-item-info:hover,
5029
- a.list-group-item-info:focus {
5030
- color: #31708f;
5031
- background-color: #c4e3f3;
5032
- }
5033
- a.list-group-item-info.active,
5034
- a.list-group-item-info.active:hover,
5035
- a.list-group-item-info.active:focus {
5036
- color: #fff;
5037
- background-color: #31708f;
5038
- border-color: #31708f;
5039
- }
5040
- .list-group-item-warning {
5041
- color: #8a6d3b;
5042
- background-color: #fcf8e3;
5043
- }
5044
- a.list-group-item-warning {
5045
- color: #8a6d3b;
5046
- }
5047
- a.list-group-item-warning .list-group-item-heading {
5048
- color: inherit;
5049
- }
5050
- a.list-group-item-warning:hover,
5051
- a.list-group-item-warning:focus {
5052
- color: #8a6d3b;
5053
- background-color: #faf2cc;
5054
- }
5055
- a.list-group-item-warning.active,
5056
- a.list-group-item-warning.active:hover,
5057
- a.list-group-item-warning.active:focus {
5058
- color: #fff;
5059
- background-color: #8a6d3b;
5060
- border-color: #8a6d3b;
5061
- }
5062
- .list-group-item-danger {
5063
- color: #a94442;
5064
- background-color: #f2dede;
5065
- }
5066
- a.list-group-item-danger {
5067
- color: #a94442;
5068
- }
5069
- a.list-group-item-danger .list-group-item-heading {
5070
- color: inherit;
5071
- }
5072
- a.list-group-item-danger:hover,
5073
- a.list-group-item-danger:focus {
5074
- color: #a94442;
5075
- background-color: #ebcccc;
5076
- }
5077
- a.list-group-item-danger.active,
5078
- a.list-group-item-danger.active:hover,
5079
- a.list-group-item-danger.active:focus {
5080
- color: #fff;
5081
- background-color: #a94442;
5082
- border-color: #a94442;
5083
- }
5084
- .list-group-item-heading {
5085
- margin-top: 0;
5086
- margin-bottom: 5px;
5087
- }
5088
- .list-group-item-text {
5089
- margin-bottom: 0;
5090
- line-height: 1.3;
5091
- }
5092
- .panel {
5093
- margin-bottom: 20px;
5094
- background-color: #fff;
5095
- border: 1px solid transparent;
5096
- border-radius: 4px;
5097
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5098
- box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5099
- }
5100
- .panel-body {
5101
- padding: 15px;
5102
- }
5103
- .panel-heading {
5104
- padding: 10px 15px;
5105
- border-bottom: 1px solid transparent;
5106
- border-top-left-radius: 3px;
5107
- border-top-right-radius: 3px;
5108
- }
5109
- .panel-heading > .dropdown .dropdown-toggle {
5110
- color: inherit;
5111
- }
5112
- .panel-title {
5113
- margin-top: 0;
5114
- margin-bottom: 0;
5115
- font-size: 16px;
5116
- color: inherit;
5117
- }
5118
- .panel-title > a {
5119
- color: inherit;
5120
- }
5121
- .panel-footer {
5122
- padding: 10px 15px;
5123
- background-color: #f5f5f5;
5124
- border-top: 1px solid #ddd;
5125
- border-bottom-right-radius: 3px;
5126
- border-bottom-left-radius: 3px;
5127
- }
5128
- .panel > .list-group,
5129
- .panel > .panel-collapse > .list-group {
5130
- margin-bottom: 0;
5131
- }
5132
- .panel > .list-group .list-group-item,
5133
- .panel > .panel-collapse > .list-group .list-group-item {
5134
- border-width: 1px 0;
5135
- border-radius: 0;
5136
- }
5137
- .panel > .list-group:first-child .list-group-item:first-child,
5138
- .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5139
- border-top: 0;
5140
- border-top-left-radius: 3px;
5141
- border-top-right-radius: 3px;
5142
- }
5143
- .panel > .list-group:last-child .list-group-item:last-child,
5144
- .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5145
- border-bottom: 0;
5146
- border-bottom-right-radius: 3px;
5147
- border-bottom-left-radius: 3px;
5148
- }
5149
- .panel-heading + .list-group .list-group-item:first-child {
5150
- border-top-width: 0;
5151
- }
5152
- .list-group + .panel-footer {
5153
- border-top-width: 0;
5154
- }
5155
- .panel > .table,
5156
- .panel > .table-responsive > .table,
5157
- .panel > .panel-collapse > .table {
5158
- margin-bottom: 0;
5159
- }
5160
- .panel > .table caption,
5161
- .panel > .table-responsive > .table caption,
5162
- .panel > .panel-collapse > .table caption {
5163
- padding-right: 15px;
5164
- padding-left: 15px;
5165
- }
5166
- .panel > .table:first-child,
5167
- .panel > .table-responsive:first-child > .table:first-child {
5168
- border-top-left-radius: 3px;
5169
- border-top-right-radius: 3px;
5170
- }
5171
- .panel > .table:first-child > thead:first-child > tr:first-child,
5172
- .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5173
- .panel > .table:first-child > tbody:first-child > tr:first-child,
5174
- .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5175
- border-top-left-radius: 3px;
5176
- border-top-right-radius: 3px;
5177
- }
5178
- .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5179
- .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5180
- .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5181
- .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5182
- .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5183
- .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5184
- .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5185
- .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5186
- border-top-left-radius: 3px;
5187
- }
5188
- .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5189
- .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5190
- .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5191
- .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5192
- .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5193
- .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5194
- .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5195
- .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5196
- border-top-right-radius: 3px;
5197
- }
5198
- .panel > .table:last-child,
5199
- .panel > .table-responsive:last-child > .table:last-child {
5200
- border-bottom-right-radius: 3px;
5201
- border-bottom-left-radius: 3px;
5202
- }
5203
- .panel > .table:last-child > tbody:last-child > tr:last-child,
5204
- .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5205
- .panel > .table:last-child > tfoot:last-child > tr:last-child,
5206
- .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5207
- border-bottom-right-radius: 3px;
5208
- border-bottom-left-radius: 3px;
5209
- }
5210
- .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5211
- .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5212
- .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5213
- .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5214
- .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5215
- .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5216
- .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5217
- .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5218
- border-bottom-left-radius: 3px;
5219
- }
5220
- .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5221
- .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5222
- .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5223
- .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5224
- .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5225
- .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5226
- .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5227
- .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5228
- border-bottom-right-radius: 3px;
5229
- }
5230
- .panel > .panel-body + .table,
5231
- .panel > .panel-body + .table-responsive,
5232
- .panel > .table + .panel-body,
5233
- .panel > .table-responsive + .panel-body {
5234
- border-top: 1px solid #ddd;
5235
- }
5236
- .panel > .table > tbody:first-child > tr:first-child th,
5237
- .panel > .table > tbody:first-child > tr:first-child td {
5238
- border-top: 0;
5239
- }
5240
- .panel > .table-bordered,
5241
- .panel > .table-responsive > .table-bordered {
5242
- border: 0;
5243
- }
5244
- .panel > .table-bordered > thead > tr > th:first-child,
5245
- .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5246
- .panel > .table-bordered > tbody > tr > th:first-child,
5247
- .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5248
- .panel > .table-bordered > tfoot > tr > th:first-child,
5249
- .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5250
- .panel > .table-bordered > thead > tr > td:first-child,
5251
- .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5252
- .panel > .table-bordered > tbody > tr > td:first-child,
5253
- .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5254
- .panel > .table-bordered > tfoot > tr > td:first-child,
5255
- .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5256
- border-left: 0;
5257
- }
5258
- .panel > .table-bordered > thead > tr > th:last-child,
5259
- .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5260
- .panel > .table-bordered > tbody > tr > th:last-child,
5261
- .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5262
- .panel > .table-bordered > tfoot > tr > th:last-child,
5263
- .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5264
- .panel > .table-bordered > thead > tr > td:last-child,
5265
- .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5266
- .panel > .table-bordered > tbody > tr > td:last-child,
5267
- .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5268
- .panel > .table-bordered > tfoot > tr > td:last-child,
5269
- .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5270
- border-right: 0;
5271
- }
5272
- .panel > .table-bordered > thead > tr:first-child > td,
5273
- .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5274
- .panel > .table-bordered > tbody > tr:first-child > td,
5275
- .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5276
- .panel > .table-bordered > thead > tr:first-child > th,
5277
- .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5278
- .panel > .table-bordered > tbody > tr:first-child > th,
5279
- .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5280
- border-bottom: 0;
5281
- }
5282
- .panel > .table-bordered > tbody > tr:last-child > td,
5283
- .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5284
- .panel > .table-bordered > tfoot > tr:last-child > td,
5285
- .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5286
- .panel > .table-bordered > tbody > tr:last-child > th,
5287
- .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5288
- .panel > .table-bordered > tfoot > tr:last-child > th,
5289
- .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5290
- border-bottom: 0;
5291
- }
5292
- .panel > .table-responsive {
5293
- margin-bottom: 0;
5294
- border: 0;
5295
- }
5296
- .panel-group {
5297
- margin-bottom: 20px;
5298
- }
5299
- .panel-group .panel {
5300
- margin-bottom: 0;
5301
- border-radius: 4px;
5302
- }
5303
- .panel-group .panel + .panel {
5304
- margin-top: 5px;
5305
- }
5306
- .panel-group .panel-heading {
5307
- border-bottom: 0;
5308
- }
5309
- .panel-group .panel-heading + .panel-collapse > .panel-body,
5310
- .panel-group .panel-heading + .panel-collapse > .list-group {
5311
- border-top: 1px solid #ddd;
5312
- }
5313
- .panel-group .panel-footer {
5314
- border-top: 0;
5315
- }
5316
- .panel-group .panel-footer + .panel-collapse .panel-body {
5317
- border-bottom: 1px solid #ddd;
5318
- }
5319
- .panel-default {
5320
- border-color: #ddd;
5321
- }
5322
- .panel-default > .panel-heading {
5323
- color: #333;
5324
- background-color: #f5f5f5;
5325
- border-color: #ddd;
5326
- }
5327
- .panel-default > .panel-heading + .panel-collapse > .panel-body {
5328
- border-top-color: #ddd;
5329
- }
5330
- .panel-default > .panel-heading .badge {
5331
- color: #f5f5f5;
5332
- background-color: #333;
5333
- }
5334
- .panel-default > .panel-footer + .panel-collapse > .panel-body {
5335
- border-bottom-color: #ddd;
5336
- }
5337
- .panel-primary {
5338
- border-color: #428bca;
5339
- }
5340
- .panel-primary > .panel-heading {
5341
- color: #fff;
5342
- background-color: #428bca;
5343
- border-color: #428bca;
5344
- }
5345
- .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5346
- border-top-color: #428bca;
5347
- }
5348
- .panel-primary > .panel-heading .badge {
5349
- color: #428bca;
5350
- background-color: #fff;
5351
- }
5352
- .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5353
- border-bottom-color: #428bca;
5354
- }
5355
- .panel-success {
5356
- border-color: #d6e9c6;
5357
- }
5358
- .panel-success > .panel-heading {
5359
- color: #3c763d;
5360
- background-color: #dff0d8;
5361
- border-color: #d6e9c6;
5362
- }
5363
- .panel-success > .panel-heading + .panel-collapse > .panel-body {
5364
- border-top-color: #d6e9c6;
5365
- }
5366
- .panel-success > .panel-heading .badge {
5367
- color: #dff0d8;
5368
- background-color: #3c763d;
5369
- }
5370
- .panel-success > .panel-footer + .panel-collapse > .panel-body {
5371
- border-bottom-color: #d6e9c6;
5372
- }
5373
- .panel-info {
5374
- border-color: #bce8f1;
5375
- }
5376
- .panel-info > .panel-heading {
5377
- color: #31708f;
5378
- background-color: #d9edf7;
5379
- border-color: #bce8f1;
5380
- }
5381
- .panel-info > .panel-heading + .panel-collapse > .panel-body {
5382
- border-top-color: #bce8f1;
5383
- }
5384
- .panel-info > .panel-heading .badge {
5385
- color: #d9edf7;
5386
- background-color: #31708f;
5387
- }
5388
- .panel-info > .panel-footer + .panel-collapse > .panel-body {
5389
- border-bottom-color: #bce8f1;
5390
- }
5391
- .panel-warning {
5392
- border-color: #faebcc;
5393
- }
5394
- .panel-warning > .panel-heading {
5395
- color: #8a6d3b;
5396
- background-color: #fcf8e3;
5397
- border-color: #faebcc;
5398
- }
5399
- .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5400
- border-top-color: #faebcc;
5401
- }
5402
- .panel-warning > .panel-heading .badge {
5403
- color: #fcf8e3;
5404
- background-color: #8a6d3b;
5405
- }
5406
- .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5407
- border-bottom-color: #faebcc;
5408
- }
5409
- .panel-danger {
5410
- border-color: #ebccd1;
5411
- }
5412
- .panel-danger > .panel-heading {
5413
- color: #a94442;
5414
- background-color: #f2dede;
5415
- border-color: #ebccd1;
5416
- }
5417
- .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5418
- border-top-color: #ebccd1;
5419
- }
5420
- .panel-danger > .panel-heading .badge {
5421
- color: #f2dede;
5422
- background-color: #a94442;
5423
- }
5424
- .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5425
- border-bottom-color: #ebccd1;
5426
- }
5427
- .embed-responsive {
5428
- position: relative;
5429
- display: block;
5430
- height: 0;
5431
- padding: 0;
5432
- overflow: hidden;
5433
- }
5434
- .embed-responsive .embed-responsive-item,
5435
- .embed-responsive iframe,
5436
- .embed-responsive embed,
5437
- .embed-responsive object,
5438
- .embed-responsive video {
5439
- position: absolute;
5440
- top: 0;
5441
- bottom: 0;
5442
- left: 0;
5443
- width: 100%;
5444
- height: 100%;
5445
- border: 0;
5446
- }
5447
- .embed-responsive.embed-responsive-16by9 {
5448
- padding-bottom: 56.25%;
5449
- }
5450
- .embed-responsive.embed-responsive-4by3 {
5451
- padding-bottom: 75%;
5452
- }
5453
- .well {
5454
- min-height: 20px;
5455
- padding: 19px;
5456
- margin-bottom: 20px;
5457
- background-color: #f5f5f5;
5458
- border: 1px solid #e3e3e3;
5459
- border-radius: 4px;
5460
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5461
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5462
- }
5463
- .well blockquote {
5464
- border-color: #ddd;
5465
- border-color: rgba(0, 0, 0, .15);
5466
- }
5467
- .well-lg {
5468
- padding: 24px;
5469
- border-radius: 6px;
5470
- }
5471
- .well-sm {
5472
- padding: 9px;
5473
- border-radius: 3px;
5474
- }
5475
- .close {
5476
- float: right;
5477
- font-size: 21px;
5478
- font-weight: bold;
5479
- line-height: 1;
5480
- color: #000;
5481
- text-shadow: 0 1px 0 #fff;
5482
- filter: alpha(opacity=20);
5483
- opacity: .2;
5484
- }
5485
- .close:hover,
5486
- .close:focus {
5487
- color: #000;
5488
- text-decoration: none;
5489
- cursor: pointer;
5490
- filter: alpha(opacity=50);
5491
- opacity: .5;
5492
- }
5493
- button.close {
5494
- -webkit-appearance: none;
5495
- padding: 0;
5496
- cursor: pointer;
5497
- background: transparent;
5498
- border: 0;
5499
- }
5500
- .modal-open {
5501
- overflow: hidden;
5502
- }
5503
- .modal {
5504
- position: fixed;
5505
- top: 0;
5506
- right: 0;
5507
- bottom: 0;
5508
- left: 0;
5509
- z-index: 1040;
5510
- display: none;
5511
- overflow: hidden;
5512
- -webkit-overflow-scrolling: touch;
5513
- outline: 0;
5514
- }
5515
- .modal.fade .modal-dialog {
5516
- -webkit-transition: -webkit-transform .3s ease-out;
5517
- -o-transition: -o-transform .3s ease-out;
5518
- transition: transform .3s ease-out;
5519
- -webkit-transform: translate(0, -25%);
5520
- -ms-transform: translate(0, -25%);
5521
- -o-transform: translate(0, -25%);
5522
- transform: translate(0, -25%);
5523
- }
5524
- .modal.in .modal-dialog {
5525
- -webkit-transform: translate(0, 0);
5526
- -ms-transform: translate(0, 0);
5527
- -o-transform: translate(0, 0);
5528
- transform: translate(0, 0);
5529
- }
5530
- .modal-open .modal {
5531
- overflow-x: hidden;
5532
- overflow-y: auto;
5533
- }
5534
- .modal-dialog {
5535
- position: relative;
5536
- width: auto;
5537
- margin: 10px;
5538
- }
5539
- .modal-content {
5540
- position: relative;
5541
- background-color: #fff;
5542
- -webkit-background-clip: padding-box;
5543
- background-clip: padding-box;
5544
- border: 1px solid #999;
5545
- border: 1px solid rgba(0, 0, 0, .2);
5546
- border-radius: 6px;
5547
- outline: 0;
5548
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5549
- box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5550
- }
5551
- .modal-backdrop {
5552
- position: fixed;
5553
- top: 0;
5554
- right: 0;
5555
- bottom: 0;
5556
- left: 0;
5557
- background-color: #000;
5558
- }
5559
- .modal-backdrop.fade {
5560
- filter: alpha(opacity=0);
5561
- opacity: 0;
5562
- }
5563
- .modal-backdrop.in {
5564
- filter: alpha(opacity=50);
5565
- opacity: .5;
5566
- }
5567
- .modal-header {
5568
- min-height: 16.42857143px;
5569
- padding: 15px;
5570
- border-bottom: 1px solid #e5e5e5;
5571
- }
5572
- .modal-header .close {
5573
- margin-top: -2px;
5574
- }
5575
- .modal-title {
5576
- margin: 0;
5577
- line-height: 1.42857143;
5578
- }
5579
- .modal-body {
5580
- position: relative;
5581
- padding: 15px;
5582
- }
5583
- .modal-footer {
5584
- padding: 15px;
5585
- text-align: right;
5586
- border-top: 1px solid #e5e5e5;
5587
- }
5588
- .modal-footer .btn + .btn {
5589
- margin-bottom: 0;
5590
- margin-left: 5px;
5591
- }
5592
- .modal-footer .btn-group .btn + .btn {
5593
- margin-left: -1px;
5594
- }
5595
- .modal-footer .btn-block + .btn-block {
5596
- margin-left: 0;
5597
- }
5598
- .modal-scrollbar-measure {
5599
- position: absolute;
5600
- top: -9999px;
5601
- width: 50px;
5602
- height: 50px;
5603
- overflow: scroll;
5604
- }
5605
- @media (min-width: 768px) {
5606
- .modal-dialog {
5607
- width: 600px;
5608
- margin: 30px auto;
5609
- }
5610
- .modal-content {
5611
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5612
- box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5613
- }
5614
- .modal-sm {
5615
- width: 300px;
5616
- }
5617
- }
5618
- @media (min-width: 992px) {
5619
- .modal-lg {
5620
- width: 900px;
5621
- }
5622
- }
5623
- .tooltip {
5624
- position: absolute;
5625
- z-index: 1070;
5626
- display: block;
5627
- font-size: 12px;
5628
- line-height: 1.4;
5629
- visibility: visible;
5630
- filter: alpha(opacity=0);
5631
- opacity: 0;
5632
- }
5633
- .tooltip.in {
5634
- filter: alpha(opacity=90);
5635
- opacity: .9;
5636
- }
5637
- .tooltip.top {
5638
- padding: 5px 0;
5639
- margin-top: -3px;
5640
- }
5641
- .tooltip.right {
5642
- padding: 0 5px;
5643
- margin-left: 3px;
5644
- }
5645
- .tooltip.bottom {
5646
- padding: 5px 0;
5647
- margin-top: 3px;
5648
- }
5649
- .tooltip.left {
5650
- padding: 0 5px;
5651
- margin-left: -3px;
5652
- }
5653
- .tooltip-inner {
5654
- max-width: 200px;
5655
- padding: 3px 8px;
5656
- color: #fff;
5657
- text-align: center;
5658
- text-decoration: none;
5659
- background-color: #000;
5660
- border-radius: 4px;
5661
- }
5662
- .tooltip-arrow {
5663
- position: absolute;
5664
- width: 0;
5665
- height: 0;
5666
- border-color: transparent;
5667
- border-style: solid;
5668
- }
5669
- .tooltip.top .tooltip-arrow {
5670
- bottom: 0;
5671
- left: 50%;
5672
- margin-left: -5px;
5673
- border-width: 5px 5px 0;
5674
- border-top-color: #000;
5675
- }
5676
- .tooltip.top-left .tooltip-arrow {
5677
- bottom: 0;
5678
- left: 5px;
5679
- border-width: 5px 5px 0;
5680
- border-top-color: #000;
5681
- }
5682
- .tooltip.top-right .tooltip-arrow {
5683
- right: 5px;
5684
- bottom: 0;
5685
- border-width: 5px 5px 0;
5686
- border-top-color: #000;
5687
- }
5688
- .tooltip.right .tooltip-arrow {
5689
- top: 50%;
5690
- left: 0;
5691
- margin-top: -5px;
5692
- border-width: 5px 5px 5px 0;
5693
- border-right-color: #000;
5694
- }
5695
- .tooltip.left .tooltip-arrow {
5696
- top: 50%;
5697
- right: 0;
5698
- margin-top: -5px;
5699
- border-width: 5px 0 5px 5px;
5700
- border-left-color: #000;
5701
- }
5702
- .tooltip.bottom .tooltip-arrow {
5703
- top: 0;
5704
- left: 50%;
5705
- margin-left: -5px;
5706
- border-width: 0 5px 5px;
5707
- border-bottom-color: #000;
5708
- }
5709
- .tooltip.bottom-left .tooltip-arrow {
5710
- top: 0;
5711
- left: 5px;
5712
- border-width: 0 5px 5px;
5713
- border-bottom-color: #000;
5714
- }
5715
- .tooltip.bottom-right .tooltip-arrow {
5716
- top: 0;
5717
- right: 5px;
5718
- border-width: 0 5px 5px;
5719
- border-bottom-color: #000;
5720
- }
5721
- .popover {
5722
- position: absolute;
5723
- top: 0;
5724
- left: 0;
5725
- z-index: 1060;
5726
- display: none;
5727
- max-width: 276px;
5728
- padding: 1px;
5729
- font-size: 14px;
5730
- font-weight: normal;
5731
- line-height: 1.42857143;
5732
- text-align: left;
5733
- white-space: normal;
5734
- background-color: #fff;
5735
- -webkit-background-clip: padding-box;
5736
- background-clip: padding-box;
5737
- border: 1px solid #ccc;
5738
- border: 1px solid rgba(0, 0, 0, .2);
5739
- border-radius: 6px;
5740
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
5741
- box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
5742
- }
5743
- .popover.top {
5744
- margin-top: -10px;
5745
- }
5746
- .popover.right {
5747
- margin-left: 10px;
5748
- }
5749
- .popover.bottom {
5750
- margin-top: 10px;
5751
- }
5752
- .popover.left {
5753
- margin-left: -10px;
5754
- }
5755
- .popover-title {
5756
- padding: 8px 14px;
5757
- margin: 0;
5758
- font-size: 14px;
5759
- background-color: #f7f7f7;
5760
- border-bottom: 1px solid #ebebeb;
5761
- border-radius: 5px 5px 0 0;
5762
- }
5763
- .popover-content {
5764
- padding: 9px 14px;
5765
- }
5766
- .popover > .arrow,
5767
- .popover > .arrow:after {
5768
- position: absolute;
5769
- display: block;
5770
- width: 0;
5771
- height: 0;
5772
- border-color: transparent;
5773
- border-style: solid;
5774
- }
5775
- .popover > .arrow {
5776
- border-width: 11px;
5777
- }
5778
- .popover > .arrow:after {
5779
- content: "";
5780
- border-width: 10px;
5781
- }
5782
- .popover.top > .arrow {
5783
- bottom: -11px;
5784
- left: 50%;
5785
- margin-left: -11px;
5786
- border-top-color: #999;
5787
- border-top-color: rgba(0, 0, 0, .25);
5788
- border-bottom-width: 0;
5789
- }
5790
- .popover.top > .arrow:after {
5791
- bottom: 1px;
5792
- margin-left: -10px;
5793
- content: " ";
5794
- border-top-color: #fff;
5795
- border-bottom-width: 0;
5796
- }
5797
- .popover.right > .arrow {
5798
- top: 50%;
5799
- left: -11px;
5800
- margin-top: -11px;
5801
- border-right-color: #999;
5802
- border-right-color: rgba(0, 0, 0, .25);
5803
- border-left-width: 0;
5804
- }
5805
- .popover.right > .arrow:after {
5806
- bottom: -10px;
5807
- left: 1px;
5808
- content: " ";
5809
- border-right-color: #fff;
5810
- border-left-width: 0;
5811
- }
5812
- .popover.bottom > .arrow {
5813
- top: -11px;
5814
- left: 50%;
5815
- margin-left: -11px;
5816
- border-top-width: 0;
5817
- border-bottom-color: #999;
5818
- border-bottom-color: rgba(0, 0, 0, .25);
5819
- }
5820
- .popover.bottom > .arrow:after {
5821
- top: 1px;
5822
- margin-left: -10px;
5823
- content: " ";
5824
- border-top-width: 0;
5825
- border-bottom-color: #fff;
5826
- }
5827
- .popover.left > .arrow {
5828
- top: 50%;
5829
- right: -11px;
5830
- margin-top: -11px;
5831
- border-right-width: 0;
5832
- border-left-color: #999;
5833
- border-left-color: rgba(0, 0, 0, .25);
5834
- }
5835
- .popover.left > .arrow:after {
5836
- right: 1px;
5837
- bottom: -10px;
5838
- content: " ";
5839
- border-right-width: 0;
5840
- border-left-color: #fff;
5841
- }
5842
- .carousel {
5843
- position: relative;
5844
- }
5845
- .carousel-inner {
5846
- position: relative;
5847
- width: 100%;
5848
- overflow: hidden;
5849
- }
5850
- .carousel-inner > .item {
5851
- position: relative;
5852
- display: none;
5853
- -webkit-transition: .6s ease-in-out left;
5854
- -o-transition: .6s ease-in-out left;
5855
- transition: .6s ease-in-out left;
5856
- }
5857
- .carousel-inner > .item > img,
5858
- .carousel-inner > .item > a > img {
5859
- line-height: 1;
5860
- }
5861
- @media all and (transform-3d), (-webkit-transform-3d) {
5862
- .carousel-inner > .item {
5863
- -webkit-transition: -webkit-transform .6s ease-in-out;
5864
- -o-transition: -o-transform .6s ease-in-out;
5865
- transition: transform .6s ease-in-out;
5866
-
5867
- -webkit-backface-visibility: hidden;
5868
- backface-visibility: hidden;
5869
- -webkit-perspective: 1000;
5870
- perspective: 1000;
5871
- }
5872
- .carousel-inner > .item.next,
5873
- .carousel-inner > .item.active.right {
5874
- left: 0;
5875
- -webkit-transform: translate3d(100%, 0, 0);
5876
- transform: translate3d(100%, 0, 0);
5877
- }
5878
- .carousel-inner > .item.prev,
5879
- .carousel-inner > .item.active.left {
5880
- left: 0;
5881
- -webkit-transform: translate3d(-100%, 0, 0);
5882
- transform: translate3d(-100%, 0, 0);
5883
- }
5884
- .carousel-inner > .item.next.left,
5885
- .carousel-inner > .item.prev.right,
5886
- .carousel-inner > .item.active {
5887
- left: 0;
5888
- -webkit-transform: translate3d(0, 0, 0);
5889
- transform: translate3d(0, 0, 0);
5890
- }
5891
- }
5892
- .carousel-inner > .active,
5893
- .carousel-inner > .next,
5894
- .carousel-inner > .prev {
5895
- display: block;
5896
- }
5897
- .carousel-inner > .active {
5898
- left: 0;
5899
- }
5900
- .carousel-inner > .next,
5901
- .carousel-inner > .prev {
5902
- position: absolute;
5903
- top: 0;
5904
- width: 100%;
5905
- }
5906
- .carousel-inner > .next {
5907
- left: 100%;
5908
- }
5909
- .carousel-inner > .prev {
5910
- left: -100%;
5911
- }
5912
- .carousel-inner > .next.left,
5913
- .carousel-inner > .prev.right {
5914
- left: 0;
5915
- }
5916
- .carousel-inner > .active.left {
5917
- left: -100%;
5918
- }
5919
- .carousel-inner > .active.right {
5920
- left: 100%;
5921
- }
5922
- .carousel-control {
5923
- position: absolute;
5924
- top: 0;
5925
- bottom: 0;
5926
- left: 0;
5927
- width: 15%;
5928
- font-size: 20px;
5929
- color: #fff;
5930
- text-align: center;
5931
- text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
5932
- filter: alpha(opacity=50);
5933
- opacity: .5;
5934
- }
5935
- .carousel-control.left {
5936
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5937
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5938
- background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
5939
- background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
5940
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5941
- background-repeat: repeat-x;
5942
- }
5943
- .carousel-control.right {
5944
- right: 0;
5945
- left: auto;
5946
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5947
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5948
- background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
5949
- background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
5950
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5951
- background-repeat: repeat-x;
5952
- }
5953
- .carousel-control:hover,
5954
- .carousel-control:focus {
5955
- color: #fff;
5956
- text-decoration: none;
5957
- filter: alpha(opacity=90);
5958
- outline: 0;
5959
- opacity: .9;
5960
- }
5961
- .carousel-control .icon-prev,
5962
- .carousel-control .icon-next,
5963
- .carousel-control .glyphicon-chevron-left,
5964
- .carousel-control .glyphicon-chevron-right {
5965
- position: absolute;
5966
- top: 50%;
5967
- z-index: 5;
5968
- display: inline-block;
5969
- }
5970
- .carousel-control .icon-prev,
5971
- .carousel-control .glyphicon-chevron-left {
5972
- left: 50%;
5973
- margin-left: -10px;
5974
- }
5975
- .carousel-control .icon-next,
5976
- .carousel-control .glyphicon-chevron-right {
5977
- right: 50%;
5978
- margin-right: -10px;
5979
- }
5980
- .carousel-control .icon-prev,
5981
- .carousel-control .icon-next {
5982
- width: 20px;
5983
- height: 20px;
5984
- margin-top: -10px;
5985
- font-family: serif;
5986
- }
5987
- .carousel-control .icon-prev:before {
5988
- content: '\2039';
5989
- }
5990
- .carousel-control .icon-next:before {
5991
- content: '\203a';
5992
- }
5993
- .carousel-indicators {
5994
- position: absolute;
5995
- bottom: 10px;
5996
- left: 50%;
5997
- z-index: 15;
5998
- width: 60%;
5999
- padding-left: 0;
6000
- margin-left: -30%;
6001
- text-align: center;
6002
- list-style: none;
6003
- }
6004
- .carousel-indicators li {
6005
- display: inline-block;
6006
- width: 10px;
6007
- height: 10px;
6008
- margin: 1px;
6009
- text-indent: -999px;
6010
- cursor: pointer;
6011
- background-color: #000 \9;
6012
- background-color: rgba(0, 0, 0, 0);
6013
- border: 1px solid #fff;
6014
- border-radius: 10px;
6015
- }
6016
- .carousel-indicators .active {
6017
- width: 12px;
6018
- height: 12px;
6019
- margin: 0;
6020
- background-color: #fff;
6021
- }
6022
- .carousel-caption {
6023
- position: absolute;
6024
- right: 15%;
6025
- bottom: 20px;
6026
- left: 15%;
6027
- z-index: 10;
6028
- padding-top: 20px;
6029
- padding-bottom: 20px;
6030
- color: #fff;
6031
- text-align: center;
6032
- text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
6033
- }
6034
- .carousel-caption .btn {
6035
- text-shadow: none;
6036
- }
6037
- @media screen and (min-width: 768px) {
6038
- .carousel-control .glyphicon-chevron-left,
6039
- .carousel-control .glyphicon-chevron-right,
6040
- .carousel-control .icon-prev,
6041
- .carousel-control .icon-next {
6042
- width: 30px;
6043
- height: 30px;
6044
- margin-top: -15px;
6045
- font-size: 30px;
6046
- }
6047
- .carousel-control .glyphicon-chevron-left,
6048
- .carousel-control .icon-prev {
6049
- margin-left: -15px;
6050
- }
6051
- .carousel-control .glyphicon-chevron-right,
6052
- .carousel-control .icon-next {
6053
- margin-right: -15px;
6054
- }
6055
- .carousel-caption {
6056
- right: 20%;
6057
- left: 20%;
6058
- padding-bottom: 30px;
6059
- }
6060
- .carousel-indicators {
6061
- bottom: 20px;
6062
- }
6063
- }
6064
- .clearfix:before,
6065
- .clearfix:after,
6066
- .dl-horizontal dd:before,
6067
- .dl-horizontal dd:after,
6068
- .container:before,
6069
- .container:after,
6070
- .container-fluid:before,
6071
- .container-fluid:after,
6072
- .row:before,
6073
- .row:after,
6074
- .form-horizontal .form-group:before,
6075
- .form-horizontal .form-group:after,
6076
- .btn-toolbar:before,
6077
- .btn-toolbar:after,
6078
- .btn-group-vertical > .btn-group:before,
6079
- .btn-group-vertical > .btn-group:after,
6080
- .nav:before,
6081
- .nav:after,
6082
- .navbar:before,
6083
- .navbar:after,
6084
- .navbar-header:before,
6085
- .navbar-header:after,
6086
- .navbar-collapse:before,
6087
- .navbar-collapse:after,
6088
- .pager:before,
6089
- .pager:after,
6090
- .panel-body:before,
6091
- .panel-body:after,
6092
- .modal-footer:before,
6093
- .modal-footer:after {
6094
- display: table;
6095
- content: " ";
6096
- }
6097
- .clearfix:after,
6098
- .dl-horizontal dd:after,
6099
- .container:after,
6100
- .container-fluid:after,
6101
- .row:after,
6102
- .form-horizontal .form-group:after,
6103
- .btn-toolbar:after,
6104
- .btn-group-vertical > .btn-group:after,
6105
- .nav:after,
6106
- .navbar:after,
6107
- .navbar-header:after,
6108
- .navbar-collapse:after,
6109
- .pager:after,
6110
- .panel-body:after,
6111
- .modal-footer:after {
6112
- clear: both;
6113
- }
6114
- .center-block {
6115
- display: block;
6116
- margin-right: auto;
6117
- margin-left: auto;
6118
- }
6119
- .pull-right {
6120
- float: right !important;
6121
- }
6122
- .pull-left {
6123
- float: left !important;
6124
- }
6125
- .hide {
6126
- display: none !important;
6127
- }
6128
- .show {
6129
- display: block !important;
6130
- }
6131
- .invisible {
6132
- visibility: hidden;
6133
- }
6134
- .text-hide {
6135
- font: 0/0 a;
6136
- color: transparent;
6137
- text-shadow: none;
6138
- background-color: transparent;
6139
- border: 0;
6140
- }
6141
- .hidden {
6142
- display: none !important;
6143
- visibility: hidden !important;
6144
- }
6145
- .affix {
6146
- position: fixed;
6147
- }
6148
- @-ms-viewport {
6149
- width: device-width;
6150
- }
6151
- .visible-xs,
6152
- .visible-sm,
6153
- .visible-md,
6154
- .visible-lg {
6155
- display: none !important;
6156
- }
6157
- .visible-xs-block,
6158
- .visible-xs-inline,
6159
- .visible-xs-inline-block,
6160
- .visible-sm-block,
6161
- .visible-sm-inline,
6162
- .visible-sm-inline-block,
6163
- .visible-md-block,
6164
- .visible-md-inline,
6165
- .visible-md-inline-block,
6166
- .visible-lg-block,
6167
- .visible-lg-inline,
6168
- .visible-lg-inline-block {
6169
- display: none !important;
6170
- }
6171
- @media (max-width: 767px) {
6172
- .visible-xs {
6173
- display: block !important;
6174
- }
6175
- table.visible-xs {
6176
- display: table;
6177
- }
6178
- tr.visible-xs {
6179
- display: table-row !important;
6180
- }
6181
- th.visible-xs,
6182
- td.visible-xs {
6183
- display: table-cell !important;
6184
- }
6185
- }
6186
- @media (max-width: 767px) {
6187
- .visible-xs-block {
6188
- display: block !important;
6189
- }
6190
- }
6191
- @media (max-width: 767px) {
6192
- .visible-xs-inline {
6193
- display: inline !important;
6194
- }
6195
- }
6196
- @media (max-width: 767px) {
6197
- .visible-xs-inline-block {
6198
- display: inline-block !important;
6199
- }
6200
- }
6201
- @media (min-width: 768px) and (max-width: 991px) {
6202
- .visible-sm {
6203
- display: block !important;
6204
- }
6205
- table.visible-sm {
6206
- display: table;
6207
- }
6208
- tr.visible-sm {
6209
- display: table-row !important;
6210
- }
6211
- th.visible-sm,
6212
- td.visible-sm {
6213
- display: table-cell !important;
6214
- }
6215
- }
6216
- @media (min-width: 768px) and (max-width: 991px) {
6217
- .visible-sm-block {
6218
- display: block !important;
6219
- }
6220
- }
6221
- @media (min-width: 768px) and (max-width: 991px) {
6222
- .visible-sm-inline {
6223
- display: inline !important;
6224
- }
6225
- }
6226
- @media (min-width: 768px) and (max-width: 991px) {
6227
- .visible-sm-inline-block {
6228
- display: inline-block !important;
6229
- }
6230
- }
6231
- @media (min-width: 992px) and (max-width: 1199px) {
6232
- .visible-md {
6233
- display: block !important;
6234
- }
6235
- table.visible-md {
6236
- display: table;
6237
- }
6238
- tr.visible-md {
6239
- display: table-row !important;
6240
- }
6241
- th.visible-md,
6242
- td.visible-md {
6243
- display: table-cell !important;
6244
- }
6245
- }
6246
- @media (min-width: 992px) and (max-width: 1199px) {
6247
- .visible-md-block {
6248
- display: block !important;
6249
- }
6250
- }
6251
- @media (min-width: 992px) and (max-width: 1199px) {
6252
- .visible-md-inline {
6253
- display: inline !important;
6254
- }
6255
- }
6256
- @media (min-width: 992px) and (max-width: 1199px) {
6257
- .visible-md-inline-block {
6258
- display: inline-block !important;
6259
- }
6260
- }
6261
- @media (min-width: 1200px) {
6262
- .visible-lg {
6263
- display: block !important;
6264
- }
6265
- table.visible-lg {
6266
- display: table;
6267
- }
6268
- tr.visible-lg {
6269
- display: table-row !important;
6270
- }
6271
- th.visible-lg,
6272
- td.visible-lg {
6273
- display: table-cell !important;
6274
- }
6275
- }
6276
- @media (min-width: 1200px) {
6277
- .visible-lg-block {
6278
- display: block !important;
6279
- }
6280
- }
6281
- @media (min-width: 1200px) {
6282
- .visible-lg-inline {
6283
- display: inline !important;
6284
- }
6285
- }
6286
- @media (min-width: 1200px) {
6287
- .visible-lg-inline-block {
6288
- display: inline-block !important;
6289
- }
6290
- }
6291
- @media (max-width: 767px) {
6292
- .hidden-xs {
6293
- display: none !important;
6294
- }
6295
- }
6296
- @media (min-width: 768px) and (max-width: 991px) {
6297
- .hidden-sm {
6298
- display: none !important;
6299
- }
6300
- }
6301
- @media (min-width: 992px) and (max-width: 1199px) {
6302
- .hidden-md {
6303
- display: none !important;
6304
- }
6305
- }
6306
- @media (min-width: 1200px) {
6307
- .hidden-lg {
6308
- display: none !important;
6309
- }
6310
- }
6311
- .visible-print {
6312
- display: none !important;
6313
- }
6314
- @media print {
6315
- .visible-print {
6316
- display: block !important;
6317
- }
6318
- table.visible-print {
6319
- display: table;
6320
- }
6321
- tr.visible-print {
6322
- display: table-row !important;
6323
- }
6324
- th.visible-print,
6325
- td.visible-print {
6326
- display: table-cell !important;
6327
- }
6328
- }
6329
- .visible-print-block {
6330
- display: none !important;
6331
- }
6332
- @media print {
6333
- .visible-print-block {
6334
- display: block !important;
6335
- }
6336
- }
6337
- .visible-print-inline {
6338
- display: none !important;
6339
- }
6340
- @media print {
6341
- .visible-print-inline {
6342
- display: inline !important;
6343
- }
6344
- }
6345
- .visible-print-inline-block {
6346
- display: none !important;
6347
- }
6348
- @media print {
6349
- .visible-print-inline-block {
6350
- display: inline-block !important;
6351
- }
6352
- }
6353
- @media print {
6354
- .hidden-print {
6355
- display: none !important;
6356
- }
6357
- }
6358
- /*# sourceMappingURL=bootstrap.css.map */
1
+ @charset "UTF-8";/*!
2
+ * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors
4
+ * Copyright 2011-2021 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
+ */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x)/ -2);margin-left:calc(var(--bs-gutter-x)/ -2)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)/ 2);padding-left:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.3333333333%}.col-2{flex:0 0 auto;width:16.6666666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.3333333333%}.col-5{flex:0 0 auto;width:41.6666666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.3333333333%}.col-8{flex:0 0 auto;width:66.6666666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-11{margin-left:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754;padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545;padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu{top:0;right:auto;left:100%}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu{top:0;right:100%;left:auto}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-i