Version Description
- Bug fixing in the Statistics widget
Download this release
Release Info
Developer | osamaesh |
Plugin | Visitors Traffic Real Time Statistics |
Version | 3.5 |
Comparing to | |
See all releases |
Code changes from version 2.13 to 3.5
- Visitors-Traffic-Real-Time-Statistics.php +1 -1
- WPHitsCounter.php +1 -1
- ahc_about.php +1 -6
- ahc_help.php +0 -4
- ahc_settings.php +9 -9
- ajaxpages/getUsersOnline.php +0 -13
- css/jquery.jqplot.min.css +0 -1
- css/slimselect.min.css +1 -0
- css/{vtrtspro_css_stylesheet.css → vtrts_css_stylesheet.css} +6 -12
- functions.php +346 -369
- images/flags/wf.png +0 -0
- images/geomap_pro.jpg +0 -0
- images/map_pro.jpg +0 -0
- init.php +10 -5
- js/ahcfree_js_scripts.js +3 -81
- js/jqplot.canvasAxisLabelRenderer.min.js +0 -3
- js/jqplot.canvasAxisTickRenderer.min.js +0 -3
- js/jqplot.canvasTextRenderer.min.js +0 -3
- js/jqplot.dateAxisRenderer.min.js +0 -3
- js/jqplot.enhancedLegendRenderer.min.js +0 -3
- js/jqplot.highlighter.min.js +0 -3
- js/jqplot.pieRenderer.min.js +0 -3
- js/jquery.jqplot.min.js +0 -5
- js/slimselect.min.js +1 -0
- lib/Chart_js/.gitignore +0 -7
- lib/Chart_js/CONTRIBUTING.md +0 -20
- lib/Chart_js/Chart.js +0 -3379
- lib/Chart_js/Chart.min.js +0 -11
- lib/Chart_js/LICENSE.md +0 -7
- lib/Chart_js/README.md +0 -20
- lib/Chart_js/bower.json +0 -11
- lib/Chart_js/docs/00-Getting-Started.md +0 -200
- lib/Chart_js/docs/01-Line-Chart.md +0 -160
- lib/Chart_js/docs/02-Bar-Chart.md +0 -143
- lib/Chart_js/docs/03-Radar-Chart.md +0 -177
- lib/Chart_js/docs/04-Polar-Area-Chart.md +0 -172
- lib/Chart_js/docs/05-Pie-Doughnut-Chart.md +0 -158
- lib/Chart_js/docs/06-Advanced.md +0 -152
- lib/Chart_js/docs/07-Notes.md +0 -42
- lib/Chart_js/gulpfile.js +0 -131
- lib/Chart_js/package.json +0 -24
- lib/Chart_js/samples/bar.html +0 -48
- lib/Chart_js/samples/doughnut.html +0 -67
- lib/Chart_js/samples/line.html +0 -54
- lib/Chart_js/samples/pie.html +0 -58
- lib/Chart_js/samples/polar-area.html +0 -60
- lib/Chart_js/samples/radar.html +0 -53
- lib/Chart_js/src/Chart.Bar.js +0 -294
- lib/Chart_js/src/Chart.Core.js +0 -1943
- lib/Chart_js/src/Chart.Doughnut.js +0 -184
- lib/Chart_js/src/Chart.Line.js +0 -366
- lib/Chart_js/src/Chart.PolarArea.js +0 -248
- lib/Chart_js/src/Chart.Radar.js +0 -343
- lib/Chart_js/utils.js +0 -147
- lib/bootstrap/css/bootstrap-rtl.min.css +0 -9
- lib/bootstrap/css/bootstrap-theme.css +0 -457
- lib/bootstrap/css/bootstrap-theme.css.map +0 -1
- lib/bootstrap/css/bootstrap-theme.min.css +0 -5
- 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:
|
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 |
-
<
|
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 |
-
|
|
|
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) ?>"> 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 |
-
|
95 |
-
border:#dfdfdf solid 1px;
|
96 |
margin: 10px 0px;
|
97 |
-
|
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 |
-
|
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 |
-
|
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 =
|
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 =
|
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 .=
|
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']) ?
|
526 |
|
527 |
|
528 |
|
@@ -537,7 +532,7 @@ function ahcfree_create_admin_menu_link() {
|
|
537 |
*
|
538 |
* @return number
|
539 |
*/
|
540 |
-
function
|
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 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
$response['
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
} else {
|
1464 |
-
$
|
1465 |
}
|
1466 |
-
|
1467 |
-
return $
|
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 |
-
$
|
1600 |
$c = 0;
|
1601 |
foreach ($results as $bsr) {
|
1602 |
-
$
|
1603 |
-
$response['data'][$c]['bsr_name'] = $bsr->bsr_name;
|
1604 |
-
$response['data'][$c]['hits'] = $bsr->bsr_visits;
|
1605 |
$c++;
|
1606 |
}
|
1607 |
} else {
|
1608 |
-
$
|
1609 |
}
|
1610 |
-
|
|
|
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($
|
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
|
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 |
-
|
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 =
|
2400 |
if ($exclude_ips == '' or $exclude_ips == '') {
|
2401 |
$exclude_ips = array();
|
2402 |
}
|
2403 |
-
if (
|
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 =
|
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'] =
|
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/
|
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 |
-
|
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), '', '
|
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 |
-
|
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 |
-
|
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 |
-
|
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 |
-
|
2867 |
-
|
2868 |
|
|
|
2869 |
|
|
|
|
|
2870 |
|
2871 |
-
|
2872 |
-
|
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 |
-
|
2878 |
-
|
|
|
|
|
|
|
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> <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'); ?> /> <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'); ?>/> <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'); ?>/> <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'); ?> /> <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'); ?>/> <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 =
|
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'])
|
3412 |
{
|
3413 |
-
|
|
|
|
|
|
|
|
|
|
|
3414 |
echo json_encode($res);
|
3415 |
exit;
|
3416 |
}
|
3417 |
else
|
3418 |
{
|
3419 |
-
$
|
3420 |
-
$
|
|
|
|
|
|
|
|
|
|
|
3421 |
|
3422 |
$arr["draw"]= 0;
|
3423 |
$arr["recordsTotal"]= $cnt;
|
@@ -3439,7 +3203,12 @@ function ahcfree_traffic_by_countries_callback()
|
|
3439 |
}
|
3440 |
else
|
3441 |
{
|
3442 |
-
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
3460 |
echo json_encode($res);
|
3461 |
exit;
|
3462 |
}
|
3463 |
else
|
3464 |
{
|
3465 |
-
$
|
3466 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
3483 |
echo json_encode($res);
|
3484 |
exit;
|
3485 |
}
|
3486 |
else
|
3487 |
{
|
3488 |
-
|
3489 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
$
|
|
|
|
|
|
|
|
|
3505 |
echo json_encode($res);
|
3506 |
exit;
|
3507 |
}
|
3508 |
else
|
3509 |
{
|
3510 |
-
$
|
3511 |
-
$
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
3528 |
echo json_encode($times);
|
3529 |
exit;
|
3530 |
}
|
3531 |
else
|
3532 |
{
|
3533 |
|
3534 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
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'); ?>/> <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'); ?>/> <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'); ?> /> <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'); ?>/> <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 |
-
|
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('
|
59 |
-
|
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 + ';"> </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 + ';"> </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 |
-
|
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
|
3 |
-
* Copyright 2011-
|
4 |
-
*
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|