aboutsummaryrefslogtreecommitdiff
path: root/bip39-standalone.html
diff options
context:
space:
mode:
authorIan Coleman <ian@iancoleman.io>2017-11-29 10:32:58 +1100
committerIan Coleman <ian@iancoleman.io>2017-11-29 10:32:58 +1100
commit26dd39fd0e5f77475a8feb64cc65f759985c2752 (patch)
tree78965dba7844b76ff661da72ab2f3e9205f0dcd0 /bip39-standalone.html
parent9225b805d6674a45804d96b66ca4b77ba9d52c73 (diff)
downloadBIP39-26dd39fd0e5f77475a8feb64cc65f759985c2752.tar.gz
BIP39-26dd39fd0e5f77475a8feb64cc65f759985c2752.tar.zst
BIP39-26dd39fd0e5f77475a8feb64cc65f759985c2752.zip
Release v0.3.1
Diffstat (limited to 'bip39-standalone.html')
-rw-r--r--bip39-standalone.html19687
1 files changed, 19540 insertions, 147 deletions
diff --git a/bip39-standalone.html b/bip39-standalone.html
index e019036..27b60ef 100644
--- a/bip39-standalone.html
+++ b/bip39-standalone.html
@@ -4,121 +4,6872 @@
4 <meta charset="utf-8" /> 4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title> 5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*! 6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com) 7 * Bootstrap v3.3.7 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc. 8 * Copyright 2011-2016 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-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{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}</style> 10 */
11/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
12html {
13 font-family: sans-serif;
14 -webkit-text-size-adjust: 100%;
15 -ms-text-size-adjust: 100%;
16}
17body {
18 margin: 0;
19}
20article,
21aside,
22details,
23figcaption,
24figure,
25footer,
26header,
27hgroup,
28main,
29menu,
30nav,
31section,
32summary {
33 display: block;
34}
35audio,
36canvas,
37progress,
38video {
39 display: inline-block;
40 vertical-align: baseline;
41}
42audio:not([controls]) {
43 display: none;
44 height: 0;
45}
46[hidden],
47template {
48 display: none;
49}
50a {
51 background-color: transparent;
52}
53a:active,
54a:hover {
55 outline: 0;
56}
57abbr[title] {
58 border-bottom: 1px dotted;
59}
60b,
61strong {
62 font-weight: bold;
63}
64dfn {
65 font-style: italic;
66}
67h1 {
68 margin: .67em 0;
69 font-size: 2em;
70}
71mark {
72 color: #000;
73 background: #ff0;
74}
75small {
76 font-size: 80%;
77}
78sub,
79sup {
80 position: relative;
81 font-size: 75%;
82 line-height: 0;
83 vertical-align: baseline;
84}
85sup {
86 top: -.5em;
87}
88sub {
89 bottom: -.25em;
90}
91img {
92 border: 0;
93}
94svg:not(:root) {
95 overflow: hidden;
96}
97figure {
98 margin: 1em 40px;
99}
100hr {
101 height: 0;
102 -webkit-box-sizing: content-box;
103 -moz-box-sizing: content-box;
104 box-sizing: content-box;
105}
106pre {
107 overflow: auto;
108}
109code,
110kbd,
111pre,
112samp {
113 font-family: monospace, monospace;
114 font-size: 1em;
115}
116button,
117input,
118optgroup,
119select,
120textarea {
121 margin: 0;
122 font: inherit;
123 color: inherit;
124}
125button {
126 overflow: visible;
127}
128button,
129select {
130 text-transform: none;
131}
132button,
133html input[type="button"],
134input[type="reset"],
135input[type="submit"] {
136 -webkit-appearance: button;
137 cursor: pointer;
138}
139button[disabled],
140html input[disabled] {
141 cursor: default;
142}
143button::-moz-focus-inner,
144input::-moz-focus-inner {
145 padding: 0;
146 border: 0;
147}
148input {
149 line-height: normal;
150}
151input[type="checkbox"],
152input[type="radio"] {
153 -webkit-box-sizing: border-box;
154 -moz-box-sizing: border-box;
155 box-sizing: border-box;
156 padding: 0;
157}
158input[type="number"]::-webkit-inner-spin-button,
159input[type="number"]::-webkit-outer-spin-button {
160 height: auto;
161}
162input[type="search"] {
163 -webkit-box-sizing: content-box;
164 -moz-box-sizing: content-box;
165 box-sizing: content-box;
166 -webkit-appearance: textfield;
167}
168input[type="search"]::-webkit-search-cancel-button,
169input[type="search"]::-webkit-search-decoration {
170 -webkit-appearance: none;
171}
172fieldset {
173 padding: .35em .625em .75em;
174 margin: 0 2px;
175 border: 1px solid #c0c0c0;
176}
177legend {
178 padding: 0;
179 border: 0;
180}
181textarea {
182 overflow: auto;
183}
184optgroup {
185 font-weight: bold;
186}
187table {
188 border-spacing: 0;
189 border-collapse: collapse;
190}
191td,
192th {
193 padding: 0;
194}
195/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
196@media print {
197 *,
198 *:before,
199 *:after {
200 color: #000 !important;
201 text-shadow: none !important;
202 background: transparent !important;
203 -webkit-box-shadow: none !important;
204 box-shadow: none !important;
205 }
206 a,
207 a:visited {
208 text-decoration: underline;
209 }
210 a[href]:after {
211 content: " (" attr(href) ")";
212 }
213 abbr[title]:after {
214 content: " (" attr(title) ")";
215 }
216 a[href^="#"]:after,
217 a[href^="javascript:"]:after {
218 content: "";
219 }
220 pre,
221 blockquote {
222 border: 1px solid #999;
223
224 page-break-inside: avoid;
225 }
226 thead {
227 display: table-header-group;
228 }
229 tr,
230 img {
231 page-break-inside: avoid;
232 }
233 img {
234 max-width: 100% !important;
235 }
236 p,
237 h2,
238 h3 {
239 orphans: 3;
240 widows: 3;
241 }
242 h2,
243 h3 {
244 page-break-after: avoid;
245 }
246 .navbar {
247 display: none;
248 }
249 .btn > .caret,
250 .dropup > .btn > .caret {
251 border-top-color: #000 !important;
252 }
253 .label {
254 border: 1px solid #000;
255 }
256 .table {
257 border-collapse: collapse !important;
258 }
259 .table td,
260 .table th {
261 background-color: #fff !important;
262 }
263 .table-bordered th,
264 .table-bordered td {
265 border: 1px solid #ddd !important;
266 }
267}
268@font-face {
269 font-family: 'Glyphicons Halflings';
270
271 src: url('../fonts/glyphicons-halflings-regular.eot');
272 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
273}
274.glyphicon {
275 position: relative;
276 top: 1px;
277 display: inline-block;
278 font-family: 'Glyphicons Halflings';
279 font-style: normal;
280 font-weight: normal;
281 line-height: 1;
282
283 -webkit-font-smoothing: antialiased;
284 -moz-osx-font-smoothing: grayscale;
285}
286.glyphicon-asterisk:before {
287 content: "\002a";
288}
289.glyphicon-plus:before {
290 content: "\002b";
291}
292.glyphicon-euro:before,
293.glyphicon-eur:before {
294 content: "\20ac";
295}
296.glyphicon-minus:before {
297 content: "\2212";
298}
299.glyphicon-cloud:before {
300 content: "\2601";
301}
302.glyphicon-envelope:before {
303 content: "\2709";
304}
305.glyphicon-pencil:before {
306 content: "\270f";
307}
308.glyphicon-glass:before {
309 content: "\e001";
310}
311.glyphicon-music:before {
312 content: "\e002";
313}
314.glyphicon-search:before {
315 content: "\e003";
316}
317.glyphicon-heart:before {
318 content: "\e005";
319}
320.glyphicon-star:before {
321 content: "\e006";
322}
323.glyphicon-star-empty:before {
324 content: "\e007";
325}
326.glyphicon-user:before {
327 content: "\e008";
328}
329.glyphicon-film:before {
330 content: "\e009";
331}
332.glyphicon-th-large:before {
333 content: "\e010";
334}
335.glyphicon-th:before {
336 content: "\e011";
337}
338.glyphicon-th-list:before {
339 content: "\e012";
340}
341.glyphicon-ok:before {
342 content: "\e013";
343}
344.glyphicon-remove:before {
345 content: "\e014";
346}
347.glyphicon-zoom-in:before {
348 content: "\e015";
349}
350.glyphicon-zoom-out:before {
351 content: "\e016";
352}
353.glyphicon-off:before {
354 content: "\e017";
355}
356.glyphicon-signal:before {
357 content: "\e018";
358}
359.glyphicon-cog:before {
360 content: "\e019";
361}
362.glyphicon-trash:before {
363 content: "\e020";
364}
365.glyphicon-home:before {
366 content: "\e021";
367}
368.glyphicon-file:before {
369 content: "\e022";
370}
371.glyphicon-time:before {
372 content: "\e023";
373}
374.glyphicon-road:before {
375 content: "\e024";
376}
377.glyphicon-download-alt:before {
378 content: "\e025";
379}
380.glyphicon-download:before {
381 content: "\e026";
382}
383.glyphicon-upload:before {
384 content: "\e027";
385}
386.glyphicon-inbox:before {
387 content: "\e028";
388}
389.glyphicon-play-circle:before {
390 content: "\e029";
391}
392.glyphicon-repeat:before {
393 content: "\e030";
394}
395.glyphicon-refresh:before {
396 content: "\e031";
397}
398.glyphicon-list-alt:before {
399 content: "\e032";
400}
401.glyphicon-lock:before {
402 content: "\e033";
403}
404.glyphicon-flag:before {
405 content: "\e034";
406}
407.glyphicon-headphones:before {
408 content: "\e035";
409}
410.glyphicon-volume-off:before {
411 content: "\e036";
412}
413.glyphicon-volume-down:before {
414 content: "\e037";
415}
416.glyphicon-volume-up:before {
417 content: "\e038";
418}
419.glyphicon-qrcode:before {
420 content: "\e039";
421}
422.glyphicon-barcode:before {
423 content: "\e040";
424}
425.glyphicon-tag:before {
426 content: "\e041";
427}
428.glyphicon-tags:before {
429 content: "\e042";
430}
431.glyphicon-book:before {
432 content: "\e043";
433}
434.glyphicon-bookmark:before {
435 content: "\e044";
436}
437.glyphicon-print:before {
438 content: "\e045";
439}
440.glyphicon-camera:before {
441 content: "\e046";
442}
443.glyphicon-font:before {
444 content: "\e047";
445}
446.glyphicon-bold:before {
447 content: "\e048";
448}
449.glyphicon-italic:before {
450 content: "\e049";
451}
452.glyphicon-text-height:before {
453 content: "\e050";
454}
455.glyphicon-text-width:before {
456 content: "\e051";
457}
458.glyphicon-align-left:before {
459 content: "\e052";
460}
461.glyphicon-align-center:before {
462 content: "\e053";
463}
464.glyphicon-align-right:before {
465 content: "\e054";
466}
467.glyphicon-align-justify:before {
468 content: "\e055";
469}
470.glyphicon-list:before {
471 content: "\e056";
472}
473.glyphicon-indent-left:before {
474 content: "\e057";
475}
476.glyphicon-indent-right:before {
477 content: "\e058";
478}
479.glyphicon-facetime-video:before {
480 content: "\e059";
481}
482.glyphicon-picture:before {
483 content: "\e060";
484}
485.glyphicon-map-marker:before {
486 content: "\e062";
487}
488.glyphicon-adjust:before {
489 content: "\e063";
490}
491.glyphicon-tint:before {
492 content: "\e064";
493}
494.glyphicon-edit:before {
495 content: "\e065";
496}
497.glyphicon-share:before {
498 content: "\e066";
499}
500.glyphicon-check:before {
501 content: "\e067";
502}
503.glyphicon-move:before {
504 content: "\e068";
505}
506.glyphicon-step-backward:before {
507 content: "\e069";
508}
509.glyphicon-fast-backward:before {
510 content: "\e070";
511}
512.glyphicon-backward:before {
513 content: "\e071";
514}
515.glyphicon-play:before {
516 content: "\e072";
517}
518.glyphicon-pause:before {
519 content: "\e073";
520}
521.glyphicon-stop:before {
522 content: "\e074";
523}
524.glyphicon-forward:before {
525 content: "\e075";
526}
527.glyphicon-fast-forward:before {
528 content: "\e076";
529}
530.glyphicon-step-forward:before {
531 content: "\e077";
532}
533.glyphicon-eject:before {
534 content: "\e078";
535}
536.glyphicon-chevron-left:before {
537 content: "\e079";
538}
539.glyphicon-chevron-right:before {
540 content: "\e080";
541}
542.glyphicon-plus-sign:before {
543 content: "\e081";
544}
545.glyphicon-minus-sign:before {
546 content: "\e082";
547}
548.glyphicon-remove-sign:before {
549 content: "\e083";
550}
551.glyphicon-ok-sign:before {
552 content: "\e084";
553}
554.glyphicon-question-sign:before {
555 content: "\e085";
556}
557.glyphicon-info-sign:before {
558 content: "\e086";
559}
560.glyphicon-screenshot:before {
561 content: "\e087";
562}
563.glyphicon-remove-circle:before {
564 content: "\e088";
565}
566.glyphicon-ok-circle:before {
567 content: "\e089";
568}
569.glyphicon-ban-circle:before {
570 content: "\e090";
571}
572.glyphicon-arrow-left:before {
573 content: "\e091";
574}
575.glyphicon-arrow-right:before {
576 content: "\e092";
577}
578.glyphicon-arrow-up:before {
579 content: "\e093";
580}
581.glyphicon-arrow-down:before {
582 content: "\e094";
583}
584.glyphicon-share-alt:before {
585 content: "\e095";
586}
587.glyphicon-resize-full:before {
588 content: "\e096";
589}
590.glyphicon-resize-small:before {
591 content: "\e097";
592}
593.glyphicon-exclamation-sign:before {
594 content: "\e101";
595}
596.glyphicon-gift:before {
597 content: "\e102";
598}
599.glyphicon-leaf:before {
600 content: "\e103";
601}
602.glyphicon-fire:before {
603 content: "\e104";
604}
605.glyphicon-eye-open:before {
606 content: "\e105";
607}
608.glyphicon-eye-close:before {
609 content: "\e106";
610}
611.glyphicon-warning-sign:before {
612 content: "\e107";
613}
614.glyphicon-plane:before {
615 content: "\e108";
616}
617.glyphicon-calendar:before {
618 content: "\e109";
619}
620.glyphicon-random:before {
621 content: "\e110";
622}
623.glyphicon-comment:before {
624 content: "\e111";
625}
626.glyphicon-magnet:before {
627 content: "\e112";
628}
629.glyphicon-chevron-up:before {
630 content: "\e113";
631}
632.glyphicon-chevron-down:before {
633 content: "\e114";
634}
635.glyphicon-retweet:before {
636 content: "\e115";
637}
638.glyphicon-shopping-cart:before {
639 content: "\e116";
640}
641.glyphicon-folder-close:before {
642 content: "\e117";
643}
644.glyphicon-folder-open:before {
645 content: "\e118";
646}
647.glyphicon-resize-vertical:before {
648 content: "\e119";
649}
650.glyphicon-resize-horizontal:before {
651 content: "\e120";
652}
653.glyphicon-hdd:before {
654 content: "\e121";
655}
656.glyphicon-bullhorn:before {
657 content: "\e122";
658}
659.glyphicon-bell:before {
660 content: "\e123";
661}
662.glyphicon-certificate:before {
663 content: "\e124";
664}
665.glyphicon-thumbs-up:before {
666 content: "\e125";
667}
668.glyphicon-thumbs-down:before {
669 content: "\e126";
670}
671.glyphicon-hand-right:before {
672 content: "\e127";
673}
674.glyphicon-hand-left:before {
675 content: "\e128";
676}
677.glyphicon-hand-up:before {
678 content: "\e129";
679}
680.glyphicon-hand-down:before {
681 content: "\e130";
682}
683.glyphicon-circle-arrow-right:before {
684 content: "\e131";
685}
686.glyphicon-circle-arrow-left:before {
687 content: "\e132";
688}
689.glyphicon-circle-arrow-up:before {
690 content: "\e133";
691}
692.glyphicon-circle-arrow-down:before {
693 content: "\e134";
694}
695.glyphicon-globe:before {
696 content: "\e135";
697}
698.glyphicon-wrench:before {
699 content: "\e136";
700}
701.glyphicon-tasks:before {
702 content: "\e137";
703}
704.glyphicon-filter:before {
705 content: "\e138";
706}
707.glyphicon-briefcase:before {
708 content: "\e139";
709}
710.glyphicon-fullscreen:before {
711 content: "\e140";
712}
713.glyphicon-dashboard:before {
714 content: "\e141";
715}
716.glyphicon-paperclip:before {
717 content: "\e142";
718}
719.glyphicon-heart-empty:before {
720 content: "\e143";
721}
722.glyphicon-link:before {
723 content: "\e144";
724}
725.glyphicon-phone:before {
726 content: "\e145";
727}
728.glyphicon-pushpin:before {
729 content: "\e146";
730}
731.glyphicon-usd:before {
732 content: "\e148";
733}
734.glyphicon-gbp:before {
735 content: "\e149";
736}
737.glyphicon-sort:before {
738 content: "\e150";
739}
740.glyphicon-sort-by-alphabet:before {
741 content: "\e151";
742}
743.glyphicon-sort-by-alphabet-alt:before {
744 content: "\e152";
745}
746.glyphicon-sort-by-order:before {
747 content: "\e153";
748}
749.glyphicon-sort-by-order-alt:before {
750 content: "\e154";
751}
752.glyphicon-sort-by-attributes:before {
753 content: "\e155";
754}
755.glyphicon-sort-by-attributes-alt:before {
756 content: "\e156";
757}
758.glyphicon-unchecked:before {
759 content: "\e157";
760}
761.glyphicon-expand:before {
762 content: "\e158";
763}
764.glyphicon-collapse-down:before {
765 content: "\e159";
766}
767.glyphicon-collapse-up:before {
768 content: "\e160";
769}
770.glyphicon-log-in:before {
771 content: "\e161";
772}
773.glyphicon-flash:before {
774 content: "\e162";
775}
776.glyphicon-log-out:before {
777 content: "\e163";
778}
779.glyphicon-new-window:before {
780 content: "\e164";
781}
782.glyphicon-record:before {
783 content: "\e165";
784}
785.glyphicon-save:before {
786 content: "\e166";
787}
788.glyphicon-open:before {
789 content: "\e167";
790}
791.glyphicon-saved:before {
792 content: "\e168";
793}
794.glyphicon-import:before {
795 content: "\e169";
796}
797.glyphicon-export:before {
798 content: "\e170";
799}
800.glyphicon-send:before {
801 content: "\e171";
802}
803.glyphicon-floppy-disk:before {
804 content: "\e172";
805}
806.glyphicon-floppy-saved:before {
807 content: "\e173";
808}
809.glyphicon-floppy-remove:before {
810 content: "\e174";
811}
812.glyphicon-floppy-save:before {
813 content: "\e175";
814}
815.glyphicon-floppy-open:before {
816 content: "\e176";
817}
818.glyphicon-credit-card:before {
819 content: "\e177";
820}
821.glyphicon-transfer:before {
822 content: "\e178";
823}
824.glyphicon-cutlery:before {
825 content: "\e179";
826}
827.glyphicon-header:before {
828 content: "\e180";
829}
830.glyphicon-compressed:before {
831 content: "\e181";
832}
833.glyphicon-earphone:before {
834 content: "\e182";
835}
836.glyphicon-phone-alt:before {
837 content: "\e183";
838}
839.glyphicon-tower:before {
840 content: "\e184";
841}
842.glyphicon-stats:before {
843 content: "\e185";
844}
845.glyphicon-sd-video:before {
846 content: "\e186";
847}
848.glyphicon-hd-video:before {
849 content: "\e187";
850}
851.glyphicon-subtitles:before {
852 content: "\e188";
853}
854.glyphicon-sound-stereo:before {
855 content: "\e189";
856}
857.glyphicon-sound-dolby:before {
858 content: "\e190";
859}
860.glyphicon-sound-5-1:before {
861 content: "\e191";
862}
863.glyphicon-sound-6-1:before {
864 content: "\e192";
865}
866.glyphicon-sound-7-1:before {
867 content: "\e193";
868}
869.glyphicon-copyright-mark:before {
870 content: "\e194";
871}
872.glyphicon-registration-mark:before {
873 content: "\e195";
874}
875.glyphicon-cloud-download:before {
876 content: "\e197";
877}
878.glyphicon-cloud-upload:before {
879 content: "\e198";
880}
881.glyphicon-tree-conifer:before {
882 content: "\e199";
883}
884.glyphicon-tree-deciduous:before {
885 content: "\e200";
886}
887.glyphicon-cd:before {
888 content: "\e201";
889}
890.glyphicon-save-file:before {
891 content: "\e202";
892}
893.glyphicon-open-file:before {
894 content: "\e203";
895}
896.glyphicon-level-up:before {
897 content: "\e204";
898}
899.glyphicon-copy:before {
900 content: "\e205";
901}
902.glyphicon-paste:before {
903 content: "\e206";
904}
905.glyphicon-alert:before {
906 content: "\e209";
907}
908.glyphicon-equalizer:before {
909 content: "\e210";
910}
911.glyphicon-king:before {
912 content: "\e211";
913}
914.glyphicon-queen:before {
915 content: "\e212";
916}
917.glyphicon-pawn:before {
918 content: "\e213";
919}
920.glyphicon-bishop:before {
921 content: "\e214";
922}
923.glyphicon-knight:before {
924 content: "\e215";
925}
926.glyphicon-baby-formula:before {
927 content: "\e216";
928}
929.glyphicon-tent:before {
930 content: "\26fa";
931}
932.glyphicon-blackboard:before {
933 content: "\e218";
934}
935.glyphicon-bed:before {
936 content: "\e219";
937}
938.glyphicon-apple:before {
939 content: "\f8ff";
940}
941.glyphicon-erase:before {
942 content: "\e221";
943}
944.glyphicon-hourglass:before {
945 content: "\231b";
946}
947.glyphicon-lamp:before {
948 content: "\e223";
949}
950.glyphicon-duplicate:before {
951 content: "\e224";
952}
953.glyphicon-piggy-bank:before {
954 content: "\e225";
955}
956.glyphicon-scissors:before {
957 content: "\e226";
958}
959.glyphicon-bitcoin:before {
960 content: "\e227";
961}
962.glyphicon-btc:before {
963 content: "\e227";
964}
965.glyphicon-xbt:before {
966 content: "\e227";
967}
968.glyphicon-yen:before {
969 content: "\00a5";
970}
971.glyphicon-jpy:before {
972 content: "\00a5";
973}
974.glyphicon-ruble:before {
975 content: "\20bd";
976}
977.glyphicon-rub:before {
978 content: "\20bd";
979}
980.glyphicon-scale:before {
981 content: "\e230";
982}
983.glyphicon-ice-lolly:before {
984 content: "\e231";
985}
986.glyphicon-ice-lolly-tasted:before {
987 content: "\e232";
988}
989.glyphicon-education:before {
990 content: "\e233";
991}
992.glyphicon-option-horizontal:before {
993 content: "\e234";
994}
995.glyphicon-option-vertical:before {
996 content: "\e235";
997}
998.glyphicon-menu-hamburger:before {
999 content: "\e236";
1000}
1001.glyphicon-modal-window:before {
1002 content: "\e237";
1003}
1004.glyphicon-oil:before {
1005 content: "\e238";
1006}
1007.glyphicon-grain:before {
1008 content: "\e239";
1009}
1010.glyphicon-sunglasses:before {
1011 content: "\e240";
1012}
1013.glyphicon-text-size:before {
1014 content: "\e241";
1015}
1016.glyphicon-text-color:before {
1017 content: "\e242";
1018}
1019.glyphicon-text-background:before {
1020 content: "\e243";
1021}
1022.glyphicon-object-align-top:before {
1023 content: "\e244";
1024}
1025.glyphicon-object-align-bottom:before {
1026 content: "\e245";
1027}
1028.glyphicon-object-align-horizontal:before {
1029 content: "\e246";
1030}
1031.glyphicon-object-align-left:before {
1032 content: "\e247";
1033}
1034.glyphicon-object-align-vertical:before {
1035 content: "\e248";
1036}
1037.glyphicon-object-align-right:before {
1038 content: "\e249";
1039}
1040.glyphicon-triangle-right:before {
1041 content: "\e250";
1042}
1043.glyphicon-triangle-left:before {
1044 content: "\e251";
1045}
1046.glyphicon-triangle-bottom:before {
1047 content: "\e252";
1048}
1049.glyphicon-triangle-top:before {
1050 content: "\e253";
1051}
1052.glyphicon-console:before {
1053 content: "\e254";
1054}
1055.glyphicon-superscript:before {
1056 content: "\e255";
1057}
1058.glyphicon-subscript:before {
1059 content: "\e256";
1060}
1061.glyphicon-menu-left:before {
1062 content: "\e257";
1063}
1064.glyphicon-menu-right:before {
1065 content: "\e258";
1066}
1067.glyphicon-menu-down:before {
1068 content: "\e259";
1069}
1070.glyphicon-menu-up:before {
1071 content: "\e260";
1072}
1073* {
1074 -webkit-box-sizing: border-box;
1075 -moz-box-sizing: border-box;
1076 box-sizing: border-box;
1077}
1078*:before,
1079*:after {
1080 -webkit-box-sizing: border-box;
1081 -moz-box-sizing: border-box;
1082 box-sizing: border-box;
1083}
1084html {
1085 font-size: 10px;
1086
1087 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1088}
1089body {
1090 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1091 font-size: 14px;
1092 line-height: 1.42857143;
1093 color: #333;
1094 background-color: #fff;
1095}
1096input,
1097button,
1098select,
1099textarea {
1100 font-family: inherit;
1101 font-size: inherit;
1102 line-height: inherit;
1103}
1104a {
1105 color: #337ab7;
1106 text-decoration: none;
1107}
1108a:hover,
1109a:focus {
1110 color: #23527c;
1111 text-decoration: underline;
1112}
1113a:focus {
1114 outline: 5px auto -webkit-focus-ring-color;
1115 outline-offset: -2px;
1116}
1117figure {
1118 margin: 0;
1119}
1120img {
1121 vertical-align: middle;
1122}
1123.img-responsive,
1124.thumbnail > img,
1125.thumbnail a > img,
1126.carousel-inner > .item > img,
1127.carousel-inner > .item > a > img {
1128 display: block;
1129 max-width: 100%;
1130 height: auto;
1131}
1132.img-rounded {
1133 border-radius: 6px;
1134}
1135.img-thumbnail {
1136 display: inline-block;
1137 max-width: 100%;
1138 height: auto;
1139 padding: 4px;
1140 line-height: 1.42857143;
1141 background-color: #fff;
1142 border: 1px solid #ddd;
1143 border-radius: 4px;
1144 -webkit-transition: all .2s ease-in-out;
1145 -o-transition: all .2s ease-in-out;
1146 transition: all .2s ease-in-out;
1147}
1148.img-circle {
1149 border-radius: 50%;
1150}
1151hr {
1152 margin-top: 20px;
1153 margin-bottom: 20px;
1154 border: 0;
1155 border-top: 1px solid #eee;
1156}
1157.sr-only {
1158 position: absolute;
1159 width: 1px;
1160 height: 1px;
1161 padding: 0;
1162 margin: -1px;
1163 overflow: hidden;
1164 clip: rect(0, 0, 0, 0);
1165 border: 0;
1166}
1167.sr-only-focusable:active,
1168.sr-only-focusable:focus {
1169 position: static;
1170 width: auto;
1171 height: auto;
1172 margin: 0;
1173 overflow: visible;
1174 clip: auto;
1175}
1176[role="button"] {
1177 cursor: pointer;
1178}
1179h1,
1180h2,
1181h3,
1182h4,
1183h5,
1184h6,
1185.h1,
1186.h2,
1187.h3,
1188.h4,
1189.h5,
1190.h6 {
1191 font-family: inherit;
1192 font-weight: 500;
1193 line-height: 1.1;
1194 color: inherit;
1195}
1196h1 small,
1197h2 small,
1198h3 small,
1199h4 small,
1200h5 small,
1201h6 small,
1202.h1 small,
1203.h2 small,
1204.h3 small,
1205.h4 small,
1206.h5 small,
1207.h6 small,
1208h1 .small,
1209h2 .small,
1210h3 .small,
1211h4 .small,
1212h5 .small,
1213h6 .small,
1214.h1 .small,
1215.h2 .small,
1216.h3 .small,
1217.h4 .small,
1218.h5 .small,
1219.h6 .small {
1220 font-weight: normal;
1221 line-height: 1;
1222 color: #777;
1223}
1224h1,
1225.h1,
1226h2,
1227.h2,
1228h3,
1229.h3 {
1230 margin-top: 20px;
1231 margin-bottom: 10px;
1232}
1233h1 small,
1234.h1 small,
1235h2 small,
1236.h2 small,
1237h3 small,
1238.h3 small,
1239h1 .small,
1240.h1 .small,
1241h2 .small,
1242.h2 .small,
1243h3 .small,
1244.h3 .small {
1245 font-size: 65%;
1246}
1247h4,
1248.h4,
1249h5,
1250.h5,
1251h6,
1252.h6 {
1253 margin-top: 10px;
1254 margin-bottom: 10px;
1255}
1256h4 small,
1257.h4 small,
1258h5 small,
1259.h5 small,
1260h6 small,
1261.h6 small,
1262h4 .small,
1263.h4 .small,
1264h5 .small,
1265.h5 .small,
1266h6 .small,
1267.h6 .small {
1268 font-size: 75%;
1269}
1270h1,
1271.h1 {
1272 font-size: 36px;
1273}
1274h2,
1275.h2 {
1276 font-size: 30px;
1277}
1278h3,
1279.h3 {
1280 font-size: 24px;
1281}
1282h4,
1283.h4 {
1284 font-size: 18px;
1285}
1286h5,
1287.h5 {
1288 font-size: 14px;
1289}
1290h6,
1291.h6 {
1292 font-size: 12px;
1293}
1294p {
1295 margin: 0 0 10px;
1296}
1297.lead {
1298 margin-bottom: 20px;
1299 font-size: 16px;
1300 font-weight: 300;
1301 line-height: 1.4;
1302}
1303@media (min-width: 768px) {
1304 .lead {
1305 font-size: 21px;
1306 }
1307}
1308small,
1309.small {
1310 font-size: 85%;
1311}
1312mark,
1313.mark {
1314 padding: .2em;
1315 background-color: #fcf8e3;
1316}
1317.text-left {
1318 text-align: left;
1319}
1320.text-right {
1321 text-align: right;
1322}
1323.text-center {
1324 text-align: center;
1325}
1326.text-justify {
1327 text-align: justify;
1328}
1329.text-nowrap {
1330 white-space: nowrap;
1331}
1332.text-lowercase {
1333 text-transform: lowercase;
1334}
1335.text-uppercase {
1336 text-transform: uppercase;
1337}
1338.text-capitalize {
1339 text-transform: capitalize;
1340}
1341.text-muted {
1342 color: #777;
1343}
1344.text-primary {
1345 color: #337ab7;
1346}
1347a.text-primary:hover,
1348a.text-primary:focus {
1349 color: #286090;
1350}
1351.text-success {
1352 color: #3c763d;
1353}
1354a.text-success:hover,
1355a.text-success:focus {
1356 color: #2b542c;
1357}
1358.text-info {
1359 color: #31708f;
1360}
1361a.text-info:hover,
1362a.text-info:focus {
1363 color: #245269;
1364}
1365.text-warning {
1366 color: #8a6d3b;
1367}
1368a.text-warning:hover,
1369a.text-warning:focus {
1370 color: #66512c;
1371}
1372.text-danger {
1373 color: #a94442;
1374}
1375a.text-danger:hover,
1376a.text-danger:focus {
1377 color: #843534;
1378}
1379.bg-primary {
1380 color: #fff;
1381 background-color: #337ab7;
1382}
1383a.bg-primary:hover,
1384a.bg-primary:focus {
1385 background-color: #286090;
1386}
1387.bg-success {
1388 background-color: #dff0d8;
1389}
1390a.bg-success:hover,
1391a.bg-success:focus {
1392 background-color: #c1e2b3;
1393}
1394.bg-info {
1395 background-color: #d9edf7;
1396}
1397a.bg-info:hover,
1398a.bg-info:focus {
1399 background-color: #afd9ee;
1400}
1401.bg-warning {
1402 background-color: #fcf8e3;
1403}
1404a.bg-warning:hover,
1405a.bg-warning:focus {
1406 background-color: #f7ecb5;
1407}
1408.bg-danger {
1409 background-color: #f2dede;
1410}
1411a.bg-danger:hover,
1412a.bg-danger:focus {
1413 background-color: #e4b9b9;
1414}
1415.page-header {
1416 padding-bottom: 9px;
1417 margin: 40px 0 20px;
1418 border-bottom: 1px solid #eee;
1419}
1420ul,
1421ol {
1422 margin-top: 0;
1423 margin-bottom: 10px;
1424}
1425ul ul,
1426ol ul,
1427ul ol,
1428ol ol {
1429 margin-bottom: 0;
1430}
1431.list-unstyled {
1432 padding-left: 0;
1433 list-style: none;
1434}
1435.list-inline {
1436 padding-left: 0;
1437 margin-left: -5px;
1438 list-style: none;
1439}
1440.list-inline > li {
1441 display: inline-block;
1442 padding-right: 5px;
1443 padding-left: 5px;
1444}
1445dl {
1446 margin-top: 0;
1447 margin-bottom: 20px;
1448}
1449dt,
1450dd {
1451 line-height: 1.42857143;
1452}
1453dt {
1454 font-weight: bold;
1455}
1456dd {
1457 margin-left: 0;
1458}
1459@media (min-width: 768px) {
1460 .dl-horizontal dt {
1461 float: left;
1462 width: 160px;
1463 overflow: hidden;
1464 clear: left;
1465 text-align: right;
1466 text-overflow: ellipsis;
1467 white-space: nowrap;
1468 }
1469 .dl-horizontal dd {
1470 margin-left: 180px;
1471 }
1472}
1473abbr[title],
1474abbr[data-original-title] {
1475 cursor: help;
1476 border-bottom: 1px dotted #777;
1477}
1478.initialism {
1479 font-size: 90%;
1480 text-transform: uppercase;
1481}
1482blockquote {
1483 padding: 10px 20px;
1484 margin: 0 0 20px;
1485 font-size: 17.5px;
1486 border-left: 5px solid #eee;
1487}
1488blockquote p:last-child,
1489blockquote ul:last-child,
1490blockquote ol:last-child {
1491 margin-bottom: 0;
1492}
1493blockquote footer,
1494blockquote small,
1495blockquote .small {
1496 display: block;
1497 font-size: 80%;
1498 line-height: 1.42857143;
1499 color: #777;
1500}
1501blockquote footer:before,
1502blockquote small:before,
1503blockquote .small:before {
1504 content: '\2014 \00A0';
1505}
1506.blockquote-reverse,
1507blockquote.pull-right {
1508 padding-right: 15px;
1509 padding-left: 0;
1510 text-align: right;
1511 border-right: 5px solid #eee;
1512 border-left: 0;
1513}
1514.blockquote-reverse footer:before,
1515blockquote.pull-right footer:before,
1516.blockquote-reverse small:before,
1517blockquote.pull-right small:before,
1518.blockquote-reverse .small:before,
1519blockquote.pull-right .small:before {
1520 content: '';
1521}
1522.blockquote-reverse footer:after,
1523blockquote.pull-right footer:after,
1524.blockquote-reverse small:after,
1525blockquote.pull-right small:after,
1526.blockquote-reverse .small:after,
1527blockquote.pull-right .small:after {
1528 content: '\00A0 \2014';
1529}
1530address {
1531 margin-bottom: 20px;
1532 font-style: normal;
1533 line-height: 1.42857143;
1534}
1535code,
1536kbd,
1537pre,
1538samp {
1539 font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1540}
1541code {
1542 padding: 2px 4px;
1543 font-size: 90%;
1544 color: #c7254e;
1545 background-color: #f9f2f4;
1546 border-radius: 4px;
1547}
1548kbd {
1549 padding: 2px 4px;
1550 font-size: 90%;
1551 color: #fff;
1552 background-color: #333;
1553 border-radius: 3px;
1554 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1555 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
1556}
1557kbd kbd {
1558 padding: 0;
1559 font-size: 100%;
1560 font-weight: bold;
1561 -webkit-box-shadow: none;
1562 box-shadow: none;
1563}
1564pre {
1565 display: block;
1566 padding: 9.5px;
1567 margin: 0 0 10px;
1568 font-size: 13px;
1569 line-height: 1.42857143;
1570 color: #333;
1571 word-break: break-all;
1572 word-wrap: break-word;
1573 background-color: #f5f5f5;
1574 border: 1px solid #ccc;
1575 border-radius: 4px;
1576}
1577pre code {
1578 padding: 0;
1579 font-size: inherit;
1580 color: inherit;
1581 white-space: pre-wrap;
1582 background-color: transparent;
1583 border-radius: 0;
1584}
1585.pre-scrollable {
1586 max-height: 340px;
1587 overflow-y: scroll;
1588}
1589.container {
1590 padding-right: 15px;
1591 padding-left: 15px;
1592 margin-right: auto;
1593 margin-left: auto;
1594}
1595@media (min-width: 768px) {
1596 .container {
1597 width: 750px;
1598 }
1599}
1600@media (min-width: 992px) {
1601 .container {
1602 width: 970px;
1603 }
1604}
1605@media (min-width: 1200px) {
1606 .container {
1607 width: 1170px;
1608 }
1609}
1610.container-fluid {
1611 padding-right: 15px;
1612 padding-left: 15px;
1613 margin-right: auto;
1614 margin-left: auto;
1615}
1616.row {
1617 margin-right: -15px;
1618 margin-left: -15px;
1619}
1620.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 {
1621 position: relative;
1622 min-height: 1px;
1623 padding-right: 15px;
1624 padding-left: 15px;
1625}
1626.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 {
1627 float: left;
1628}
1629.col-xs-12 {
1630 width: 100%;
1631}
1632.col-xs-11 {
1633 width: 91.66666667%;
1634}
1635.col-xs-10 {
1636 width: 83.33333333%;
1637}
1638.col-xs-9 {
1639 width: 75%;
1640}
1641.col-xs-8 {
1642 width: 66.66666667%;
1643}
1644.col-xs-7 {
1645 width: 58.33333333%;
1646}
1647.col-xs-6 {
1648 width: 50%;
1649}
1650.col-xs-5 {
1651 width: 41.66666667%;
1652}
1653.col-xs-4 {
1654 width: 33.33333333%;
1655}
1656.col-xs-3 {
1657 width: 25%;
1658}
1659.col-xs-2 {
1660 width: 16.66666667%;
1661}
1662.col-xs-1 {
1663 width: 8.33333333%;
1664}
1665.col-xs-pull-12 {
1666 right: 100%;
1667}
1668.col-xs-pull-11 {
1669 right: 91.66666667%;
1670}
1671.col-xs-pull-10 {
1672 right: 83.33333333%;
1673}
1674.col-xs-pull-9 {
1675 right: 75%;
1676}
1677.col-xs-pull-8 {
1678 right: 66.66666667%;
1679}
1680.col-xs-pull-7 {
1681 right: 58.33333333%;
1682}
1683.col-xs-pull-6 {
1684 right: 50%;
1685}
1686.col-xs-pull-5 {
1687 right: 41.66666667%;
1688}
1689.col-xs-pull-4 {
1690 right: 33.33333333%;
1691}
1692.col-xs-pull-3 {
1693 right: 25%;
1694}
1695.col-xs-pull-2 {
1696 right: 16.66666667%;
1697}
1698.col-xs-pull-1 {
1699 right: 8.33333333%;
1700}
1701.col-xs-pull-0 {
1702 right: auto;
1703}
1704.col-xs-push-12 {
1705 left: 100%;
1706}
1707.col-xs-push-11 {
1708 left: 91.66666667%;
1709}
1710.col-xs-push-10 {
1711 left: 83.33333333%;
1712}
1713.col-xs-push-9 {
1714 left: 75%;
1715}
1716.col-xs-push-8 {
1717 left: 66.66666667%;
1718}
1719.col-xs-push-7 {
1720 left: 58.33333333%;
1721}
1722.col-xs-push-6 {
1723 left: 50%;
1724}
1725.col-xs-push-5 {
1726 left: 41.66666667%;
1727}
1728.col-xs-push-4 {
1729 left: 33.33333333%;
1730}
1731.col-xs-push-3 {
1732 left: 25%;
1733}
1734.col-xs-push-2 {
1735 left: 16.66666667%;
1736}
1737.col-xs-push-1 {
1738 left: 8.33333333%;
1739}
1740.col-xs-push-0 {
1741 left: auto;
1742}
1743.col-xs-offset-12 {
1744 margin-left: 100%;
1745}
1746.col-xs-offset-11 {
1747 margin-left: 91.66666667%;
1748}
1749.col-xs-offset-10 {
1750 margin-left: 83.33333333%;
1751}
1752.col-xs-offset-9 {
1753 margin-left: 75%;
1754}
1755.col-xs-offset-8 {
1756 margin-left: 66.66666667%;
1757}
1758.col-xs-offset-7 {
1759 margin-left: 58.33333333%;
1760}
1761.col-xs-offset-6 {
1762 margin-left: 50%;
1763}
1764.col-xs-offset-5 {
1765 margin-left: 41.66666667%;
1766}
1767.col-xs-offset-4 {
1768 margin-left: 33.33333333%;
1769}
1770.col-xs-offset-3 {
1771 margin-left: 25%;
1772}
1773.col-xs-offset-2 {
1774 margin-left: 16.66666667%;
1775}
1776.col-xs-offset-1 {
1777 margin-left: 8.33333333%;
1778}
1779.col-xs-offset-0 {
1780 margin-left: 0;
1781}
1782@media (min-width: 768px) {
1783 .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 {
1784 float: left;
1785 }
1786 .col-sm-12 {
1787 width: 100%;
1788 }
1789 .col-sm-11 {
1790 width: 91.66666667%;
1791 }
1792 .col-sm-10 {
1793 width: 83.33333333%;
1794 }
1795 .col-sm-9 {
1796 width: 75%;
1797 }
1798 .col-sm-8 {
1799 width: 66.66666667%;
1800 }
1801 .col-sm-7 {
1802 width: 58.33333333%;
1803 }
1804 .col-sm-6 {
1805 width: 50%;
1806 }
1807 .col-sm-5 {
1808 width: 41.66666667%;
1809 }
1810 .col-sm-4 {
1811 width: 33.33333333%;
1812 }
1813 .col-sm-3 {
1814 width: 25%;
1815 }
1816 .col-sm-2 {
1817 width: 16.66666667%;
1818 }
1819 .col-sm-1 {
1820 width: 8.33333333%;
1821 }
1822 .col-sm-pull-12 {
1823 right: 100%;
1824 }
1825 .col-sm-pull-11 {
1826 right: 91.66666667%;
1827 }
1828 .col-sm-pull-10 {
1829 right: 83.33333333%;
1830 }
1831 .col-sm-pull-9 {
1832 right: 75%;
1833 }
1834 .col-sm-pull-8 {
1835 right: 66.66666667%;
1836 }
1837 .col-sm-pull-7 {
1838 right: 58.33333333%;
1839 }
1840 .col-sm-pull-6 {
1841 right: 50%;
1842 }
1843 .col-sm-pull-5 {
1844 right: 41.66666667%;
1845 }
1846 .col-sm-pull-4 {
1847 right: 33.33333333%;
1848 }
1849 .col-sm-pull-3 {
1850 right: 25%;
1851 }
1852 .col-sm-pull-2 {
1853 right: 16.66666667%;
1854 }
1855 .col-sm-pull-1 {
1856 right: 8.33333333%;
1857 }
1858 .col-sm-pull-0 {
1859 right: auto;
1860 }
1861 .col-sm-push-12 {
1862 left: 100%;
1863 }
1864 .col-sm-push-11 {
1865 left: 91.66666667%;
1866 }
1867 .col-sm-push-10 {
1868 left: 83.33333333%;
1869 }
1870 .col-sm-push-9 {
1871 left: 75%;
1872 }
1873 .col-sm-push-8 {
1874 left: 66.66666667%;
1875 }
1876 .col-sm-push-7 {
1877 left: 58.33333333%;
1878 }
1879 .col-sm-push-6 {
1880 left: 50%;
1881 }
1882 .col-sm-push-5 {
1883 left: 41.66666667%;
1884 }
1885 .col-sm-push-4 {
1886 left: 33.33333333%;
1887 }
1888 .col-sm-push-3 {
1889 left: 25%;
1890 }
1891 .col-sm-push-2 {
1892 left: 16.66666667%;
1893 }
1894 .col-sm-push-1 {
1895 left: 8.33333333%;
1896 }
1897 .col-sm-push-0 {
1898 left: auto;
1899 }
1900 .col-sm-offset-12 {
1901 margin-left: 100%;
1902 }
1903 .col-sm-offset-11 {
1904 margin-left: 91.66666667%;
1905 }
1906 .col-sm-offset-10 {
1907 margin-left: 83.33333333%;
1908 }
1909 .col-sm-offset-9 {
1910 margin-left: 75%;
1911 }
1912 .col-sm-offset-8 {
1913 margin-left: 66.66666667%;
1914 }
1915 .col-sm-offset-7 {
1916 margin-left: 58.33333333%;
1917 }
1918 .col-sm-offset-6 {
1919 margin-left: 50%;
1920 }
1921 .col-sm-offset-5 {
1922 margin-left: 41.66666667%;
1923 }
1924 .col-sm-offset-4 {
1925 margin-left: 33.33333333%;
1926 }
1927 .col-sm-offset-3 {
1928 margin-left: 25%;
1929 }
1930 .col-sm-offset-2 {
1931 margin-left: 16.66666667%;
1932 }
1933 .col-sm-offset-1 {
1934 margin-left: 8.33333333%;
1935 }
1936 .col-sm-offset-0 {
1937 margin-left: 0;
1938 }
1939}
1940@media (min-width: 992px) {
1941 .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 {
1942 float: left;
1943 }
1944 .col-md-12 {
1945 width: 100%;
1946 }
1947 .col-md-11 {
1948 width: 91.66666667%;
1949 }
1950 .col-md-10 {
1951 width: 83.33333333%;
1952 }
1953 .col-md-9 {
1954 width: 75%;
1955 }
1956 .col-md-8 {
1957 width: 66.66666667%;
1958 }
1959 .col-md-7 {
1960 width: 58.33333333%;
1961 }
1962 .col-md-6 {
1963 width: 50%;
1964 }
1965 .col-md-5 {
1966 width: 41.66666667%;
1967 }
1968 .col-md-4 {
1969 width: 33.33333333%;
1970 }
1971 .col-md-3 {
1972 width: 25%;
1973 }
1974 .col-md-2 {
1975 width: 16.66666667%;
1976 }
1977 .col-md-1 {
1978 width: 8.33333333%;
1979 }
1980 .col-md-pull-12 {
1981 right: 100%;
1982 }
1983 .col-md-pull-11 {
1984 right: 91.66666667%;
1985 }
1986 .col-md-pull-10 {
1987 right: 83.33333333%;
1988 }
1989 .col-md-pull-9 {
1990 right: 75%;
1991 }
1992 .col-md-pull-8 {
1993 right: 66.66666667%;
1994 }
1995 .col-md-pull-7 {
1996 right: 58.33333333%;
1997 }
1998 .col-md-pull-6 {
1999 right: 50%;
2000 }
2001 .col-md-pull-5 {
2002 right: 41.66666667%;
2003 }
2004 .col-md-pull-4 {
2005 right: 33.33333333%;
2006 }
2007 .col-md-pull-3 {
2008 right: 25%;
2009 }
2010 .col-md-pull-2 {
2011 right: 16.66666667%;
2012 }
2013 .col-md-pull-1 {
2014 right: 8.33333333%;
2015 }
2016 .col-md-pull-0 {
2017 right: auto;
2018 }
2019 .col-md-push-12 {
2020 left: 100%;
2021 }
2022 .col-md-push-11 {
2023 left: 91.66666667%;
2024 }
2025 .col-md-push-10 {
2026 left: 83.33333333%;
2027 }
2028 .col-md-push-9 {
2029 left: 75%;
2030 }
2031 .col-md-push-8 {
2032 left: 66.66666667%;
2033 }
2034 .col-md-push-7 {
2035 left: 58.33333333%;
2036 }
2037 .col-md-push-6 {
2038 left: 50%;
2039 }
2040 .col-md-push-5 {
2041 left: 41.66666667%;
2042 }
2043 .col-md-push-4 {
2044 left: 33.33333333%;
2045 }
2046 .col-md-push-3 {
2047 left: 25%;
2048 }
2049 .col-md-push-2 {
2050 left: 16.66666667%;
2051 }
2052 .col-md-push-1 {
2053 left: 8.33333333%;
2054 }
2055 .col-md-push-0 {
2056 left: auto;
2057 }
2058 .col-md-offset-12 {
2059 margin-left: 100%;
2060 }
2061 .col-md-offset-11 {
2062 margin-left: 91.66666667%;
2063 }
2064 .col-md-offset-10 {
2065 margin-left: 83.33333333%;
2066 }
2067 .col-md-offset-9 {
2068 margin-left: 75%;
2069 }
2070 .col-md-offset-8 {
2071 margin-left: 66.66666667%;
2072 }
2073 .col-md-offset-7 {
2074 margin-left: 58.33333333%;
2075 }
2076 .col-md-offset-6 {
2077 margin-left: 50%;
2078 }
2079 .col-md-offset-5 {
2080 margin-left: 41.66666667%;
2081 }
2082 .col-md-offset-4 {
2083 margin-left: 33.33333333%;
2084 }
2085 .col-md-offset-3 {
2086 margin-left: 25%;
2087 }
2088 .col-md-offset-2 {
2089 margin-left: 16.66666667%;
2090 }
2091 .col-md-offset-1 {
2092 margin-left: 8.33333333%;
2093 }
2094 .col-md-offset-0 {
2095 margin-left: 0;
2096 }
2097}
2098@media (min-width: 1200px) {
2099 .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 {
2100 float: left;
2101 }
2102 .col-lg-12 {
2103 width: 100%;
2104 }
2105 .col-lg-11 {
2106 width: 91.66666667%;
2107 }
2108 .col-lg-10 {
2109 width: 83.33333333%;
2110 }
2111 .col-lg-9 {
2112 width: 75%;
2113 }
2114 .col-lg-8 {
2115 width: 66.66666667%;
2116 }
2117 .col-lg-7 {
2118 width: 58.33333333%;
2119 }
2120 .col-lg-6 {
2121 width: 50%;
2122 }
2123 .col-lg-5 {
2124 width: 41.66666667%;
2125 }
2126 .col-lg-4 {
2127 width: 33.33333333%;
2128 }
2129 .col-lg-3 {
2130 width: 25%;
2131 }
2132 .col-lg-2 {
2133 width: 16.66666667%;
2134 }
2135 .col-lg-1 {
2136 width: 8.33333333%;
2137 }
2138 .col-lg-pull-12 {
2139 right: 100%;
2140 }
2141 .col-lg-pull-11 {
2142 right: 91.66666667%;
2143 }
2144 .col-lg-pull-10 {
2145 right: 83.33333333%;
2146 }
2147 .col-lg-pull-9 {
2148 right: 75%;
2149 }
2150 .col-lg-pull-8 {
2151 right: 66.66666667%;
2152 }
2153 .col-lg-pull-7 {
2154 right: 58.33333333%;
2155 }
2156 .col-lg-pull-6 {
2157 right: 50%;
2158 }
2159 .col-lg-pull-5 {
2160 right: 41.66666667%;
2161 }
2162 .col-lg-pull-4 {
2163 right: 33.33333333%;
2164 }
2165 .col-lg-pull-3 {
2166 right: 25%;
2167 }
2168 .col-lg-pull-2 {
2169 right: 16.66666667%;
2170 }
2171 .col-lg-pull-1 {
2172 right: 8.33333333%;
2173 }
2174 .col-lg-pull-0 {
2175 right: auto;
2176 }
2177 .col-lg-push-12 {
2178 left: 100%;
2179 }
2180 .col-lg-push-11 {
2181 left: 91.66666667%;
2182 }
2183 .col-lg-push-10 {
2184 left: 83.33333333%;
2185 }
2186 .col-lg-push-9 {
2187 left: 75%;
2188 }
2189 .col-lg-push-8 {
2190 left: 66.66666667%;
2191 }
2192 .col-lg-push-7 {
2193 left: 58.33333333%;
2194 }
2195 .col-lg-push-6 {
2196 left: 50%;
2197 }
2198 .col-lg-push-5 {
2199 left: 41.66666667%;
2200 }
2201 .col-lg-push-4 {
2202 left: 33.33333333%;
2203 }
2204 .col-lg-push-3 {
2205 left: 25%;
2206 }
2207 .col-lg-push-2 {
2208 left: 16.66666667%;
2209 }
2210 .col-lg-push-1 {
2211 left: 8.33333333%;
2212 }
2213 .col-lg-push-0 {
2214 left: auto;
2215 }
2216 .col-lg-offset-12 {
2217 margin-left: 100%;
2218 }
2219 .col-lg-offset-11 {
2220 margin-left: 91.66666667%;
2221 }
2222 .col-lg-offset-10 {
2223 margin-left: 83.33333333%;
2224 }
2225 .col-lg-offset-9 {
2226 margin-left: 75%;
2227 }
2228 .col-lg-offset-8 {
2229 margin-left: 66.66666667%;
2230 }
2231 .col-lg-offset-7 {
2232 margin-left: 58.33333333%;
2233 }
2234 .col-lg-offset-6 {
2235 margin-left: 50%;
2236 }
2237 .col-lg-offset-5 {
2238 margin-left: 41.66666667%;
2239 }
2240 .col-lg-offset-4 {
2241 margin-left: 33.33333333%;
2242 }
2243 .col-lg-offset-3 {
2244 margin-left: 25%;
2245 }
2246 .col-lg-offset-2 {
2247 margin-left: 16.66666667%;
2248 }
2249 .col-lg-offset-1 {
2250 margin-left: 8.33333333%;
2251 }
2252 .col-lg-offset-0 {
2253 margin-left: 0;
2254 }
2255}
2256table {
2257 background-color: transparent;
2258}
2259caption {
2260 padding-top: 8px;
2261 padding-bottom: 8px;
2262 color: #777;
2263 text-align: left;
2264}
2265th {
2266 text-align: left;
2267}
2268.table {
2269 width: 100%;
2270 max-width: 100%;
2271 margin-bottom: 20px;
2272}
2273.table > thead > tr > th,
2274.table > tbody > tr > th,
2275.table > tfoot > tr > th,
2276.table > thead > tr > td,
2277.table > tbody > tr > td,
2278.table > tfoot > tr > td {
2279 padding: 8px;
2280 line-height: 1.42857143;
2281 vertical-align: top;
2282 border-top: 1px solid #ddd;
2283}
2284.table > thead > tr > th {
2285 vertical-align: bottom;
2286 border-bottom: 2px solid #ddd;
2287}
2288.table > caption + thead > tr:first-child > th,
2289.table > colgroup + thead > tr:first-child > th,
2290.table > thead:first-child > tr:first-child > th,
2291.table > caption + thead > tr:first-child > td,
2292.table > colgroup + thead > tr:first-child > td,
2293.table > thead:first-child > tr:first-child > td {
2294 border-top: 0;
2295}
2296.table > tbody + tbody {
2297 border-top: 2px solid #ddd;
2298}
2299.table .table {
2300 background-color: #fff;
2301}
2302.table-condensed > thead > tr > th,
2303.table-condensed > tbody > tr > th,
2304.table-condensed > tfoot > tr > th,
2305.table-condensed > thead > tr > td,
2306.table-condensed > tbody > tr > td,
2307.table-condensed > tfoot > tr > td {
2308 padding: 5px;
2309}
2310.table-bordered {
2311 border: 1px solid #ddd;
2312}
2313.table-bordered > thead > tr > th,
2314.table-bordered > tbody > tr > th,
2315.table-bordered > tfoot > tr > th,
2316.table-bordered > thead > tr > td,
2317.table-bordered > tbody > tr > td,
2318.table-bordered > tfoot > tr > td {
2319 border: 1px solid #ddd;
2320}
2321.table-bordered > thead > tr > th,
2322.table-bordered > thead > tr > td {
2323 border-bottom-width: 2px;
2324}
2325.table-striped > tbody > tr:nth-of-type(odd) {
2326 background-color: #f9f9f9;
2327}
2328.table-hover > tbody > tr:hover {
2329 background-color: #f5f5f5;
2330}
2331table col[class*="col-"] {
2332 position: static;
2333 display: table-column;
2334 float: none;
2335}
2336table td[class*="col-"],
2337table th[class*="col-"] {
2338 position: static;
2339 display: table-cell;
2340 float: none;
2341}
2342.table > thead > tr > td.active,
2343.table > tbody > tr > td.active,
2344.table > tfoot > tr > td.active,
2345.table > thead > tr > th.active,
2346.table > tbody > tr > th.active,
2347.table > tfoot > tr > th.active,
2348.table > thead > tr.active > td,
2349.table > tbody > tr.active > td,
2350.table > tfoot > tr.active > td,
2351.table > thead > tr.active > th,
2352.table > tbody > tr.active > th,
2353.table > tfoot > tr.active > th {
2354 background-color: #f5f5f5;
2355}
2356.table-hover > tbody > tr > td.active:hover,
2357.table-hover > tbody > tr > th.active:hover,
2358.table-hover > tbody > tr.active:hover > td,
2359.table-hover > tbody > tr:hover > .active,
2360.table-hover > tbody > tr.active:hover > th {
2361 background-color: #e8e8e8;
2362}
2363.table > thead > tr > td.success,
2364.table > tbody > tr > td.success,
2365.table > tfoot > tr > td.success,
2366.table > thead > tr > th.success,
2367.table > tbody > tr > th.success,
2368.table > tfoot > tr > th.success,
2369.table > thead > tr.success > td,
2370.table > tbody > tr.success > td,
2371.table > tfoot > tr.success > td,
2372.table > thead > tr.success > th,
2373.table > tbody > tr.success > th,
2374.table > tfoot > tr.success > th {
2375 background-color: #dff0d8;
2376}
2377.table-hover > tbody > tr > td.success:hover,
2378.table-hover > tbody > tr > th.success:hover,
2379.table-hover > tbody > tr.success:hover > td,
2380.table-hover > tbody > tr:hover > .success,
2381.table-hover > tbody > tr.success:hover > th {
2382 background-color: #d0e9c6;
2383}
2384.table > thead > tr > td.info,
2385.table > tbody > tr > td.info,
2386.table > tfoot > tr > td.info,
2387.table > thead > tr > th.info,
2388.table > tbody > tr > th.info,
2389.table > tfoot > tr > th.info,
2390.table > thead > tr.info > td,
2391.table > tbody > tr.info > td,
2392.table > tfoot > tr.info > td,
2393.table > thead > tr.info > th,
2394.table > tbody > tr.info > th,
2395.table > tfoot > tr.info > th {
2396 background-color: #d9edf7;
2397}
2398.table-hover > tbody > tr > td.info:hover,
2399.table-hover > tbody > tr > th.info:hover,
2400.table-hover > tbody > tr.info:hover > td,
2401.table-hover > tbody > tr:hover > .info,
2402.table-hover > tbody > tr.info:hover > th {
2403 background-color: #c4e3f3;
2404}
2405.table > thead > tr > td.warning,
2406.table > tbody > tr > td.warning,
2407.table > tfoot > tr > td.warning,
2408.table > thead > tr > th.warning,
2409.table > tbody > tr > th.warning,
2410.table > tfoot > tr > th.warning,
2411.table > thead > tr.warning > td,
2412.table > tbody > tr.warning > td,
2413.table > tfoot > tr.warning > td,
2414.table > thead > tr.warning > th,
2415.table > tbody > tr.warning > th,
2416.table > tfoot > tr.warning > th {
2417 background-color: #fcf8e3;
2418}
2419.table-hover > tbody > tr > td.warning:hover,
2420.table-hover > tbody > tr > th.warning:hover,
2421.table-hover > tbody > tr.warning:hover > td,
2422.table-hover > tbody > tr:hover > .warning,
2423.table-hover > tbody > tr.warning:hover > th {
2424 background-color: #faf2cc;
2425}
2426.table > thead > tr > td.danger,
2427.table > tbody > tr > td.danger,
2428.table > tfoot > tr > td.danger,
2429.table > thead > tr > th.danger,
2430.table > tbody > tr > th.danger,
2431.table > tfoot > tr > th.danger,
2432.table > thead > tr.danger > td,
2433.table > tbody > tr.danger > td,
2434.table > tfoot > tr.danger > td,
2435.table > thead > tr.danger > th,
2436.table > tbody > tr.danger > th,
2437.table > tfoot > tr.danger > th {
2438 background-color: #f2dede;
2439}
2440.table-hover > tbody > tr > td.danger:hover,
2441.table-hover > tbody > tr > th.danger:hover,
2442.table-hover > tbody > tr.danger:hover > td,
2443.table-hover > tbody > tr:hover > .danger,
2444.table-hover > tbody > tr.danger:hover > th {
2445 background-color: #ebcccc;
2446}
2447.table-responsive {
2448 min-height: .01%;
2449 overflow-x: auto;
2450}
2451@media screen and (max-width: 767px) {
2452 .table-responsive {
2453 width: 100%;
2454 margin-bottom: 15px;
2455 overflow-y: hidden;
2456 -ms-overflow-style: -ms-autohiding-scrollbar;
2457 border: 1px solid #ddd;
2458 }
2459 .table-responsive > .table {
2460 margin-bottom: 0;
2461 }
2462 .table-responsive > .table > thead > tr > th,
2463 .table-responsive > .table > tbody > tr > th,
2464 .table-responsive > .table > tfoot > tr > th,
2465 .table-responsive > .table > thead > tr > td,
2466 .table-responsive > .table > tbody > tr > td,
2467 .table-responsive > .table > tfoot > tr > td {
2468 white-space: nowrap;
2469 }
2470 .table-responsive > .table-bordered {
2471 border: 0;
2472 }
2473 .table-responsive > .table-bordered > thead > tr > th:first-child,
2474 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2475 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2476 .table-responsive > .table-bordered > thead > tr > td:first-child,
2477 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2478 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2479 border-left: 0;
2480 }
2481 .table-responsive > .table-bordered > thead > tr > th:last-child,
2482 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2483 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2484 .table-responsive > .table-bordered > thead > tr > td:last-child,
2485 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2486 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2487 border-right: 0;
2488 }
2489 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2490 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2491 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2492 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2493 border-bottom: 0;
2494 }
2495}
2496fieldset {
2497 min-width: 0;
2498 padding: 0;
2499 margin: 0;
2500 border: 0;
2501}
2502legend {
2503 display: block;
2504 width: 100%;
2505 padding: 0;
2506 margin-bottom: 20px;
2507 font-size: 21px;
2508 line-height: inherit;
2509 color: #333;
2510 border: 0;
2511 border-bottom: 1px solid #e5e5e5;
2512}
2513label {
2514 display: inline-block;
2515 max-width: 100%;
2516 margin-bottom: 5px;
2517 font-weight: bold;
2518}
2519input[type="search"] {
2520 -webkit-box-sizing: border-box;
2521 -moz-box-sizing: border-box;
2522 box-sizing: border-box;
2523}
2524input[type="radio"],
2525input[type="checkbox"] {
2526 margin: 4px 0 0;
2527 margin-top: 1px \9;
2528 line-height: normal;
2529}
2530input[type="file"] {
2531 display: block;
2532}
2533input[type="range"] {
2534 display: block;
2535 width: 100%;
2536}
2537select[multiple],
2538select[size] {
2539 height: auto;
2540}
2541input[type="file"]:focus,
2542input[type="radio"]:focus,
2543input[type="checkbox"]:focus {
2544 outline: 5px auto -webkit-focus-ring-color;
2545 outline-offset: -2px;
2546}
2547output {
2548 display: block;
2549 padding-top: 7px;
2550 font-size: 14px;
2551 line-height: 1.42857143;
2552 color: #555;
2553}
2554.form-control {
2555 display: block;
2556 width: 100%;
2557 height: 34px;
2558 padding: 6px 12px;
2559 font-size: 14px;
2560 line-height: 1.42857143;
2561 color: #555;
2562 background-color: #fff;
2563 background-image: none;
2564 border: 1px solid #ccc;
2565 border-radius: 4px;
2566 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2567 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2568 -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2569 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2570 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2571}
2572.form-control:focus {
2573 border-color: #66afe9;
2574 outline: 0;
2575 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2576 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
2577}
2578.form-control::-moz-placeholder {
2579 color: #999;
2580 opacity: 1;
2581}
2582.form-control:-ms-input-placeholder {
2583 color: #999;
2584}
2585.form-control::-webkit-input-placeholder {
2586 color: #999;
2587}
2588.form-control::-ms-expand {
2589 background-color: transparent;
2590 border: 0;
2591}
2592.form-control[disabled],
2593.form-control[readonly],
2594fieldset[disabled] .form-control {
2595 background-color: #eee;
2596 opacity: 1;
2597}
2598.form-control[disabled],
2599fieldset[disabled] .form-control {
2600 cursor: not-allowed;
2601}
2602textarea.form-control {
2603 height: auto;
2604}
2605input[type="search"] {
2606 -webkit-appearance: none;
2607}
2608@media screen and (-webkit-min-device-pixel-ratio: 0) {
2609 input[type="date"].form-control,
2610 input[type="time"].form-control,
2611 input[type="datetime-local"].form-control,
2612 input[type="month"].form-control {
2613 line-height: 34px;
2614 }
2615 input[type="date"].input-sm,
2616 input[type="time"].input-sm,
2617 input[type="datetime-local"].input-sm,
2618 input[type="month"].input-sm,
2619 .input-group-sm input[type="date"],
2620 .input-group-sm input[type="time"],
2621 .input-group-sm input[type="datetime-local"],
2622 .input-group-sm input[type="month"] {
2623 line-height: 30px;
2624 }
2625 input[type="date"].input-lg,
2626 input[type="time"].input-lg,
2627 input[type="datetime-local"].input-lg,
2628 input[type="month"].input-lg,
2629 .input-group-lg input[type="date"],
2630 .input-group-lg input[type="time"],
2631 .input-group-lg input[type="datetime-local"],
2632 .input-group-lg input[type="month"] {
2633 line-height: 46px;
2634 }
2635}
2636.form-group {
2637 margin-bottom: 15px;
2638}
2639.radio,
2640.checkbox {
2641 position: relative;
2642 display: block;
2643 margin-top: 10px;
2644 margin-bottom: 10px;
2645}
2646.radio label,
2647.checkbox label {
2648 min-height: 20px;
2649 padding-left: 20px;
2650 margin-bottom: 0;
2651 font-weight: normal;
2652 cursor: pointer;
2653}
2654.radio input[type="radio"],
2655.radio-inline input[type="radio"],
2656.checkbox input[type="checkbox"],
2657.checkbox-inline input[type="checkbox"] {
2658 position: absolute;
2659 margin-top: 4px \9;
2660 margin-left: -20px;
2661}
2662.radio + .radio,
2663.checkbox + .checkbox {
2664 margin-top: -5px;
2665}
2666.radio-inline,
2667.checkbox-inline {
2668 position: relative;
2669 display: inline-block;
2670 padding-left: 20px;
2671 margin-bottom: 0;
2672 font-weight: normal;
2673 vertical-align: middle;
2674 cursor: pointer;
2675}
2676.radio-inline + .radio-inline,
2677.checkbox-inline + .checkbox-inline {
2678 margin-top: 0;
2679 margin-left: 10px;
2680}
2681input[type="radio"][disabled],
2682input[type="checkbox"][disabled],
2683input[type="radio"].disabled,
2684input[type="checkbox"].disabled,
2685fieldset[disabled] input[type="radio"],
2686fieldset[disabled] input[type="checkbox"] {
2687 cursor: not-allowed;
2688}
2689.radio-inline.disabled,
2690.checkbox-inline.disabled,
2691fieldset[disabled] .radio-inline,
2692fieldset[disabled] .checkbox-inline {
2693 cursor: not-allowed;
2694}
2695.radio.disabled label,
2696.checkbox.disabled label,
2697fieldset[disabled] .radio label,
2698fieldset[disabled] .checkbox label {
2699 cursor: not-allowed;
2700}
2701.form-control-static {
2702 min-height: 34px;
2703 padding-top: 7px;
2704 padding-bottom: 7px;
2705 margin-bottom: 0;
2706}
2707.form-control-static.input-lg,
2708.form-control-static.input-sm {
2709 padding-right: 0;
2710 padding-left: 0;
2711}
2712.input-sm {
2713 height: 30px;
2714 padding: 5px 10px;
2715 font-size: 12px;
2716 line-height: 1.5;
2717 border-radius: 3px;
2718}
2719select.input-sm {
2720 height: 30px;
2721 line-height: 30px;
2722}
2723textarea.input-sm,
2724select[multiple].input-sm {
2725 height: auto;
2726}
2727.form-group-sm .form-control {
2728 height: 30px;
2729 padding: 5px 10px;
2730 font-size: 12px;
2731 line-height: 1.5;
2732 border-radius: 3px;
2733}
2734.form-group-sm select.form-control {
2735 height: 30px;
2736 line-height: 30px;
2737}
2738.form-group-sm textarea.form-control,
2739.form-group-sm select[multiple].form-control {
2740 height: auto;
2741}
2742.form-group-sm .form-control-static {
2743 height: 30px;
2744 min-height: 32px;
2745 padding: 6px 10px;
2746 font-size: 12px;
2747 line-height: 1.5;
2748}
2749.input-lg {
2750 height: 46px;
2751 padding: 10px 16px;
2752 font-size: 18px;
2753 line-height: 1.3333333;
2754 border-radius: 6px;
2755}
2756select.input-lg {
2757 height: 46px;
2758 line-height: 46px;
2759}
2760textarea.input-lg,
2761select[multiple].input-lg {
2762 height: auto;
2763}
2764.form-group-lg .form-control {
2765 height: 46px;
2766 padding: 10px 16px;
2767 font-size: 18px;
2768 line-height: 1.3333333;
2769 border-radius: 6px;
2770}
2771.form-group-lg select.form-control {
2772 height: 46px;
2773 line-height: 46px;
2774}
2775.form-group-lg textarea.form-control,
2776.form-group-lg select[multiple].form-control {
2777 height: auto;
2778}
2779.form-group-lg .form-control-static {
2780 height: 46px;
2781 min-height: 38px;
2782 padding: 11px 16px;
2783 font-size: 18px;
2784 line-height: 1.3333333;
2785}
2786.has-feedback {
2787 position: relative;
2788}
2789.has-feedback .form-control {
2790 padding-right: 42.5px;
2791}
2792.form-control-feedback {
2793 position: absolute;
2794 top: 0;
2795 right: 0;
2796 z-index: 2;
2797 display: block;
2798 width: 34px;
2799 height: 34px;
2800 line-height: 34px;
2801 text-align: center;
2802 pointer-events: none;
2803}
2804.input-lg + .form-control-feedback,
2805.input-group-lg + .form-control-feedback,
2806.form-group-lg .form-control + .form-control-feedback {
2807 width: 46px;
2808 height: 46px;
2809 line-height: 46px;
2810}
2811.input-sm + .form-control-feedback,
2812.input-group-sm + .form-control-feedback,
2813.form-group-sm .form-control + .form-control-feedback {
2814 width: 30px;
2815 height: 30px;
2816 line-height: 30px;
2817}
2818.has-success .help-block,
2819.has-success .control-label,
2820.has-success .radio,
2821.has-success .checkbox,
2822.has-success .radio-inline,
2823.has-success .checkbox-inline,
2824.has-success.radio label,
2825.has-success.checkbox label,
2826.has-success.radio-inline label,
2827.has-success.checkbox-inline label {
2828 color: #3c763d;
2829}
2830.has-success .form-control {
2831 border-color: #3c763d;
2832 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2833 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2834}
2835.has-success .form-control:focus {
2836 border-color: #2b542c;
2837 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2838 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
2839}
2840.has-success .input-group-addon {
2841 color: #3c763d;
2842 background-color: #dff0d8;
2843 border-color: #3c763d;
2844}
2845.has-success .form-control-feedback {
2846 color: #3c763d;
2847}
2848.has-warning .help-block,
2849.has-warning .control-label,
2850.has-warning .radio,
2851.has-warning .checkbox,
2852.has-warning .radio-inline,
2853.has-warning .checkbox-inline,
2854.has-warning.radio label,
2855.has-warning.checkbox label,
2856.has-warning.radio-inline label,
2857.has-warning.checkbox-inline label {
2858 color: #8a6d3b;
2859}
2860.has-warning .form-control {
2861 border-color: #8a6d3b;
2862 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2863 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2864}
2865.has-warning .form-control:focus {
2866 border-color: #66512c;
2867 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2868 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
2869}
2870.has-warning .input-group-addon {
2871 color: #8a6d3b;
2872 background-color: #fcf8e3;
2873 border-color: #8a6d3b;
2874}
2875.has-warning .form-control-feedback {
2876 color: #8a6d3b;
2877}
2878.has-error .help-block,
2879.has-error .control-label,
2880.has-error .radio,
2881.has-error .checkbox,
2882.has-error .radio-inline,
2883.has-error .checkbox-inline,
2884.has-error.radio label,
2885.has-error.checkbox label,
2886.has-error.radio-inline label,
2887.has-error.checkbox-inline label {
2888 color: #a94442;
2889}
2890.has-error .form-control {
2891 border-color: #a94442;
2892 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2893 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
2894}
2895.has-error .form-control:focus {
2896 border-color: #843534;
2897 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2898 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
2899}
2900.has-error .input-group-addon {
2901 color: #a94442;
2902 background-color: #f2dede;
2903 border-color: #a94442;
2904}
2905.has-error .form-control-feedback {
2906 color: #a94442;
2907}
2908.has-feedback label ~ .form-control-feedback {
2909 top: 25px;
2910}
2911.has-feedback label.sr-only ~ .form-control-feedback {
2912 top: 0;
2913}
2914.help-block {
2915 display: block;
2916 margin-top: 5px;
2917 margin-bottom: 10px;
2918 color: #737373;
2919}
2920@media (min-width: 768px) {
2921 .form-inline .form-group {
2922 display: inline-block;
2923 margin-bottom: 0;
2924 vertical-align: middle;
2925 }
2926 .form-inline .form-control {
2927 display: inline-block;
2928 width: auto;
2929 vertical-align: middle;
2930 }
2931 .form-inline .form-control-static {
2932 display: inline-block;
2933 }
2934 .form-inline .input-group {
2935 display: inline-table;
2936 vertical-align: middle;
2937 }
2938 .form-inline .input-group .input-group-addon,
2939 .form-inline .input-group .input-group-btn,
2940 .form-inline .input-group .form-control {
2941 width: auto;
2942 }
2943 .form-inline .input-group > .form-control {
2944 width: 100%;
2945 }
2946 .form-inline .control-label {
2947 margin-bottom: 0;
2948 vertical-align: middle;
2949 }
2950 .form-inline .radio,
2951 .form-inline .checkbox {
2952 display: inline-block;
2953 margin-top: 0;
2954 margin-bottom: 0;
2955 vertical-align: middle;
2956 }
2957 .form-inline .radio label,
2958 .form-inline .checkbox label {
2959 padding-left: 0;
2960 }
2961 .form-inline .radio input[type="radio"],
2962 .form-inline .checkbox input[type="checkbox"] {
2963 position: relative;
2964 margin-left: 0;
2965 }
2966 .form-inline .has-feedback .form-control-feedback {
2967 top: 0;
2968 }
2969}
2970.form-horizontal .radio,
2971.form-horizontal .checkbox,
2972.form-horizontal .radio-inline,
2973.form-horizontal .checkbox-inline {
2974 padding-top: 7px;
2975 margin-top: 0;
2976 margin-bottom: 0;
2977}
2978.form-horizontal .radio,
2979.form-horizontal .checkbox {
2980 min-height: 27px;
2981}
2982.form-horizontal .form-group {
2983 margin-right: -15px;
2984 margin-left: -15px;
2985}
2986@media (min-width: 768px) {
2987 .form-horizontal .control-label {
2988 padding-top: 7px;
2989 margin-bottom: 0;
2990 text-align: right;
2991 }
2992}
2993.form-horizontal .has-feedback .form-control-feedback {
2994 right: 15px;
2995}
2996@media (min-width: 768px) {
2997 .form-horizontal .form-group-lg .control-label {
2998 padding-top: 11px;
2999 font-size: 18px;
3000 }
3001}
3002@media (min-width: 768px) {
3003 .form-horizontal .form-group-sm .control-label {
3004 padding-top: 6px;
3005 font-size: 12px;
3006 }
3007}
3008.btn {
3009 display: inline-block;
3010 padding: 6px 12px;
3011 margin-bottom: 0;
3012 font-size: 14px;
3013 font-weight: normal;
3014 line-height: 1.42857143;
3015 text-align: center;
3016 white-space: nowrap;
3017 vertical-align: middle;
3018 -ms-touch-action: manipulation;
3019 touch-action: manipulation;
3020 cursor: pointer;
3021 -webkit-user-select: none;
3022 -moz-user-select: none;
3023 -ms-user-select: none;
3024 user-select: none;
3025 background-image: none;
3026 border: 1px solid transparent;
3027 border-radius: 4px;
3028}
3029.btn:focus,
3030.btn:active:focus,
3031.btn.active:focus,
3032.btn.focus,
3033.btn:active.focus,
3034.btn.active.focus {
3035 outline: 5px auto -webkit-focus-ring-color;
3036 outline-offset: -2px;
3037}
3038.btn:hover,
3039.btn:focus,
3040.btn.focus {
3041 color: #333;
3042 text-decoration: none;
3043}
3044.btn:active,
3045.btn.active {
3046 background-image: none;
3047 outline: 0;
3048 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3049 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3050}
3051.btn.disabled,
3052.btn[disabled],
3053fieldset[disabled] .btn {
3054 cursor: not-allowed;
3055 filter: alpha(opacity=65);
3056 -webkit-box-shadow: none;
3057 box-shadow: none;
3058 opacity: .65;
3059}
3060a.btn.disabled,
3061fieldset[disabled] a.btn {
3062 pointer-events: none;
3063}
3064.btn-default {
3065 color: #333;
3066 background-color: #fff;
3067 border-color: #ccc;
3068}
3069.btn-default:focus,
3070.btn-default.focus {
3071 color: #333;
3072 background-color: #e6e6e6;
3073 border-color: #8c8c8c;
3074}
3075.btn-default:hover {
3076 color: #333;
3077 background-color: #e6e6e6;
3078 border-color: #adadad;
3079}
3080.btn-default:active,
3081.btn-default.active,
3082.open > .dropdown-toggle.btn-default {
3083 color: #333;
3084 background-color: #e6e6e6;
3085 border-color: #adadad;
3086}
3087.btn-default:active:hover,
3088.btn-default.active:hover,
3089.open > .dropdown-toggle.btn-default:hover,
3090.btn-default:active:focus,
3091.btn-default.active:focus,
3092.open > .dropdown-toggle.btn-default:focus,
3093.btn-default:active.focus,
3094.btn-default.active.focus,
3095.open > .dropdown-toggle.btn-default.focus {
3096 color: #333;
3097 background-color: #d4d4d4;
3098 border-color: #8c8c8c;
3099}
3100.btn-default:active,
3101.btn-default.active,
3102.open > .dropdown-toggle.btn-default {
3103 background-image: none;
3104}
3105.btn-default.disabled:hover,
3106.btn-default[disabled]:hover,
3107fieldset[disabled] .btn-default:hover,
3108.btn-default.disabled:focus,
3109.btn-default[disabled]:focus,
3110fieldset[disabled] .btn-default:focus,
3111.btn-default.disabled.focus,
3112.btn-default[disabled].focus,
3113fieldset[disabled] .btn-default.focus {
3114 background-color: #fff;
3115 border-color: #ccc;
3116}
3117.btn-default .badge {
3118 color: #fff;
3119 background-color: #333;
3120}
3121.btn-primary {
3122 color: #fff;
3123 background-color: #337ab7;
3124 border-color: #2e6da4;
3125}
3126.btn-primary:focus,
3127.btn-primary.focus {
3128 color: #fff;
3129 background-color: #286090;
3130 border-color: #122b40;
3131}
3132.btn-primary:hover {
3133 color: #fff;
3134 background-color: #286090;
3135 border-color: #204d74;
3136}
3137.btn-primary:active,
3138.btn-primary.active,
3139.open > .dropdown-toggle.btn-primary {
3140 color: #fff;
3141 background-color: #286090;
3142 border-color: #204d74;
3143}
3144.btn-primary:active:hover,
3145.btn-primary.active:hover,
3146.open > .dropdown-toggle.btn-primary:hover,
3147.btn-primary:active:focus,
3148.btn-primary.active:focus,
3149.open > .dropdown-toggle.btn-primary:focus,
3150.btn-primary:active.focus,
3151.btn-primary.active.focus,
3152.open > .dropdown-toggle.btn-primary.focus {
3153 color: #fff;
3154 background-color: #204d74;
3155 border-color: #122b40;
3156}
3157.btn-primary:active,
3158.btn-primary.active,
3159.open > .dropdown-toggle.btn-primary {
3160 background-image: none;
3161}
3162.btn-primary.disabled:hover,
3163.btn-primary[disabled]:hover,
3164fieldset[disabled] .btn-primary:hover,
3165.btn-primary.disabled:focus,
3166.btn-primary[disabled]:focus,
3167fieldset[disabled] .btn-primary:focus,
3168.btn-primary.disabled.focus,
3169.btn-primary[disabled].focus,
3170fieldset[disabled] .btn-primary.focus {
3171 background-color: #337ab7;
3172 border-color: #2e6da4;
3173}
3174.btn-primary .badge {
3175 color: #337ab7;
3176 background-color: #fff;
3177}
3178.btn-success {
3179 color: #fff;
3180 background-color: #5cb85c;
3181 border-color: #4cae4c;
3182}
3183.btn-success:focus,
3184.btn-success.focus {
3185 color: #fff;
3186 background-color: #449d44;
3187 border-color: #255625;
3188}
3189.btn-success:hover {
3190 color: #fff;
3191 background-color: #449d44;
3192 border-color: #398439;
3193}
3194.btn-success:active,
3195.btn-success.active,
3196.open > .dropdown-toggle.btn-success {
3197 color: #fff;
3198 background-color: #449d44;
3199 border-color: #398439;
3200}
3201.btn-success:active:hover,
3202.btn-success.active:hover,
3203.open > .dropdown-toggle.btn-success:hover,
3204.btn-success:active:focus,
3205.btn-success.active:focus,
3206.open > .dropdown-toggle.btn-success:focus,
3207.btn-success:active.focus,
3208.btn-success.active.focus,
3209.open > .dropdown-toggle.btn-success.focus {
3210 color: #fff;
3211 background-color: #398439;
3212 border-color: #255625;
3213}
3214.btn-success:active,
3215.btn-success.active,
3216.open > .dropdown-toggle.btn-success {
3217 background-image: none;
3218}
3219.btn-success.disabled:hover,
3220.btn-success[disabled]:hover,
3221fieldset[disabled] .btn-success:hover,
3222.btn-success.disabled:focus,
3223.btn-success[disabled]:focus,
3224fieldset[disabled] .btn-success:focus,
3225.btn-success.disabled.focus,
3226.btn-success[disabled].focus,
3227fieldset[disabled] .btn-success.focus {
3228 background-color: #5cb85c;
3229 border-color: #4cae4c;
3230}
3231.btn-success .badge {
3232 color: #5cb85c;
3233 background-color: #fff;
3234}
3235.btn-info {
3236 color: #fff;
3237 background-color: #5bc0de;
3238 border-color: #46b8da;
3239}
3240.btn-info:focus,
3241.btn-info.focus {
3242 color: #fff;
3243 background-color: #31b0d5;
3244 border-color: #1b6d85;
3245}
3246.btn-info:hover {
3247 color: #fff;
3248 background-color: #31b0d5;
3249 border-color: #269abc;
3250}
3251.btn-info:active,
3252.btn-info.active,
3253.open > .dropdown-toggle.btn-info {
3254 color: #fff;
3255 background-color: #31b0d5;
3256 border-color: #269abc;
3257}
3258.btn-info:active:hover,
3259.btn-info.active:hover,
3260.open > .dropdown-toggle.btn-info:hover,
3261.btn-info:active:focus,
3262.btn-info.active:focus,
3263.open > .dropdown-toggle.btn-info:focus,
3264.btn-info:active.focus,
3265.btn-info.active.focus,
3266.open > .dropdown-toggle.btn-info.focus {
3267 color: #fff;
3268 background-color: #269abc;
3269 border-color: #1b6d85;
3270}
3271.btn-info:active,
3272.btn-info.active,
3273.open > .dropdown-toggle.btn-info {
3274 background-image: none;
3275}
3276.btn-info.disabled:hover,
3277.btn-info[disabled]:hover,
3278fieldset[disabled] .btn-info:hover,
3279.btn-info.disabled:focus,
3280.btn-info[disabled]:focus,
3281fieldset[disabled] .btn-info:focus,
3282.btn-info.disabled.focus,
3283.btn-info[disabled].focus,
3284fieldset[disabled] .btn-info.focus {
3285 background-color: #5bc0de;
3286 border-color: #46b8da;
3287}
3288.btn-info .badge {
3289 color: #5bc0de;
3290 background-color: #fff;
3291}
3292.btn-warning {
3293 color: #fff;
3294 background-color: #f0ad4e;
3295 border-color: #eea236;
3296}
3297.btn-warning:focus,
3298.btn-warning.focus {
3299 color: #fff;
3300 background-color: #ec971f;
3301 border-color: #985f0d;
3302}
3303.btn-warning:hover {
3304 color: #fff;
3305 background-color: #ec971f;
3306 border-color: #d58512;
3307}
3308.btn-warning:active,
3309.btn-warning.active,
3310.open > .dropdown-toggle.btn-warning {
3311 color: #fff;
3312 background-color: #ec971f;
3313 border-color: #d58512;
3314}
3315.btn-warning:active:hover,
3316.btn-warning.active:hover,
3317.open > .dropdown-toggle.btn-warning:hover,
3318.btn-warning:active:focus,
3319.btn-warning.active:focus,
3320.open > .dropdown-toggle.btn-warning:focus,
3321.btn-warning:active.focus,
3322.btn-warning.active.focus,
3323.open > .dropdown-toggle.btn-warning.focus {
3324 color: #fff;
3325 background-color: #d58512;
3326 border-color: #985f0d;
3327}
3328.btn-warning:active,
3329.btn-warning.active,
3330.open > .dropdown-toggle.btn-warning {
3331 background-image: none;
3332}
3333.btn-warning.disabled:hover,
3334.btn-warning[disabled]:hover,
3335fieldset[disabled] .btn-warning:hover,
3336.btn-warning.disabled:focus,
3337.btn-warning[disabled]:focus,
3338fieldset[disabled] .btn-warning:focus,
3339.btn-warning.disabled.focus,
3340.btn-warning[disabled].focus,
3341fieldset[disabled] .btn-warning.focus {
3342 background-color: #f0ad4e;
3343 border-color: #eea236;
3344}
3345.btn-warning .badge {
3346 color: #f0ad4e;
3347 background-color: #fff;
3348}
3349.btn-danger {
3350 color: #fff;
3351 background-color: #d9534f;
3352 border-color: #d43f3a;
3353}
3354.btn-danger:focus,
3355.btn-danger.focus {
3356 color: #fff;
3357 background-color: #c9302c;
3358 border-color: #761c19;
3359}
3360.btn-danger:hover {
3361 color: #fff;
3362 background-color: #c9302c;
3363 border-color: #ac2925;
3364}
3365.btn-danger:active,
3366.btn-danger.active,
3367.open > .dropdown-toggle.btn-danger {
3368 color: #fff;
3369 background-color: #c9302c;
3370 border-color: #ac2925;
3371}
3372.btn-danger:active:hover,
3373.btn-danger.active:hover,
3374.open > .dropdown-toggle.btn-danger:hover,
3375.btn-danger:active:focus,
3376.btn-danger.active:focus,
3377.open > .dropdown-toggle.btn-danger:focus,
3378.btn-danger:active.focus,
3379.btn-danger.active.focus,
3380.open > .dropdown-toggle.btn-danger.focus {
3381 color: #fff;
3382 background-color: #ac2925;
3383 border-color: #761c19;
3384}
3385.btn-danger:active,
3386.btn-danger.active,
3387.open > .dropdown-toggle.btn-danger {
3388 background-image: none;
3389}
3390.btn-danger.disabled:hover,
3391.btn-danger[disabled]:hover,
3392fieldset[disabled] .btn-danger:hover,
3393.btn-danger.disabled:focus,
3394.btn-danger[disabled]:focus,
3395fieldset[disabled] .btn-danger:focus,
3396.btn-danger.disabled.focus,
3397.btn-danger[disabled].focus,
3398fieldset[disabled] .btn-danger.focus {
3399 background-color: #d9534f;
3400 border-color: #d43f3a;
3401}
3402.btn-danger .badge {
3403 color: #d9534f;
3404 background-color: #fff;
3405}
3406.btn-link {
3407 font-weight: normal;
3408 color: #337ab7;
3409 border-radius: 0;
3410}
3411.btn-link,
3412.btn-link:active,
3413.btn-link.active,
3414.btn-link[disabled],
3415fieldset[disabled] .btn-link {
3416 background-color: transparent;
3417 -webkit-box-shadow: none;
3418 box-shadow: none;
3419}
3420.btn-link,
3421.btn-link:hover,
3422.btn-link:focus,
3423.btn-link:active {
3424 border-color: transparent;
3425}
3426.btn-link:hover,
3427.btn-link:focus {
3428 color: #23527c;
3429 text-decoration: underline;
3430 background-color: transparent;
3431}
3432.btn-link[disabled]:hover,
3433fieldset[disabled] .btn-link:hover,
3434.btn-link[disabled]:focus,
3435fieldset[disabled] .btn-link:focus {
3436 color: #777;
3437 text-decoration: none;
3438}
3439.btn-lg,
3440.btn-group-lg > .btn {
3441 padding: 10px 16px;
3442 font-size: 18px;
3443 line-height: 1.3333333;
3444 border-radius: 6px;
3445}
3446.btn-sm,
3447.btn-group-sm > .btn {
3448 padding: 5px 10px;
3449 font-size: 12px;
3450 line-height: 1.5;
3451 border-radius: 3px;
3452}
3453.btn-xs,
3454.btn-group-xs > .btn {
3455 padding: 1px 5px;
3456 font-size: 12px;
3457 line-height: 1.5;
3458 border-radius: 3px;
3459}
3460.btn-block {
3461 display: block;
3462 width: 100%;
3463}
3464.btn-block + .btn-block {
3465 margin-top: 5px;
3466}
3467input[type="submit"].btn-block,
3468input[type="reset"].btn-block,
3469input[type="button"].btn-block {
3470 width: 100%;
3471}
3472.fade {
3473 opacity: 0;
3474 -webkit-transition: opacity .15s linear;
3475 -o-transition: opacity .15s linear;
3476 transition: opacity .15s linear;
3477}
3478.fade.in {
3479 opacity: 1;
3480}
3481.collapse {
3482 display: none;
3483}
3484.collapse.in {
3485 display: block;
3486}
3487tr.collapse.in {
3488 display: table-row;
3489}
3490tbody.collapse.in {
3491 display: table-row-group;
3492}
3493.collapsing {
3494 position: relative;
3495 height: 0;
3496 overflow: hidden;
3497 -webkit-transition-timing-function: ease;
3498 -o-transition-timing-function: ease;
3499 transition-timing-function: ease;
3500 -webkit-transition-duration: .35s;
3501 -o-transition-duration: .35s;
3502 transition-duration: .35s;
3503 -webkit-transition-property: height, visibility;
3504 -o-transition-property: height, visibility;
3505 transition-property: height, visibility;
3506}
3507.caret {
3508 display: inline-block;
3509 width: 0;
3510 height: 0;
3511 margin-left: 2px;
3512 vertical-align: middle;
3513 border-top: 4px dashed;
3514 border-top: 4px solid \9;
3515 border-right: 4px solid transparent;
3516 border-left: 4px solid transparent;
3517}
3518.dropup,
3519.dropdown {
3520 position: relative;
3521}
3522.dropdown-toggle:focus {
3523 outline: 0;
3524}
3525.dropdown-menu {
3526 position: absolute;
3527 top: 100%;
3528 left: 0;
3529 z-index: 1000;
3530 display: none;
3531 float: left;
3532 min-width: 160px;
3533 padding: 5px 0;
3534 margin: 2px 0 0;
3535 font-size: 14px;
3536 text-align: left;
3537 list-style: none;
3538 background-color: #fff;
3539 -webkit-background-clip: padding-box;
3540 background-clip: padding-box;
3541 border: 1px solid #ccc;
3542 border: 1px solid rgba(0, 0, 0, .15);
3543 border-radius: 4px;
3544 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3545 box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
3546}
3547.dropdown-menu.pull-right {
3548 right: 0;
3549 left: auto;
3550}
3551.dropdown-menu .divider {
3552 height: 1px;
3553 margin: 9px 0;
3554 overflow: hidden;
3555 background-color: #e5e5e5;
3556}
3557.dropdown-menu > li > a {
3558 display: block;
3559 padding: 3px 20px;
3560 clear: both;
3561 font-weight: normal;
3562 line-height: 1.42857143;
3563 color: #333;
3564 white-space: nowrap;
3565}
3566.dropdown-menu > li > a:hover,
3567.dropdown-menu > li > a:focus {
3568 color: #262626;
3569 text-decoration: none;
3570 background-color: #f5f5f5;
3571}
3572.dropdown-menu > .active > a,
3573.dropdown-menu > .active > a:hover,
3574.dropdown-menu > .active > a:focus {
3575 color: #fff;
3576 text-decoration: none;
3577 background-color: #337ab7;
3578 outline: 0;
3579}
3580.dropdown-menu > .disabled > a,
3581.dropdown-menu > .disabled > a:hover,
3582.dropdown-menu > .disabled > a:focus {
3583 color: #777;
3584}
3585.dropdown-menu > .disabled > a:hover,
3586.dropdown-menu > .disabled > a:focus {
3587 text-decoration: none;
3588 cursor: not-allowed;
3589 background-color: transparent;
3590 background-image: none;
3591 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3592}
3593.open > .dropdown-menu {
3594 display: block;
3595}
3596.open > a {
3597 outline: 0;
3598}
3599.dropdown-menu-right {
3600 right: 0;
3601 left: auto;
3602}
3603.dropdown-menu-left {
3604 right: auto;
3605 left: 0;
3606}
3607.dropdown-header {
3608 display: block;
3609 padding: 3px 20px;
3610 font-size: 12px;
3611 line-height: 1.42857143;
3612 color: #777;
3613 white-space: nowrap;
3614}
3615.dropdown-backdrop {
3616 position: fixed;
3617 top: 0;
3618 right: 0;
3619 bottom: 0;
3620 left: 0;
3621 z-index: 990;
3622}
3623.pull-right > .dropdown-menu {
3624 right: 0;
3625 left: auto;
3626}
3627.dropup .caret,
3628.navbar-fixed-bottom .dropdown .caret {
3629 content: "";
3630 border-top: 0;
3631 border-bottom: 4px dashed;
3632 border-bottom: 4px solid \9;
3633}
3634.dropup .dropdown-menu,
3635.navbar-fixed-bottom .dropdown .dropdown-menu {
3636 top: auto;
3637 bottom: 100%;
3638 margin-bottom: 2px;
3639}
3640@media (min-width: 768px) {
3641 .navbar-right .dropdown-menu {
3642 right: 0;
3643 left: auto;
3644 }
3645 .navbar-right .dropdown-menu-left {
3646 right: auto;
3647 left: 0;
3648 }
3649}
3650.btn-group,
3651.btn-group-vertical {
3652 position: relative;
3653 display: inline-block;
3654 vertical-align: middle;
3655}
3656.btn-group > .btn,
3657.btn-group-vertical > .btn {
3658 position: relative;
3659 float: left;
3660}
3661.btn-group > .btn:hover,
3662.btn-group-vertical > .btn:hover,
3663.btn-group > .btn:focus,
3664.btn-group-vertical > .btn:focus,
3665.btn-group > .btn:active,
3666.btn-group-vertical > .btn:active,
3667.btn-group > .btn.active,
3668.btn-group-vertical > .btn.active {
3669 z-index: 2;
3670}
3671.btn-group .btn + .btn,
3672.btn-group .btn + .btn-group,
3673.btn-group .btn-group + .btn,
3674.btn-group .btn-group + .btn-group {
3675 margin-left: -1px;
3676}
3677.btn-toolbar {
3678 margin-left: -5px;
3679}
3680.btn-toolbar .btn,
3681.btn-toolbar .btn-group,
3682.btn-toolbar .input-group {
3683 float: left;
3684}
3685.btn-toolbar > .btn,
3686.btn-toolbar > .btn-group,
3687.btn-toolbar > .input-group {
3688 margin-left: 5px;
3689}
3690.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3691 border-radius: 0;
3692}
3693.btn-group > .btn:first-child {
3694 margin-left: 0;
3695}
3696.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3697 border-top-right-radius: 0;
3698 border-bottom-right-radius: 0;
3699}
3700.btn-group > .btn:last-child:not(:first-child),
3701.btn-group > .dropdown-toggle:not(:first-child) {
3702 border-top-left-radius: 0;
3703 border-bottom-left-radius: 0;
3704}
3705.btn-group > .btn-group {
3706 float: left;
3707}
3708.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3709 border-radius: 0;
3710}
3711.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3712.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3713 border-top-right-radius: 0;
3714 border-bottom-right-radius: 0;
3715}
3716.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3717 border-top-left-radius: 0;
3718 border-bottom-left-radius: 0;
3719}
3720.btn-group .dropdown-toggle:active,
3721.btn-group.open .dropdown-toggle {
3722 outline: 0;
3723}
3724.btn-group > .btn + .dropdown-toggle {
3725 padding-right: 8px;
3726 padding-left: 8px;
3727}
3728.btn-group > .btn-lg + .dropdown-toggle {
3729 padding-right: 12px;
3730 padding-left: 12px;
3731}
3732.btn-group.open .dropdown-toggle {
3733 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3734 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
3735}
3736.btn-group.open .dropdown-toggle.btn-link {
3737 -webkit-box-shadow: none;
3738 box-shadow: none;
3739}
3740.btn .caret {
3741 margin-left: 0;
3742}
3743.btn-lg .caret {
3744 border-width: 5px 5px 0;
3745 border-bottom-width: 0;
3746}
3747.dropup .btn-lg .caret {
3748 border-width: 0 5px 5px;
3749}
3750.btn-group-vertical > .btn,
3751.btn-group-vertical > .btn-group,
3752.btn-group-vertical > .btn-group > .btn {
3753 display: block;
3754 float: none;
3755 width: 100%;
3756 max-width: 100%;
3757}
3758.btn-group-vertical > .btn-group > .btn {
3759 float: none;
3760}
3761.btn-group-vertical > .btn + .btn,
3762.btn-group-vertical > .btn + .btn-group,
3763.btn-group-vertical > .btn-group + .btn,
3764.btn-group-vertical > .btn-group + .btn-group {
3765 margin-top: -1px;
3766 margin-left: 0;
3767}
3768.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3769 border-radius: 0;
3770}
3771.btn-group-vertical > .btn:first-child:not(:last-child) {
3772 border-top-left-radius: 4px;
3773 border-top-right-radius: 4px;
3774 border-bottom-right-radius: 0;
3775 border-bottom-left-radius: 0;
3776}
3777.btn-group-vertical > .btn:last-child:not(:first-child) {
3778 border-top-left-radius: 0;
3779 border-top-right-radius: 0;
3780 border-bottom-right-radius: 4px;
3781 border-bottom-left-radius: 4px;
3782}
3783.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3784 border-radius: 0;
3785}
3786.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3787.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3788 border-bottom-right-radius: 0;
3789 border-bottom-left-radius: 0;
3790}
3791.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3792 border-top-left-radius: 0;
3793 border-top-right-radius: 0;
3794}
3795.btn-group-justified {
3796 display: table;
3797 width: 100%;
3798 table-layout: fixed;
3799 border-collapse: separate;
3800}
3801.btn-group-justified > .btn,
3802.btn-group-justified > .btn-group {
3803 display: table-cell;
3804 float: none;
3805 width: 1%;
3806}
3807.btn-group-justified > .btn-group .btn {
3808 width: 100%;
3809}
3810.btn-group-justified > .btn-group .dropdown-menu {
3811 left: auto;
3812}
3813[data-toggle="buttons"] > .btn input[type="radio"],
3814[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3815[data-toggle="buttons"] > .btn input[type="checkbox"],
3816[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3817 position: absolute;
3818 clip: rect(0, 0, 0, 0);
3819 pointer-events: none;
3820}
3821.input-group {
3822 position: relative;
3823 display: table;
3824 border-collapse: separate;
3825}
3826.input-group[class*="col-"] {
3827 float: none;
3828 padding-right: 0;
3829 padding-left: 0;
3830}
3831.input-group .form-control {
3832 position: relative;
3833 z-index: 2;
3834 float: left;
3835 width: 100%;
3836 margin-bottom: 0;
3837}
3838.input-group .form-control:focus {
3839 z-index: 3;
3840}
3841.input-group-lg > .form-control,
3842.input-group-lg > .input-group-addon,
3843.input-group-lg > .input-group-btn > .btn {
3844 height: 46px;
3845 padding: 10px 16px;
3846 font-size: 18px;
3847 line-height: 1.3333333;
3848 border-radius: 6px;
3849}
3850select.input-group-lg > .form-control,
3851select.input-group-lg > .input-group-addon,
3852select.input-group-lg > .input-group-btn > .btn {
3853 height: 46px;
3854 line-height: 46px;
3855}
3856textarea.input-group-lg > .form-control,
3857textarea.input-group-lg > .input-group-addon,
3858textarea.input-group-lg > .input-group-btn > .btn,
3859select[multiple].input-group-lg > .form-control,
3860select[multiple].input-group-lg > .input-group-addon,
3861select[multiple].input-group-lg > .input-group-btn > .btn {
3862 height: auto;
3863}
3864.input-group-sm > .form-control,
3865.input-group-sm > .input-group-addon,
3866.input-group-sm > .input-group-btn > .btn {
3867 height: 30px;
3868 padding: 5px 10px;
3869 font-size: 12px;
3870 line-height: 1.5;
3871 border-radius: 3px;
3872}
3873select.input-group-sm > .form-control,
3874select.input-group-sm > .input-group-addon,
3875select.input-group-sm > .input-group-btn > .btn {
3876 height: 30px;
3877 line-height: 30px;
3878}
3879textarea.input-group-sm > .form-control,
3880textarea.input-group-sm > .input-group-addon,
3881textarea.input-group-sm > .input-group-btn > .btn,
3882select[multiple].input-group-sm > .form-control,
3883select[multiple].input-group-sm > .input-group-addon,
3884select[multiple].input-group-sm > .input-group-btn > .btn {
3885 height: auto;
3886}
3887.input-group-addon,
3888.input-group-btn,
3889.input-group .form-control {
3890 display: table-cell;
3891}
3892.input-group-addon:not(:first-child):not(:last-child),
3893.input-group-btn:not(:first-child):not(:last-child),
3894.input-group .form-control:not(:first-child):not(:last-child) {
3895 border-radius: 0;
3896}
3897.input-group-addon,
3898.input-group-btn {
3899 width: 1%;
3900 white-space: nowrap;
3901 vertical-align: middle;
3902}
3903.input-group-addon {
3904 padding: 6px 12px;
3905 font-size: 14px;
3906 font-weight: normal;
3907 line-height: 1;
3908 color: #555;
3909 text-align: center;
3910 background-color: #eee;
3911 border: 1px solid #ccc;
3912 border-radius: 4px;
3913}
3914.input-group-addon.input-sm {
3915 padding: 5px 10px;
3916 font-size: 12px;
3917 border-radius: 3px;
3918}
3919.input-group-addon.input-lg {
3920 padding: 10px 16px;
3921 font-size: 18px;
3922 border-radius: 6px;
3923}
3924.input-group-addon input[type="radio"],
3925.input-group-addon input[type="checkbox"] {
3926 margin-top: 0;
3927}
3928.input-group .form-control:first-child,
3929.input-group-addon:first-child,
3930.input-group-btn:first-child > .btn,
3931.input-group-btn:first-child > .btn-group > .btn,
3932.input-group-btn:first-child > .dropdown-toggle,
3933.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3934.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3935 border-top-right-radius: 0;
3936 border-bottom-right-radius: 0;
3937}
3938.input-group-addon:first-child {
3939 border-right: 0;
3940}
3941.input-group .form-control:last-child,
3942.input-group-addon:last-child,
3943.input-group-btn:last-child > .btn,
3944.input-group-btn:last-child > .btn-group > .btn,
3945.input-group-btn:last-child > .dropdown-toggle,
3946.input-group-btn:first-child > .btn:not(:first-child),
3947.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3948 border-top-left-radius: 0;
3949 border-bottom-left-radius: 0;
3950}
3951.input-group-addon:last-child {
3952 border-left: 0;
3953}
3954.input-group-btn {
3955 position: relative;
3956 font-size: 0;
3957 white-space: nowrap;
3958}
3959.input-group-btn > .btn {
3960 position: relative;
3961}
3962.input-group-btn > .btn + .btn {
3963 margin-left: -1px;
3964}
3965.input-group-btn > .btn:hover,
3966.input-group-btn > .btn:focus,
3967.input-group-btn > .btn:active {
3968 z-index: 2;
3969}
3970.input-group-btn:first-child > .btn,
3971.input-group-btn:first-child > .btn-group {
3972 margin-right: -1px;
3973}
3974.input-group-btn:last-child > .btn,
3975.input-group-btn:last-child > .btn-group {
3976 z-index: 2;
3977 margin-left: -1px;
3978}
3979.nav {
3980 padding-left: 0;
3981 margin-bottom: 0;
3982 list-style: none;
3983}
3984.nav > li {
3985 position: relative;
3986 display: block;
3987}
3988.nav > li > a {
3989 position: relative;
3990 display: block;
3991 padding: 10px 15px;
3992}
3993.nav > li > a:hover,
3994.nav > li > a:focus {
3995 text-decoration: none;
3996 background-color: #eee;
3997}
3998.nav > li.disabled > a {
3999 color: #777;
4000}
4001.nav > li.disabled > a:hover,
4002.nav > li.disabled > a:focus {
4003 color: #777;
4004 text-decoration: none;
4005 cursor: not-allowed;
4006 background-color: transparent;
4007}
4008.nav .open > a,
4009.nav .open > a:hover,
4010.nav .open > a:focus {
4011 background-color: #eee;
4012 border-color: #337ab7;
4013}
4014.nav .nav-divider {
4015 height: 1px;
4016 margin: 9px 0;
4017 overflow: hidden;
4018 background-color: #e5e5e5;
4019}
4020.nav > li > a > img {
4021 max-width: none;
4022}
4023.nav-tabs {
4024 border-bottom: 1px solid #ddd;
4025}
4026.nav-tabs > li {
4027 float: left;
4028 margin-bottom: -1px;
4029}
4030.nav-tabs > li > a {
4031 margin-right: 2px;
4032 line-height: 1.42857143;
4033 border: 1px solid transparent;
4034 border-radius: 4px 4px 0 0;
4035}
4036.nav-tabs > li > a:hover {
4037 border-color: #eee #eee #ddd;
4038}
4039.nav-tabs > li.active > a,
4040.nav-tabs > li.active > a:hover,
4041.nav-tabs > li.active > a:focus {
4042 color: #555;
4043 cursor: default;
4044 background-color: #fff;
4045 border: 1px solid #ddd;
4046 border-bottom-color: transparent;
4047}
4048.nav-tabs.nav-justified {
4049 width: 100%;
4050 border-bottom: 0;
4051}
4052.nav-tabs.nav-justified > li {
4053 float: none;
4054}
4055.nav-tabs.nav-justified > li > a {
4056 margin-bottom: 5px;
4057 text-align: center;
4058}
4059.nav-tabs.nav-justified > .dropdown .dropdown-menu {
4060 top: auto;
4061 left: auto;
4062}
4063@media (min-width: 768px) {
4064 .nav-tabs.nav-justified > li {
4065 display: table-cell;
4066 width: 1%;
4067 }
4068 .nav-tabs.nav-justified > li > a {
4069 margin-bottom: 0;
4070 }
4071}
4072.nav-tabs.nav-justified > li > a {
4073 margin-right: 0;
4074 border-radius: 4px;
4075}
4076.nav-tabs.nav-justified > .active > a,
4077.nav-tabs.nav-justified > .active > a:hover,
4078.nav-tabs.nav-justified > .active > a:focus {
4079 border: 1px solid #ddd;
4080}
4081@media (min-width: 768px) {
4082 .nav-tabs.nav-justified > li > a {
4083 border-bottom: 1px solid #ddd;
4084 border-radius: 4px 4px 0 0;
4085 }
4086 .nav-tabs.nav-justified > .active > a,
4087 .nav-tabs.nav-justified > .active > a:hover,
4088 .nav-tabs.nav-justified > .active > a:focus {
4089 border-bottom-color: #fff;
4090 }
4091}
4092.nav-pills > li {
4093 float: left;
4094}
4095.nav-pills > li > a {
4096 border-radius: 4px;
4097}
4098.nav-pills > li + li {
4099 margin-left: 2px;
4100}
4101.nav-pills > li.active > a,
4102.nav-pills > li.active > a:hover,
4103.nav-pills > li.active > a:focus {
4104 color: #fff;
4105 background-color: #337ab7;
4106}
4107.nav-stacked > li {
4108 float: none;
4109}
4110.nav-stacked > li + li {
4111 margin-top: 2px;
4112 margin-left: 0;
4113}
4114.nav-justified {
4115 width: 100%;
4116}
4117.nav-justified > li {
4118 float: none;
4119}
4120.nav-justified > li > a {
4121 margin-bottom: 5px;
4122 text-align: center;
4123}
4124.nav-justified > .dropdown .dropdown-menu {
4125 top: auto;
4126 left: auto;
4127}
4128@media (min-width: 768px) {
4129 .nav-justified > li {
4130 display: table-cell;
4131 width: 1%;
4132 }
4133 .nav-justified > li > a {
4134 margin-bottom: 0;
4135 }
4136}
4137.nav-tabs-justified {
4138 border-bottom: 0;
4139}
4140.nav-tabs-justified > li > a {
4141 margin-right: 0;
4142 border-radius: 4px;
4143}
4144.nav-tabs-justified > .active > a,
4145.nav-tabs-justified > .active > a:hover,
4146.nav-tabs-justified > .active > a:focus {
4147 border: 1px solid #ddd;
4148}
4149@media (min-width: 768px) {
4150 .nav-tabs-justified > li > a {
4151 border-bottom: 1px solid #ddd;
4152 border-radius: 4px 4px 0 0;
4153 }
4154 .nav-tabs-justified > .active > a,
4155 .nav-tabs-justified > .active > a:hover,
4156 .nav-tabs-justified > .active > a:focus {
4157 border-bottom-color: #fff;
4158 }
4159}
4160.tab-content > .tab-pane {
4161 display: none;
4162}
4163.tab-content > .active {
4164 display: block;
4165}
4166.nav-tabs .dropdown-menu {
4167 margin-top: -1px;
4168 border-top-left-radius: 0;
4169 border-top-right-radius: 0;
4170}
4171.navbar {
4172 position: relative;
4173 min-height: 50px;
4174 margin-bottom: 20px;
4175 border: 1px solid transparent;
4176}
4177@media (min-width: 768px) {
4178 .navbar {
4179 border-radius: 4px;
4180 }
4181}
4182@media (min-width: 768px) {
4183 .navbar-header {
4184 float: left;
4185 }
4186}
4187.navbar-collapse {
4188 padding-right: 15px;
4189 padding-left: 15px;
4190 overflow-x: visible;
4191 -webkit-overflow-scrolling: touch;
4192 border-top: 1px solid transparent;
4193 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
4194 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
4195}
4196.navbar-collapse.in {
4197 overflow-y: auto;
4198}
4199@media (min-width: 768px) {
4200 .navbar-collapse {
4201 width: auto;
4202 border-top: 0;
4203 -webkit-box-shadow: none;
4204 box-shadow: none;
4205 }
4206 .navbar-collapse.collapse {
4207 display: block !important;
4208 height: auto !important;
4209 padding-bottom: 0;
4210 overflow: visible !important;
4211 }
4212 .navbar-collapse.in {
4213 overflow-y: visible;
4214 }
4215 .navbar-fixed-top .navbar-collapse,
4216 .navbar-static-top .navbar-collapse,
4217 .navbar-fixed-bottom .navbar-collapse {
4218 padding-right: 0;
4219 padding-left: 0;
4220 }
4221}
4222.navbar-fixed-top .navbar-collapse,
4223.navbar-fixed-bottom .navbar-collapse {
4224 max-height: 340px;
4225}
4226@media (max-device-width: 480px) and (orientation: landscape) {
4227 .navbar-fixed-top .navbar-collapse,
4228 .navbar-fixed-bottom .navbar-collapse {
4229 max-height: 200px;
4230 }
4231}
4232.container > .navbar-header,
4233.container-fluid > .navbar-header,
4234.container > .navbar-collapse,
4235.container-fluid > .navbar-collapse {
4236 margin-right: -15px;
4237 margin-left: -15px;
4238}
4239@media (min-width: 768px) {
4240 .container > .navbar-header,
4241 .container-fluid > .navbar-header,
4242 .container > .navbar-collapse,
4243 .container-fluid > .navbar-collapse {
4244 margin-right: 0;
4245 margin-left: 0;
4246 }
4247}
4248.navbar-static-top {
4249 z-index: 1000;
4250 border-width: 0 0 1px;
4251}
4252@media (min-width: 768px) {
4253 .navbar-static-top {
4254 border-radius: 0;
4255 }
4256}
4257.navbar-fixed-top,
4258.navbar-fixed-bottom {
4259 position: fixed;
4260 right: 0;
4261 left: 0;
4262 z-index: 1030;
4263}
4264@media (min-width: 768px) {
4265 .navbar-fixed-top,
4266 .navbar-fixed-bottom {
4267 border-radius: 0;
4268 }
4269}
4270.navbar-fixed-top {
4271 top: 0;
4272 border-width: 0 0 1px;
4273}
4274.navbar-fixed-bottom {
4275 bottom: 0;
4276 margin-bottom: 0;
4277 border-width: 1px 0 0;
4278}
4279.navbar-brand {
4280 float: left;
4281 height: 50px;
4282 padding: 15px 15px;
4283 font-size: 18px;
4284 line-height: 20px;
4285}
4286.navbar-brand:hover,
4287.navbar-brand:focus {
4288 text-decoration: none;
4289}
4290.navbar-brand > img {
4291 display: block;
4292}
4293@media (min-width: 768px) {
4294 .navbar > .container .navbar-brand,
4295 .navbar > .container-fluid .navbar-brand {
4296 margin-left: -15px;
4297 }
4298}
4299.navbar-toggle {
4300 position: relative;
4301 float: right;
4302 padding: 9px 10px;
4303 margin-top: 8px;
4304 margin-right: 15px;
4305 margin-bottom: 8px;
4306 background-color: transparent;
4307 background-image: none;
4308 border: 1px solid transparent;
4309 border-radius: 4px;
4310}
4311.navbar-toggle:focus {
4312 outline: 0;
4313}
4314.navbar-toggle .icon-bar {
4315 display: block;
4316 width: 22px;
4317 height: 2px;
4318 border-radius: 1px;
4319}
4320.navbar-toggle .icon-bar + .icon-bar {
4321 margin-top: 4px;
4322}
4323@media (min-width: 768px) {
4324 .navbar-toggle {
4325 display: none;
4326 }
4327}
4328.navbar-nav {
4329 margin: 7.5px -15px;
4330}
4331.navbar-nav > li > a {
4332 padding-top: 10px;
4333 padding-bottom: 10px;
4334 line-height: 20px;
4335}
4336@media (max-width: 767px) {
4337 .navbar-nav .open .dropdown-menu {
4338 position: static;
4339 float: none;
4340 width: auto;
4341 margin-top: 0;
4342 background-color: transparent;
4343 border: 0;
4344 -webkit-box-shadow: none;
4345 box-shadow: none;
4346 }
4347 .navbar-nav .open .dropdown-menu > li > a,
4348 .navbar-nav .open .dropdown-menu .dropdown-header {
4349 padding: 5px 15px 5px 25px;
4350 }
4351 .navbar-nav .open .dropdown-menu > li > a {
4352 line-height: 20px;
4353 }
4354 .navbar-nav .open .dropdown-menu > li > a:hover,
4355 .navbar-nav .open .dropdown-menu > li > a:focus {
4356 background-image: none;
4357 }
4358}
4359@media (min-width: 768px) {
4360 .navbar-nav {
4361 float: left;
4362 margin: 0;
4363 }
4364 .navbar-nav > li {
4365 float: left;
4366 }
4367 .navbar-nav > li > a {
4368 padding-top: 15px;
4369 padding-bottom: 15px;
4370 }
4371}
4372.navbar-form {
4373 padding: 10px 15px;
4374 margin-top: 8px;
4375 margin-right: -15px;
4376 margin-bottom: 8px;
4377 margin-left: -15px;
4378 border-top: 1px solid transparent;
4379 border-bottom: 1px solid transparent;
4380 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
4381 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
4382}
4383@media (min-width: 768px) {
4384 .navbar-form .form-group {
4385 display: inline-block;
4386 margin-bottom: 0;
4387 vertical-align: middle;
4388 }
4389 .navbar-form .form-control {
4390 display: inline-block;
4391 width: auto;
4392 vertical-align: middle;
4393 }
4394 .navbar-form .form-control-static {
4395 display: inline-block;
4396 }
4397 .navbar-form .input-group {
4398 display: inline-table;
4399 vertical-align: middle;
4400 }
4401 .navbar-form .input-group .input-group-addon,
4402 .navbar-form .input-group .input-group-btn,
4403 .navbar-form .input-group .form-control {
4404 width: auto;
4405 }
4406 .navbar-form .input-group > .form-control {
4407 width: 100%;
4408 }
4409 .navbar-form .control-label {
4410 margin-bottom: 0;
4411 vertical-align: middle;
4412 }
4413 .navbar-form .radio,
4414 .navbar-form .checkbox {
4415 display: inline-block;
4416 margin-top: 0;
4417 margin-bottom: 0;
4418 vertical-align: middle;
4419 }
4420 .navbar-form .radio label,
4421 .navbar-form .checkbox label {
4422 padding-left: 0;
4423 }
4424 .navbar-form .radio input[type="radio"],
4425 .navbar-form .checkbox input[type="checkbox"] {
4426 position: relative;
4427 margin-left: 0;
4428 }
4429 .navbar-form .has-feedback .form-control-feedback {
4430 top: 0;
4431 }
4432}
4433@media (max-width: 767px) {
4434 .navbar-form .form-group {
4435 margin-bottom: 5px;
4436 }
4437 .navbar-form .form-group:last-child {
4438 margin-bottom: 0;
4439 }
4440}
4441@media (min-width: 768px) {
4442 .navbar-form {
4443 width: auto;
4444 padding-top: 0;
4445 padding-bottom: 0;
4446 margin-right: 0;
4447 margin-left: 0;
4448 border: 0;
4449 -webkit-box-shadow: none;
4450 box-shadow: none;
4451 }
4452}
4453.navbar-nav > li > .dropdown-menu {
4454 margin-top: 0;
4455 border-top-left-radius: 0;
4456 border-top-right-radius: 0;
4457}
4458.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4459 margin-bottom: 0;
4460 border-top-left-radius: 4px;
4461 border-top-right-radius: 4px;
4462 border-bottom-right-radius: 0;
4463 border-bottom-left-radius: 0;
4464}
4465.navbar-btn {
4466 margin-top: 8px;
4467 margin-bottom: 8px;
4468}
4469.navbar-btn.btn-sm {
4470 margin-top: 10px;
4471 margin-bottom: 10px;
4472}
4473.navbar-btn.btn-xs {
4474 margin-top: 14px;
4475 margin-bottom: 14px;
4476}
4477.navbar-text {
4478 margin-top: 15px;
4479 margin-bottom: 15px;
4480}
4481@media (min-width: 768px) {
4482 .navbar-text {
4483 float: left;
4484 margin-right: 15px;
4485 margin-left: 15px;
4486 }
4487}
4488@media (min-width: 768px) {
4489 .navbar-left {
4490 float: left !important;
4491 }
4492 .navbar-right {
4493 float: right !important;
4494 margin-right: -15px;
4495 }
4496 .navbar-right ~ .navbar-right {
4497 margin-right: 0;
4498 }
4499}
4500.navbar-default {
4501 background-color: #f8f8f8;
4502 border-color: #e7e7e7;
4503}
4504.navbar-default .navbar-brand {
4505 color: #777;
4506}
4507.navbar-default .navbar-brand:hover,
4508.navbar-default .navbar-brand:focus {
4509 color: #5e5e5e;
4510 background-color: transparent;
4511}
4512.navbar-default .navbar-text {
4513 color: #777;
4514}
4515.navbar-default .navbar-nav > li > a {
4516 color: #777;
4517}
4518.navbar-default .navbar-nav > li > a:hover,
4519.navbar-default .navbar-nav > li > a:focus {
4520 color: #333;
4521 background-color: transparent;
4522}
4523.navbar-default .navbar-nav > .active > a,
4524.navbar-default .navbar-nav > .active > a:hover,
4525.navbar-default .navbar-nav > .active > a:focus {
4526 color: #555;
4527 background-color: #e7e7e7;
4528}
4529.navbar-default .navbar-nav > .disabled > a,
4530.navbar-default .navbar-nav > .disabled > a:hover,
4531.navbar-default .navbar-nav > .disabled > a:focus {
4532 color: #ccc;
4533 background-color: transparent;
4534}
4535.navbar-default .navbar-toggle {
4536 border-color: #ddd;
4537}
4538.navbar-default .navbar-toggle:hover,
4539.navbar-default .navbar-toggle:focus {
4540 background-color: #ddd;
4541}
4542.navbar-default .navbar-toggle .icon-bar {
4543 background-color: #888;
4544}
4545.navbar-default .navbar-collapse,
4546.navbar-default .navbar-form {
4547 border-color: #e7e7e7;
4548}
4549.navbar-default .navbar-nav > .open > a,
4550.navbar-default .navbar-nav > .open > a:hover,
4551.navbar-default .navbar-nav > .open > a:focus {
4552 color: #555;
4553 background-color: #e7e7e7;
4554}
4555@media (max-width: 767px) {
4556 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4557 color: #777;
4558 }
4559 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4560 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4561 color: #333;
4562 background-color: transparent;
4563 }
4564 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4565 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4566 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4567 color: #555;
4568 background-color: #e7e7e7;
4569 }
4570 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4571 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4572 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4573 color: #ccc;
4574 background-color: transparent;
4575 }
4576}
4577.navbar-default .navbar-link {
4578 color: #777;
4579}
4580.navbar-default .navbar-link:hover {
4581 color: #333;
4582}
4583.navbar-default .btn-link {
4584 color: #777;
4585}
4586.navbar-default .btn-link:hover,
4587.navbar-default .btn-link:focus {
4588 color: #333;
4589}
4590.navbar-default .btn-link[disabled]:hover,
4591fieldset[disabled] .navbar-default .btn-link:hover,
4592.navbar-default .btn-link[disabled]:focus,
4593fieldset[disabled] .navbar-default .btn-link:focus {
4594 color: #ccc;
4595}
4596.navbar-inverse {
4597 background-color: #222;
4598 border-color: #080808;
4599}
4600.navbar-inverse .navbar-brand {
4601 color: #9d9d9d;
4602}
4603.navbar-inverse .navbar-brand:hover,
4604.navbar-inverse .navbar-brand:focus {
4605 color: #fff;
4606 background-color: transparent;
4607}
4608.navbar-inverse .navbar-text {
4609 color: #9d9d9d;
4610}
4611.navbar-inverse .navbar-nav > li > a {
4612 color: #9d9d9d;
4613}
4614.navbar-inverse .navbar-nav > li > a:hover,
4615.navbar-inverse .navbar-nav > li > a:focus {
4616 color: #fff;
4617 background-color: transparent;
4618}
4619.navbar-inverse .navbar-nav > .active > a,
4620.navbar-inverse .navbar-nav > .active > a:hover,
4621.navbar-inverse .navbar-nav > .active > a:focus {
4622 color: #fff;
4623 background-color: #080808;
4624}
4625.navbar-inverse .navbar-nav > .disabled > a,
4626.navbar-inverse .navbar-nav > .disabled > a:hover,
4627.navbar-inverse .navbar-nav > .disabled > a:focus {
4628 color: #444;
4629 background-color: transparent;
4630}
4631.navbar-inverse .navbar-toggle {
4632 border-color: #333;
4633}
4634.navbar-inverse .navbar-toggle:hover,
4635.navbar-inverse .navbar-toggle:focus {
4636 background-color: #333;
4637}
4638.navbar-inverse .navbar-toggle .icon-bar {
4639 background-color: #fff;
4640}
4641.navbar-inverse .navbar-collapse,
4642.navbar-inverse .navbar-form {
4643 border-color: #101010;
4644}
4645.navbar-inverse .navbar-nav > .open > a,
4646.navbar-inverse .navbar-nav > .open > a:hover,
4647.navbar-inverse .navbar-nav > .open > a:focus {
4648 color: #fff;
4649 background-color: #080808;
4650}
4651@media (max-width: 767px) {
4652 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4653 border-color: #080808;
4654 }
4655 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4656 background-color: #080808;
4657 }
4658 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4659 color: #9d9d9d;
4660 }
4661 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4662 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4663 color: #fff;
4664 background-color: transparent;
4665 }
4666 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4667 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4668 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4669 color: #fff;
4670 background-color: #080808;
4671 }
4672 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4673 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4674 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4675 color: #444;
4676 background-color: transparent;
4677 }
4678}
4679.navbar-inverse .navbar-link {
4680 color: #9d9d9d;
4681}
4682.navbar-inverse .navbar-link:hover {
4683 color: #fff;
4684}
4685.navbar-inverse .btn-link {
4686 color: #9d9d9d;
4687}
4688.navbar-inverse .btn-link:hover,
4689.navbar-inverse .btn-link:focus {
4690 color: #fff;
4691}
4692.navbar-inverse .btn-link[disabled]:hover,
4693fieldset[disabled] .navbar-inverse .btn-link:hover,
4694.navbar-inverse .btn-link[disabled]:focus,
4695fieldset[disabled] .navbar-inverse .btn-link:focus {
4696 color: #444;
4697}
4698.breadcrumb {
4699 padding: 8px 15px;
4700 margin-bottom: 20px;
4701 list-style: none;
4702 background-color: #f5f5f5;
4703 border-radius: 4px;
4704}
4705.breadcrumb > li {
4706 display: inline-block;
4707}
4708.breadcrumb > li + li:before {
4709 padding: 0 5px;
4710 color: #ccc;
4711 content: "/\00a0";
4712}
4713.breadcrumb > .active {
4714 color: #777;
4715}
4716.pagination {
4717 display: inline-block;
4718 padding-left: 0;
4719 margin: 20px 0;
4720 border-radius: 4px;
4721}
4722.pagination > li {
4723 display: inline;
4724}
4725.pagination > li > a,
4726.pagination > li > span {
4727 position: relative;
4728 float: left;
4729 padding: 6px 12px;
4730 margin-left: -1px;
4731 line-height: 1.42857143;
4732 color: #337ab7;
4733 text-decoration: none;
4734 background-color: #fff;
4735 border: 1px solid #ddd;
4736}
4737.pagination > li:first-child > a,
4738.pagination > li:first-child > span {
4739 margin-left: 0;
4740 border-top-left-radius: 4px;
4741 border-bottom-left-radius: 4px;
4742}
4743.pagination > li:last-child > a,
4744.pagination > li:last-child > span {
4745 border-top-right-radius: 4px;
4746 border-bottom-right-radius: 4px;
4747}
4748.pagination > li > a:hover,
4749.pagination > li > span:hover,
4750.pagination > li > a:focus,
4751.pagination > li > span:focus {
4752 z-index: 2;
4753 color: #23527c;
4754 background-color: #eee;
4755 border-color: #ddd;
4756}
4757.pagination > .active > a,
4758.pagination > .active > span,
4759.pagination > .active > a:hover,
4760.pagination > .active > span:hover,
4761.pagination > .active > a:focus,
4762.pagination > .active > span:focus {
4763 z-index: 3;
4764 color: #fff;
4765 cursor: default;
4766 background-color: #337ab7;
4767 border-color: #337ab7;
4768}
4769.pagination > .disabled > span,
4770.pagination > .disabled > span:hover,
4771.pagination > .disabled > span:focus,
4772.pagination > .disabled > a,
4773.pagination > .disabled > a:hover,
4774.pagination > .disabled > a:focus {
4775 color: #777;
4776 cursor: not-allowed;
4777 background-color: #fff;
4778 border-color: #ddd;
4779}
4780.pagination-lg > li > a,
4781.pagination-lg > li > span {
4782 padding: 10px 16px;
4783 font-size: 18px;
4784 line-height: 1.3333333;
4785}
4786.pagination-lg > li:first-child > a,
4787.pagination-lg > li:first-child > span {
4788 border-top-left-radius: 6px;
4789 border-bottom-left-radius: 6px;
4790}
4791.pagination-lg > li:last-child > a,
4792.pagination-lg > li:last-child > span {
4793 border-top-right-radius: 6px;
4794 border-bottom-right-radius: 6px;
4795}
4796.pagination-sm > li > a,
4797.pagination-sm > li > span {
4798 padding: 5px 10px;
4799 font-size: 12px;
4800 line-height: 1.5;
4801}
4802.pagination-sm > li:first-child > a,
4803.pagination-sm > li:first-child > span {
4804 border-top-left-radius: 3px;
4805 border-bottom-left-radius: 3px;
4806}
4807.pagination-sm > li:last-child > a,
4808.pagination-sm > li:last-child > span {
4809 border-top-right-radius: 3px;
4810 border-bottom-right-radius: 3px;
4811}
4812.pager {
4813 padding-left: 0;
4814 margin: 20px 0;
4815 text-align: center;
4816 list-style: none;
4817}
4818.pager li {
4819 display: inline;
4820}
4821.pager li > a,
4822.pager li > span {
4823 display: inline-block;
4824 padding: 5px 14px;
4825 background-color: #fff;
4826 border: 1px solid #ddd;
4827 border-radius: 15px;
4828}
4829.pager li > a:hover,
4830.pager li > a:focus {
4831 text-decoration: none;
4832 background-color: #eee;
4833}
4834.pager .next > a,
4835.pager .next > span {
4836 float: right;
4837}
4838.pager .previous > a,
4839.pager .previous > span {
4840 float: left;
4841}
4842.pager .disabled > a,
4843.pager .disabled > a:hover,
4844.pager .disabled > a:focus,
4845.pager .disabled > span {
4846 color: #777;
4847 cursor: not-allowed;
4848 background-color: #fff;
4849}
4850.label {
4851 display: inline;
4852 padding: .2em .6em .3em;
4853 font-size: 75%;
4854 font-weight: bold;
4855 line-height: 1;
4856 color: #fff;
4857 text-align: center;
4858 white-space: nowrap;
4859 vertical-align: baseline;
4860 border-radius: .25em;
4861}
4862a.label:hover,
4863a.label:focus {
4864 color: #fff;
4865 text-decoration: none;
4866 cursor: pointer;
4867}
4868.label:empty {
4869 display: none;
4870}
4871.btn .label {
4872 position: relative;
4873 top: -1px;
4874}
4875.label-default {
4876 background-color: #777;
4877}
4878.label-default[href]:hover,
4879.label-default[href]:focus {
4880 background-color: #5e5e5e;
4881}
4882.label-primary {
4883 background-color: #337ab7;
4884}
4885.label-primary[href]:hover,
4886.label-primary[href]:focus {
4887 background-color: #286090;
4888}
4889.label-success {
4890 background-color: #5cb85c;
4891}
4892.label-success[href]:hover,
4893.label-success[href]:focus {
4894 background-color: #449d44;
4895}
4896.label-info {
4897 background-color: #5bc0de;
4898}
4899.label-info[href]:hover,
4900.label-info[href]:focus {
4901 background-color: #31b0d5;
4902}
4903.label-warning {
4904 background-color: #f0ad4e;
4905}
4906.label-warning[href]:hover,
4907.label-warning[href]:focus {
4908 background-color: #ec971f;
4909}
4910.label-danger {
4911 background-color: #d9534f;
4912}
4913.label-danger[href]:hover,
4914.label-danger[href]:focus {
4915 background-color: #c9302c;
4916}
4917.badge {
4918 display: inline-block;
4919 min-width: 10px;
4920 padding: 3px 7px;
4921 font-size: 12px;
4922 font-weight: bold;
4923 line-height: 1;
4924 color: #fff;
4925 text-align: center;
4926 white-space: nowrap;
4927 vertical-align: middle;
4928 background-color: #777;
4929 border-radius: 10px;
4930}
4931.badge:empty {
4932 display: none;
4933}
4934.btn .badge {
4935 position: relative;
4936 top: -1px;
4937}
4938.btn-xs .badge,
4939.btn-group-xs > .btn .badge {
4940 top: 0;
4941 padding: 1px 5px;
4942}
4943a.badge:hover,
4944a.badge:focus {
4945 color: #fff;
4946 text-decoration: none;
4947 cursor: pointer;
4948}
4949.list-group-item.active > .badge,
4950.nav-pills > .active > a > .badge {
4951 color: #337ab7;
4952 background-color: #fff;
4953}
4954.list-group-item > .badge {
4955 float: right;
4956}
4957.list-group-item > .badge + .badge {
4958 margin-right: 5px;
4959}
4960.nav-pills > li > a > .badge {
4961 margin-left: 3px;
4962}
4963.jumbotron {
4964 padding-top: 30px;
4965 padding-bottom: 30px;
4966 margin-bottom: 30px;
4967 color: inherit;
4968 background-color: #eee;
4969}
4970.jumbotron h1,
4971.jumbotron .h1 {
4972 color: inherit;
4973}
4974.jumbotron p {
4975 margin-bottom: 15px;
4976 font-size: 21px;
4977 font-weight: 200;
4978}
4979.jumbotron > hr {
4980 border-top-color: #d5d5d5;
4981}
4982.container .jumbotron,
4983.container-fluid .jumbotron {
4984 padding-right: 15px;
4985 padding-left: 15px;
4986 border-radius: 6px;
4987}
4988.jumbotron .container {
4989 max-width: 100%;
4990}
4991@media screen and (min-width: 768px) {
4992 .jumbotron {
4993 padding-top: 48px;
4994 padding-bottom: 48px;
4995 }
4996 .container .jumbotron,
4997 .container-fluid .jumbotron {
4998 padding-right: 60px;
4999 padding-left: 60px;
5000 }
5001 .jumbotron h1,
5002 .jumbotron .h1 {
5003 font-size: 63px;
5004 }
5005}
5006.thumbnail {
5007 display: block;
5008 padding: 4px;
5009 margin-bottom: 20px;
5010 line-height: 1.42857143;
5011 background-color: #fff;
5012 border: 1px solid #ddd;
5013 border-radius: 4px;
5014 -webkit-transition: border .2s ease-in-out;
5015 -o-transition: border .2s ease-in-out;
5016 transition: border .2s ease-in-out;
5017}
5018.thumbnail > img,
5019.thumbnail a > img {
5020 margin-right: auto;
5021 margin-left: auto;
5022}
5023a.thumbnail:hover,
5024a.thumbnail:focus,
5025a.thumbnail.active {
5026 border-color: #337ab7;
5027}
5028.thumbnail .caption {
5029 padding: 9px;
5030 color: #333;
5031}
5032.alert {
5033 padding: 15px;
5034 margin-bottom: 20px;
5035 border: 1px solid transparent;
5036 border-radius: 4px;
5037}
5038.alert h4 {
5039 margin-top: 0;
5040 color: inherit;
5041}
5042.alert .alert-link {
5043 font-weight: bold;
5044}
5045.alert > p,
5046.alert > ul {
5047 margin-bottom: 0;
5048}
5049.alert > p + p {
5050 margin-top: 5px;
5051}
5052.alert-dismissable,
5053.alert-dismissible {
5054 padding-right: 35px;
5055}
5056.alert-dismissable .close,
5057.alert-dismissible .close {
5058 position: relative;
5059 top: -2px;
5060 right: -21px;
5061 color: inherit;
5062}
5063.alert-success {
5064 color: #3c763d;
5065 background-color: #dff0d8;
5066 border-color: #d6e9c6;
5067}
5068.alert-success hr {
5069 border-top-color: #c9e2b3;
5070}
5071.alert-success .alert-link {
5072 color: #2b542c;
5073}
5074.alert-info {
5075 color: #31708f;
5076 background-color: #d9edf7;
5077 border-color: #bce8f1;
5078}
5079.alert-info hr {
5080 border-top-color: #a6e1ec;
5081}
5082.alert-info .alert-link {
5083 color: #245269;
5084}
5085.alert-warning {
5086 color: #8a6d3b;
5087 background-color: #fcf8e3;
5088 border-color: #faebcc;
5089}
5090.alert-warning hr {
5091 border-top-color: #f7e1b5;
5092}
5093.alert-warning .alert-link {
5094 color: #66512c;
5095}
5096.alert-danger {
5097 color: #a94442;
5098 background-color: #f2dede;
5099 border-color: #ebccd1;
5100}
5101.alert-danger hr {
5102 border-top-color: #e4b9c0;
5103}
5104.alert-danger .alert-link {
5105 color: #843534;
5106}
5107@-webkit-keyframes progress-bar-stripes {
5108 from {
5109 background-position: 40px 0;
5110 }
5111 to {
5112 background-position: 0 0;
5113 }
5114}
5115@-o-keyframes progress-bar-stripes {
5116 from {
5117 background-position: 40px 0;
5118 }
5119 to {
5120 background-position: 0 0;
5121 }
5122}
5123@keyframes progress-bar-stripes {
5124 from {
5125 background-position: 40px 0;
5126 }
5127 to {
5128 background-position: 0 0;
5129 }
5130}
5131.progress {
5132 height: 20px;
5133 margin-bottom: 20px;
5134 overflow: hidden;
5135 background-color: #f5f5f5;
5136 border-radius: 4px;
5137 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
5138 box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
5139}
5140.progress-bar {
5141 float: left;
5142 width: 0;
5143 height: 100%;
5144 font-size: 12px;
5145 line-height: 20px;
5146 color: #fff;
5147 text-align: center;
5148 background-color: #337ab7;
5149 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
5150 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
5151 -webkit-transition: width .6s ease;
5152 -o-transition: width .6s ease;
5153 transition: width .6s ease;
5154}
5155.progress-striped .progress-bar,
5156.progress-bar-striped {
5157 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);
5158 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);
5159 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);
5160 -webkit-background-size: 40px 40px;
5161 background-size: 40px 40px;
5162}
5163.progress.active .progress-bar,
5164.progress-bar.active {
5165 -webkit-animation: progress-bar-stripes 2s linear infinite;
5166 -o-animation: progress-bar-stripes 2s linear infinite;
5167 animation: progress-bar-stripes 2s linear infinite;
5168}
5169.progress-bar-success {
5170 background-color: #5cb85c;
5171}
5172.progress-striped .progress-bar-success {
5173 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);
5174 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);
5175 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);
5176}
5177.progress-bar-info {
5178 background-color: #5bc0de;
5179}
5180.progress-striped .progress-bar-info {
5181 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);
5182 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);
5183 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);
5184}
5185.progress-bar-warning {
5186 background-color: #f0ad4e;
5187}
5188.progress-striped .progress-bar-warning {
5189 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);
5190 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);
5191 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);
5192}
5193.progress-bar-danger {
5194 background-color: #d9534f;
5195}
5196.progress-striped .progress-bar-danger {
5197 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);
5198 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);
5199 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);
5200}
5201.media {
5202 margin-top: 15px;
5203}
5204.media:first-child {
5205 margin-top: 0;
5206}
5207.media,
5208.media-body {
5209 overflow: hidden;
5210 zoom: 1;
5211}
5212.media-body {
5213 width: 10000px;
5214}
5215.media-object {
5216 display: block;
5217}
5218.media-object.img-thumbnail {
5219 max-width: none;
5220}
5221.media-right,
5222.media > .pull-right {
5223 padding-left: 10px;
5224}
5225.media-left,
5226.media > .pull-left {
5227 padding-right: 10px;
5228}
5229.media-left,
5230.media-right,
5231.media-body {
5232 display: table-cell;
5233 vertical-align: top;
5234}
5235.media-middle {
5236 vertical-align: middle;
5237}
5238.media-bottom {
5239 vertical-align: bottom;
5240}
5241.media-heading {
5242 margin-top: 0;
5243 margin-bottom: 5px;
5244}
5245.media-list {
5246 padding-left: 0;
5247 list-style: none;
5248}
5249.list-group {
5250 padding-left: 0;
5251 margin-bottom: 20px;
5252}
5253.list-group-item {
5254 position: relative;
5255 display: block;
5256 padding: 10px 15px;
5257 margin-bottom: -1px;
5258 background-color: #fff;
5259 border: 1px solid #ddd;
5260}
5261.list-group-item:first-child {
5262 border-top-left-radius: 4px;
5263 border-top-right-radius: 4px;
5264}
5265.list-group-item:last-child {
5266 margin-bottom: 0;
5267 border-bottom-right-radius: 4px;
5268 border-bottom-left-radius: 4px;
5269}
5270a.list-group-item,
5271button.list-group-item {
5272 color: #555;
5273}
5274a.list-group-item .list-group-item-heading,
5275button.list-group-item .list-group-item-heading {
5276 color: #333;
5277}
5278a.list-group-item:hover,
5279button.list-group-item:hover,
5280a.list-group-item:focus,
5281button.list-group-item:focus {
5282 color: #555;
5283 text-decoration: none;
5284 background-color: #f5f5f5;
5285}
5286button.list-group-item {
5287 width: 100%;
5288 text-align: left;
5289}
5290.list-group-item.disabled,
5291.list-group-item.disabled:hover,
5292.list-group-item.disabled:focus {
5293 color: #777;
5294 cursor: not-allowed;
5295 background-color: #eee;
5296}
5297.list-group-item.disabled .list-group-item-heading,
5298.list-group-item.disabled:hover .list-group-item-heading,
5299.list-group-item.disabled:focus .list-group-item-heading {
5300 color: inherit;
5301}
5302.list-group-item.disabled .list-group-item-text,
5303.list-group-item.disabled:hover .list-group-item-text,
5304.list-group-item.disabled:focus .list-group-item-text {
5305 color: #777;
5306}
5307.list-group-item.active,
5308.list-group-item.active:hover,
5309.list-group-item.active:focus {
5310 z-index: 2;
5311 color: #fff;
5312 background-color: #337ab7;
5313 border-color: #337ab7;
5314}
5315.list-group-item.active .list-group-item-heading,
5316.list-group-item.active:hover .list-group-item-heading,
5317.list-group-item.active:focus .list-group-item-heading,
5318.list-group-item.active .list-group-item-heading > small,
5319.list-group-item.active:hover .list-group-item-heading > small,
5320.list-group-item.active:focus .list-group-item-heading > small,
5321.list-group-item.active .list-group-item-heading > .small,
5322.list-group-item.active:hover .list-group-item-heading > .small,
5323.list-group-item.active:focus .list-group-item-heading > .small {
5324 color: inherit;
5325}
5326.list-group-item.active .list-group-item-text,
5327.list-group-item.active:hover .list-group-item-text,
5328.list-group-item.active:focus .list-group-item-text {
5329 color: #c7ddef;
5330}
5331.list-group-item-success {
5332 color: #3c763d;
5333 background-color: #dff0d8;
5334}
5335a.list-group-item-success,
5336button.list-group-item-success {
5337 color: #3c763d;
5338}
5339a.list-group-item-success .list-group-item-heading,
5340button.list-group-item-success .list-group-item-heading {
5341 color: inherit;
5342}
5343a.list-group-item-success:hover,
5344button.list-group-item-success:hover,
5345a.list-group-item-success:focus,
5346button.list-group-item-success:focus {
5347 color: #3c763d;
5348 background-color: #d0e9c6;
5349}
5350a.list-group-item-success.active,
5351button.list-group-item-success.active,
5352a.list-group-item-success.active:hover,
5353button.list-group-item-success.active:hover,
5354a.list-group-item-success.active:focus,
5355button.list-group-item-success.active:focus {
5356 color: #fff;
5357 background-color: #3c763d;
5358 border-color: #3c763d;
5359}
5360.list-group-item-info {
5361 color: #31708f;
5362 background-color: #d9edf7;
5363}
5364a.list-group-item-info,
5365button.list-group-item-info {
5366 color: #31708f;
5367}
5368a.list-group-item-info .list-group-item-heading,
5369button.list-group-item-info .list-group-item-heading {
5370 color: inherit;
5371}
5372a.list-group-item-info:hover,
5373button.list-group-item-info:hover,
5374a.list-group-item-info:focus,
5375button.list-group-item-info:focus {
5376 color: #31708f;
5377 background-color: #c4e3f3;
5378}
5379a.list-group-item-info.active,
5380button.list-group-item-info.active,
5381a.list-group-item-info.active:hover,
5382button.list-group-item-info.active:hover,
5383a.list-group-item-info.active:focus,
5384button.list-group-item-info.active:focus {
5385 color: #fff;
5386 background-color: #31708f;
5387 border-color: #31708f;
5388}
5389.list-group-item-warning {
5390 color: #8a6d3b;
5391 background-color: #fcf8e3;
5392}
5393a.list-group-item-warning,
5394button.list-group-item-warning {
5395 color: #8a6d3b;
5396}
5397a.list-group-item-warning .list-group-item-heading,
5398button.list-group-item-warning .list-group-item-heading {
5399 color: inherit;
5400}
5401a.list-group-item-warning:hover,
5402button.list-group-item-warning:hover,
5403a.list-group-item-warning:focus,
5404button.list-group-item-warning:focus {
5405 color: #8a6d3b;
5406 background-color: #faf2cc;
5407}
5408a.list-group-item-warning.active,
5409button.list-group-item-warning.active,
5410a.list-group-item-warning.active:hover,
5411button.list-group-item-warning.active:hover,
5412a.list-group-item-warning.active:focus,
5413button.list-group-item-warning.active:focus {
5414 color: #fff;
5415 background-color: #8a6d3b;
5416 border-color: #8a6d3b;
5417}
5418.list-group-item-danger {
5419 color: #a94442;
5420 background-color: #f2dede;
5421}
5422a.list-group-item-danger,
5423button.list-group-item-danger {
5424 color: #a94442;
5425}
5426a.list-group-item-danger .list-group-item-heading,
5427button.list-group-item-danger .list-group-item-heading {
5428 color: inherit;
5429}
5430a.list-group-item-danger:hover,
5431button.list-group-item-danger:hover,
5432a.list-group-item-danger:focus,
5433button.list-group-item-danger:focus {
5434 color: #a94442;
5435 background-color: #ebcccc;
5436}
5437a.list-group-item-danger.active,
5438button.list-group-item-danger.active,
5439a.list-group-item-danger.active:hover,
5440button.list-group-item-danger.active:hover,
5441a.list-group-item-danger.active:focus,
5442button.list-group-item-danger.active:focus {
5443 color: #fff;
5444 background-color: #a94442;
5445 border-color: #a94442;
5446}
5447.list-group-item-heading {
5448 margin-top: 0;
5449 margin-bottom: 5px;
5450}
5451.list-group-item-text {
5452 margin-bottom: 0;
5453 line-height: 1.3;
5454}
5455.panel {
5456 margin-bottom: 20px;
5457 background-color: #fff;
5458 border: 1px solid transparent;
5459 border-radius: 4px;
5460 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5461 box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
5462}
5463.panel-body {
5464 padding: 15px;
5465}
5466.panel-heading {
5467 padding: 10px 15px;
5468 border-bottom: 1px solid transparent;
5469 border-top-left-radius: 3px;
5470 border-top-right-radius: 3px;
5471}
5472.panel-heading > .dropdown .dropdown-toggle {
5473 color: inherit;
5474}
5475.panel-title {
5476 margin-top: 0;
5477 margin-bottom: 0;
5478 font-size: 16px;
5479 color: inherit;
5480}
5481.panel-title > a,
5482.panel-title > small,
5483.panel-title > .small,
5484.panel-title > small > a,
5485.panel-title > .small > a {
5486 color: inherit;
5487}
5488.panel-footer {
5489 padding: 10px 15px;
5490 background-color: #f5f5f5;
5491 border-top: 1px solid #ddd;
5492 border-bottom-right-radius: 3px;
5493 border-bottom-left-radius: 3px;
5494}
5495.panel > .list-group,
5496.panel > .panel-collapse > .list-group {
5497 margin-bottom: 0;
5498}
5499.panel > .list-group .list-group-item,
5500.panel > .panel-collapse > .list-group .list-group-item {
5501 border-width: 1px 0;
5502 border-radius: 0;
5503}
5504.panel > .list-group:first-child .list-group-item:first-child,
5505.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5506 border-top: 0;
5507 border-top-left-radius: 3px;
5508 border-top-right-radius: 3px;
5509}
5510.panel > .list-group:last-child .list-group-item:last-child,
5511.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5512 border-bottom: 0;
5513 border-bottom-right-radius: 3px;
5514 border-bottom-left-radius: 3px;
5515}
5516.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
5517 border-top-left-radius: 0;
5518 border-top-right-radius: 0;
5519}
5520.panel-heading + .list-group .list-group-item:first-child {
5521 border-top-width: 0;
5522}
5523.list-group + .panel-footer {
5524 border-top-width: 0;
5525}
5526.panel > .table,
5527.panel > .table-responsive > .table,
5528.panel > .panel-collapse > .table {
5529 margin-bottom: 0;
5530}
5531.panel > .table caption,
5532.panel > .table-responsive > .table caption,
5533.panel > .panel-collapse > .table caption {
5534 padding-right: 15px;
5535 padding-left: 15px;
5536}
5537.panel > .table:first-child,
5538.panel > .table-responsive:first-child > .table:first-child {
5539 border-top-left-radius: 3px;
5540 border-top-right-radius: 3px;
5541}
5542.panel > .table:first-child > thead:first-child > tr:first-child,
5543.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5544.panel > .table:first-child > tbody:first-child > tr:first-child,
5545.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5546 border-top-left-radius: 3px;
5547 border-top-right-radius: 3px;
5548}
5549.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5550.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5551.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5552.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5553.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5554.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5555.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5556.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5557 border-top-left-radius: 3px;
5558}
5559.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5560.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5561.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5562.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5563.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5564.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5565.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5566.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5567 border-top-right-radius: 3px;
5568}
5569.panel > .table:last-child,
5570.panel > .table-responsive:last-child > .table:last-child {
5571 border-bottom-right-radius: 3px;
5572 border-bottom-left-radius: 3px;
5573}
5574.panel > .table:last-child > tbody:last-child > tr:last-child,
5575.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5576.panel > .table:last-child > tfoot:last-child > tr:last-child,
5577.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5578 border-bottom-right-radius: 3px;
5579 border-bottom-left-radius: 3px;
5580}
5581.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5582.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5583.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5584.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5585.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5586.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5587.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5588.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5589 border-bottom-left-radius: 3px;
5590}
5591.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5592.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5593.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5594.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5595.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5596.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5597.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5598.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5599 border-bottom-right-radius: 3px;
5600}
5601.panel > .panel-body + .table,
5602.panel > .panel-body + .table-responsive,
5603.panel > .table + .panel-body,
5604.panel > .table-responsive + .panel-body {
5605 border-top: 1px solid #ddd;
5606}
5607.panel > .table > tbody:first-child > tr:first-child th,
5608.panel > .table > tbody:first-child > tr:first-child td {
5609 border-top: 0;
5610}
5611.panel > .table-bordered,
5612.panel > .table-responsive > .table-bordered {
5613 border: 0;
5614}
5615.panel > .table-bordered > thead > tr > th:first-child,
5616.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5617.panel > .table-bordered > tbody > tr > th:first-child,
5618.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5619.panel > .table-bordered > tfoot > tr > th:first-child,
5620.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5621.panel > .table-bordered > thead > tr > td:first-child,
5622.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5623.panel > .table-bordered > tbody > tr > td:first-child,
5624.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5625.panel > .table-bordered > tfoot > tr > td:first-child,
5626.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5627 border-left: 0;
5628}
5629.panel > .table-bordered > thead > tr > th:last-child,
5630.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5631.panel > .table-bordered > tbody > tr > th:last-child,
5632.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5633.panel > .table-bordered > tfoot > tr > th:last-child,
5634.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5635.panel > .table-bordered > thead > tr > td:last-child,
5636.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5637.panel > .table-bordered > tbody > tr > td:last-child,
5638.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5639.panel > .table-bordered > tfoot > tr > td:last-child,
5640.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5641 border-right: 0;
5642}
5643.panel > .table-bordered > thead > tr:first-child > td,
5644.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5645.panel > .table-bordered > tbody > tr:first-child > td,
5646.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5647.panel > .table-bordered > thead > tr:first-child > th,
5648.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5649.panel > .table-bordered > tbody > tr:first-child > th,
5650.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5651 border-bottom: 0;
5652}
5653.panel > .table-bordered > tbody > tr:last-child > td,
5654.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5655.panel > .table-bordered > tfoot > tr:last-child > td,
5656.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5657.panel > .table-bordered > tbody > tr:last-child > th,
5658.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5659.panel > .table-bordered > tfoot > tr:last-child > th,
5660.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5661 border-bottom: 0;
5662}
5663.panel > .table-responsive {
5664 margin-bottom: 0;
5665 border: 0;
5666}
5667.panel-group {
5668 margin-bottom: 20px;
5669}
5670.panel-group .panel {
5671 margin-bottom: 0;
5672 border-radius: 4px;
5673}
5674.panel-group .panel + .panel {
5675 margin-top: 5px;
5676}
5677.panel-group .panel-heading {
5678 border-bottom: 0;
5679}
5680.panel-group .panel-heading + .panel-collapse > .panel-body,
5681.panel-group .panel-heading + .panel-collapse > .list-group {
5682 border-top: 1px solid #ddd;
5683}
5684.panel-group .panel-footer {
5685 border-top: 0;
5686}
5687.panel-group .panel-footer + .panel-collapse .panel-body {
5688 border-bottom: 1px solid #ddd;
5689}
5690.panel-default {
5691 border-color: #ddd;
5692}
5693.panel-default > .panel-heading {
5694 color: #333;
5695 background-color: #f5f5f5;
5696 border-color: #ddd;
5697}
5698.panel-default > .panel-heading + .panel-collapse > .panel-body {
5699 border-top-color: #ddd;
5700}
5701.panel-default > .panel-heading .badge {
5702 color: #f5f5f5;
5703 background-color: #333;
5704}
5705.panel-default > .panel-footer + .panel-collapse > .panel-body {
5706 border-bottom-color: #ddd;
5707}
5708.panel-primary {
5709 border-color: #337ab7;
5710}
5711.panel-primary > .panel-heading {
5712 color: #fff;
5713 background-color: #337ab7;
5714 border-color: #337ab7;
5715}
5716.panel-primary > .panel-heading + .panel-collapse > .panel-body {
5717 border-top-color: #337ab7;
5718}
5719.panel-primary > .panel-heading .badge {
5720 color: #337ab7;
5721 background-color: #fff;
5722}
5723.panel-primary > .panel-footer + .panel-collapse > .panel-body {
5724 border-bottom-color: #337ab7;
5725}
5726.panel-success {
5727 border-color: #d6e9c6;
5728}
5729.panel-success > .panel-heading {
5730 color: #3c763d;
5731 background-color: #dff0d8;
5732 border-color: #d6e9c6;
5733}
5734.panel-success > .panel-heading + .panel-collapse > .panel-body {
5735 border-top-color: #d6e9c6;
5736}
5737.panel-success > .panel-heading .badge {
5738 color: #dff0d8;
5739 background-color: #3c763d;
5740}
5741.panel-success > .panel-footer + .panel-collapse > .panel-body {
5742 border-bottom-color: #d6e9c6;
5743}
5744.panel-info {
5745 border-color: #bce8f1;
5746}
5747.panel-info > .panel-heading {
5748 color: #31708f;
5749 background-color: #d9edf7;
5750 border-color: #bce8f1;
5751}
5752.panel-info > .panel-heading + .panel-collapse > .panel-body {
5753 border-top-color: #bce8f1;
5754}
5755.panel-info > .panel-heading .badge {
5756 color: #d9edf7;
5757 background-color: #31708f;
5758}
5759.panel-info > .panel-footer + .panel-collapse > .panel-body {
5760 border-bottom-color: #bce8f1;
5761}
5762.panel-warning {
5763 border-color: #faebcc;
5764}
5765.panel-warning > .panel-heading {
5766 color: #8a6d3b;
5767 background-color: #fcf8e3;
5768 border-color: #faebcc;
5769}
5770.panel-warning > .panel-heading + .panel-collapse > .panel-body {
5771 border-top-color: #faebcc;
5772}
5773.panel-warning > .panel-heading .badge {
5774 color: #fcf8e3;
5775 background-color: #8a6d3b;
5776}
5777.panel-warning > .panel-footer + .panel-collapse > .panel-body {
5778 border-bottom-color: #faebcc;
5779}
5780.panel-danger {
5781 border-color: #ebccd1;
5782}
5783.panel-danger > .panel-heading {
5784 color: #a94442;
5785 background-color: #f2dede;
5786 border-color: #ebccd1;
5787}
5788.panel-danger > .panel-heading + .panel-collapse > .panel-body {
5789 border-top-color: #ebccd1;
5790}
5791.panel-danger > .panel-heading .badge {
5792 color: #f2dede;
5793 background-color: #a94442;
5794}
5795.panel-danger > .panel-footer + .panel-collapse > .panel-body {
5796 border-bottom-color: #ebccd1;
5797}
5798.embed-responsive {
5799 position: relative;
5800 display: block;
5801 height: 0;
5802 padding: 0;
5803 overflow: hidden;
5804}
5805.embed-responsive .embed-responsive-item,
5806.embed-responsive iframe,
5807.embed-responsive embed,
5808.embed-responsive object,
5809.embed-responsive video {
5810 position: absolute;
5811 top: 0;
5812 bottom: 0;
5813 left: 0;
5814 width: 100%;
5815 height: 100%;
5816 border: 0;
5817}
5818.embed-responsive-16by9 {
5819 padding-bottom: 56.25%;
5820}
5821.embed-responsive-4by3 {
5822 padding-bottom: 75%;
5823}
5824.well {
5825 min-height: 20px;
5826 padding: 19px;
5827 margin-bottom: 20px;
5828 background-color: #f5f5f5;
5829 border: 1px solid #e3e3e3;
5830 border-radius: 4px;
5831 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5832 box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
5833}
5834.well blockquote {
5835 border-color: #ddd;
5836 border-color: rgba(0, 0, 0, .15);
5837}
5838.well-lg {
5839 padding: 24px;
5840 border-radius: 6px;
5841}
5842.well-sm {
5843 padding: 9px;
5844 border-radius: 3px;
5845}
5846.close {
5847 float: right;
5848 font-size: 21px;
5849 font-weight: bold;
5850 line-height: 1;
5851 color: #000;
5852 text-shadow: 0 1px 0 #fff;
5853 filter: alpha(opacity=20);
5854 opacity: .2;
5855}
5856.close:hover,
5857.close:focus {
5858 color: #000;
5859 text-decoration: none;
5860 cursor: pointer;
5861 filter: alpha(opacity=50);
5862 opacity: .5;
5863}
5864button.close {
5865 -webkit-appearance: none;
5866 padding: 0;
5867 cursor: pointer;
5868 background: transparent;
5869 border: 0;
5870}
5871.modal-open {
5872 overflow: hidden;
5873}
5874.modal {
5875 position: fixed;
5876 top: 0;
5877 right: 0;
5878 bottom: 0;
5879 left: 0;
5880 z-index: 1050;
5881 display: none;
5882 overflow: hidden;
5883 -webkit-overflow-scrolling: touch;
5884 outline: 0;
5885}
5886.modal.fade .modal-dialog {
5887 -webkit-transition: -webkit-transform .3s ease-out;
5888 -o-transition: -o-transform .3s ease-out;
5889 transition: transform .3s ease-out;
5890 -webkit-transform: translate(0, -25%);
5891 -ms-transform: translate(0, -25%);
5892 -o-transform: translate(0, -25%);
5893 transform: translate(0, -25%);
5894}
5895.modal.in .modal-dialog {
5896 -webkit-transform: translate(0, 0);
5897 -ms-transform: translate(0, 0);
5898 -o-transform: translate(0, 0);
5899 transform: translate(0, 0);
5900}
5901.modal-open .modal {
5902 overflow-x: hidden;
5903 overflow-y: auto;
5904}
5905.modal-dialog {
5906 position: relative;
5907 width: auto;
5908 margin: 10px;
5909}
5910.modal-content {
5911 position: relative;
5912 background-color: #fff;
5913 -webkit-background-clip: padding-box;
5914 background-clip: padding-box;
5915 border: 1px solid #999;
5916 border: 1px solid rgba(0, 0, 0, .2);
5917 border-radius: 6px;
5918 outline: 0;
5919 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5920 box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
5921}
5922.modal-backdrop {
5923 position: fixed;
5924 top: 0;
5925 right: 0;
5926 bottom: 0;
5927 left: 0;
5928 z-index: 1040;
5929 background-color: #000;
5930}
5931.modal-backdrop.fade {
5932 filter: alpha(opacity=0);
5933 opacity: 0;
5934}
5935.modal-backdrop.in {
5936 filter: alpha(opacity=50);
5937 opacity: .5;
5938}
5939.modal-header {
5940 padding: 15px;
5941 border-bottom: 1px solid #e5e5e5;
5942}
5943.modal-header .close {
5944 margin-top: -2px;
5945}
5946.modal-title {
5947 margin: 0;
5948 line-height: 1.42857143;
5949}
5950.modal-body {
5951 position: relative;
5952 padding: 15px;
5953}
5954.modal-footer {
5955 padding: 15px;
5956 text-align: right;
5957 border-top: 1px solid #e5e5e5;
5958}
5959.modal-footer .btn + .btn {
5960 margin-bottom: 0;
5961 margin-left: 5px;
5962}
5963.modal-footer .btn-group .btn + .btn {
5964 margin-left: -1px;
5965}
5966.modal-footer .btn-block + .btn-block {
5967 margin-left: 0;
5968}
5969.modal-scrollbar-measure {
5970 position: absolute;
5971 top: -9999px;
5972 width: 50px;
5973 height: 50px;
5974 overflow: scroll;
5975}
5976@media (min-width: 768px) {
5977 .modal-dialog {
5978 width: 600px;
5979 margin: 30px auto;
5980 }
5981 .modal-content {
5982 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5983 box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
5984 }
5985 .modal-sm {
5986 width: 300px;
5987 }
5988}
5989@media (min-width: 992px) {
5990 .modal-lg {
5991 width: 900px;
5992 }
5993}
5994.tooltip {
5995 position: absolute;
5996 z-index: 1070;
5997 display: block;
5998 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5999 font-size: 12px;
6000 font-style: normal;
6001 font-weight: normal;
6002 line-height: 1.42857143;
6003 text-align: left;
6004 text-align: start;
6005 text-decoration: none;
6006 text-shadow: none;
6007 text-transform: none;
6008 letter-spacing: normal;
6009 word-break: normal;
6010 word-spacing: normal;
6011 word-wrap: normal;
6012 white-space: normal;
6013 filter: alpha(opacity=0);
6014 opacity: 0;
6015
6016 line-break: auto;
6017}
6018.tooltip.in {
6019 filter: alpha(opacity=90);
6020 opacity: .9;
6021}
6022.tooltip.top {
6023 padding: 5px 0;
6024 margin-top: -3px;
6025}
6026.tooltip.right {
6027 padding: 0 5px;
6028 margin-left: 3px;
6029}
6030.tooltip.bottom {
6031 padding: 5px 0;
6032 margin-top: 3px;
6033}
6034.tooltip.left {
6035 padding: 0 5px;
6036 margin-left: -3px;
6037}
6038.tooltip-inner {
6039 max-width: 200px;
6040 padding: 3px 8px;
6041 color: #fff;
6042 text-align: center;
6043 background-color: #000;
6044 border-radius: 4px;
6045}
6046.tooltip-arrow {
6047 position: absolute;
6048 width: 0;
6049 height: 0;
6050 border-color: transparent;
6051 border-style: solid;
6052}
6053.tooltip.top .tooltip-arrow {
6054 bottom: 0;
6055 left: 50%;
6056 margin-left: -5px;
6057 border-width: 5px 5px 0;
6058 border-top-color: #000;
6059}
6060.tooltip.top-left .tooltip-arrow {
6061 right: 5px;
6062 bottom: 0;
6063 margin-bottom: -5px;
6064 border-width: 5px 5px 0;
6065 border-top-color: #000;
6066}
6067.tooltip.top-right .tooltip-arrow {
6068 bottom: 0;
6069 left: 5px;
6070 margin-bottom: -5px;
6071 border-width: 5px 5px 0;
6072 border-top-color: #000;
6073}
6074.tooltip.right .tooltip-arrow {
6075 top: 50%;
6076 left: 0;
6077 margin-top: -5px;
6078 border-width: 5px 5px 5px 0;
6079 border-right-color: #000;
6080}
6081.tooltip.left .tooltip-arrow {
6082 top: 50%;
6083 right: 0;
6084 margin-top: -5px;
6085 border-width: 5px 0 5px 5px;
6086 border-left-color: #000;
6087}
6088.tooltip.bottom .tooltip-arrow {
6089 top: 0;
6090 left: 50%;
6091 margin-left: -5px;
6092 border-width: 0 5px 5px;
6093 border-bottom-color: #000;
6094}
6095.tooltip.bottom-left .tooltip-arrow {
6096 top: 0;
6097 right: 5px;
6098 margin-top: -5px;
6099 border-width: 0 5px 5px;
6100 border-bottom-color: #000;
6101}
6102.tooltip.bottom-right .tooltip-arrow {
6103 top: 0;
6104 left: 5px;
6105 margin-top: -5px;
6106 border-width: 0 5px 5px;
6107 border-bottom-color: #000;
6108}
6109.popover {
6110 position: absolute;
6111 top: 0;
6112 left: 0;
6113 z-index: 1060;
6114 display: none;
6115 max-width: 276px;
6116 padding: 1px;
6117 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6118 font-size: 14px;
6119 font-style: normal;
6120 font-weight: normal;
6121 line-height: 1.42857143;
6122 text-align: left;
6123 text-align: start;
6124 text-decoration: none;
6125 text-shadow: none;
6126 text-transform: none;
6127 letter-spacing: normal;
6128 word-break: normal;
6129 word-spacing: normal;
6130 word-wrap: normal;
6131 white-space: normal;
6132 background-color: #fff;
6133 -webkit-background-clip: padding-box;
6134 background-clip: padding-box;
6135 border: 1px solid #ccc;
6136 border: 1px solid rgba(0, 0, 0, .2);
6137 border-radius: 6px;
6138 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
6139 box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
6140
6141 line-break: auto;
6142}
6143.popover.top {
6144 margin-top: -10px;
6145}
6146.popover.right {
6147 margin-left: 10px;
6148}
6149.popover.bottom {
6150 margin-top: 10px;
6151}
6152.popover.left {
6153 margin-left: -10px;
6154}
6155.popover-title {
6156 padding: 8px 14px;
6157 margin: 0;
6158 font-size: 14px;
6159 background-color: #f7f7f7;
6160 border-bottom: 1px solid #ebebeb;
6161 border-radius: 5px 5px 0 0;
6162}
6163.popover-content {
6164 padding: 9px 14px;
6165}
6166.popover > .arrow,
6167.popover > .arrow:after {
6168 position: absolute;
6169 display: block;
6170 width: 0;
6171 height: 0;
6172 border-color: transparent;
6173 border-style: solid;
6174}
6175.popover > .arrow {
6176 border-width: 11px;
6177}
6178.popover > .arrow:after {
6179 content: "";
6180 border-width: 10px;
6181}
6182.popover.top > .arrow {
6183 bottom: -11px;
6184 left: 50%;
6185 margin-left: -11px;
6186 border-top-color: #999;
6187 border-top-color: rgba(0, 0, 0, .25);
6188 border-bottom-width: 0;
6189}
6190.popover.top > .arrow:after {
6191 bottom: 1px;
6192 margin-left: -10px;
6193 content: " ";
6194 border-top-color: #fff;
6195 border-bottom-width: 0;
6196}
6197.popover.right > .arrow {
6198 top: 50%;
6199 left: -11px;
6200 margin-top: -11px;
6201 border-right-color: #999;
6202 border-right-color: rgba(0, 0, 0, .25);
6203 border-left-width: 0;
6204}
6205.popover.right > .arrow:after {
6206 bottom: -10px;
6207 left: 1px;
6208 content: " ";
6209 border-right-color: #fff;
6210 border-left-width: 0;
6211}
6212.popover.bottom > .arrow {
6213 top: -11px;
6214 left: 50%;
6215 margin-left: -11px;
6216 border-top-width: 0;
6217 border-bottom-color: #999;
6218 border-bottom-color: rgba(0, 0, 0, .25);
6219}
6220.popover.bottom > .arrow:after {
6221 top: 1px;
6222 margin-left: -10px;
6223 content: " ";
6224 border-top-width: 0;
6225 border-bottom-color: #fff;
6226}
6227.popover.left > .arrow {
6228 top: 50%;
6229 right: -11px;
6230 margin-top: -11px;
6231 border-right-width: 0;
6232 border-left-color: #999;
6233 border-left-color: rgba(0, 0, 0, .25);
6234}
6235.popover.left > .arrow:after {
6236 right: 1px;
6237 bottom: -10px;
6238 content: " ";
6239 border-right-width: 0;
6240 border-left-color: #fff;
6241}
6242.carousel {
6243 position: relative;
6244}
6245.carousel-inner {
6246 position: relative;
6247 width: 100%;
6248 overflow: hidden;
6249}
6250.carousel-inner > .item {
6251 position: relative;
6252 display: none;
6253 -webkit-transition: .6s ease-in-out left;
6254 -o-transition: .6s ease-in-out left;
6255 transition: .6s ease-in-out left;
6256}
6257.carousel-inner > .item > img,
6258.carousel-inner > .item > a > img {
6259 line-height: 1;
6260}
6261@media all and (transform-3d), (-webkit-transform-3d) {
6262 .carousel-inner > .item {
6263 -webkit-transition: -webkit-transform .6s ease-in-out;
6264 -o-transition: -o-transform .6s ease-in-out;
6265 transition: transform .6s ease-in-out;
6266
6267 -webkit-backface-visibility: hidden;
6268 backface-visibility: hidden;
6269 -webkit-perspective: 1000px;
6270 perspective: 1000px;
6271 }
6272 .carousel-inner > .item.next,
6273 .carousel-inner > .item.active.right {
6274 left: 0;
6275 -webkit-transform: translate3d(100%, 0, 0);
6276 transform: translate3d(100%, 0, 0);
6277 }
6278 .carousel-inner > .item.prev,
6279 .carousel-inner > .item.active.left {
6280 left: 0;
6281 -webkit-transform: translate3d(-100%, 0, 0);
6282 transform: translate3d(-100%, 0, 0);
6283 }
6284 .carousel-inner > .item.next.left,
6285 .carousel-inner > .item.prev.right,
6286 .carousel-inner > .item.active {
6287 left: 0;
6288 -webkit-transform: translate3d(0, 0, 0);
6289 transform: translate3d(0, 0, 0);
6290 }
6291}
6292.carousel-inner > .active,
6293.carousel-inner > .next,
6294.carousel-inner > .prev {
6295 display: block;
6296}
6297.carousel-inner > .active {
6298 left: 0;
6299}
6300.carousel-inner > .next,
6301.carousel-inner > .prev {
6302 position: absolute;
6303 top: 0;
6304 width: 100%;
6305}
6306.carousel-inner > .next {
6307 left: 100%;
6308}
6309.carousel-inner > .prev {
6310 left: -100%;
6311}
6312.carousel-inner > .next.left,
6313.carousel-inner > .prev.right {
6314 left: 0;
6315}
6316.carousel-inner > .active.left {
6317 left: -100%;
6318}
6319.carousel-inner > .active.right {
6320 left: 100%;
6321}
6322.carousel-control {
6323 position: absolute;
6324 top: 0;
6325 bottom: 0;
6326 left: 0;
6327 width: 15%;
6328 font-size: 20px;
6329 color: #fff;
6330 text-align: center;
6331 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
6332 background-color: rgba(0, 0, 0, 0);
6333 filter: alpha(opacity=50);
6334 opacity: .5;
6335}
6336.carousel-control.left {
6337 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
6338 background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
6339 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
6340 background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
6341 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6342 background-repeat: repeat-x;
6343}
6344.carousel-control.right {
6345 right: 0;
6346 left: auto;
6347 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
6348 background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
6349 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
6350 background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
6351 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6352 background-repeat: repeat-x;
6353}
6354.carousel-control:hover,
6355.carousel-control:focus {
6356 color: #fff;
6357 text-decoration: none;
6358 filter: alpha(opacity=90);
6359 outline: 0;
6360 opacity: .9;
6361}
6362.carousel-control .icon-prev,
6363.carousel-control .icon-next,
6364.carousel-control .glyphicon-chevron-left,
6365.carousel-control .glyphicon-chevron-right {
6366 position: absolute;
6367 top: 50%;
6368 z-index: 5;
6369 display: inline-block;
6370 margin-top: -10px;
6371}
6372.carousel-control .icon-prev,
6373.carousel-control .glyphicon-chevron-left {
6374 left: 50%;
6375 margin-left: -10px;
6376}
6377.carousel-control .icon-next,
6378.carousel-control .glyphicon-chevron-right {
6379 right: 50%;
6380 margin-right: -10px;
6381}
6382.carousel-control .icon-prev,
6383.carousel-control .icon-next {
6384 width: 20px;
6385 height: 20px;
6386 font-family: serif;
6387 line-height: 1;
6388}
6389.carousel-control .icon-prev:before {
6390 content: '\2039';
6391}
6392.carousel-control .icon-next:before {
6393 content: '\203a';
6394}
6395.carousel-indicators {
6396 position: absolute;
6397 bottom: 10px;
6398 left: 50%;
6399 z-index: 15;
6400 width: 60%;
6401 padding-left: 0;
6402 margin-left: -30%;
6403 text-align: center;
6404 list-style: none;
6405}
6406.carousel-indicators li {
6407 display: inline-block;
6408 width: 10px;
6409 height: 10px;
6410 margin: 1px;
6411 text-indent: -999px;
6412 cursor: pointer;
6413 background-color: #000 \9;
6414 background-color: rgba(0, 0, 0, 0);
6415 border: 1px solid #fff;
6416 border-radius: 10px;
6417}
6418.carousel-indicators .active {
6419 width: 12px;
6420 height: 12px;
6421 margin: 0;
6422 background-color: #fff;
6423}
6424.carousel-caption {
6425 position: absolute;
6426 right: 15%;
6427 bottom: 20px;
6428 left: 15%;
6429 z-index: 10;
6430 padding-top: 20px;
6431 padding-bottom: 20px;
6432 color: #fff;
6433 text-align: center;
6434 text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
6435}
6436.carousel-caption .btn {
6437 text-shadow: none;
6438}
6439@media screen and (min-width: 768px) {
6440 .carousel-control .glyphicon-chevron-left,
6441 .carousel-control .glyphicon-chevron-right,
6442 .carousel-control .icon-prev,
6443 .carousel-control .icon-next {
6444 width: 30px;
6445 height: 30px;
6446 margin-top: -10px;
6447 font-size: 30px;
6448 }
6449 .carousel-control .glyphicon-chevron-left,
6450 .carousel-control .icon-prev {
6451 margin-left: -10px;
6452 }
6453 .carousel-control .glyphicon-chevron-right,
6454 .carousel-control .icon-next {
6455 margin-right: -10px;
6456 }
6457 .carousel-caption {
6458 right: 20%;
6459 left: 20%;
6460 padding-bottom: 30px;
6461 }
6462 .carousel-indicators {
6463 bottom: 20px;
6464 }
6465}
6466.clearfix:before,
6467.clearfix:after,
6468.dl-horizontal dd:before,
6469.dl-horizontal dd:after,
6470.container:before,
6471.container:after,
6472.container-fluid:before,
6473.container-fluid:after,
6474.row:before,
6475.row:after,
6476.form-horizontal .form-group:before,
6477.form-horizontal .form-group:after,
6478.btn-toolbar:before,
6479.btn-toolbar:after,
6480.btn-group-vertical > .btn-group:before,
6481.btn-group-vertical > .btn-group:after,
6482.nav:before,
6483.nav:after,
6484.navbar:before,
6485.navbar:after,
6486.navbar-header:before,
6487.navbar-header:after,
6488.navbar-collapse:before,
6489.navbar-collapse:after,
6490.pager:before,
6491.pager:after,
6492.panel-body:before,
6493.panel-body:after,
6494.modal-header:before,
6495.modal-header:after,
6496.modal-footer:before,
6497.modal-footer:after {
6498 display: table;
6499 content: " ";
6500}
6501.clearfix:after,
6502.dl-horizontal dd:after,
6503.container:after,
6504.container-fluid:after,
6505.row:after,
6506.form-horizontal .form-group:after,
6507.btn-toolbar:after,
6508.btn-group-vertical > .btn-group:after,
6509.nav:after,
6510.navbar:after,
6511.navbar-header:after,
6512.navbar-collapse:after,
6513.pager:after,
6514.panel-body:after,
6515.modal-header:after,
6516.modal-footer:after {
6517 clear: both;
6518}
6519.center-block {
6520 display: block;
6521 margin-right: auto;
6522 margin-left: auto;
6523}
6524.pull-right {
6525 float: right !important;
6526}
6527.pull-left {
6528 float: left !important;
6529}
6530.hide {
6531 display: none !important;
6532}
6533.show {
6534 display: block !important;
6535}
6536.invisible {
6537 visibility: hidden;
6538}
6539.text-hide {
6540 font: 0/0 a;
6541 color: transparent;
6542 text-shadow: none;
6543 background-color: transparent;
6544 border: 0;
6545}
6546.hidden {
6547 display: none !important;
6548}
6549.affix {
6550 position: fixed;
6551}
6552@-ms-viewport {
6553 width: device-width;
6554}
6555.visible-xs,
6556.visible-sm,
6557.visible-md,
6558.visible-lg {
6559 display: none !important;
6560}
6561.visible-xs-block,
6562.visible-xs-inline,
6563.visible-xs-inline-block,
6564.visible-sm-block,
6565.visible-sm-inline,
6566.visible-sm-inline-block,
6567.visible-md-block,
6568.visible-md-inline,
6569.visible-md-inline-block,
6570.visible-lg-block,
6571.visible-lg-inline,
6572.visible-lg-inline-block {
6573 display: none !important;
6574}
6575@media (max-width: 767px) {
6576 .visible-xs {
6577 display: block !important;
6578 }
6579 table.visible-xs {
6580 display: table !important;
6581 }
6582 tr.visible-xs {
6583 display: table-row !important;
6584 }
6585 th.visible-xs,
6586 td.visible-xs {
6587 display: table-cell !important;
6588 }
6589}
6590@media (max-width: 767px) {
6591 .visible-xs-block {
6592 display: block !important;
6593 }
6594}
6595@media (max-width: 767px) {
6596 .visible-xs-inline {
6597 display: inline !important;
6598 }
6599}
6600@media (max-width: 767px) {
6601 .visible-xs-inline-block {
6602 display: inline-block !important;
6603 }
6604}
6605@media (min-width: 768px) and (max-width: 991px) {
6606 .visible-sm {
6607 display: block !important;
6608 }
6609 table.visible-sm {
6610 display: table !important;
6611 }
6612 tr.visible-sm {
6613 display: table-row !important;
6614 }
6615 th.visible-sm,
6616 td.visible-sm {
6617 display: table-cell !important;
6618 }
6619}
6620@media (min-width: 768px) and (max-width: 991px) {
6621 .visible-sm-block {
6622 display: block !important;
6623 }
6624}
6625@media (min-width: 768px) and (max-width: 991px) {
6626 .visible-sm-inline {
6627 display: inline !important;
6628 }
6629}
6630@media (min-width: 768px) and (max-width: 991px) {
6631 .visible-sm-inline-block {
6632 display: inline-block !important;
6633 }
6634}
6635@media (min-width: 992px) and (max-width: 1199px) {
6636 .visible-md {
6637 display: block !important;
6638 }
6639 table.visible-md {
6640 display: table !important;
6641 }
6642 tr.visible-md {
6643 display: table-row !important;
6644 }
6645 th.visible-md,
6646 td.visible-md {
6647 display: table-cell !important;
6648 }
6649}
6650@media (min-width: 992px) and (max-width: 1199px) {
6651 .visible-md-block {
6652 display: block !important;
6653 }
6654}
6655@media (min-width: 992px) and (max-width: 1199px) {
6656 .visible-md-inline {
6657 display: inline !important;
6658 }
6659}
6660@media (min-width: 992px) and (max-width: 1199px) {
6661 .visible-md-inline-block {
6662 display: inline-block !important;
6663 }
6664}
6665@media (min-width: 1200px) {
6666 .visible-lg {
6667 display: block !important;
6668 }
6669 table.visible-lg {
6670 display: table !important;
6671 }
6672 tr.visible-lg {
6673 display: table-row !important;
6674 }
6675 th.visible-lg,
6676 td.visible-lg {
6677 display: table-cell !important;
6678 }
6679}
6680@media (min-width: 1200px) {
6681 .visible-lg-block {
6682 display: block !important;
6683 }
6684}
6685@media (min-width: 1200px) {
6686 .visible-lg-inline {
6687 display: inline !important;
6688 }
6689}
6690@media (min-width: 1200px) {
6691 .visible-lg-inline-block {
6692 display: inline-block !important;
6693 }
6694}
6695@media (max-width: 767px) {
6696 .hidden-xs {
6697 display: none !important;
6698 }
6699}
6700@media (min-width: 768px) and (max-width: 991px) {
6701 .hidden-sm {
6702 display: none !important;
6703 }
6704}
6705@media (min-width: 992px) and (max-width: 1199px) {
6706 .hidden-md {
6707 display: none !important;
6708 }
6709}
6710@media (min-width: 1200px) {
6711 .hidden-lg {
6712 display: none !important;
6713 }
6714}
6715.visible-print {
6716 display: none !important;
6717}
6718@media print {
6719 .visible-print {
6720 display: block !important;
6721 }
6722 table.visible-print {
6723 display: table !important;
6724 }
6725 tr.visible-print {
6726 display: table-row !important;
6727 }
6728 th.visible-print,
6729 td.visible-print {
6730 display: table-cell !important;
6731 }
6732}
6733.visible-print-block {
6734 display: none !important;
6735}
6736@media print {
6737 .visible-print-block {
6738 display: block !important;
6739 }
6740}
6741.visible-print-inline {
6742 display: none !important;
6743}
6744@media print {
6745 .visible-print-inline {
6746 display: inline !important;
6747 }
6748}
6749.visible-print-inline-block {
6750 display: none !important;
6751}
6752@media print {
6753 .visible-print-inline-block {
6754 display: inline-block !important;
6755 }
6756}
6757@media print {
6758 .hidden-print {
6759 display: none !important;
6760 }
6761}
6762/*# sourceMappingURL=bootstrap.css.map */
6763</style>
6764 <style>body {
6765 padding-bottom: 32px;
6766}
6767.form-control[readonly] {
6768 cursor: text;
6769}
6770.feedback-container {
6771 position: fixed;
6772 top: 0;
6773 width: 100%;
6774 text-align: center;
6775 z-index: 4;
6776}
6777.feedback {
6778 display: table;
6779 padding: 0.5em 1em;
6780 background-color: orange;
6781 margin: 0 auto;
6782 font-size: 2em;
6783 color: #444;
6784 border: 2px solid #555;
6785 border-top: 0;
6786 border-bottom-left-radius: 20px 20px;
6787 border-bottom-right-radius: 20px 20px;
6788}
6789.no-border {
6790 border: 0;
6791 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
6792 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
6793}
6794.phrase {
6795 word-break: keep-all;
6796}
6797.generate-container .strength {
6798 /* override mobile width from bootstrap */
6799 width: auto!important;
6800 display: inline-block;
6801}
6802.languages a {
6803 padding-left: 10px;
6804}
6805.languages a:nth-of-type(1) {
6806 margin-left: -12px;
6807 padding-left: 0;
6808}
6809.monospace {
6810 font-family: monospace;
6811}
6812.entropy-container .filtered,
6813.entropy-container .binary {
6814 word-wrap: break-word;
6815}
6816.entropy-container li {
6817 padding-bottom: 5px;
6818}
6819.card-suit {
6820 font-size: 19px;
6821 line-height: 0;
6822}
6823.card-suit.club {
6824 color: #009F00;
6825}
6826.card-suit.diamond {
6827 color: #3D5DC4;
6828}
6829.card-suit.heart {
6830 color: #F00;
6831}
6832.card-suit.spade {
6833 color: #000;
6834}
6835.qr-container {
6836 position: fixed;
6837 top: 0;
6838 right: 0;
6839 text-align: center;
6840 background-color: #FFF;
6841 border: 1px solid #CCC;
6842}
6843.qr-image {
6844 margin: 5px;
6845}
6846.qr-hint,
6847.qr-warning {
6848 padding: 2px;
6849 max-width: 320px;
6850}
6851.more-info {
6852 cursor: help;
6853 border-bottom: 1px dashed #000;
6854 text-decoration: none;
6855}
6856.version {
6857 position: absolute;
6858 top: 5px;
6859 right: 5px;
6860}
6861</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/> 6862 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" /> 6863 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" /> 6864 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" /> 6865 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" /> 6866 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 .version {
111 position: absolute;
112 top: 5px;
113 right: 5px;
114 }
115 </style>
116 </head> 6867 </head>
117 <body> 6868 <body>
118 <div class="container"> 6869 <div class="container">
119 6870
120 <h1 class="text-center">Mnemonic Code Converter</h1> 6871 <h1 class="text-center">Mnemonic Code Converter</h1>
121 <p class="version">v0.3.0</p> 6872 <p class="version">v0.3.1</p>
122 <hr> 6873 <hr>
123 <div class="row"> 6874 <div class="row">
124 <div class="col-md-12"> 6875 <div class="col-md-12">
@@ -197,6 +6948,8 @@
197 <div class="filtered col-sm-9 form-control-static"></div> 6948 <div class="filtered col-sm-9 form-control-static"></div>
198 <label class="col-sm-3 control-label">Raw Binary</label> 6949 <label class="col-sm-3 control-label">Raw Binary</label>
199 <div class="binary col-sm-9 form-control-static"></div> 6950 <div class="binary col-sm-9 form-control-static"></div>
6951 <label class="col-sm-3 control-label">Word Indexes</label>
6952 <div class="word-indexes col-sm-9 form-control-static">&nbsp;</div>
200 <label class="col-sm-3 control-label">Mnemonic Length</label> 6953 <label class="col-sm-3 control-label">Mnemonic Length</label>
201 <div class="col-sm-9"> 6954 <div class="col-sm-9">
202 <select class="mnemonic-length form-control"> 6955 <select class="mnemonic-length form-control">
@@ -227,7 +6980,7 @@
227 <div class="col-sm-10 checkbox"> 6980 <div class="col-sm-10 checkbox">
228 <label> 6981 <label>
229 <input type="checkbox" class="use-entropy"> 6982 <input type="checkbox" class="use-entropy">
230 <span>Supply my own source of entropy</span> 6983 <span>Show entropy details</span>
231 </label> 6984 </label>
232 </div> 6985 </div>
233 </div> 6986 </div>
@@ -611,7 +7364,7 @@
611 <div class="row"> 7364 <div class="row">
612 <div class="col-md-12"> 7365 <div class="col-md-12">
613 <h2>Derived Addresses</h2> 7366 <h2>Derived Addresses</h2>
614 <p>Note these addreses are derived from the BIP32 Extended Key</p> 7367 <p>Note these addresses are derived from the BIP32 Extended Key</p>
615 </div> 7368 </div>
616 <div class="col-md-12 use-bitpay-addresses-container hidden"> 7369 <div class="col-md-12 use-bitpay-addresses-container hidden">
617 <div class="checkbox"> 7370 <div class="checkbox">
@@ -711,7 +7464,7 @@
711 </span> 7464 </span>
712 <span>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span> 7465 <span>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
713 <span> 7466 <span>
714 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, 7467 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or street address,
715 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't 7468 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
716 random enough for the needs of this tool. 7469 random enough for the needs of this tool.
717 </span> 7470 </span>
@@ -7112,17 +13865,12638 @@ UChar.udata={
7112 } 13865 }
7113}(this)); 13866}(this));
7114</script> 13867</script>
7115 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ 13868 <script>/*!
7116!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) 13869 * jQuery JavaScript Library v3.2.1
7117},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b)) 13870 * https://jquery.com/
7118},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n}); 13871 *
13872 * Includes Sizzle.js
13873 * https://sizzlejs.com/
13874 *
13875 * Copyright JS Foundation and other contributors
13876 * Released under the MIT license
13877 * https://jquery.org/license
13878 *
13879 * Date: 2017-03-20T18:59Z
13880 */
13881( function( global, factory ) {
13882
13883 "use strict";
13884
13885 if ( typeof module === "object" && typeof module.exports === "object" ) {
13886
13887 // For CommonJS and CommonJS-like environments where a proper `window`
13888 // is present, execute the factory and get jQuery.
13889 // For environments that do not have a `window` with a `document`
13890 // (such as Node.js), expose a factory as module.exports.
13891 // This accentuates the need for the creation of a real `window`.
13892 // e.g. var jQuery = require("jquery")(window);
13893 // See ticket #14549 for more info.
13894 module.exports = global.document ?
13895 factory( global, true ) :
13896 function( w ) {
13897 if ( !w.document ) {
13898 throw new Error( "jQuery requires a window with a document" );
13899 }
13900 return factory( w );
13901 };
13902 } else {
13903 factory( global );
13904 }
13905
13906// Pass this if window is not defined yet
13907} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
13908
13909// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
13910// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
13911// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
13912// enough that all such attempts are guarded in a try block.
13913"use strict";
13914
13915var arr = [];
13916
13917var document = window.document;
13918
13919var getProto = Object.getPrototypeOf;
13920
13921var slice = arr.slice;
13922
13923var concat = arr.concat;
13924
13925var push = arr.push;
13926
13927var indexOf = arr.indexOf;
13928
13929var class2type = {};
13930
13931var toString = class2type.toString;
13932
13933var hasOwn = class2type.hasOwnProperty;
13934
13935var fnToString = hasOwn.toString;
13936
13937var ObjectFunctionString = fnToString.call( Object );
13938
13939var support = {};
13940
13941
13942
13943 function DOMEval( code, doc ) {
13944 doc = doc || document;
13945
13946 var script = doc.createElement( "script" );
13947
13948 script.text = code;
13949 doc.head.appendChild( script ).parentNode.removeChild( script );
13950 }
13951/* global Symbol */
13952// Defining this global in .eslintrc.json would create a danger of using the global
13953// unguarded in another place, it seems safer to define global only for this module
13954
13955
13956
13957var
13958 version = "3.2.1",
13959
13960 // Define a local copy of jQuery
13961 jQuery = function( selector, context ) {
13962
13963 // The jQuery object is actually just the init constructor 'enhanced'
13964 // Need init if jQuery is called (just allow error to be thrown if not included)
13965 return new jQuery.fn.init( selector, context );
13966 },
13967
13968 // Support: Android <=4.0 only
13969 // Make sure we trim BOM and NBSP
13970 rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
13971
13972 // Matches dashed string for camelizing
13973 rmsPrefix = /^-ms-/,
13974 rdashAlpha = /-([a-z])/g,
13975
13976 // Used by jQuery.camelCase as callback to replace()
13977 fcamelCase = function( all, letter ) {
13978 return letter.toUpperCase();
13979 };
13980
13981jQuery.fn = jQuery.prototype = {
13982
13983 // The current version of jQuery being used
13984 jquery: version,
13985
13986 constructor: jQuery,
13987
13988 // The default length of a jQuery object is 0
13989 length: 0,
13990
13991 toArray: function() {
13992 return slice.call( this );
13993 },
13994
13995 // Get the Nth element in the matched element set OR
13996 // Get the whole matched element set as a clean array
13997 get: function( num ) {
13998
13999 // Return all the elements in a clean array
14000 if ( num == null ) {
14001 return slice.call( this );
14002 }
14003
14004 // Return just the one element from the set
14005 return num < 0 ? this[ num + this.length ] : this[ num ];
14006 },
14007
14008 // Take an array of elements and push it onto the stack
14009 // (returning the new matched element set)
14010 pushStack: function( elems ) {
14011
14012 // Build a new jQuery matched element set
14013 var ret = jQuery.merge( this.constructor(), elems );
14014
14015 // Add the old object onto the stack (as a reference)
14016 ret.prevObject = this;
14017
14018 // Return the newly-formed element set
14019 return ret;
14020 },
14021
14022 // Execute a callback for every element in the matched set.
14023 each: function( callback ) {
14024 return jQuery.each( this, callback );
14025 },
14026
14027 map: function( callback ) {
14028 return this.pushStack( jQuery.map( this, function( elem, i ) {
14029 return callback.call( elem, i, elem );
14030 } ) );
14031 },
14032
14033 slice: function() {
14034 return this.pushStack( slice.apply( this, arguments ) );
14035 },
14036
14037 first: function() {
14038 return this.eq( 0 );
14039 },
14040
14041 last: function() {
14042 return this.eq( -1 );
14043 },
14044
14045 eq: function( i ) {
14046 var len = this.length,
14047 j = +i + ( i < 0 ? len : 0 );
14048 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
14049 },
14050
14051 end: function() {
14052 return this.prevObject || this.constructor();
14053 },
14054
14055 // For internal use only.
14056 // Behaves like an Array's method, not like a jQuery method.
14057 push: push,
14058 sort: arr.sort,
14059 splice: arr.splice
14060};
14061
14062jQuery.extend = jQuery.fn.extend = function() {
14063 var options, name, src, copy, copyIsArray, clone,
14064 target = arguments[ 0 ] || {},
14065 i = 1,
14066 length = arguments.length,
14067 deep = false;
14068
14069 // Handle a deep copy situation
14070 if ( typeof target === "boolean" ) {
14071 deep = target;
14072
14073 // Skip the boolean and the target
14074 target = arguments[ i ] || {};
14075 i++;
14076 }
14077
14078 // Handle case when target is a string or something (possible in deep copy)
14079 if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
14080 target = {};
14081 }
14082
14083 // Extend jQuery itself if only one argument is passed
14084 if ( i === length ) {
14085 target = this;
14086 i--;
14087 }
14088
14089 for ( ; i < length; i++ ) {
14090
14091 // Only deal with non-null/undefined values
14092 if ( ( options = arguments[ i ] ) != null ) {
14093
14094 // Extend the base object
14095 for ( name in options ) {
14096 src = target[ name ];
14097 copy = options[ name ];
14098
14099 // Prevent never-ending loop
14100 if ( target === copy ) {
14101 continue;
14102 }
14103
14104 // Recurse if we're merging plain objects or arrays
14105 if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
14106 ( copyIsArray = Array.isArray( copy ) ) ) ) {
14107
14108 if ( copyIsArray ) {
14109 copyIsArray = false;
14110 clone = src && Array.isArray( src ) ? src : [];
14111
14112 } else {
14113 clone = src && jQuery.isPlainObject( src ) ? src : {};
14114 }
14115
14116 // Never move original objects, clone them
14117 target[ name ] = jQuery.extend( deep, clone, copy );
14118
14119 // Don't bring in undefined values
14120 } else if ( copy !== undefined ) {
14121 target[ name ] = copy;
14122 }
14123 }
14124 }
14125 }
14126
14127 // Return the modified object
14128 return target;
14129};
14130
14131jQuery.extend( {
14132
14133 // Unique for each copy of jQuery on the page
14134 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
14135
14136 // Assume jQuery is ready without the ready module
14137 isReady: true,
14138
14139 error: function( msg ) {
14140 throw new Error( msg );
14141 },
14142
14143 noop: function() {},
14144
14145 isFunction: function( obj ) {
14146 return jQuery.type( obj ) === "function";
14147 },
14148
14149 isWindow: function( obj ) {
14150 return obj != null && obj === obj.window;
14151 },
14152
14153 isNumeric: function( obj ) {
14154
14155 // As of jQuery 3.0, isNumeric is limited to
14156 // strings and numbers (primitives or objects)
14157 // that can be coerced to finite numbers (gh-2662)
14158 var type = jQuery.type( obj );
14159 return ( type === "number" || type === "string" ) &&
14160
14161 // parseFloat NaNs numeric-cast false positives ("")
14162 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
14163 // subtraction forces infinities to NaN
14164 !isNaN( obj - parseFloat( obj ) );
14165 },
14166
14167 isPlainObject: function( obj ) {
14168 var proto, Ctor;
14169
14170 // Detect obvious negatives
14171 // Use toString instead of jQuery.type to catch host objects
14172 if ( !obj || toString.call( obj ) !== "[object Object]" ) {
14173 return false;
14174 }
14175
14176 proto = getProto( obj );
14177
14178 // Objects with no prototype (e.g., `Object.create( null )`) are plain
14179 if ( !proto ) {
14180 return true;
14181 }
14182
14183 // Objects with prototype are plain iff they were constructed by a global Object function
14184 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
14185 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
14186 },
14187
14188 isEmptyObject: function( obj ) {
14189
14190 /* eslint-disable no-unused-vars */
14191 // See https://github.com/eslint/eslint/issues/6125
14192 var name;
14193
14194 for ( name in obj ) {
14195 return false;
14196 }
14197 return true;
14198 },
14199
14200 type: function( obj ) {
14201 if ( obj == null ) {
14202 return obj + "";
14203 }
14204
14205 // Support: Android <=2.3 only (functionish RegExp)
14206 return typeof obj === "object" || typeof obj === "function" ?
14207 class2type[ toString.call( obj ) ] || "object" :
14208 typeof obj;
14209 },
14210
14211 // Evaluates a script in a global context
14212 globalEval: function( code ) {
14213 DOMEval( code );
14214 },
14215
14216 // Convert dashed to camelCase; used by the css and data modules
14217 // Support: IE <=9 - 11, Edge 12 - 13
14218 // Microsoft forgot to hump their vendor prefix (#9572)
14219 camelCase: function( string ) {
14220 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
14221 },
14222
14223 each: function( obj, callback ) {
14224 var length, i = 0;
14225
14226 if ( isArrayLike( obj ) ) {
14227 length = obj.length;
14228 for ( ; i < length; i++ ) {
14229 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
14230 break;
14231 }
14232 }
14233 } else {
14234 for ( i in obj ) {
14235 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
14236 break;
14237 }
14238 }
14239 }
14240
14241 return obj;
14242 },
14243
14244 // Support: Android <=4.0 only
14245 trim: function( text ) {
14246 return text == null ?
14247 "" :
14248 ( text + "" ).replace( rtrim, "" );
14249 },
14250
14251 // results is for internal usage only
14252 makeArray: function( arr, results ) {
14253 var ret = results || [];
14254
14255 if ( arr != null ) {
14256 if ( isArrayLike( Object( arr ) ) ) {
14257 jQuery.merge( ret,
14258 typeof arr === "string" ?
14259 [ arr ] : arr
14260 );
14261 } else {
14262 push.call( ret, arr );
14263 }
14264 }
14265
14266 return ret;
14267 },
14268
14269 inArray: function( elem, arr, i ) {
14270 return arr == null ? -1 : indexOf.call( arr, elem, i );
14271 },
14272
14273 // Support: Android <=4.0 only, PhantomJS 1 only
14274 // push.apply(_, arraylike) throws on ancient WebKit
14275 merge: function( first, second ) {
14276 var len = +second.length,
14277 j = 0,
14278 i = first.length;
14279
14280 for ( ; j < len; j++ ) {
14281 first[ i++ ] = second[ j ];
14282 }
14283
14284 first.length = i;
14285
14286 return first;
14287 },
14288
14289 grep: function( elems, callback, invert ) {
14290 var callbackInverse,
14291 matches = [],
14292 i = 0,
14293 length = elems.length,
14294 callbackExpect = !invert;
14295
14296 // Go through the array, only saving the items
14297 // that pass the validator function
14298 for ( ; i < length; i++ ) {
14299 callbackInverse = !callback( elems[ i ], i );
14300 if ( callbackInverse !== callbackExpect ) {
14301 matches.push( elems[ i ] );
14302 }
14303 }
14304
14305 return matches;
14306 },
14307
14308 // arg is for internal usage only
14309 map: function( elems, callback, arg ) {
14310 var length, value,
14311 i = 0,
14312 ret = [];
14313
14314 // Go through the array, translating each of the items to their new values
14315 if ( isArrayLike( elems ) ) {
14316 length = elems.length;
14317 for ( ; i < length; i++ ) {
14318 value = callback( elems[ i ], i, arg );
14319
14320 if ( value != null ) {
14321 ret.push( value );
14322 }
14323 }
14324
14325 // Go through every key on the object,
14326 } else {
14327 for ( i in elems ) {
14328 value = callback( elems[ i ], i, arg );
14329
14330 if ( value != null ) {
14331 ret.push( value );
14332 }
14333 }
14334 }
14335
14336 // Flatten any nested arrays
14337 return concat.apply( [], ret );
14338 },
14339
14340 // A global GUID counter for objects
14341 guid: 1,
14342
14343 // Bind a function to a context, optionally partially applying any
14344 // arguments.
14345 proxy: function( fn, context ) {
14346 var tmp, args, proxy;
14347
14348 if ( typeof context === "string" ) {
14349 tmp = fn[ context ];
14350 context = fn;
14351 fn = tmp;
14352 }
14353
14354 // Quick check to determine if target is callable, in the spec
14355 // this throws a TypeError, but we will just return undefined.
14356 if ( !jQuery.isFunction( fn ) ) {
14357 return undefined;
14358 }
14359
14360 // Simulated bind
14361 args = slice.call( arguments, 2 );
14362 proxy = function() {
14363 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
14364 };
14365
14366 // Set the guid of unique handler to the same of original handler, so it can be removed
14367 proxy.guid = fn.guid = fn.guid || jQuery.guid++;
14368
14369 return proxy;
14370 },
14371
14372 now: Date.now,
14373
14374 // jQuery.support is not used in Core but other projects attach their
14375 // properties to it so it needs to exist.
14376 support: support
14377} );
14378
14379if ( typeof Symbol === "function" ) {
14380 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
14381}
14382
14383// Populate the class2type map
14384jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
14385function( i, name ) {
14386 class2type[ "[object " + name + "]" ] = name.toLowerCase();
14387} );
14388
14389function isArrayLike( obj ) {
14390
14391 // Support: real iOS 8.2 only (not reproducible in simulator)
14392 // `in` check used to prevent JIT error (gh-2145)
14393 // hasOwn isn't used here due to false negatives
14394 // regarding Nodelist length in IE
14395 var length = !!obj && "length" in obj && obj.length,
14396 type = jQuery.type( obj );
14397
14398 if ( type === "function" || jQuery.isWindow( obj ) ) {
14399 return false;
14400 }
14401
14402 return type === "array" || length === 0 ||
14403 typeof length === "number" && length > 0 && ( length - 1 ) in obj;
14404}
14405var Sizzle =
14406/*!
14407 * Sizzle CSS Selector Engine v2.3.3
14408 * https://sizzlejs.com/
14409 *
14410 * Copyright jQuery Foundation and other contributors
14411 * Released under the MIT license
14412 * http://jquery.org/license
14413 *
14414 * Date: 2016-08-08
14415 */
14416(function( window ) {
14417
14418var i,
14419 support,
14420 Expr,
14421 getText,
14422 isXML,
14423 tokenize,
14424 compile,
14425 select,
14426 outermostContext,
14427 sortInput,
14428 hasDuplicate,
14429
14430 // Local document vars
14431 setDocument,
14432 document,
14433 docElem,
14434 documentIsHTML,
14435 rbuggyQSA,
14436 rbuggyMatches,
14437 matches,
14438 contains,
14439
14440 // Instance-specific data
14441 expando = "sizzle" + 1 * new Date(),
14442 preferredDoc = window.document,
14443 dirruns = 0,
14444 done = 0,
14445 classCache = createCache(),
14446 tokenCache = createCache(),
14447 compilerCache = createCache(),
14448 sortOrder = function( a, b ) {
14449 if ( a === b ) {
14450 hasDuplicate = true;
14451 }
14452 return 0;
14453 },
14454
14455 // Instance methods
14456 hasOwn = ({}).hasOwnProperty,
14457 arr = [],
14458 pop = arr.pop,
14459 push_native = arr.push,
14460 push = arr.push,
14461 slice = arr.slice,
14462 // Use a stripped-down indexOf as it's faster than native
14463 // https://jsperf.com/thor-indexof-vs-for/5
14464 indexOf = function( list, elem ) {
14465 var i = 0,
14466 len = list.length;
14467 for ( ; i < len; i++ ) {
14468 if ( list[i] === elem ) {
14469 return i;
14470 }
14471 }
14472 return -1;
14473 },
14474
14475 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
14476
14477 // Regular expressions
14478
14479 // http://www.w3.org/TR/css3-selectors/#whitespace
14480 whitespace = "[\\x20\\t\\r\\n\\f]",
14481
14482 // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
14483 identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
14484
14485 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
14486 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
14487 // Operator (capture 2)
14488 "*([*^$|!~]?=)" + whitespace +
14489 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
14490 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
14491 "*\\]",
14492
14493 pseudos = ":(" + identifier + ")(?:\\((" +
14494 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
14495 // 1. quoted (capture 3; capture 4 or capture 5)
14496 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
14497 // 2. simple (capture 6)
14498 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
14499 // 3. anything else (capture 2)
14500 ".*" +
14501 ")\\)|)",
14502
14503 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
14504 rwhitespace = new RegExp( whitespace + "+", "g" ),
14505 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
14506
14507 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
14508 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
14509
14510 rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
14511
14512 rpseudo = new RegExp( pseudos ),
14513 ridentifier = new RegExp( "^" + identifier + "$" ),
14514
14515 matchExpr = {
14516 "ID": new RegExp( "^#(" + identifier + ")" ),
14517 "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
14518 "TAG": new RegExp( "^(" + identifier + "|[*])" ),
14519 "ATTR": new RegExp( "^" + attributes ),
14520 "PSEUDO": new RegExp( "^" + pseudos ),
14521 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
14522 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
14523 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
14524 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
14525 // For use in libraries implementing .is()
14526 // We use this for POS matching in `select`
14527 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
14528 whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
14529 },
14530
14531 rinputs = /^(?:input|select|textarea|button)$/i,
14532 rheader = /^h\d$/i,
14533
14534 rnative = /^[^{]+\{\s*\[native \w/,
14535
14536 // Easily-parseable/retrievable ID or TAG or CLASS selectors
14537 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
14538
14539 rsibling = /[+~]/,
14540
14541 // CSS escapes
14542 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
14543 runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
14544 funescape = function( _, escaped, escapedWhitespace ) {
14545 var high = "0x" + escaped - 0x10000;
14546 // NaN means non-codepoint
14547 // Support: Firefox<24
14548 // Workaround erroneous numeric interpretation of +"0x"
14549 return high !== high || escapedWhitespace ?
14550 escaped :
14551 high < 0 ?
14552 // BMP codepoint
14553 String.fromCharCode( high + 0x10000 ) :
14554 // Supplemental Plane codepoint (surrogate pair)
14555 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
14556 },
14557
14558 // CSS string/identifier serialization
14559 // https://drafts.csswg.org/cssom/#common-serializing-idioms
14560 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
14561 fcssescape = function( ch, asCodePoint ) {
14562 if ( asCodePoint ) {
14563
14564 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
14565 if ( ch === "\0" ) {
14566 return "\uFFFD";
14567 }
14568
14569 // Control characters and (dependent upon position) numbers get escaped as code points
14570 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
14571 }
14572
14573 // Other potentially-special ASCII characters get backslash-escaped
14574 return "\\" + ch;
14575 },
14576
14577 // Used for iframes
14578 // See setDocument()
14579 // Removing the function wrapper causes a "Permission Denied"
14580 // error in IE
14581 unloadHandler = function() {
14582 setDocument();
14583 },
14584
14585 disabledAncestor = addCombinator(
14586 function( elem ) {
14587 return elem.disabled === true && ("form" in elem || "label" in elem);
14588 },
14589 { dir: "parentNode", next: "legend" }
14590 );
14591
14592// Optimize for push.apply( _, NodeList )
14593try {
14594 push.apply(
14595 (arr = slice.call( preferredDoc.childNodes )),
14596 preferredDoc.childNodes
14597 );
14598 // Support: Android<4.0
14599 // Detect silently failing push.apply
14600 arr[ preferredDoc.childNodes.length ].nodeType;
14601} catch ( e ) {
14602 push = { apply: arr.length ?
14603
14604 // Leverage slice if possible
14605 function( target, els ) {
14606 push_native.apply( target, slice.call(els) );
14607 } :
14608
14609 // Support: IE<9
14610 // Otherwise append directly
14611 function( target, els ) {
14612 var j = target.length,
14613 i = 0;
14614 // Can't trust NodeList.length
14615 while ( (target[j++] = els[i++]) ) {}
14616 target.length = j - 1;
14617 }
14618 };
14619}
14620
14621function Sizzle( selector, context, results, seed ) {
14622 var m, i, elem, nid, match, groups, newSelector,
14623 newContext = context && context.ownerDocument,
14624
14625 // nodeType defaults to 9, since context defaults to document
14626 nodeType = context ? context.nodeType : 9;
14627
14628 results = results || [];
14629
14630 // Return early from calls with invalid selector or context
14631 if ( typeof selector !== "string" || !selector ||
14632 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
14633
14634 return results;
14635 }
14636
14637 // Try to shortcut find operations (as opposed to filters) in HTML documents
14638 if ( !seed ) {
14639
14640 if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
14641 setDocument( context );
14642 }
14643 context = context || document;
14644
14645 if ( documentIsHTML ) {
14646
14647 // If the selector is sufficiently simple, try using a "get*By*" DOM method
14648 // (excepting DocumentFragment context, where the methods don't exist)
14649 if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
14650
14651 // ID selector
14652 if ( (m = match[1]) ) {
14653
14654 // Document context
14655 if ( nodeType === 9 ) {
14656 if ( (elem = context.getElementById( m )) ) {
14657
14658 // Support: IE, Opera, Webkit
14659 // TODO: identify versions
14660 // getElementById can match elements by name instead of ID
14661 if ( elem.id === m ) {
14662 results.push( elem );
14663 return results;
14664 }
14665 } else {
14666 return results;
14667 }
14668
14669 // Element context
14670 } else {
14671
14672 // Support: IE, Opera, Webkit
14673 // TODO: identify versions
14674 // getElementById can match elements by name instead of ID
14675 if ( newContext && (elem = newContext.getElementById( m )) &&
14676 contains( context, elem ) &&
14677 elem.id === m ) {
14678
14679 results.push( elem );
14680 return results;
14681 }
14682 }
14683
14684 // Type selector
14685 } else if ( match[2] ) {
14686 push.apply( results, context.getElementsByTagName( selector ) );
14687 return results;
14688
14689 // Class selector
14690 } else if ( (m = match[3]) && support.getElementsByClassName &&
14691 context.getElementsByClassName ) {
14692
14693 push.apply( results, context.getElementsByClassName( m ) );
14694 return results;
14695 }
14696 }
14697
14698 // Take advantage of querySelectorAll
14699 if ( support.qsa &&
14700 !compilerCache[ selector + " " ] &&
14701 (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
14702
14703 if ( nodeType !== 1 ) {
14704 newContext = context;
14705 newSelector = selector;
14706
14707 // qSA looks outside Element context, which is not what we want
14708 // Thanks to Andrew Dupont for this workaround technique
14709 // Support: IE <=8
14710 // Exclude object elements
14711 } else if ( context.nodeName.toLowerCase() !== "object" ) {
14712
14713 // Capture the context ID, setting it first if necessary
14714 if ( (nid = context.getAttribute( "id" )) ) {
14715 nid = nid.replace( rcssescape, fcssescape );
14716 } else {
14717 context.setAttribute( "id", (nid = expando) );
14718 }
14719
14720 // Prefix every selector in the list
14721 groups = tokenize( selector );
14722 i = groups.length;
14723 while ( i-- ) {
14724 groups[i] = "#" + nid + " " + toSelector( groups[i] );
14725 }
14726 newSelector = groups.join( "," );
14727
14728 // Expand context for sibling selectors
14729 newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
14730 context;
14731 }
14732
14733 if ( newSelector ) {
14734 try {
14735 push.apply( results,
14736 newContext.querySelectorAll( newSelector )
14737 );
14738 return results;
14739 } catch ( qsaError ) {
14740 } finally {
14741 if ( nid === expando ) {
14742 context.removeAttribute( "id" );
14743 }
14744 }
14745 }
14746 }
14747 }
14748 }
14749
14750 // All others
14751 return select( selector.replace( rtrim, "$1" ), context, results, seed );
14752}
14753
14754/**
14755 * Create key-value caches of limited size
14756 * @returns {function(string, object)} Returns the Object data after storing it on itself with
14757 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
14758 * deleting the oldest entry
14759 */
14760function createCache() {
14761 var keys = [];
14762
14763 function cache( key, value ) {
14764 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
14765 if ( keys.push( key + " " ) > Expr.cacheLength ) {
14766 // Only keep the most recent entries
14767 delete cache[ keys.shift() ];
14768 }
14769 return (cache[ key + " " ] = value);
14770 }
14771 return cache;
14772}
14773
14774/**
14775 * Mark a function for special use by Sizzle
14776 * @param {Function} fn The function to mark
14777 */
14778function markFunction( fn ) {
14779 fn[ expando ] = true;
14780 return fn;
14781}
14782
14783/**
14784 * Support testing using an element
14785 * @param {Function} fn Passed the created element and returns a boolean result
14786 */
14787function assert( fn ) {
14788 var el = document.createElement("fieldset");
14789
14790 try {
14791 return !!fn( el );
14792 } catch (e) {
14793 return false;
14794 } finally {
14795 // Remove from its parent by default
14796 if ( el.parentNode ) {
14797 el.parentNode.removeChild( el );
14798 }
14799 // release memory in IE
14800 el = null;
14801 }
14802}
14803
14804/**
14805 * Adds the same handler for all of the specified attrs
14806 * @param {String} attrs Pipe-separated list of attributes
14807 * @param {Function} handler The method that will be applied
14808 */
14809function addHandle( attrs, handler ) {
14810 var arr = attrs.split("|"),
14811 i = arr.length;
14812
14813 while ( i-- ) {
14814 Expr.attrHandle[ arr[i] ] = handler;
14815 }
14816}
14817
14818/**
14819 * Checks document order of two siblings
14820 * @param {Element} a
14821 * @param {Element} b
14822 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
14823 */
14824function siblingCheck( a, b ) {
14825 var cur = b && a,
14826 diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
14827 a.sourceIndex - b.sourceIndex;
14828
14829 // Use IE sourceIndex if available on both nodes
14830 if ( diff ) {
14831 return diff;
14832 }
14833
14834 // Check if b follows a
14835 if ( cur ) {
14836 while ( (cur = cur.nextSibling) ) {
14837 if ( cur === b ) {
14838 return -1;
14839 }
14840 }
14841 }
14842
14843 return a ? 1 : -1;
14844}
14845
14846/**
14847 * Returns a function to use in pseudos for input types
14848 * @param {String} type
14849 */
14850function createInputPseudo( type ) {
14851 return function( elem ) {
14852 var name = elem.nodeName.toLowerCase();
14853 return name === "input" && elem.type === type;
14854 };
14855}
14856
14857/**
14858 * Returns a function to use in pseudos for buttons
14859 * @param {String} type
14860 */
14861function createButtonPseudo( type ) {
14862 return function( elem ) {
14863 var name = elem.nodeName.toLowerCase();
14864 return (name === "input" || name === "button") && elem.type === type;
14865 };
14866}
14867
14868/**
14869 * Returns a function to use in pseudos for :enabled/:disabled
14870 * @param {Boolean} disabled true for :disabled; false for :enabled
14871 */
14872function createDisabledPseudo( disabled ) {
14873
14874 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
14875 return function( elem ) {
14876
14877 // Only certain elements can match :enabled or :disabled
14878 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
14879 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
14880 if ( "form" in elem ) {
14881
14882 // Check for inherited disabledness on relevant non-disabled elements:
14883 // * listed form-associated elements in a disabled fieldset
14884 // https://html.spec.whatwg.org/multipage/forms.html#category-listed
14885 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
14886 // * option elements in a disabled optgroup
14887 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
14888 // All such elements have a "form" property.
14889 if ( elem.parentNode && elem.disabled === false ) {
14890
14891 // Option elements defer to a parent optgroup if present
14892 if ( "label" in elem ) {
14893 if ( "label" in elem.parentNode ) {
14894 return elem.parentNode.disabled === disabled;
14895 } else {
14896 return elem.disabled === disabled;
14897 }
14898 }
14899
14900 // Support: IE 6 - 11
14901 // Use the isDisabled shortcut property to check for disabled fieldset ancestors
14902 return elem.isDisabled === disabled ||
14903
14904 // Where there is no isDisabled, check manually
14905 /* jshint -W018 */
14906 elem.isDisabled !== !disabled &&
14907 disabledAncestor( elem ) === disabled;
14908 }
14909
14910 return elem.disabled === disabled;
14911
14912 // Try to winnow out elements that can't be disabled before trusting the disabled property.
14913 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
14914 // even exist on them, let alone have a boolean value.
14915 } else if ( "label" in elem ) {
14916 return elem.disabled === disabled;
14917 }
14918
14919 // Remaining elements are neither :enabled nor :disabled
14920 return false;
14921 };
14922}
14923
14924/**
14925 * Returns a function to use in pseudos for positionals
14926 * @param {Function} fn
14927 */
14928function createPositionalPseudo( fn ) {
14929 return markFunction(function( argument ) {
14930 argument = +argument;
14931 return markFunction(function( seed, matches ) {
14932 var j,
14933 matchIndexes = fn( [], seed.length, argument ),
14934 i = matchIndexes.length;
14935
14936 // Match elements found at the specified indexes
14937 while ( i-- ) {
14938 if ( seed[ (j = matchIndexes[i]) ] ) {
14939 seed[j] = !(matches[j] = seed[j]);
14940 }
14941 }
14942 });
14943 });
14944}
14945
14946/**
14947 * Checks a node for validity as a Sizzle context
14948 * @param {Element|Object=} context
14949 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
14950 */
14951function testContext( context ) {
14952 return context && typeof context.getElementsByTagName !== "undefined" && context;
14953}
14954
14955// Expose support vars for convenience
14956support = Sizzle.support = {};
14957
14958/**
14959 * Detects XML nodes
14960 * @param {Element|Object} elem An element or a document
14961 * @returns {Boolean} True iff elem is a non-HTML XML node
14962 */
14963isXML = Sizzle.isXML = function( elem ) {
14964 // documentElement is verified for cases where it doesn't yet exist
14965 // (such as loading iframes in IE - #4833)
14966 var documentElement = elem && (elem.ownerDocument || elem).documentElement;
14967 return documentElement ? documentElement.nodeName !== "HTML" : false;
14968};
14969
14970/**
14971 * Sets document-related variables once based on the current document
14972 * @param {Element|Object} [doc] An element or document object to use to set the document
14973 * @returns {Object} Returns the current document
14974 */
14975setDocument = Sizzle.setDocument = function( node ) {
14976 var hasCompare, subWindow,
14977 doc = node ? node.ownerDocument || node : preferredDoc;
14978
14979 // Return early if doc is invalid or already selected
14980 if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
14981 return document;
14982 }
14983
14984 // Update global variables
14985 document = doc;
14986 docElem = document.documentElement;
14987 documentIsHTML = !isXML( document );
14988
14989 // Support: IE 9-11, Edge
14990 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
14991 if ( preferredDoc !== document &&
14992 (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
14993
14994 // Support: IE 11, Edge
14995 if ( subWindow.addEventListener ) {
14996 subWindow.addEventListener( "unload", unloadHandler, false );
14997
14998 // Support: IE 9 - 10 only
14999 } else if ( subWindow.attachEvent ) {
15000 subWindow.attachEvent( "onunload", unloadHandler );
15001 }
15002 }
15003
15004 /* Attributes
15005 ---------------------------------------------------------------------- */
15006
15007 // Support: IE<8
15008 // Verify that getAttribute really returns attributes and not properties
15009 // (excepting IE8 booleans)
15010 support.attributes = assert(function( el ) {
15011 el.className = "i";
15012 return !el.getAttribute("className");
15013 });
15014
15015 /* getElement(s)By*
15016 ---------------------------------------------------------------------- */
15017
15018 // Check if getElementsByTagName("*") returns only elements
15019 support.getElementsByTagName = assert(function( el ) {
15020 el.appendChild( document.createComment("") );
15021 return !el.getElementsByTagName("*").length;
15022 });
15023
15024 // Support: IE<9
15025 support.getElementsByClassName = rnative.test( document.getElementsByClassName );
15026
15027 // Support: IE<10
15028 // Check if getElementById returns elements by name
15029 // The broken getElementById methods don't pick up programmatically-set names,
15030 // so use a roundabout getElementsByName test
15031 support.getById = assert(function( el ) {
15032 docElem.appendChild( el ).id = expando;
15033 return !document.getElementsByName || !document.getElementsByName( expando ).length;
15034 });
15035
15036 // ID filter and find
15037 if ( support.getById ) {
15038 Expr.filter["ID"] = function( id ) {
15039 var attrId = id.replace( runescape, funescape );
15040 return function( elem ) {
15041 return elem.getAttribute("id") === attrId;
15042 };
15043 };
15044 Expr.find["ID"] = function( id, context ) {
15045 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
15046 var elem = context.getElementById( id );
15047 return elem ? [ elem ] : [];
15048 }
15049 };
15050 } else {
15051 Expr.filter["ID"] = function( id ) {
15052 var attrId = id.replace( runescape, funescape );
15053 return function( elem ) {
15054 var node = typeof elem.getAttributeNode !== "undefined" &&
15055 elem.getAttributeNode("id");
15056 return node && node.value === attrId;
15057 };
15058 };
15059
15060 // Support: IE 6 - 7 only
15061 // getElementById is not reliable as a find shortcut
15062 Expr.find["ID"] = function( id, context ) {
15063 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
15064 var node, i, elems,
15065 elem = context.getElementById( id );
15066
15067 if ( elem ) {
15068
15069 // Verify the id attribute
15070 node = elem.getAttributeNode("id");
15071 if ( node && node.value === id ) {
15072 return [ elem ];
15073 }
15074
15075 // Fall back on getElementsByName
15076 elems = context.getElementsByName( id );
15077 i = 0;
15078 while ( (elem = elems[i++]) ) {
15079 node = elem.getAttributeNode("id");
15080 if ( node && node.value === id ) {
15081 return [ elem ];
15082 }
15083 }
15084 }
15085
15086 return [];
15087 }
15088 };
15089 }
15090
15091 // Tag
15092 Expr.find["TAG"] = support.getElementsByTagName ?
15093 function( tag, context ) {
15094 if ( typeof context.getElementsByTagName !== "undefined" ) {
15095 return context.getElementsByTagName( tag );
15096
15097 // DocumentFragment nodes don't have gEBTN
15098 } else if ( support.qsa ) {
15099 return context.querySelectorAll( tag );
15100 }
15101 } :
15102
15103 function( tag, context ) {
15104 var elem,
15105 tmp = [],
15106 i = 0,
15107 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
15108 results = context.getElementsByTagName( tag );
15109
15110 // Filter out possible comments
15111 if ( tag === "*" ) {
15112 while ( (elem = results[i++]) ) {
15113 if ( elem.nodeType === 1 ) {
15114 tmp.push( elem );
15115 }
15116 }
15117
15118 return tmp;
15119 }
15120 return results;
15121 };
15122
15123 // Class
15124 Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
15125 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
15126 return context.getElementsByClassName( className );
15127 }
15128 };
15129
15130 /* QSA/matchesSelector
15131 ---------------------------------------------------------------------- */
15132
15133 // QSA and matchesSelector support
15134
15135 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
15136 rbuggyMatches = [];
15137
15138 // qSa(:focus) reports false when true (Chrome 21)
15139 // We allow this because of a bug in IE8/9 that throws an error
15140 // whenever `document.activeElement` is accessed on an iframe
15141 // So, we allow :focus to pass through QSA all the time to avoid the IE error
15142 // See https://bugs.jquery.com/ticket/13378
15143 rbuggyQSA = [];
15144
15145 if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
15146 // Build QSA regex
15147 // Regex strategy adopted from Diego Perini
15148 assert(function( el ) {
15149 // Select is set to empty string on purpose
15150 // This is to test IE's treatment of not explicitly
15151 // setting a boolean content attribute,
15152 // since its presence should be enough
15153 // https://bugs.jquery.com/ticket/12359
15154 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
15155 "<select id='" + expando + "-\r\\' msallowcapture=''>" +
15156 "<option selected=''></option></select>";
15157
15158 // Support: IE8, Opera 11-12.16
15159 // Nothing should be selected when empty strings follow ^= or $= or *=
15160 // The test attribute must be unknown in Opera but "safe" for WinRT
15161 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
15162 if ( el.querySelectorAll("[msallowcapture^='']").length ) {
15163 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
15164 }
15165
15166 // Support: IE8
15167 // Boolean attributes and "value" are not treated correctly
15168 if ( !el.querySelectorAll("[selected]").length ) {
15169 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
15170 }
15171
15172 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
15173 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
15174 rbuggyQSA.push("~=");
15175 }
15176
15177 // Webkit/Opera - :checked should return selected option elements
15178 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
15179 // IE8 throws error here and will not see later tests
15180 if ( !el.querySelectorAll(":checked").length ) {
15181 rbuggyQSA.push(":checked");
15182 }
15183
15184 // Support: Safari 8+, iOS 8+
15185 // https://bugs.webkit.org/show_bug.cgi?id=136851
15186 // In-page `selector#id sibling-combinator selector` fails
15187 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
15188 rbuggyQSA.push(".#.+[+~]");
15189 }
15190 });
15191
15192 assert(function( el ) {
15193 el.innerHTML = "<a href='' disabled='disabled'></a>" +
15194 "<select disabled='disabled'><option/></select>";
15195
15196 // Support: Windows 8 Native Apps
15197 // The type and name attributes are restricted during .innerHTML assignment
15198 var input = document.createElement("input");
15199 input.setAttribute( "type", "hidden" );
15200 el.appendChild( input ).setAttribute( "name", "D" );
15201
15202 // Support: IE8
15203 // Enforce case-sensitivity of name attribute
15204 if ( el.querySelectorAll("[name=d]").length ) {
15205 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
15206 }
15207
15208 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
15209 // IE8 throws error here and will not see later tests
15210 if ( el.querySelectorAll(":enabled").length !== 2 ) {
15211 rbuggyQSA.push( ":enabled", ":disabled" );
15212 }
15213
15214 // Support: IE9-11+
15215 // IE's :disabled selector does not pick up the children of disabled fieldsets
15216 docElem.appendChild( el ).disabled = true;
15217 if ( el.querySelectorAll(":disabled").length !== 2 ) {
15218 rbuggyQSA.push( ":enabled", ":disabled" );
15219 }
15220
15221 // Opera 10-11 does not throw on post-comma invalid pseudos
15222 el.querySelectorAll("*,:x");
15223 rbuggyQSA.push(",.*:");
15224 });
15225 }
15226
15227 if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
15228 docElem.webkitMatchesSelector ||
15229 docElem.mozMatchesSelector ||
15230 docElem.oMatchesSelector ||
15231 docElem.msMatchesSelector) )) ) {
15232
15233 assert(function( el ) {
15234 // Check to see if it's possible to do matchesSelector
15235 // on a disconnected node (IE 9)
15236 support.disconnectedMatch = matches.call( el, "*" );
15237
15238 // This should fail with an exception
15239 // Gecko does not error, returns false instead
15240 matches.call( el, "[s!='']:x" );
15241 rbuggyMatches.push( "!=", pseudos );
15242 });
15243 }
15244
15245 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
15246 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
15247
15248 /* Contains
15249 ---------------------------------------------------------------------- */
15250 hasCompare = rnative.test( docElem.compareDocumentPosition );
15251
15252 // Element contains another
15253 // Purposefully self-exclusive
15254 // As in, an element does not contain itself
15255 contains = hasCompare || rnative.test( docElem.contains ) ?
15256 function( a, b ) {
15257 var adown = a.nodeType === 9 ? a.documentElement : a,
15258 bup = b && b.parentNode;
15259 return a === bup || !!( bup && bup.nodeType === 1 && (
15260 adown.contains ?
15261 adown.contains( bup ) :
15262 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
15263 ));
15264 } :
15265 function( a, b ) {
15266 if ( b ) {
15267 while ( (b = b.parentNode) ) {
15268 if ( b === a ) {
15269 return true;
15270 }
15271 }
15272 }
15273 return false;
15274 };
15275
15276 /* Sorting
15277 ---------------------------------------------------------------------- */
15278
15279 // Document order sorting
15280 sortOrder = hasCompare ?
15281 function( a, b ) {
15282
15283 // Flag for duplicate removal
15284 if ( a === b ) {
15285 hasDuplicate = true;
15286 return 0;
15287 }
15288
15289 // Sort on method existence if only one input has compareDocumentPosition
15290 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
15291 if ( compare ) {
15292 return compare;
15293 }
15294
15295 // Calculate position if both inputs belong to the same document
15296 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
15297 a.compareDocumentPosition( b ) :
15298
15299 // Otherwise we know they are disconnected
15300 1;
15301
15302 // Disconnected nodes
15303 if ( compare & 1 ||
15304 (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
15305
15306 // Choose the first element that is related to our preferred document
15307 if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
15308 return -1;
15309 }
15310 if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
15311 return 1;
15312 }
15313
15314 // Maintain original order
15315 return sortInput ?
15316 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
15317 0;
15318 }
15319
15320 return compare & 4 ? -1 : 1;
15321 } :
15322 function( a, b ) {
15323 // Exit early if the nodes are identical
15324 if ( a === b ) {
15325 hasDuplicate = true;
15326 return 0;
15327 }
15328
15329 var cur,
15330 i = 0,
15331 aup = a.parentNode,
15332 bup = b.parentNode,
15333 ap = [ a ],
15334 bp = [ b ];
15335
15336 // Parentless nodes are either documents or disconnected
15337 if ( !aup || !bup ) {
15338 return a === document ? -1 :
15339 b === document ? 1 :
15340 aup ? -1 :
15341 bup ? 1 :
15342 sortInput ?
15343 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
15344 0;
15345
15346 // If the nodes are siblings, we can do a quick check
15347 } else if ( aup === bup ) {
15348 return siblingCheck( a, b );
15349 }
15350
15351 // Otherwise we need full lists of their ancestors for comparison
15352 cur = a;
15353 while ( (cur = cur.parentNode) ) {
15354 ap.unshift( cur );
15355 }
15356 cur = b;
15357 while ( (cur = cur.parentNode) ) {
15358 bp.unshift( cur );
15359 }
15360
15361 // Walk down the tree looking for a discrepancy
15362 while ( ap[i] === bp[i] ) {
15363 i++;
15364 }
15365
15366 return i ?
15367 // Do a sibling check if the nodes have a common ancestor
15368 siblingCheck( ap[i], bp[i] ) :
15369
15370 // Otherwise nodes in our document sort first
15371 ap[i] === preferredDoc ? -1 :
15372 bp[i] === preferredDoc ? 1 :
15373 0;
15374 };
15375
15376 return document;
15377};
15378
15379Sizzle.matches = function( expr, elements ) {
15380 return Sizzle( expr, null, null, elements );
15381};
15382
15383Sizzle.matchesSelector = function( elem, expr ) {
15384 // Set document vars if needed
15385 if ( ( elem.ownerDocument || elem ) !== document ) {
15386 setDocument( elem );
15387 }
15388
15389 // Make sure that attribute selectors are quoted
15390 expr = expr.replace( rattributeQuotes, "='$1']" );
15391
15392 if ( support.matchesSelector && documentIsHTML &&
15393 !compilerCache[ expr + " " ] &&
15394 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
15395 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
15396
15397 try {
15398 var ret = matches.call( elem, expr );
15399
15400 // IE 9's matchesSelector returns false on disconnected nodes
15401 if ( ret || support.disconnectedMatch ||
15402 // As well, disconnected nodes are said to be in a document
15403 // fragment in IE 9
15404 elem.document && elem.document.nodeType !== 11 ) {
15405 return ret;
15406 }
15407 } catch (e) {}
15408 }
15409
15410 return Sizzle( expr, document, null, [ elem ] ).length > 0;
15411};
15412
15413Sizzle.contains = function( context, elem ) {
15414 // Set document vars if needed
15415 if ( ( context.ownerDocument || context ) !== document ) {
15416 setDocument( context );
15417 }
15418 return contains( context, elem );
15419};
15420
15421Sizzle.attr = function( elem, name ) {
15422 // Set document vars if needed
15423 if ( ( elem.ownerDocument || elem ) !== document ) {
15424 setDocument( elem );
15425 }
15426
15427 var fn = Expr.attrHandle[ name.toLowerCase() ],
15428 // Don't get fooled by Object.prototype properties (jQuery #13807)
15429 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
15430 fn( elem, name, !documentIsHTML ) :
15431 undefined;
15432
15433 return val !== undefined ?
15434 val :
15435 support.attributes || !documentIsHTML ?
15436 elem.getAttribute( name ) :
15437 (val = elem.getAttributeNode(name)) && val.specified ?
15438 val.value :
15439 null;
15440};
15441
15442Sizzle.escape = function( sel ) {
15443 return (sel + "").replace( rcssescape, fcssescape );
15444};
15445
15446Sizzle.error = function( msg ) {
15447 throw new Error( "Syntax error, unrecognized expression: " + msg );
15448};
15449
15450/**
15451 * Document sorting and removing duplicates
15452 * @param {ArrayLike} results
15453 */
15454Sizzle.uniqueSort = function( results ) {
15455 var elem,
15456 duplicates = [],
15457 j = 0,
15458 i = 0;
15459
15460 // Unless we *know* we can detect duplicates, assume their presence
15461 hasDuplicate = !support.detectDuplicates;
15462 sortInput = !support.sortStable && results.slice( 0 );
15463 results.sort( sortOrder );
15464
15465 if ( hasDuplicate ) {
15466 while ( (elem = results[i++]) ) {
15467 if ( elem === results[ i ] ) {
15468 j = duplicates.push( i );
15469 }
15470 }
15471 while ( j-- ) {
15472 results.splice( duplicates[ j ], 1 );
15473 }
15474 }
15475
15476 // Clear input after sorting to release objects
15477 // See https://github.com/jquery/sizzle/pull/225
15478 sortInput = null;
15479
15480 return results;
15481};
15482
15483/**
15484 * Utility function for retrieving the text value of an array of DOM nodes
15485 * @param {Array|Element} elem
15486 */
15487getText = Sizzle.getText = function( elem ) {
15488 var node,
15489 ret = "",
15490 i = 0,
15491 nodeType = elem.nodeType;
15492
15493 if ( !nodeType ) {
15494 // If no nodeType, this is expected to be an array
15495 while ( (node = elem[i++]) ) {
15496 // Do not traverse comment nodes
15497 ret += getText( node );
15498 }
15499 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
15500 // Use textContent for elements
15501 // innerText usage removed for consistency of new lines (jQuery #11153)
15502 if ( typeof elem.textContent === "string" ) {
15503 return elem.textContent;
15504 } else {
15505 // Traverse its children
15506 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
15507 ret += getText( elem );
15508 }
15509 }
15510 } else if ( nodeType === 3 || nodeType === 4 ) {
15511 return elem.nodeValue;
15512 }
15513 // Do not include comment or processing instruction nodes
15514
15515 return ret;
15516};
15517
15518Expr = Sizzle.selectors = {
15519
15520 // Can be adjusted by the user
15521 cacheLength: 50,
15522
15523 createPseudo: markFunction,
15524
15525 match: matchExpr,
15526
15527 attrHandle: {},
15528
15529 find: {},
15530
15531 relative: {
15532 ">": { dir: "parentNode", first: true },
15533 " ": { dir: "parentNode" },
15534 "+": { dir: "previousSibling", first: true },
15535 "~": { dir: "previousSibling" }
15536 },
15537
15538 preFilter: {
15539 "ATTR": function( match ) {
15540 match[1] = match[1].replace( runescape, funescape );
15541
15542 // Move the given value to match[3] whether quoted or unquoted
15543 match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
15544
15545 if ( match[2] === "~=" ) {
15546 match[3] = " " + match[3] + " ";
15547 }
15548
15549 return match.slice( 0, 4 );
15550 },
15551
15552 "CHILD": function( match ) {
15553 /* matches from matchExpr["CHILD"]
15554 1 type (only|nth|...)
15555 2 what (child|of-type)
15556 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
15557 4 xn-component of xn+y argument ([+-]?\d*n|)
15558 5 sign of xn-component
15559 6 x of xn-component
15560 7 sign of y-component
15561 8 y of y-component
15562 */
15563 match[1] = match[1].toLowerCase();
15564
15565 if ( match[1].slice( 0, 3 ) === "nth" ) {
15566 // nth-* requires argument
15567 if ( !match[3] ) {
15568 Sizzle.error( match[0] );
15569 }
15570
15571 // numeric x and y parameters for Expr.filter.CHILD
15572 // remember that false/true cast respectively to 0/1
15573 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
15574 match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
15575
15576 // other types prohibit arguments
15577 } else if ( match[3] ) {
15578 Sizzle.error( match[0] );
15579 }
15580
15581 return match;
15582 },
15583
15584 "PSEUDO": function( match ) {
15585 var excess,
15586 unquoted = !match[6] && match[2];
15587
15588 if ( matchExpr["CHILD"].test( match[0] ) ) {
15589 return null;
15590 }
15591
15592 // Accept quoted arguments as-is
15593 if ( match[3] ) {
15594 match[2] = match[4] || match[5] || "";
15595
15596 // Strip excess characters from unquoted arguments
15597 } else if ( unquoted && rpseudo.test( unquoted ) &&
15598 // Get excess from tokenize (recursively)
15599 (excess = tokenize( unquoted, true )) &&
15600 // advance to the next closing parenthesis
15601 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
15602
15603 // excess is a negative index
15604 match[0] = match[0].slice( 0, excess );
15605 match[2] = unquoted.slice( 0, excess );
15606 }
15607
15608 // Return only captures needed by the pseudo filter method (type and argument)
15609 return match.slice( 0, 3 );
15610 }
15611 },
15612
15613 filter: {
15614
15615 "TAG": function( nodeNameSelector ) {
15616 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
15617 return nodeNameSelector === "*" ?
15618 function() { return true; } :
15619 function( elem ) {
15620 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
15621 };
15622 },
15623
15624 "CLASS": function( className ) {
15625 var pattern = classCache[ className + " " ];
15626
15627 return pattern ||
15628 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
15629 classCache( className, function( elem ) {
15630 return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
15631 });
15632 },
15633
15634 "ATTR": function( name, operator, check ) {
15635 return function( elem ) {
15636 var result = Sizzle.attr( elem, name );
15637
15638 if ( result == null ) {
15639 return operator === "!=";
15640 }
15641 if ( !operator ) {
15642 return true;
15643 }
15644
15645 result += "";
15646
15647 return operator === "=" ? result === check :
15648 operator === "!=" ? result !== check :
15649 operator === "^=" ? check && result.indexOf( check ) === 0 :
15650 operator === "*=" ? check && result.indexOf( check ) > -1 :
15651 operator === "$=" ? check && result.slice( -check.length ) === check :
15652 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
15653 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
15654 false;
15655 };
15656 },
15657
15658 "CHILD": function( type, what, argument, first, last ) {
15659 var simple = type.slice( 0, 3 ) !== "nth",
15660 forward = type.slice( -4 ) !== "last",
15661 ofType = what === "of-type";
15662
15663 return first === 1 && last === 0 ?
15664
15665 // Shortcut for :nth-*(n)
15666 function( elem ) {
15667 return !!elem.parentNode;
15668 } :
15669
15670 function( elem, context, xml ) {
15671 var cache, uniqueCache, outerCache, node, nodeIndex, start,
15672 dir = simple !== forward ? "nextSibling" : "previousSibling",
15673 parent = elem.parentNode,
15674 name = ofType && elem.nodeName.toLowerCase(),
15675 useCache = !xml && !ofType,
15676 diff = false;
15677
15678 if ( parent ) {
15679
15680 // :(first|last|only)-(child|of-type)
15681 if ( simple ) {
15682 while ( dir ) {
15683 node = elem;
15684 while ( (node = node[ dir ]) ) {
15685 if ( ofType ?
15686 node.nodeName.toLowerCase() === name :
15687 node.nodeType === 1 ) {
15688
15689 return false;
15690 }
15691 }
15692 // Reverse direction for :only-* (if we haven't yet done so)
15693 start = dir = type === "only" && !start && "nextSibling";
15694 }
15695 return true;
15696 }
15697
15698 start = [ forward ? parent.firstChild : parent.lastChild ];
15699
15700 // non-xml :nth-child(...) stores cache data on `parent`
15701 if ( forward && useCache ) {
15702
15703 // Seek `elem` from a previously-cached index
15704
15705 // ...in a gzip-friendly way
15706 node = parent;
15707 outerCache = node[ expando ] || (node[ expando ] = {});
15708
15709 // Support: IE <9 only
15710 // Defend against cloned attroperties (jQuery gh-1709)
15711 uniqueCache = outerCache[ node.uniqueID ] ||
15712 (outerCache[ node.uniqueID ] = {});
15713
15714 cache = uniqueCache[ type ] || [];
15715 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
15716 diff = nodeIndex && cache[ 2 ];
15717 node = nodeIndex && parent.childNodes[ nodeIndex ];
15718
15719 while ( (node = ++nodeIndex && node && node[ dir ] ||
15720
15721 // Fallback to seeking `elem` from the start
15722 (diff = nodeIndex = 0) || start.pop()) ) {
15723
15724 // When found, cache indexes on `parent` and break
15725 if ( node.nodeType === 1 && ++diff && node === elem ) {
15726 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
15727 break;
15728 }
15729 }
15730
15731 } else {
15732 // Use previously-cached element index if available
15733 if ( useCache ) {
15734 // ...in a gzip-friendly way
15735 node = elem;
15736 outerCache = node[ expando ] || (node[ expando ] = {});
15737
15738 // Support: IE <9 only
15739 // Defend against cloned attroperties (jQuery gh-1709)
15740 uniqueCache = outerCache[ node.uniqueID ] ||
15741 (outerCache[ node.uniqueID ] = {});
15742
15743 cache = uniqueCache[ type ] || [];
15744 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
15745 diff = nodeIndex;
15746 }
15747
15748 // xml :nth-child(...)
15749 // or :nth-last-child(...) or :nth(-last)?-of-type(...)
15750 if ( diff === false ) {
15751 // Use the same loop as above to seek `elem` from the start
15752 while ( (node = ++nodeIndex && node && node[ dir ] ||
15753 (diff = nodeIndex = 0) || start.pop()) ) {
15754
15755 if ( ( ofType ?
15756 node.nodeName.toLowerCase() === name :
15757 node.nodeType === 1 ) &&
15758 ++diff ) {
15759
15760 // Cache the index of each encountered element
15761 if ( useCache ) {
15762 outerCache = node[ expando ] || (node[ expando ] = {});
15763
15764 // Support: IE <9 only
15765 // Defend against cloned attroperties (jQuery gh-1709)
15766 uniqueCache = outerCache[ node.uniqueID ] ||
15767 (outerCache[ node.uniqueID ] = {});
15768
15769 uniqueCache[ type ] = [ dirruns, diff ];
15770 }
15771
15772 if ( node === elem ) {
15773 break;
15774 }
15775 }
15776 }
15777 }
15778 }
15779
15780 // Incorporate the offset, then check against cycle size
15781 diff -= last;
15782 return diff === first || ( diff % first === 0 && diff / first >= 0 );
15783 }
15784 };
15785 },
15786
15787 "PSEUDO": function( pseudo, argument ) {
15788 // pseudo-class names are case-insensitive
15789 // http://www.w3.org/TR/selectors/#pseudo-classes
15790 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
15791 // Remember that setFilters inherits from pseudos
15792 var args,
15793 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
15794 Sizzle.error( "unsupported pseudo: " + pseudo );
15795
15796 // The user may use createPseudo to indicate that
15797 // arguments are needed to create the filter function
15798 // just as Sizzle does
15799 if ( fn[ expando ] ) {
15800 return fn( argument );
15801 }
15802
15803 // But maintain support for old signatures
15804 if ( fn.length > 1 ) {
15805 args = [ pseudo, pseudo, "", argument ];
15806 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
15807 markFunction(function( seed, matches ) {
15808 var idx,
15809 matched = fn( seed, argument ),
15810 i = matched.length;
15811 while ( i-- ) {
15812 idx = indexOf( seed, matched[i] );
15813 seed[ idx ] = !( matches[ idx ] = matched[i] );
15814 }
15815 }) :
15816 function( elem ) {
15817 return fn( elem, 0, args );
15818 };
15819 }
15820
15821 return fn;
15822 }
15823 },
15824
15825 pseudos: {
15826 // Potentially complex pseudos
15827 "not": markFunction(function( selector ) {
15828 // Trim the selector passed to compile
15829 // to avoid treating leading and trailing
15830 // spaces as combinators
15831 var input = [],
15832 results = [],
15833 matcher = compile( selector.replace( rtrim, "$1" ) );
15834
15835 return matcher[ expando ] ?
15836 markFunction(function( seed, matches, context, xml ) {
15837 var elem,
15838 unmatched = matcher( seed, null, xml, [] ),
15839 i = seed.length;
15840
15841 // Match elements unmatched by `matcher`
15842 while ( i-- ) {
15843 if ( (elem = unmatched[i]) ) {
15844 seed[i] = !(matches[i] = elem);
15845 }
15846 }
15847 }) :
15848 function( elem, context, xml ) {
15849 input[0] = elem;
15850 matcher( input, null, xml, results );
15851 // Don't keep the element (issue #299)
15852 input[0] = null;
15853 return !results.pop();
15854 };
15855 }),
15856
15857 "has": markFunction(function( selector ) {
15858 return function( elem ) {
15859 return Sizzle( selector, elem ).length > 0;
15860 };
15861 }),
15862
15863 "contains": markFunction(function( text ) {
15864 text = text.replace( runescape, funescape );
15865 return function( elem ) {
15866 return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
15867 };
15868 }),
15869
15870 // "Whether an element is represented by a :lang() selector
15871 // is based solely on the element's language value
15872 // being equal to the identifier C,
15873 // or beginning with the identifier C immediately followed by "-".
15874 // The matching of C against the element's language value is performed case-insensitively.
15875 // The identifier C does not have to be a valid language name."
15876 // http://www.w3.org/TR/selectors/#lang-pseudo
15877 "lang": markFunction( function( lang ) {
15878 // lang value must be a valid identifier
15879 if ( !ridentifier.test(lang || "") ) {
15880 Sizzle.error( "unsupported lang: " + lang );
15881 }
15882 lang = lang.replace( runescape, funescape ).toLowerCase();
15883 return function( elem ) {
15884 var elemLang;
15885 do {
15886 if ( (elemLang = documentIsHTML ?
15887 elem.lang :
15888 elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
15889
15890 elemLang = elemLang.toLowerCase();
15891 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
15892 }
15893 } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
15894 return false;
15895 };
15896 }),
15897
15898 // Miscellaneous
15899 "target": function( elem ) {
15900 var hash = window.location && window.location.hash;
15901 return hash && hash.slice( 1 ) === elem.id;
15902 },
15903
15904 "root": function( elem ) {
15905 return elem === docElem;
15906 },
15907
15908 "focus": function( elem ) {
15909 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
15910 },
15911
15912 // Boolean properties
15913 "enabled": createDisabledPseudo( false ),
15914 "disabled": createDisabledPseudo( true ),
15915
15916 "checked": function( elem ) {
15917 // In CSS3, :checked should return both checked and selected elements
15918 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
15919 var nodeName = elem.nodeName.toLowerCase();
15920 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
15921 },
15922
15923 "selected": function( elem ) {
15924 // Accessing this property makes selected-by-default
15925 // options in Safari work properly
15926 if ( elem.parentNode ) {
15927 elem.parentNode.selectedIndex;
15928 }
15929
15930 return elem.selected === true;
15931 },
15932
15933 // Contents
15934 "empty": function( elem ) {
15935 // http://www.w3.org/TR/selectors/#empty-pseudo
15936 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
15937 // but not by others (comment: 8; processing instruction: 7; etc.)
15938 // nodeType < 6 works because attributes (2) do not appear as children
15939 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
15940 if ( elem.nodeType < 6 ) {
15941 return false;
15942 }
15943 }
15944 return true;
15945 },
15946
15947 "parent": function( elem ) {
15948 return !Expr.pseudos["empty"]( elem );
15949 },
15950
15951 // Element/input types
15952 "header": function( elem ) {
15953 return rheader.test( elem.nodeName );
15954 },
15955
15956 "input": function( elem ) {
15957 return rinputs.test( elem.nodeName );
15958 },
15959
15960 "button": function( elem ) {
15961 var name = elem.nodeName.toLowerCase();
15962 return name === "input" && elem.type === "button" || name === "button";
15963 },
15964
15965 "text": function( elem ) {
15966 var attr;
15967 return elem.nodeName.toLowerCase() === "input" &&
15968 elem.type === "text" &&
15969
15970 // Support: IE<8
15971 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
15972 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
15973 },
15974
15975 // Position-in-collection
15976 "first": createPositionalPseudo(function() {
15977 return [ 0 ];
15978 }),
15979
15980 "last": createPositionalPseudo(function( matchIndexes, length ) {
15981 return [ length - 1 ];
15982 }),
15983
15984 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
15985 return [ argument < 0 ? argument + length : argument ];
15986 }),
15987
15988 "even": createPositionalPseudo(function( matchIndexes, length ) {
15989 var i = 0;
15990 for ( ; i < length; i += 2 ) {
15991 matchIndexes.push( i );
15992 }
15993 return matchIndexes;
15994 }),
15995
15996 "odd": createPositionalPseudo(function( matchIndexes, length ) {
15997 var i = 1;
15998 for ( ; i < length; i += 2 ) {
15999 matchIndexes.push( i );
16000 }
16001 return matchIndexes;
16002 }),
16003
16004 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
16005 var i = argument < 0 ? argument + length : argument;
16006 for ( ; --i >= 0; ) {
16007 matchIndexes.push( i );
16008 }
16009 return matchIndexes;
16010 }),
16011
16012 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
16013 var i = argument < 0 ? argument + length : argument;
16014 for ( ; ++i < length; ) {
16015 matchIndexes.push( i );
16016 }
16017 return matchIndexes;
16018 })
16019 }
16020};
16021
16022Expr.pseudos["nth"] = Expr.pseudos["eq"];
16023
16024// Add button/input type pseudos
16025for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
16026 Expr.pseudos[ i ] = createInputPseudo( i );
16027}
16028for ( i in { submit: true, reset: true } ) {
16029 Expr.pseudos[ i ] = createButtonPseudo( i );
16030}
16031
16032// Easy API for creating new setFilters
16033function setFilters() {}
16034setFilters.prototype = Expr.filters = Expr.pseudos;
16035Expr.setFilters = new setFilters();
16036
16037tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
16038 var matched, match, tokens, type,
16039 soFar, groups, preFilters,
16040 cached = tokenCache[ selector + " " ];
16041
16042 if ( cached ) {
16043 return parseOnly ? 0 : cached.slice( 0 );
16044 }
16045
16046 soFar = selector;
16047 groups = [];
16048 preFilters = Expr.preFilter;
16049
16050 while ( soFar ) {
16051
16052 // Comma and first run
16053 if ( !matched || (match = rcomma.exec( soFar )) ) {
16054 if ( match ) {
16055 // Don't consume trailing commas as valid
16056 soFar = soFar.slice( match[0].length ) || soFar;
16057 }
16058 groups.push( (tokens = []) );
16059 }
16060
16061 matched = false;
16062
16063 // Combinators
16064 if ( (match = rcombinators.exec( soFar )) ) {
16065 matched = match.shift();
16066 tokens.push({
16067 value: matched,
16068 // Cast descendant combinators to space
16069 type: match[0].replace( rtrim, " " )
16070 });
16071 soFar = soFar.slice( matched.length );
16072 }
16073
16074 // Filters
16075 for ( type in Expr.filter ) {
16076 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
16077 (match = preFilters[ type ]( match ))) ) {
16078 matched = match.shift();
16079 tokens.push({
16080 value: matched,
16081 type: type,
16082 matches: match
16083 });
16084 soFar = soFar.slice( matched.length );
16085 }
16086 }
16087
16088 if ( !matched ) {
16089 break;
16090 }
16091 }
16092
16093 // Return the length of the invalid excess
16094 // if we're just parsing
16095 // Otherwise, throw an error or return tokens
16096 return parseOnly ?
16097 soFar.length :
16098 soFar ?
16099 Sizzle.error( selector ) :
16100 // Cache the tokens
16101 tokenCache( selector, groups ).slice( 0 );
16102};
16103
16104function toSelector( tokens ) {
16105 var i = 0,
16106 len = tokens.length,
16107 selector = "";
16108 for ( ; i < len; i++ ) {
16109 selector += tokens[i].value;
16110 }
16111 return selector;
16112}
16113
16114function addCombinator( matcher, combinator, base ) {
16115 var dir = combinator.dir,
16116 skip = combinator.next,
16117 key = skip || dir,
16118 checkNonElements = base && key === "parentNode",
16119 doneName = done++;
16120
16121 return combinator.first ?
16122 // Check against closest ancestor/preceding element
16123 function( elem, context, xml ) {
16124 while ( (elem = elem[ dir ]) ) {
16125 if ( elem.nodeType === 1 || checkNonElements ) {
16126 return matcher( elem, context, xml );
16127 }
16128 }
16129 return false;
16130 } :
16131
16132 // Check against all ancestor/preceding elements
16133 function( elem, context, xml ) {
16134 var oldCache, uniqueCache, outerCache,
16135 newCache = [ dirruns, doneName ];
16136
16137 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
16138 if ( xml ) {
16139 while ( (elem = elem[ dir ]) ) {
16140 if ( elem.nodeType === 1 || checkNonElements ) {
16141 if ( matcher( elem, context, xml ) ) {
16142 return true;
16143 }
16144 }
16145 }
16146 } else {
16147 while ( (elem = elem[ dir ]) ) {
16148 if ( elem.nodeType === 1 || checkNonElements ) {
16149 outerCache = elem[ expando ] || (elem[ expando ] = {});
16150
16151 // Support: IE <9 only
16152 // Defend against cloned attroperties (jQuery gh-1709)
16153 uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
16154
16155 if ( skip && skip === elem.nodeName.toLowerCase() ) {
16156 elem = elem[ dir ] || elem;
16157 } else if ( (oldCache = uniqueCache[ key ]) &&
16158 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
16159
16160 // Assign to newCache so results back-propagate to previous elements
16161 return (newCache[ 2 ] = oldCache[ 2 ]);
16162 } else {
16163 // Reuse newcache so results back-propagate to previous elements
16164 uniqueCache[ key ] = newCache;
16165
16166 // A match means we're done; a fail means we have to keep checking
16167 if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
16168 return true;
16169 }
16170 }
16171 }
16172 }
16173 }
16174 return false;
16175 };
16176}
16177
16178function elementMatcher( matchers ) {
16179 return matchers.length > 1 ?
16180 function( elem, context, xml ) {
16181 var i = matchers.length;
16182 while ( i-- ) {
16183 if ( !matchers[i]( elem, context, xml ) ) {
16184 return false;
16185 }
16186 }
16187 return true;
16188 } :
16189 matchers[0];
16190}
16191
16192function multipleContexts( selector, contexts, results ) {
16193 var i = 0,
16194 len = contexts.length;
16195 for ( ; i < len; i++ ) {
16196 Sizzle( selector, contexts[i], results );
16197 }
16198 return results;
16199}
16200
16201function condense( unmatched, map, filter, context, xml ) {
16202 var elem,
16203 newUnmatched = [],
16204 i = 0,
16205 len = unmatched.length,
16206 mapped = map != null;
16207
16208 for ( ; i < len; i++ ) {
16209 if ( (elem = unmatched[i]) ) {
16210 if ( !filter || filter( elem, context, xml ) ) {
16211 newUnmatched.push( elem );
16212 if ( mapped ) {
16213 map.push( i );
16214 }
16215 }
16216 }
16217 }
16218
16219 return newUnmatched;
16220}
16221
16222function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
16223 if ( postFilter && !postFilter[ expando ] ) {
16224 postFilter = setMatcher( postFilter );
16225 }
16226 if ( postFinder && !postFinder[ expando ] ) {
16227 postFinder = setMatcher( postFinder, postSelector );
16228 }
16229 return markFunction(function( seed, results, context, xml ) {
16230 var temp, i, elem,
16231 preMap = [],
16232 postMap = [],
16233 preexisting = results.length,
16234
16235 // Get initial elements from seed or context
16236 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
16237
16238 // Prefilter to get matcher input, preserving a map for seed-results synchronization
16239 matcherIn = preFilter && ( seed || !selector ) ?
16240 condense( elems, preMap, preFilter, context, xml ) :
16241 elems,
16242
16243 matcherOut = matcher ?
16244 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
16245 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
16246
16247 // ...intermediate processing is necessary
16248 [] :
16249
16250 // ...otherwise use results directly
16251 results :
16252 matcherIn;
16253
16254 // Find primary matches
16255 if ( matcher ) {
16256 matcher( matcherIn, matcherOut, context, xml );
16257 }
16258
16259 // Apply postFilter
16260 if ( postFilter ) {
16261 temp = condense( matcherOut, postMap );
16262 postFilter( temp, [], context, xml );
16263
16264 // Un-match failing elements by moving them back to matcherIn
16265 i = temp.length;
16266 while ( i-- ) {
16267 if ( (elem = temp[i]) ) {
16268 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
16269 }
16270 }
16271 }
16272
16273 if ( seed ) {
16274 if ( postFinder || preFilter ) {
16275 if ( postFinder ) {
16276 // Get the final matcherOut by condensing this intermediate into postFinder contexts
16277 temp = [];
16278 i = matcherOut.length;
16279 while ( i-- ) {
16280 if ( (elem = matcherOut[i]) ) {
16281 // Restore matcherIn since elem is not yet a final match
16282 temp.push( (matcherIn[i] = elem) );
16283 }
16284 }
16285 postFinder( null, (matcherOut = []), temp, xml );
16286 }
16287
16288 // Move matched elements from seed to results to keep them synchronized
16289 i = matcherOut.length;
16290 while ( i-- ) {
16291 if ( (elem = matcherOut[i]) &&
16292 (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
16293
16294 seed[temp] = !(results[temp] = elem);
16295 }
16296 }
16297 }
16298
16299 // Add elements to results, through postFinder if defined
16300 } else {
16301 matcherOut = condense(
16302 matcherOut === results ?
16303 matcherOut.splice( preexisting, matcherOut.length ) :
16304 matcherOut
16305 );
16306 if ( postFinder ) {
16307 postFinder( null, results, matcherOut, xml );
16308 } else {
16309 push.apply( results, matcherOut );
16310 }
16311 }
16312 });
16313}
16314
16315function matcherFromTokens( tokens ) {
16316 var checkContext, matcher, j,
16317 len = tokens.length,
16318 leadingRelative = Expr.relative[ tokens[0].type ],
16319 implicitRelative = leadingRelative || Expr.relative[" "],
16320 i = leadingRelative ? 1 : 0,
16321
16322 // The foundational matcher ensures that elements are reachable from top-level context(s)
16323 matchContext = addCombinator( function( elem ) {
16324 return elem === checkContext;
16325 }, implicitRelative, true ),
16326 matchAnyContext = addCombinator( function( elem ) {
16327 return indexOf( checkContext, elem ) > -1;
16328 }, implicitRelative, true ),
16329 matchers = [ function( elem, context, xml ) {
16330 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
16331 (checkContext = context).nodeType ?
16332 matchContext( elem, context, xml ) :
16333 matchAnyContext( elem, context, xml ) );
16334 // Avoid hanging onto element (issue #299)
16335 checkContext = null;
16336 return ret;
16337 } ];
16338
16339 for ( ; i < len; i++ ) {
16340 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
16341 matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
16342 } else {
16343 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
16344
16345 // Return special upon seeing a positional matcher
16346 if ( matcher[ expando ] ) {
16347 // Find the next relative operator (if any) for proper handling
16348 j = ++i;
16349 for ( ; j < len; j++ ) {
16350 if ( Expr.relative[ tokens[j].type ] ) {
16351 break;
16352 }
16353 }
16354 return setMatcher(
16355 i > 1 && elementMatcher( matchers ),
16356 i > 1 && toSelector(
16357 // If the preceding token was a descendant combinator, insert an implicit any-element `*`
16358 tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
16359 ).replace( rtrim, "$1" ),
16360 matcher,
16361 i < j && matcherFromTokens( tokens.slice( i, j ) ),
16362 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
16363 j < len && toSelector( tokens )
16364 );
16365 }
16366 matchers.push( matcher );
16367 }
16368 }
16369
16370 return elementMatcher( matchers );
16371}
16372
16373function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
16374 var bySet = setMatchers.length > 0,
16375 byElement = elementMatchers.length > 0,
16376 superMatcher = function( seed, context, xml, results, outermost ) {
16377 var elem, j, matcher,
16378 matchedCount = 0,
16379 i = "0",
16380 unmatched = seed && [],
16381 setMatched = [],
16382 contextBackup = outermostContext,
16383 // We must always have either seed elements or outermost context
16384 elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
16385 // Use integer dirruns iff this is the outermost matcher
16386 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
16387 len = elems.length;
16388
16389 if ( outermost ) {
16390 outermostContext = context === document || context || outermost;
16391 }
16392
16393 // Add elements passing elementMatchers directly to results
16394 // Support: IE<9, Safari
16395 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
16396 for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
16397 if ( byElement && elem ) {
16398 j = 0;
16399 if ( !context && elem.ownerDocument !== document ) {
16400 setDocument( elem );
16401 xml = !documentIsHTML;
16402 }
16403 while ( (matcher = elementMatchers[j++]) ) {
16404 if ( matcher( elem, context || document, xml) ) {
16405 results.push( elem );
16406 break;
16407 }
16408 }
16409 if ( outermost ) {
16410 dirruns = dirrunsUnique;
16411 }
16412 }
16413
16414 // Track unmatched elements for set filters
16415 if ( bySet ) {
16416 // They will have gone through all possible matchers
16417 if ( (elem = !matcher && elem) ) {
16418 matchedCount--;
16419 }
16420
16421 // Lengthen the array for every element, matched or not
16422 if ( seed ) {
16423 unmatched.push( elem );
16424 }
16425 }
16426 }
16427
16428 // `i` is now the count of elements visited above, and adding it to `matchedCount`
16429 // makes the latter nonnegative.
16430 matchedCount += i;
16431
16432 // Apply set filters to unmatched elements
16433 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
16434 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
16435 // no element matchers and no seed.
16436 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
16437 // case, which will result in a "00" `matchedCount` that differs from `i` but is also
16438 // numerically zero.
16439 if ( bySet && i !== matchedCount ) {
16440 j = 0;
16441 while ( (matcher = setMatchers[j++]) ) {
16442 matcher( unmatched, setMatched, context, xml );
16443 }
16444
16445 if ( seed ) {
16446 // Reintegrate element matches to eliminate the need for sorting
16447 if ( matchedCount > 0 ) {
16448 while ( i-- ) {
16449 if ( !(unmatched[i] || setMatched[i]) ) {
16450 setMatched[i] = pop.call( results );
16451 }
16452 }
16453 }
16454
16455 // Discard index placeholder values to get only actual matches
16456 setMatched = condense( setMatched );
16457 }
16458
16459 // Add matches to results
16460 push.apply( results, setMatched );
16461
16462 // Seedless set matches succeeding multiple successful matchers stipulate sorting
16463 if ( outermost && !seed && setMatched.length > 0 &&
16464 ( matchedCount + setMatchers.length ) > 1 ) {
16465
16466 Sizzle.uniqueSort( results );
16467 }
16468 }
16469
16470 // Override manipulation of globals by nested matchers
16471 if ( outermost ) {
16472 dirruns = dirrunsUnique;
16473 outermostContext = contextBackup;
16474 }
16475
16476 return unmatched;
16477 };
16478
16479 return bySet ?
16480 markFunction( superMatcher ) :
16481 superMatcher;
16482}
16483
16484compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
16485 var i,
16486 setMatchers = [],
16487 elementMatchers = [],
16488 cached = compilerCache[ selector + " " ];
16489
16490 if ( !cached ) {
16491 // Generate a function of recursive functions that can be used to check each element
16492 if ( !match ) {
16493 match = tokenize( selector );
16494 }
16495 i = match.length;
16496 while ( i-- ) {
16497 cached = matcherFromTokens( match[i] );
16498 if ( cached[ expando ] ) {
16499 setMatchers.push( cached );
16500 } else {
16501 elementMatchers.push( cached );
16502 }
16503 }
16504
16505 // Cache the compiled function
16506 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
16507
16508 // Save selector and tokenization
16509 cached.selector = selector;
16510 }
16511 return cached;
16512};
16513
16514/**
16515 * A low-level selection function that works with Sizzle's compiled
16516 * selector functions
16517 * @param {String|Function} selector A selector or a pre-compiled
16518 * selector function built with Sizzle.compile
16519 * @param {Element} context
16520 * @param {Array} [results]
16521 * @param {Array} [seed] A set of elements to match against
16522 */
16523select = Sizzle.select = function( selector, context, results, seed ) {
16524 var i, tokens, token, type, find,
16525 compiled = typeof selector === "function" && selector,
16526 match = !seed && tokenize( (selector = compiled.selector || selector) );
16527
16528 results = results || [];
16529
16530 // Try to minimize operations if there is only one selector in the list and no seed
16531 // (the latter of which guarantees us context)
16532 if ( match.length === 1 ) {
16533
16534 // Reduce context if the leading compound selector is an ID
16535 tokens = match[0] = match[0].slice( 0 );
16536 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
16537 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
16538
16539 context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
16540 if ( !context ) {
16541 return results;
16542
16543 // Precompiled matchers will still verify ancestry, so step up a level
16544 } else if ( compiled ) {
16545 context = context.parentNode;
16546 }
16547
16548 selector = selector.slice( tokens.shift().value.length );
16549 }
16550
16551 // Fetch a seed set for right-to-left matching
16552 i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
16553 while ( i-- ) {
16554 token = tokens[i];
16555
16556 // Abort if we hit a combinator
16557 if ( Expr.relative[ (type = token.type) ] ) {
16558 break;
16559 }
16560 if ( (find = Expr.find[ type ]) ) {
16561 // Search, expanding context for leading sibling combinators
16562 if ( (seed = find(
16563 token.matches[0].replace( runescape, funescape ),
16564 rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
16565 )) ) {
16566
16567 // If seed is empty or no tokens remain, we can return early
16568 tokens.splice( i, 1 );
16569 selector = seed.length && toSelector( tokens );
16570 if ( !selector ) {
16571 push.apply( results, seed );
16572 return results;
16573 }
16574
16575 break;
16576 }
16577 }
16578 }
16579 }
16580
16581 // Compile and execute a filtering function if one is not provided
16582 // Provide `match` to avoid retokenization if we modified the selector above
16583 ( compiled || compile( selector, match ) )(
16584 seed,
16585 context,
16586 !documentIsHTML,
16587 results,
16588 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
16589 );
16590 return results;
16591};
16592
16593// One-time assignments
16594
16595// Sort stability
16596support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
16597
16598// Support: Chrome 14-35+
16599// Always assume duplicates if they aren't passed to the comparison function
16600support.detectDuplicates = !!hasDuplicate;
16601
16602// Initialize against the default document
16603setDocument();
16604
16605// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
16606// Detached nodes confoundingly follow *each other*
16607support.sortDetached = assert(function( el ) {
16608 // Should return 1, but returns 4 (following)
16609 return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
16610});
16611
16612// Support: IE<8
16613// Prevent attribute/property "interpolation"
16614// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
16615if ( !assert(function( el ) {
16616 el.innerHTML = "<a href='#'></a>";
16617 return el.firstChild.getAttribute("href") === "#" ;
16618}) ) {
16619 addHandle( "type|href|height|width", function( elem, name, isXML ) {
16620 if ( !isXML ) {
16621 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
16622 }
16623 });
16624}
16625
16626// Support: IE<9
16627// Use defaultValue in place of getAttribute("value")
16628if ( !support.attributes || !assert(function( el ) {
16629 el.innerHTML = "<input/>";
16630 el.firstChild.setAttribute( "value", "" );
16631 return el.firstChild.getAttribute( "value" ) === "";
16632}) ) {
16633 addHandle( "value", function( elem, name, isXML ) {
16634 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
16635 return elem.defaultValue;
16636 }
16637 });
16638}
16639
16640// Support: IE<9
16641// Use getAttributeNode to fetch booleans when getAttribute lies
16642if ( !assert(function( el ) {
16643 return el.getAttribute("disabled") == null;
16644}) ) {
16645 addHandle( booleans, function( elem, name, isXML ) {
16646 var val;
16647 if ( !isXML ) {
16648 return elem[ name ] === true ? name.toLowerCase() :
16649 (val = elem.getAttributeNode( name )) && val.specified ?
16650 val.value :
16651 null;
16652 }
16653 });
16654}
16655
16656return Sizzle;
16657
16658})( window );
16659
16660
16661
16662jQuery.find = Sizzle;
16663jQuery.expr = Sizzle.selectors;
16664
16665// Deprecated
16666jQuery.expr[ ":" ] = jQuery.expr.pseudos;
16667jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
16668jQuery.text = Sizzle.getText;
16669jQuery.isXMLDoc = Sizzle.isXML;
16670jQuery.contains = Sizzle.contains;
16671jQuery.escapeSelector = Sizzle.escape;
16672
16673
16674
16675
16676var dir = function( elem, dir, until ) {
16677 var matched = [],
16678 truncate = until !== undefined;
16679
16680 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
16681 if ( elem.nodeType === 1 ) {
16682 if ( truncate && jQuery( elem ).is( until ) ) {
16683 break;
16684 }
16685 matched.push( elem );
16686 }
16687 }
16688 return matched;
16689};
16690
16691
16692var siblings = function( n, elem ) {
16693 var matched = [];
16694
16695 for ( ; n; n = n.nextSibling ) {
16696 if ( n.nodeType === 1 && n !== elem ) {
16697 matched.push( n );
16698 }
16699 }
16700
16701 return matched;
16702};
16703
16704
16705var rneedsContext = jQuery.expr.match.needsContext;
16706
16707
16708
16709function nodeName( elem, name ) {
16710
16711 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
16712
16713};
16714var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
16715
16716
16717
16718var risSimple = /^.[^:#\[\.,]*$/;
16719
16720// Implement the identical functionality for filter and not
16721function winnow( elements, qualifier, not ) {
16722 if ( jQuery.isFunction( qualifier ) ) {
16723 return jQuery.grep( elements, function( elem, i ) {
16724 return !!qualifier.call( elem, i, elem ) !== not;
16725 } );
16726 }
16727
16728 // Single element
16729 if ( qualifier.nodeType ) {
16730 return jQuery.grep( elements, function( elem ) {
16731 return ( elem === qualifier ) !== not;
16732 } );
16733 }
16734
16735 // Arraylike of elements (jQuery, arguments, Array)
16736 if ( typeof qualifier !== "string" ) {
16737 return jQuery.grep( elements, function( elem ) {
16738 return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
16739 } );
16740 }
16741
16742 // Simple selector that can be filtered directly, removing non-Elements
16743 if ( risSimple.test( qualifier ) ) {
16744 return jQuery.filter( qualifier, elements, not );
16745 }
16746
16747 // Complex selector, compare the two sets, removing non-Elements
16748 qualifier = jQuery.filter( qualifier, elements );
16749 return jQuery.grep( elements, function( elem ) {
16750 return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
16751 } );
16752}
16753
16754jQuery.filter = function( expr, elems, not ) {
16755 var elem = elems[ 0 ];
16756
16757 if ( not ) {
16758 expr = ":not(" + expr + ")";
16759 }
16760
16761 if ( elems.length === 1 && elem.nodeType === 1 ) {
16762 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
16763 }
16764
16765 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
16766 return elem.nodeType === 1;
16767 } ) );
16768};
16769
16770jQuery.fn.extend( {
16771 find: function( selector ) {
16772 var i, ret,
16773 len = this.length,
16774 self = this;
16775
16776 if ( typeof selector !== "string" ) {
16777 return this.pushStack( jQuery( selector ).filter( function() {
16778 for ( i = 0; i < len; i++ ) {
16779 if ( jQuery.contains( self[ i ], this ) ) {
16780 return true;
16781 }
16782 }
16783 } ) );
16784 }
16785
16786 ret = this.pushStack( [] );
16787
16788 for ( i = 0; i < len; i++ ) {
16789 jQuery.find( selector, self[ i ], ret );
16790 }
16791
16792 return len > 1 ? jQuery.uniqueSort( ret ) : ret;
16793 },
16794 filter: function( selector ) {
16795 return this.pushStack( winnow( this, selector || [], false ) );
16796 },
16797 not: function( selector ) {
16798 return this.pushStack( winnow( this, selector || [], true ) );
16799 },
16800 is: function( selector ) {
16801 return !!winnow(
16802 this,
16803
16804 // If this is a positional/relative selector, check membership in the returned set
16805 // so $("p:first").is("p:last") won't return true for a doc with two "p".
16806 typeof selector === "string" && rneedsContext.test( selector ) ?
16807 jQuery( selector ) :
16808 selector || [],
16809 false
16810 ).length;
16811 }
16812} );
16813
16814
16815// Initialize a jQuery object
16816
16817
16818// A central reference to the root jQuery(document)
16819var rootjQuery,
16820
16821 // A simple way to check for HTML strings
16822 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
16823 // Strict HTML recognition (#11290: must start with <)
16824 // Shortcut simple #id case for speed
16825 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
16826
16827 init = jQuery.fn.init = function( selector, context, root ) {
16828 var match, elem;
16829
16830 // HANDLE: $(""), $(null), $(undefined), $(false)
16831 if ( !selector ) {
16832 return this;
16833 }
16834
16835 // Method init() accepts an alternate rootjQuery
16836 // so migrate can support jQuery.sub (gh-2101)
16837 root = root || rootjQuery;
16838
16839 // Handle HTML strings
16840 if ( typeof selector === "string" ) {
16841 if ( selector[ 0 ] === "<" &&
16842 selector[ selector.length - 1 ] === ">" &&
16843 selector.length >= 3 ) {
16844
16845 // Assume that strings that start and end with <> are HTML and skip the regex check
16846 match = [ null, selector, null ];
16847
16848 } else {
16849 match = rquickExpr.exec( selector );
16850 }
16851
16852 // Match html or make sure no context is specified for #id
16853 if ( match && ( match[ 1 ] || !context ) ) {
16854
16855 // HANDLE: $(html) -> $(array)
16856 if ( match[ 1 ] ) {
16857 context = context instanceof jQuery ? context[ 0 ] : context;
16858
16859 // Option to run scripts is true for back-compat
16860 // Intentionally let the error be thrown if parseHTML is not present
16861 jQuery.merge( this, jQuery.parseHTML(
16862 match[ 1 ],
16863 context && context.nodeType ? context.ownerDocument || context : document,
16864 true
16865 ) );
16866
16867 // HANDLE: $(html, props)
16868 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
16869 for ( match in context ) {
16870
16871 // Properties of context are called as methods if possible
16872 if ( jQuery.isFunction( this[ match ] ) ) {
16873 this[ match ]( context[ match ] );
16874
16875 // ...and otherwise set as attributes
16876 } else {
16877 this.attr( match, context[ match ] );
16878 }
16879 }
16880 }
16881
16882 return this;
16883
16884 // HANDLE: $(#id)
16885 } else {
16886 elem = document.getElementById( match[ 2 ] );
16887
16888 if ( elem ) {
16889
16890 // Inject the element directly into the jQuery object
16891 this[ 0 ] = elem;
16892 this.length = 1;
16893 }
16894 return this;
16895 }
16896
16897 // HANDLE: $(expr, $(...))
16898 } else if ( !context || context.jquery ) {
16899 return ( context || root ).find( selector );
16900
16901 // HANDLE: $(expr, context)
16902 // (which is just equivalent to: $(context).find(expr)
16903 } else {
16904 return this.constructor( context ).find( selector );
16905 }
16906
16907 // HANDLE: $(DOMElement)
16908 } else if ( selector.nodeType ) {
16909 this[ 0 ] = selector;
16910 this.length = 1;
16911 return this;
16912
16913 // HANDLE: $(function)
16914 // Shortcut for document ready
16915 } else if ( jQuery.isFunction( selector ) ) {
16916 return root.ready !== undefined ?
16917 root.ready( selector ) :
16918
16919 // Execute immediately if ready is not present
16920 selector( jQuery );
16921 }
16922
16923 return jQuery.makeArray( selector, this );
16924 };
16925
16926// Give the init function the jQuery prototype for later instantiation
16927init.prototype = jQuery.fn;
16928
16929// Initialize central reference
16930rootjQuery = jQuery( document );
16931
16932
16933var rparentsprev = /^(?:parents|prev(?:Until|All))/,
16934
16935 // Methods guaranteed to produce a unique set when starting from a unique set
16936 guaranteedUnique = {
16937 children: true,
16938 contents: true,
16939 next: true,
16940 prev: true
16941 };
16942
16943jQuery.fn.extend( {
16944 has: function( target ) {
16945 var targets = jQuery( target, this ),
16946 l = targets.length;
16947
16948 return this.filter( function() {
16949 var i = 0;
16950 for ( ; i < l; i++ ) {
16951 if ( jQuery.contains( this, targets[ i ] ) ) {
16952 return true;
16953 }
16954 }
16955 } );
16956 },
16957
16958 closest: function( selectors, context ) {
16959 var cur,
16960 i = 0,
16961 l = this.length,
16962 matched = [],
16963 targets = typeof selectors !== "string" && jQuery( selectors );
16964
16965 // Positional selectors never match, since there's no _selection_ context
16966 if ( !rneedsContext.test( selectors ) ) {
16967 for ( ; i < l; i++ ) {
16968 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
16969
16970 // Always skip document fragments
16971 if ( cur.nodeType < 11 && ( targets ?
16972 targets.index( cur ) > -1 :
16973
16974 // Don't pass non-elements to Sizzle
16975 cur.nodeType === 1 &&
16976 jQuery.find.matchesSelector( cur, selectors ) ) ) {
16977
16978 matched.push( cur );
16979 break;
16980 }
16981 }
16982 }
16983 }
16984
16985 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
16986 },
16987
16988 // Determine the position of an element within the set
16989 index: function( elem ) {
16990
16991 // No argument, return index in parent
16992 if ( !elem ) {
16993 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
16994 }
16995
16996 // Index in selector
16997 if ( typeof elem === "string" ) {
16998 return indexOf.call( jQuery( elem ), this[ 0 ] );
16999 }
17000
17001 // Locate the position of the desired element
17002 return indexOf.call( this,
17003
17004 // If it receives a jQuery object, the first element is used
17005 elem.jquery ? elem[ 0 ] : elem
17006 );
17007 },
17008
17009 add: function( selector, context ) {
17010 return this.pushStack(
17011 jQuery.uniqueSort(
17012 jQuery.merge( this.get(), jQuery( selector, context ) )
17013 )
17014 );
17015 },
17016
17017 addBack: function( selector ) {
17018 return this.add( selector == null ?
17019 this.prevObject : this.prevObject.filter( selector )
17020 );
17021 }
17022} );
17023
17024function sibling( cur, dir ) {
17025 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
17026 return cur;
17027}
17028
17029jQuery.each( {
17030 parent: function( elem ) {
17031 var parent = elem.parentNode;
17032 return parent && parent.nodeType !== 11 ? parent : null;
17033 },
17034 parents: function( elem ) {
17035 return dir( elem, "parentNode" );
17036 },
17037 parentsUntil: function( elem, i, until ) {
17038 return dir( elem, "parentNode", until );
17039 },
17040 next: function( elem ) {
17041 return sibling( elem, "nextSibling" );
17042 },
17043 prev: function( elem ) {
17044 return sibling( elem, "previousSibling" );
17045 },
17046 nextAll: function( elem ) {
17047 return dir( elem, "nextSibling" );
17048 },
17049 prevAll: function( elem ) {
17050 return dir( elem, "previousSibling" );
17051 },
17052 nextUntil: function( elem, i, until ) {
17053 return dir( elem, "nextSibling", until );
17054 },
17055 prevUntil: function( elem, i, until ) {
17056 return dir( elem, "previousSibling", until );
17057 },
17058 siblings: function( elem ) {
17059 return siblings( ( elem.parentNode || {} ).firstChild, elem );
17060 },
17061 children: function( elem ) {
17062 return siblings( elem.firstChild );
17063 },
17064 contents: function( elem ) {
17065 if ( nodeName( elem, "iframe" ) ) {
17066 return elem.contentDocument;
17067 }
17068
17069 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
17070 // Treat the template element as a regular one in browsers that
17071 // don't support it.
17072 if ( nodeName( elem, "template" ) ) {
17073 elem = elem.content || elem;
17074 }
17075
17076 return jQuery.merge( [], elem.childNodes );
17077 }
17078}, function( name, fn ) {
17079 jQuery.fn[ name ] = function( until, selector ) {
17080 var matched = jQuery.map( this, fn, until );
17081
17082 if ( name.slice( -5 ) !== "Until" ) {
17083 selector = until;
17084 }
17085
17086 if ( selector && typeof selector === "string" ) {
17087 matched = jQuery.filter( selector, matched );
17088 }
17089
17090 if ( this.length > 1 ) {
17091
17092 // Remove duplicates
17093 if ( !guaranteedUnique[ name ] ) {
17094 jQuery.uniqueSort( matched );
17095 }
17096
17097 // Reverse order for parents* and prev-derivatives
17098 if ( rparentsprev.test( name ) ) {
17099 matched.reverse();
17100 }
17101 }
17102
17103 return this.pushStack( matched );
17104 };
17105} );
17106var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
17107
17108
17109
17110// Convert String-formatted options into Object-formatted ones
17111function createOptions( options ) {
17112 var object = {};
17113 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
17114 object[ flag ] = true;
17115 } );
17116 return object;
17117}
17118
17119/*
17120 * Create a callback list using the following parameters:
17121 *
17122 * options: an optional list of space-separated options that will change how
17123 * the callback list behaves or a more traditional option object
17124 *
17125 * By default a callback list will act like an event callback list and can be
17126 * "fired" multiple times.
17127 *
17128 * Possible options:
17129 *
17130 * once: will ensure the callback list can only be fired once (like a Deferred)
17131 *
17132 * memory: will keep track of previous values and will call any callback added
17133 * after the list has been fired right away with the latest "memorized"
17134 * values (like a Deferred)
17135 *
17136 * unique: will ensure a callback can only be added once (no duplicate in the list)
17137 *
17138 * stopOnFalse: interrupt callings when a callback returns false
17139 *
17140 */
17141jQuery.Callbacks = function( options ) {
17142
17143 // Convert options from String-formatted to Object-formatted if needed
17144 // (we check in cache first)
17145 options = typeof options === "string" ?
17146 createOptions( options ) :
17147 jQuery.extend( {}, options );
17148
17149 var // Flag to know if list is currently firing
17150 firing,
17151
17152 // Last fire value for non-forgettable lists
17153 memory,
17154
17155 // Flag to know if list was already fired
17156 fired,
17157
17158 // Flag to prevent firing
17159 locked,
17160
17161 // Actual callback list
17162 list = [],
17163
17164 // Queue of execution data for repeatable lists
17165 queue = [],
17166
17167 // Index of currently firing callback (modified by add/remove as needed)
17168 firingIndex = -1,
17169
17170 // Fire callbacks
17171 fire = function() {
17172
17173 // Enforce single-firing
17174 locked = locked || options.once;
17175
17176 // Execute callbacks for all pending executions,
17177 // respecting firingIndex overrides and runtime changes
17178 fired = firing = true;
17179 for ( ; queue.length; firingIndex = -1 ) {
17180 memory = queue.shift();
17181 while ( ++firingIndex < list.length ) {
17182
17183 // Run callback and check for early termination
17184 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
17185 options.stopOnFalse ) {
17186
17187 // Jump to end and forget the data so .add doesn't re-fire
17188 firingIndex = list.length;
17189 memory = false;
17190 }
17191 }
17192 }
17193
17194 // Forget the data if we're done with it
17195 if ( !options.memory ) {
17196 memory = false;
17197 }
17198
17199 firing = false;
17200
17201 // Clean up if we're done firing for good
17202 if ( locked ) {
17203
17204 // Keep an empty list if we have data for future add calls
17205 if ( memory ) {
17206 list = [];
17207
17208 // Otherwise, this object is spent
17209 } else {
17210 list = "";
17211 }
17212 }
17213 },
17214
17215 // Actual Callbacks object
17216 self = {
17217
17218 // Add a callback or a collection of callbacks to the list
17219 add: function() {
17220 if ( list ) {
17221
17222 // If we have memory from a past run, we should fire after adding
17223 if ( memory && !firing ) {
17224 firingIndex = list.length - 1;
17225 queue.push( memory );
17226 }
17227
17228 ( function add( args ) {
17229 jQuery.each( args, function( _, arg ) {
17230 if ( jQuery.isFunction( arg ) ) {
17231 if ( !options.unique || !self.has( arg ) ) {
17232 list.push( arg );
17233 }
17234 } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
17235
17236 // Inspect recursively
17237 add( arg );
17238 }
17239 } );
17240 } )( arguments );
17241
17242 if ( memory && !firing ) {
17243 fire();
17244 }
17245 }
17246 return this;
17247 },
17248
17249 // Remove a callback from the list
17250 remove: function() {
17251 jQuery.each( arguments, function( _, arg ) {
17252 var index;
17253 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
17254 list.splice( index, 1 );
17255
17256 // Handle firing indexes
17257 if ( index <= firingIndex ) {
17258 firingIndex--;
17259 }
17260 }
17261 } );
17262 return this;
17263 },
17264
17265 // Check if a given callback is in the list.
17266 // If no argument is given, return whether or not list has callbacks attached.
17267 has: function( fn ) {
17268 return fn ?
17269 jQuery.inArray( fn, list ) > -1 :
17270 list.length > 0;
17271 },
17272
17273 // Remove all callbacks from the list
17274 empty: function() {
17275 if ( list ) {
17276 list = [];
17277 }
17278 return this;
17279 },
17280
17281 // Disable .fire and .add
17282 // Abort any current/pending executions
17283 // Clear all callbacks and values
17284 disable: function() {
17285 locked = queue = [];
17286 list = memory = "";
17287 return this;
17288 },
17289 disabled: function() {
17290 return !list;
17291 },
17292
17293 // Disable .fire
17294 // Also disable .add unless we have memory (since it would have no effect)
17295 // Abort any pending executions
17296 lock: function() {
17297 locked = queue = [];
17298 if ( !memory && !firing ) {
17299 list = memory = "";
17300 }
17301 return this;
17302 },
17303 locked: function() {
17304 return !!locked;
17305 },
17306
17307 // Call all callbacks with the given context and arguments
17308 fireWith: function( context, args ) {
17309 if ( !locked ) {
17310 args = args || [];
17311 args = [ context, args.slice ? args.slice() : args ];
17312 queue.push( args );
17313 if ( !firing ) {
17314 fire();
17315 }
17316 }
17317 return this;
17318 },
17319
17320 // Call all the callbacks with the given arguments
17321 fire: function() {
17322 self.fireWith( this, arguments );
17323 return this;
17324 },
17325
17326 // To know if the callbacks have already been called at least once
17327 fired: function() {
17328 return !!fired;
17329 }
17330 };
17331
17332 return self;
17333};
17334
17335
17336function Identity( v ) {
17337 return v;
17338}
17339function Thrower( ex ) {
17340 throw ex;
17341}
17342
17343function adoptValue( value, resolve, reject, noValue ) {
17344 var method;
17345
17346 try {
17347
17348 // Check for promise aspect first to privilege synchronous behavior
17349 if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
17350 method.call( value ).done( resolve ).fail( reject );
17351
17352 // Other thenables
17353 } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
17354 method.call( value, resolve, reject );
17355
17356 // Other non-thenables
17357 } else {
17358
17359 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
17360 // * false: [ value ].slice( 0 ) => resolve( value )
17361 // * true: [ value ].slice( 1 ) => resolve()
17362 resolve.apply( undefined, [ value ].slice( noValue ) );
17363 }
17364
17365 // For Promises/A+, convert exceptions into rejections
17366 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
17367 // Deferred#then to conditionally suppress rejection.
17368 } catch ( value ) {
17369
17370 // Support: Android 4.0 only
17371 // Strict mode functions invoked without .call/.apply get global-object context
17372 reject.apply( undefined, [ value ] );
17373 }
17374}
17375
17376jQuery.extend( {
17377
17378 Deferred: function( func ) {
17379 var tuples = [
17380
17381 // action, add listener, callbacks,
17382 // ... .then handlers, argument index, [final state]
17383 [ "notify", "progress", jQuery.Callbacks( "memory" ),
17384 jQuery.Callbacks( "memory" ), 2 ],
17385 [ "resolve", "done", jQuery.Callbacks( "once memory" ),
17386 jQuery.Callbacks( "once memory" ), 0, "resolved" ],
17387 [ "reject", "fail", jQuery.Callbacks( "once memory" ),
17388 jQuery.Callbacks( "once memory" ), 1, "rejected" ]
17389 ],
17390 state = "pending",
17391 promise = {
17392 state: function() {
17393 return state;
17394 },
17395 always: function() {
17396 deferred.done( arguments ).fail( arguments );
17397 return this;
17398 },
17399 "catch": function( fn ) {
17400 return promise.then( null, fn );
17401 },
17402
17403 // Keep pipe for back-compat
17404 pipe: function( /* fnDone, fnFail, fnProgress */ ) {
17405 var fns = arguments;
17406
17407 return jQuery.Deferred( function( newDefer ) {
17408 jQuery.each( tuples, function( i, tuple ) {
17409
17410 // Map tuples (progress, done, fail) to arguments (done, fail, progress)
17411 var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
17412
17413 // deferred.progress(function() { bind to newDefer or newDefer.notify })
17414 // deferred.done(function() { bind to newDefer or newDefer.resolve })
17415 // deferred.fail(function() { bind to newDefer or newDefer.reject })
17416 deferred[ tuple[ 1 ] ]( function() {
17417 var returned = fn && fn.apply( this, arguments );
17418 if ( returned && jQuery.isFunction( returned.promise ) ) {
17419 returned.promise()
17420 .progress( newDefer.notify )
17421 .done( newDefer.resolve )
17422 .fail( newDefer.reject );
17423 } else {
17424 newDefer[ tuple[ 0 ] + "With" ](
17425 this,
17426 fn ? [ returned ] : arguments
17427 );
17428 }
17429 } );
17430 } );
17431 fns = null;
17432 } ).promise();
17433 },
17434 then: function( onFulfilled, onRejected, onProgress ) {
17435 var maxDepth = 0;
17436 function resolve( depth, deferred, handler, special ) {
17437 return function() {
17438 var that = this,
17439 args = arguments,
17440 mightThrow = function() {
17441 var returned, then;
17442
17443 // Support: Promises/A+ section 2.3.3.3.3
17444 // https://promisesaplus.com/#point-59
17445 // Ignore double-resolution attempts
17446 if ( depth < maxDepth ) {
17447 return;
17448 }
17449
17450 returned = handler.apply( that, args );
17451
17452 // Support: Promises/A+ section 2.3.1
17453 // https://promisesaplus.com/#point-48
17454 if ( returned === deferred.promise() ) {
17455 throw new TypeError( "Thenable self-resolution" );
17456 }
17457
17458 // Support: Promises/A+ sections 2.3.3.1, 3.5
17459 // https://promisesaplus.com/#point-54
17460 // https://promisesaplus.com/#point-75
17461 // Retrieve `then` only once
17462 then = returned &&
17463
17464 // Support: Promises/A+ section 2.3.4
17465 // https://promisesaplus.com/#point-64
17466 // Only check objects and functions for thenability
17467 ( typeof returned === "object" ||
17468 typeof returned === "function" ) &&
17469 returned.then;
17470
17471 // Handle a returned thenable
17472 if ( jQuery.isFunction( then ) ) {
17473
17474 // Special processors (notify) just wait for resolution
17475 if ( special ) {
17476 then.call(
17477 returned,
17478 resolve( maxDepth, deferred, Identity, special ),
17479 resolve( maxDepth, deferred, Thrower, special )
17480 );
17481
17482 // Normal processors (resolve) also hook into progress
17483 } else {
17484
17485 // ...and disregard older resolution values
17486 maxDepth++;
17487
17488 then.call(
17489 returned,
17490 resolve( maxDepth, deferred, Identity, special ),
17491 resolve( maxDepth, deferred, Thrower, special ),
17492 resolve( maxDepth, deferred, Identity,
17493 deferred.notifyWith )
17494 );
17495 }
17496
17497 // Handle all other returned values
17498 } else {
17499
17500 // Only substitute handlers pass on context
17501 // and multiple values (non-spec behavior)
17502 if ( handler !== Identity ) {
17503 that = undefined;
17504 args = [ returned ];
17505 }
17506
17507 // Process the value(s)
17508 // Default process is resolve
17509 ( special || deferred.resolveWith )( that, args );
17510 }
17511 },
17512
17513 // Only normal processors (resolve) catch and reject exceptions
17514 process = special ?
17515 mightThrow :
17516 function() {
17517 try {
17518 mightThrow();
17519 } catch ( e ) {
17520
17521 if ( jQuery.Deferred.exceptionHook ) {
17522 jQuery.Deferred.exceptionHook( e,
17523 process.stackTrace );
17524 }
17525
17526 // Support: Promises/A+ section 2.3.3.3.4.1
17527 // https://promisesaplus.com/#point-61
17528 // Ignore post-resolution exceptions
17529 if ( depth + 1 >= maxDepth ) {
17530
17531 // Only substitute handlers pass on context
17532 // and multiple values (non-spec behavior)
17533 if ( handler !== Thrower ) {
17534 that = undefined;
17535 args = [ e ];
17536 }
17537
17538 deferred.rejectWith( that, args );
17539 }
17540 }
17541 };
17542
17543 // Support: Promises/A+ section 2.3.3.3.1
17544 // https://promisesaplus.com/#point-57
17545 // Re-resolve promises immediately to dodge false rejection from
17546 // subsequent errors
17547 if ( depth ) {
17548 process();
17549 } else {
17550
17551 // Call an optional hook to record the stack, in case of exception
17552 // since it's otherwise lost when execution goes async
17553 if ( jQuery.Deferred.getStackHook ) {
17554 process.stackTrace = jQuery.Deferred.getStackHook();
17555 }
17556 window.setTimeout( process );
17557 }
17558 };
17559 }
17560
17561 return jQuery.Deferred( function( newDefer ) {
17562
17563 // progress_handlers.add( ... )
17564 tuples[ 0 ][ 3 ].add(
17565 resolve(
17566 0,
17567 newDefer,
17568 jQuery.isFunction( onProgress ) ?
17569 onProgress :
17570 Identity,
17571 newDefer.notifyWith
17572 )
17573 );
17574
17575 // fulfilled_handlers.add( ... )
17576 tuples[ 1 ][ 3 ].add(
17577 resolve(
17578 0,
17579 newDefer,
17580 jQuery.isFunction( onFulfilled ) ?
17581 onFulfilled :
17582 Identity
17583 )
17584 );
17585
17586 // rejected_handlers.add( ... )
17587 tuples[ 2 ][ 3 ].add(
17588 resolve(
17589 0,
17590 newDefer,
17591 jQuery.isFunction( onRejected ) ?
17592 onRejected :
17593 Thrower
17594 )
17595 );
17596 } ).promise();
17597 },
17598
17599 // Get a promise for this deferred
17600 // If obj is provided, the promise aspect is added to the object
17601 promise: function( obj ) {
17602 return obj != null ? jQuery.extend( obj, promise ) : promise;
17603 }
17604 },
17605 deferred = {};
17606
17607 // Add list-specific methods
17608 jQuery.each( tuples, function( i, tuple ) {
17609 var list = tuple[ 2 ],
17610 stateString = tuple[ 5 ];
17611
17612 // promise.progress = list.add
17613 // promise.done = list.add
17614 // promise.fail = list.add
17615 promise[ tuple[ 1 ] ] = list.add;
17616
17617 // Handle state
17618 if ( stateString ) {
17619 list.add(
17620 function() {
17621
17622 // state = "resolved" (i.e., fulfilled)
17623 // state = "rejected"
17624 state = stateString;
17625 },
17626
17627 // rejected_callbacks.disable
17628 // fulfilled_callbacks.disable
17629 tuples[ 3 - i ][ 2 ].disable,
17630
17631 // progress_callbacks.lock
17632 tuples[ 0 ][ 2 ].lock
17633 );
17634 }
17635
17636 // progress_handlers.fire
17637 // fulfilled_handlers.fire
17638 // rejected_handlers.fire
17639 list.add( tuple[ 3 ].fire );
17640
17641 // deferred.notify = function() { deferred.notifyWith(...) }
17642 // deferred.resolve = function() { deferred.resolveWith(...) }
17643 // deferred.reject = function() { deferred.rejectWith(...) }
17644 deferred[ tuple[ 0 ] ] = function() {
17645 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
17646 return this;
17647 };
17648
17649 // deferred.notifyWith = list.fireWith
17650 // deferred.resolveWith = list.fireWith
17651 // deferred.rejectWith = list.fireWith
17652 deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
17653 } );
17654
17655 // Make the deferred a promise
17656 promise.promise( deferred );
17657
17658 // Call given func if any
17659 if ( func ) {
17660 func.call( deferred, deferred );
17661 }
17662
17663 // All done!
17664 return deferred;
17665 },
17666
17667 // Deferred helper
17668 when: function( singleValue ) {
17669 var
17670
17671 // count of uncompleted subordinates
17672 remaining = arguments.length,
17673
17674 // count of unprocessed arguments
17675 i = remaining,
17676
17677 // subordinate fulfillment data
17678 resolveContexts = Array( i ),
17679 resolveValues = slice.call( arguments ),
17680
17681 // the master Deferred
17682 master = jQuery.Deferred(),
17683
17684 // subordinate callback factory
17685 updateFunc = function( i ) {
17686 return function( value ) {
17687 resolveContexts[ i ] = this;
17688 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
17689 if ( !( --remaining ) ) {
17690 master.resolveWith( resolveContexts, resolveValues );
17691 }
17692 };
17693 };
17694
17695 // Single- and empty arguments are adopted like Promise.resolve
17696 if ( remaining <= 1 ) {
17697 adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
17698 !remaining );
17699
17700 // Use .then() to unwrap secondary thenables (cf. gh-3000)
17701 if ( master.state() === "pending" ||
17702 jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
17703
17704 return master.then();
17705 }
17706 }
17707
17708 // Multiple arguments are aggregated like Promise.all array elements
17709 while ( i-- ) {
17710 adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
17711 }
17712
17713 return master.promise();
17714 }
17715} );
17716
17717
17718// These usually indicate a programmer mistake during development,
17719// warn about them ASAP rather than swallowing them by default.
17720var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
17721
17722jQuery.Deferred.exceptionHook = function( error, stack ) {
17723
17724 // Support: IE 8 - 9 only
17725 // Console exists when dev tools are open, which can happen at any time
17726 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
17727 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
17728 }
17729};
17730
17731
17732
17733
17734jQuery.readyException = function( error ) {
17735 window.setTimeout( function() {
17736 throw error;
17737 } );
17738};
17739
17740
17741
17742
17743// The deferred used on DOM ready
17744var readyList = jQuery.Deferred();
17745
17746jQuery.fn.ready = function( fn ) {
17747
17748 readyList
17749 .then( fn )
17750
17751 // Wrap jQuery.readyException in a function so that the lookup
17752 // happens at the time of error handling instead of callback
17753 // registration.
17754 .catch( function( error ) {
17755 jQuery.readyException( error );
17756 } );
17757
17758 return this;
17759};
17760
17761jQuery.extend( {
17762
17763 // Is the DOM ready to be used? Set to true once it occurs.
17764 isReady: false,
17765
17766 // A counter to track how many items to wait for before
17767 // the ready event fires. See #6781
17768 readyWait: 1,
17769
17770 // Handle when the DOM is ready
17771 ready: function( wait ) {
17772
17773 // Abort if there are pending holds or we're already ready
17774 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
17775 return;
17776 }
17777
17778 // Remember that the DOM is ready
17779 jQuery.isReady = true;
17780
17781 // If a normal DOM Ready event fired, decrement, and wait if need be
17782 if ( wait !== true && --jQuery.readyWait > 0 ) {
17783 return;
17784 }
17785
17786 // If there are functions bound, to execute
17787 readyList.resolveWith( document, [ jQuery ] );
17788 }
17789} );
17790
17791jQuery.ready.then = readyList.then;
17792
17793// The ready event handler and self cleanup method
17794function completed() {
17795 document.removeEventListener( "DOMContentLoaded", completed );
17796 window.removeEventListener( "load", completed );
17797 jQuery.ready();
17798}
17799
17800// Catch cases where $(document).ready() is called
17801// after the browser event has already occurred.
17802// Support: IE <=9 - 10 only
17803// Older IE sometimes signals "interactive" too soon
17804if ( document.readyState === "complete" ||
17805 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
17806
17807 // Handle it asynchronously to allow scripts the opportunity to delay ready
17808 window.setTimeout( jQuery.ready );
17809
17810} else {
17811
17812 // Use the handy event callback
17813 document.addEventListener( "DOMContentLoaded", completed );
17814
17815 // A fallback to window.onload, that will always work
17816 window.addEventListener( "load", completed );
17817}
17818
17819
17820
17821
17822// Multifunctional method to get and set values of a collection
17823// The value/s can optionally be executed if it's a function
17824var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
17825 var i = 0,
17826 len = elems.length,
17827 bulk = key == null;
17828
17829 // Sets many values
17830 if ( jQuery.type( key ) === "object" ) {
17831 chainable = true;
17832 for ( i in key ) {
17833 access( elems, fn, i, key[ i ], true, emptyGet, raw );
17834 }
17835
17836 // Sets one value
17837 } else if ( value !== undefined ) {
17838 chainable = true;
17839
17840 if ( !jQuery.isFunction( value ) ) {
17841 raw = true;
17842 }
17843
17844 if ( bulk ) {
17845
17846 // Bulk operations run against the entire set
17847 if ( raw ) {
17848 fn.call( elems, value );
17849 fn = null;
17850
17851 // ...except when executing function values
17852 } else {
17853 bulk = fn;
17854 fn = function( elem, key, value ) {
17855 return bulk.call( jQuery( elem ), value );
17856 };
17857 }
17858 }
17859
17860 if ( fn ) {
17861 for ( ; i < len; i++ ) {
17862 fn(
17863 elems[ i ], key, raw ?
17864 value :
17865 value.call( elems[ i ], i, fn( elems[ i ], key ) )
17866 );
17867 }
17868 }
17869 }
17870
17871 if ( chainable ) {
17872 return elems;
17873 }
17874
17875 // Gets
17876 if ( bulk ) {
17877 return fn.call( elems );
17878 }
17879
17880 return len ? fn( elems[ 0 ], key ) : emptyGet;
17881};
17882var acceptData = function( owner ) {
17883
17884 // Accepts only:
17885 // - Node
17886 // - Node.ELEMENT_NODE
17887 // - Node.DOCUMENT_NODE
17888 // - Object
17889 // - Any
17890 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
17891};
17892
17893
17894
17895
17896function Data() {
17897 this.expando = jQuery.expando + Data.uid++;
17898}
17899
17900Data.uid = 1;
17901
17902Data.prototype = {
17903
17904 cache: function( owner ) {
17905
17906 // Check if the owner object already has a cache
17907 var value = owner[ this.expando ];
17908
17909 // If not, create one
17910 if ( !value ) {
17911 value = {};
17912
17913 // We can accept data for non-element nodes in modern browsers,
17914 // but we should not, see #8335.
17915 // Always return an empty object.
17916 if ( acceptData( owner ) ) {
17917
17918 // If it is a node unlikely to be stringify-ed or looped over
17919 // use plain assignment
17920 if ( owner.nodeType ) {
17921 owner[ this.expando ] = value;
17922
17923 // Otherwise secure it in a non-enumerable property
17924 // configurable must be true to allow the property to be
17925 // deleted when data is removed
17926 } else {
17927 Object.defineProperty( owner, this.expando, {
17928 value: value,
17929 configurable: true
17930 } );
17931 }
17932 }
17933 }
17934
17935 return value;
17936 },
17937 set: function( owner, data, value ) {
17938 var prop,
17939 cache = this.cache( owner );
17940
17941 // Handle: [ owner, key, value ] args
17942 // Always use camelCase key (gh-2257)
17943 if ( typeof data === "string" ) {
17944 cache[ jQuery.camelCase( data ) ] = value;
17945
17946 // Handle: [ owner, { properties } ] args
17947 } else {
17948
17949 // Copy the properties one-by-one to the cache object
17950 for ( prop in data ) {
17951 cache[ jQuery.camelCase( prop ) ] = data[ prop ];
17952 }
17953 }
17954 return cache;
17955 },
17956 get: function( owner, key ) {
17957 return key === undefined ?
17958 this.cache( owner ) :
17959
17960 // Always use camelCase key (gh-2257)
17961 owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
17962 },
17963 access: function( owner, key, value ) {
17964
17965 // In cases where either:
17966 //
17967 // 1. No key was specified
17968 // 2. A string key was specified, but no value provided
17969 //
17970 // Take the "read" path and allow the get method to determine
17971 // which value to return, respectively either:
17972 //
17973 // 1. The entire cache object
17974 // 2. The data stored at the key
17975 //
17976 if ( key === undefined ||
17977 ( ( key && typeof key === "string" ) && value === undefined ) ) {
17978
17979 return this.get( owner, key );
17980 }
17981
17982 // When the key is not a string, or both a key and value
17983 // are specified, set or extend (existing objects) with either:
17984 //
17985 // 1. An object of properties
17986 // 2. A key and value
17987 //
17988 this.set( owner, key, value );
17989
17990 // Since the "set" path can have two possible entry points
17991 // return the expected data based on which path was taken[*]
17992 return value !== undefined ? value : key;
17993 },
17994 remove: function( owner, key ) {
17995 var i,
17996 cache = owner[ this.expando ];
17997
17998 if ( cache === undefined ) {
17999 return;
18000 }
18001
18002 if ( key !== undefined ) {
18003
18004 // Support array or space separated string of keys
18005 if ( Array.isArray( key ) ) {
18006
18007 // If key is an array of keys...
18008 // We always set camelCase keys, so remove that.
18009 key = key.map( jQuery.camelCase );
18010 } else {
18011 key = jQuery.camelCase( key );
18012
18013 // If a key with the spaces exists, use it.
18014 // Otherwise, create an array by matching non-whitespace
18015 key = key in cache ?
18016 [ key ] :
18017 ( key.match( rnothtmlwhite ) || [] );
18018 }
18019
18020 i = key.length;
18021
18022 while ( i-- ) {
18023 delete cache[ key[ i ] ];
18024 }
18025 }
18026
18027 // Remove the expando if there's no more data
18028 if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
18029
18030 // Support: Chrome <=35 - 45
18031 // Webkit & Blink performance suffers when deleting properties
18032 // from DOM nodes, so set to undefined instead
18033 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
18034 if ( owner.nodeType ) {
18035 owner[ this.expando ] = undefined;
18036 } else {
18037 delete owner[ this.expando ];
18038 }
18039 }
18040 },
18041 hasData: function( owner ) {
18042 var cache = owner[ this.expando ];
18043 return cache !== undefined && !jQuery.isEmptyObject( cache );
18044 }
18045};
18046var dataPriv = new Data();
18047
18048var dataUser = new Data();
18049
18050
18051
18052// Implementation Summary
18053//
18054// 1. Enforce API surface and semantic compatibility with 1.9.x branch
18055// 2. Improve the module's maintainability by reducing the storage
18056// paths to a single mechanism.
18057// 3. Use the same single mechanism to support "private" and "user" data.
18058// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
18059// 5. Avoid exposing implementation details on user objects (eg. expando properties)
18060// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
18061
18062var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
18063 rmultiDash = /[A-Z]/g;
18064
18065function getData( data ) {
18066 if ( data === "true" ) {
18067 return true;
18068 }
18069
18070 if ( data === "false" ) {
18071 return false;
18072 }
18073
18074 if ( data === "null" ) {
18075 return null;
18076 }
18077
18078 // Only convert to a number if it doesn't change the string
18079 if ( data === +data + "" ) {
18080 return +data;
18081 }
18082
18083 if ( rbrace.test( data ) ) {
18084 return JSON.parse( data );
18085 }
18086
18087 return data;
18088}
18089
18090function dataAttr( elem, key, data ) {
18091 var name;
18092
18093 // If nothing was found internally, try to fetch any
18094 // data from the HTML5 data-* attribute
18095 if ( data === undefined && elem.nodeType === 1 ) {
18096 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
18097 data = elem.getAttribute( name );
18098
18099 if ( typeof data === "string" ) {
18100 try {
18101 data = getData( data );
18102 } catch ( e ) {}
18103
18104 // Make sure we set the data so it isn't changed later
18105 dataUser.set( elem, key, data );
18106 } else {
18107 data = undefined;
18108 }
18109 }
18110 return data;
18111}
18112
18113jQuery.extend( {
18114 hasData: function( elem ) {
18115 return dataUser.hasData( elem ) || dataPriv.hasData( elem );
18116 },
18117
18118 data: function( elem, name, data ) {
18119 return dataUser.access( elem, name, data );
18120 },
18121
18122 removeData: function( elem, name ) {
18123 dataUser.remove( elem, name );
18124 },
18125
18126 // TODO: Now that all calls to _data and _removeData have been replaced
18127 // with direct calls to dataPriv methods, these can be deprecated.
18128 _data: function( elem, name, data ) {
18129 return dataPriv.access( elem, name, data );
18130 },
18131
18132 _removeData: function( elem, name ) {
18133 dataPriv.remove( elem, name );
18134 }
18135} );
18136
18137jQuery.fn.extend( {
18138 data: function( key, value ) {
18139 var i, name, data,
18140 elem = this[ 0 ],
18141 attrs = elem && elem.attributes;
18142
18143 // Gets all values
18144 if ( key === undefined ) {
18145 if ( this.length ) {
18146 data = dataUser.get( elem );
18147
18148 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
18149 i = attrs.length;
18150 while ( i-- ) {
18151
18152 // Support: IE 11 only
18153 // The attrs elements can be null (#14894)
18154 if ( attrs[ i ] ) {
18155 name = attrs[ i ].name;
18156 if ( name.indexOf( "data-" ) === 0 ) {
18157 name = jQuery.camelCase( name.slice( 5 ) );
18158 dataAttr( elem, name, data[ name ] );
18159 }
18160 }
18161 }
18162 dataPriv.set( elem, "hasDataAttrs", true );
18163 }
18164 }
18165
18166 return data;
18167 }
18168
18169 // Sets multiple values
18170 if ( typeof key === "object" ) {
18171 return this.each( function() {
18172 dataUser.set( this, key );
18173 } );
18174 }
18175
18176 return access( this, function( value ) {
18177 var data;
18178
18179 // The calling jQuery object (element matches) is not empty
18180 // (and therefore has an element appears at this[ 0 ]) and the
18181 // `value` parameter was not undefined. An empty jQuery object
18182 // will result in `undefined` for elem = this[ 0 ] which will
18183 // throw an exception if an attempt to read a data cache is made.
18184 if ( elem && value === undefined ) {
18185
18186 // Attempt to get data from the cache
18187 // The key will always be camelCased in Data
18188 data = dataUser.get( elem, key );
18189 if ( data !== undefined ) {
18190 return data;
18191 }
18192
18193 // Attempt to "discover" the data in
18194 // HTML5 custom data-* attrs
18195 data = dataAttr( elem, key );
18196 if ( data !== undefined ) {
18197 return data;
18198 }
18199
18200 // We tried really hard, but the data doesn't exist.
18201 return;
18202 }
18203
18204 // Set the data...
18205 this.each( function() {
18206
18207 // We always store the camelCased key
18208 dataUser.set( this, key, value );
18209 } );
18210 }, null, value, arguments.length > 1, null, true );
18211 },
18212
18213 removeData: function( key ) {
18214 return this.each( function() {
18215 dataUser.remove( this, key );
18216 } );
18217 }
18218} );
18219
18220
18221jQuery.extend( {
18222 queue: function( elem, type, data ) {
18223 var queue;
18224
18225 if ( elem ) {
18226 type = ( type || "fx" ) + "queue";
18227 queue = dataPriv.get( elem, type );
18228
18229 // Speed up dequeue by getting out quickly if this is just a lookup
18230 if ( data ) {
18231 if ( !queue || Array.isArray( data ) ) {
18232 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
18233 } else {
18234 queue.push( data );
18235 }
18236 }
18237 return queue || [];
18238 }
18239 },
18240
18241 dequeue: function( elem, type ) {
18242 type = type || "fx";
18243
18244 var queue = jQuery.queue( elem, type ),
18245 startLength = queue.length,
18246 fn = queue.shift(),
18247 hooks = jQuery._queueHooks( elem, type ),
18248 next = function() {
18249 jQuery.dequeue( elem, type );
18250 };
18251
18252 // If the fx queue is dequeued, always remove the progress sentinel
18253 if ( fn === "inprogress" ) {
18254 fn = queue.shift();
18255 startLength--;
18256 }
18257
18258 if ( fn ) {
18259
18260 // Add a progress sentinel to prevent the fx queue from being
18261 // automatically dequeued
18262 if ( type === "fx" ) {
18263 queue.unshift( "inprogress" );
18264 }
18265
18266 // Clear up the last queue stop function
18267 delete hooks.stop;
18268 fn.call( elem, next, hooks );
18269 }
18270
18271 if ( !startLength && hooks ) {
18272 hooks.empty.fire();
18273 }
18274 },
18275
18276 // Not public - generate a queueHooks object, or return the current one
18277 _queueHooks: function( elem, type ) {
18278 var key = type + "queueHooks";
18279 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
18280 empty: jQuery.Callbacks( "once memory" ).add( function() {
18281 dataPriv.remove( elem, [ type + "queue", key ] );
18282 } )
18283 } );
18284 }
18285} );
18286
18287jQuery.fn.extend( {
18288 queue: function( type, data ) {
18289 var setter = 2;
18290
18291 if ( typeof type !== "string" ) {
18292 data = type;
18293 type = "fx";
18294 setter--;
18295 }
18296
18297 if ( arguments.length < setter ) {
18298 return jQuery.queue( this[ 0 ], type );
18299 }
18300
18301 return data === undefined ?
18302 this :
18303 this.each( function() {
18304 var queue = jQuery.queue( this, type, data );
18305
18306 // Ensure a hooks for this queue
18307 jQuery._queueHooks( this, type );
18308
18309 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
18310 jQuery.dequeue( this, type );
18311 }
18312 } );
18313 },
18314 dequeue: function( type ) {
18315 return this.each( function() {
18316 jQuery.dequeue( this, type );
18317 } );
18318 },
18319 clearQueue: function( type ) {
18320 return this.queue( type || "fx", [] );
18321 },
18322
18323 // Get a promise resolved when queues of a certain type
18324 // are emptied (fx is the type by default)
18325 promise: function( type, obj ) {
18326 var tmp,
18327 count = 1,
18328 defer = jQuery.Deferred(),
18329 elements = this,
18330 i = this.length,
18331 resolve = function() {
18332 if ( !( --count ) ) {
18333 defer.resolveWith( elements, [ elements ] );
18334 }
18335 };
18336
18337 if ( typeof type !== "string" ) {
18338 obj = type;
18339 type = undefined;
18340 }
18341 type = type || "fx";
18342
18343 while ( i-- ) {
18344 tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
18345 if ( tmp && tmp.empty ) {
18346 count++;
18347 tmp.empty.add( resolve );
18348 }
18349 }
18350 resolve();
18351 return defer.promise( obj );
18352 }
18353} );
18354var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
18355
18356var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
18357
18358
18359var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
18360
18361var isHiddenWithinTree = function( elem, el ) {
18362
18363 // isHiddenWithinTree might be called from jQuery#filter function;
18364 // in that case, element will be second argument
18365 elem = el || elem;
18366
18367 // Inline style trumps all
18368 return elem.style.display === "none" ||
18369 elem.style.display === "" &&
18370
18371 // Otherwise, check computed style
18372 // Support: Firefox <=43 - 45
18373 // Disconnected elements can have computed display: none, so first confirm that elem is
18374 // in the document.
18375 jQuery.contains( elem.ownerDocument, elem ) &&
18376
18377 jQuery.css( elem, "display" ) === "none";
18378 };
18379
18380var swap = function( elem, options, callback, args ) {
18381 var ret, name,
18382 old = {};
18383
18384 // Remember the old values, and insert the new ones
18385 for ( name in options ) {
18386 old[ name ] = elem.style[ name ];
18387 elem.style[ name ] = options[ name ];
18388 }
18389
18390 ret = callback.apply( elem, args || [] );
18391
18392 // Revert the old values
18393 for ( name in options ) {
18394 elem.style[ name ] = old[ name ];
18395 }
18396
18397 return ret;
18398};
18399
18400
18401
18402
18403function adjustCSS( elem, prop, valueParts, tween ) {
18404 var adjusted,
18405 scale = 1,
18406 maxIterations = 20,
18407 currentValue = tween ?
18408 function() {
18409 return tween.cur();
18410 } :
18411 function() {
18412 return jQuery.css( elem, prop, "" );
18413 },
18414 initial = currentValue(),
18415 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
18416
18417 // Starting value computation is required for potential unit mismatches
18418 initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
18419 rcssNum.exec( jQuery.css( elem, prop ) );
18420
18421 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
18422
18423 // Trust units reported by jQuery.css
18424 unit = unit || initialInUnit[ 3 ];
18425
18426 // Make sure we update the tween properties later on
18427 valueParts = valueParts || [];
18428
18429 // Iteratively approximate from a nonzero starting point
18430 initialInUnit = +initial || 1;
18431
18432 do {
18433
18434 // If previous iteration zeroed out, double until we get *something*.
18435 // Use string for doubling so we don't accidentally see scale as unchanged below
18436 scale = scale || ".5";
18437
18438 // Adjust and apply
18439 initialInUnit = initialInUnit / scale;
18440 jQuery.style( elem, prop, initialInUnit + unit );
18441
18442 // Update scale, tolerating zero or NaN from tween.cur()
18443 // Break the loop if scale is unchanged or perfect, or if we've just had enough.
18444 } while (
18445 scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
18446 );
18447 }
18448
18449 if ( valueParts ) {
18450 initialInUnit = +initialInUnit || +initial || 0;
18451
18452 // Apply relative offset (+=/-=) if specified
18453 adjusted = valueParts[ 1 ] ?
18454 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
18455 +valueParts[ 2 ];
18456 if ( tween ) {
18457 tween.unit = unit;
18458 tween.start = initialInUnit;
18459 tween.end = adjusted;
18460 }
18461 }
18462 return adjusted;
18463}
18464
18465
18466var defaultDisplayMap = {};
18467
18468function getDefaultDisplay( elem ) {
18469 var temp,
18470 doc = elem.ownerDocument,
18471 nodeName = elem.nodeName,
18472 display = defaultDisplayMap[ nodeName ];
18473
18474 if ( display ) {
18475 return display;
18476 }
18477
18478 temp = doc.body.appendChild( doc.createElement( nodeName ) );
18479 display = jQuery.css( temp, "display" );
18480
18481 temp.parentNode.removeChild( temp );
18482
18483 if ( display === "none" ) {
18484 display = "block";
18485 }
18486 defaultDisplayMap[ nodeName ] = display;
18487
18488 return display;
18489}
18490
18491function showHide( elements, show ) {
18492 var display, elem,
18493 values = [],
18494 index = 0,
18495 length = elements.length;
18496
18497 // Determine new display value for elements that need to change
18498 for ( ; index < length; index++ ) {
18499 elem = elements[ index ];
18500 if ( !elem.style ) {
18501 continue;
18502 }
18503
18504 display = elem.style.display;
18505 if ( show ) {
18506
18507 // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
18508 // check is required in this first loop unless we have a nonempty display value (either
18509 // inline or about-to-be-restored)
18510 if ( display === "none" ) {
18511 values[ index ] = dataPriv.get( elem, "display" ) || null;
18512 if ( !values[ index ] ) {
18513 elem.style.display = "";
18514 }
18515 }
18516 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
18517 values[ index ] = getDefaultDisplay( elem );
18518 }
18519 } else {
18520 if ( display !== "none" ) {
18521 values[ index ] = "none";
18522
18523 // Remember what we're overwriting
18524 dataPriv.set( elem, "display", display );
18525 }
18526 }
18527 }
18528
18529 // Set the display of the elements in a second loop to avoid constant reflow
18530 for ( index = 0; index < length; index++ ) {
18531 if ( values[ index ] != null ) {
18532 elements[ index ].style.display = values[ index ];
18533 }
18534 }
18535
18536 return elements;
18537}
18538
18539jQuery.fn.extend( {
18540 show: function() {
18541 return showHide( this, true );
18542 },
18543 hide: function() {
18544 return showHide( this );
18545 },
18546 toggle: function( state ) {
18547 if ( typeof state === "boolean" ) {
18548 return state ? this.show() : this.hide();
18549 }
18550
18551 return this.each( function() {
18552 if ( isHiddenWithinTree( this ) ) {
18553 jQuery( this ).show();
18554 } else {
18555 jQuery( this ).hide();
18556 }
18557 } );
18558 }
18559} );
18560var rcheckableType = ( /^(?:checkbox|radio)$/i );
18561
18562var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
18563
18564var rscriptType = ( /^$|\/(?:java|ecma)script/i );
18565
18566
18567
18568// We have to close these tags to support XHTML (#13200)
18569var wrapMap = {
18570
18571 // Support: IE <=9 only
18572 option: [ 1, "<select multiple='multiple'>", "</select>" ],
18573
18574 // XHTML parsers do not magically insert elements in the
18575 // same way that tag soup parsers do. So we cannot shorten
18576 // this by omitting <tbody> or other required elements.
18577 thead: [ 1, "<table>", "</table>" ],
18578 col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
18579 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
18580 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
18581
18582 _default: [ 0, "", "" ]
18583};
18584
18585// Support: IE <=9 only
18586wrapMap.optgroup = wrapMap.option;
18587
18588wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
18589wrapMap.th = wrapMap.td;
18590
18591
18592function getAll( context, tag ) {
18593
18594 // Support: IE <=9 - 11 only
18595 // Use typeof to avoid zero-argument method invocation on host objects (#15151)
18596 var ret;
18597
18598 if ( typeof context.getElementsByTagName !== "undefined" ) {
18599 ret = context.getElementsByTagName( tag || "*" );
18600
18601 } else if ( typeof context.querySelectorAll !== "undefined" ) {
18602 ret = context.querySelectorAll( tag || "*" );
18603
18604 } else {
18605 ret = [];
18606 }
18607
18608 if ( tag === undefined || tag && nodeName( context, tag ) ) {
18609 return jQuery.merge( [ context ], ret );
18610 }
18611
18612 return ret;
18613}
18614
18615
18616// Mark scripts as having already been evaluated
18617function setGlobalEval( elems, refElements ) {
18618 var i = 0,
18619 l = elems.length;
18620
18621 for ( ; i < l; i++ ) {
18622 dataPriv.set(
18623 elems[ i ],
18624 "globalEval",
18625 !refElements || dataPriv.get( refElements[ i ], "globalEval" )
18626 );
18627 }
18628}
18629
18630
18631var rhtml = /<|&#?\w+;/;
18632
18633function buildFragment( elems, context, scripts, selection, ignored ) {
18634 var elem, tmp, tag, wrap, contains, j,
18635 fragment = context.createDocumentFragment(),
18636 nodes = [],
18637 i = 0,
18638 l = elems.length;
18639
18640 for ( ; i < l; i++ ) {
18641 elem = elems[ i ];
18642
18643 if ( elem || elem === 0 ) {
18644
18645 // Add nodes directly
18646 if ( jQuery.type( elem ) === "object" ) {
18647
18648 // Support: Android <=4.0 only, PhantomJS 1 only
18649 // push.apply(_, arraylike) throws on ancient WebKit
18650 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
18651
18652 // Convert non-html into a text node
18653 } else if ( !rhtml.test( elem ) ) {
18654 nodes.push( context.createTextNode( elem ) );
18655
18656 // Convert html into DOM nodes
18657 } else {
18658 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
18659
18660 // Deserialize a standard representation
18661 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
18662 wrap = wrapMap[ tag ] || wrapMap._default;
18663 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
18664
18665 // Descend through wrappers to the right content
18666 j = wrap[ 0 ];
18667 while ( j-- ) {
18668 tmp = tmp.lastChild;
18669 }
18670
18671 // Support: Android <=4.0 only, PhantomJS 1 only
18672 // push.apply(_, arraylike) throws on ancient WebKit
18673 jQuery.merge( nodes, tmp.childNodes );
18674
18675 // Remember the top-level container
18676 tmp = fragment.firstChild;
18677
18678 // Ensure the created nodes are orphaned (#12392)
18679 tmp.textContent = "";
18680 }
18681 }
18682 }
18683
18684 // Remove wrapper from fragment
18685 fragment.textContent = "";
18686
18687 i = 0;
18688 while ( ( elem = nodes[ i++ ] ) ) {
18689
18690 // Skip elements already in the context collection (trac-4087)
18691 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
18692 if ( ignored ) {
18693 ignored.push( elem );
18694 }
18695 continue;
18696 }
18697
18698 contains = jQuery.contains( elem.ownerDocument, elem );
18699
18700 // Append to fragment
18701 tmp = getAll( fragment.appendChild( elem ), "script" );
18702
18703 // Preserve script evaluation history
18704 if ( contains ) {
18705 setGlobalEval( tmp );
18706 }
18707
18708 // Capture executables
18709 if ( scripts ) {
18710 j = 0;
18711 while ( ( elem = tmp[ j++ ] ) ) {
18712 if ( rscriptType.test( elem.type || "" ) ) {
18713 scripts.push( elem );
18714 }
18715 }
18716 }
18717 }
18718
18719 return fragment;
18720}
18721
18722
18723( function() {
18724 var fragment = document.createDocumentFragment(),
18725 div = fragment.appendChild( document.createElement( "div" ) ),
18726 input = document.createElement( "input" );
18727
18728 // Support: Android 4.0 - 4.3 only
18729 // Check state lost if the name is set (#11217)
18730 // Support: Windows Web Apps (WWA)
18731 // `name` and `type` must use .setAttribute for WWA (#14901)
18732 input.setAttribute( "type", "radio" );
18733 input.setAttribute( "checked", "checked" );
18734 input.setAttribute( "name", "t" );
18735
18736 div.appendChild( input );
18737
18738 // Support: Android <=4.1 only
18739 // Older WebKit doesn't clone checked state correctly in fragments
18740 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
18741
18742 // Support: IE <=11 only
18743 // Make sure textarea (and checkbox) defaultValue is properly cloned
18744 div.innerHTML = "<textarea>x</textarea>";
18745 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
18746} )();
18747var documentElement = document.documentElement;
18748
18749
18750
18751var
18752 rkeyEvent = /^key/,
18753 rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
18754 rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
18755
18756function returnTrue() {
18757 return true;
18758}
18759
18760function returnFalse() {
18761 return false;
18762}
18763
18764// Support: IE <=9 only
18765// See #13393 for more info
18766function safeActiveElement() {
18767 try {
18768 return document.activeElement;
18769 } catch ( err ) { }
18770}
18771
18772function on( elem, types, selector, data, fn, one ) {
18773 var origFn, type;
18774
18775 // Types can be a map of types/handlers
18776 if ( typeof types === "object" ) {
18777
18778 // ( types-Object, selector, data )
18779 if ( typeof selector !== "string" ) {
18780
18781 // ( types-Object, data )
18782 data = data || selector;
18783 selector = undefined;
18784 }
18785 for ( type in types ) {
18786 on( elem, type, selector, data, types[ type ], one );
18787 }
18788 return elem;
18789 }
18790
18791 if ( data == null && fn == null ) {
18792
18793 // ( types, fn )
18794 fn = selector;
18795 data = selector = undefined;
18796 } else if ( fn == null ) {
18797 if ( typeof selector === "string" ) {
18798
18799 // ( types, selector, fn )
18800 fn = data;
18801 data = undefined;
18802 } else {
18803
18804 // ( types, data, fn )
18805 fn = data;
18806 data = selector;
18807 selector = undefined;
18808 }
18809 }
18810 if ( fn === false ) {
18811 fn = returnFalse;
18812 } else if ( !fn ) {
18813 return elem;
18814 }
18815
18816 if ( one === 1 ) {
18817 origFn = fn;
18818 fn = function( event ) {
18819
18820 // Can use an empty set, since event contains the info
18821 jQuery().off( event );
18822 return origFn.apply( this, arguments );
18823 };
18824
18825 // Use same guid so caller can remove using origFn
18826 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
18827 }
18828 return elem.each( function() {
18829 jQuery.event.add( this, types, fn, data, selector );
18830 } );
18831}
18832
18833/*
18834 * Helper functions for managing events -- not part of the public interface.
18835 * Props to Dean Edwards' addEvent library for many of the ideas.
18836 */
18837jQuery.event = {
18838
18839 global: {},
18840
18841 add: function( elem, types, handler, data, selector ) {
18842
18843 var handleObjIn, eventHandle, tmp,
18844 events, t, handleObj,
18845 special, handlers, type, namespaces, origType,
18846 elemData = dataPriv.get( elem );
18847
18848 // Don't attach events to noData or text/comment nodes (but allow plain objects)
18849 if ( !elemData ) {
18850 return;
18851 }
18852
18853 // Caller can pass in an object of custom data in lieu of the handler
18854 if ( handler.handler ) {
18855 handleObjIn = handler;
18856 handler = handleObjIn.handler;
18857 selector = handleObjIn.selector;
18858 }
18859
18860 // Ensure that invalid selectors throw exceptions at attach time
18861 // Evaluate against documentElement in case elem is a non-element node (e.g., document)
18862 if ( selector ) {
18863 jQuery.find.matchesSelector( documentElement, selector );
18864 }
18865
18866 // Make sure that the handler has a unique ID, used to find/remove it later
18867 if ( !handler.guid ) {
18868 handler.guid = jQuery.guid++;
18869 }
18870
18871 // Init the element's event structure and main handler, if this is the first
18872 if ( !( events = elemData.events ) ) {
18873 events = elemData.events = {};
18874 }
18875 if ( !( eventHandle = elemData.handle ) ) {
18876 eventHandle = elemData.handle = function( e ) {
18877
18878 // Discard the second event of a jQuery.event.trigger() and
18879 // when an event is called after a page has unloaded
18880 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
18881 jQuery.event.dispatch.apply( elem, arguments ) : undefined;
18882 };
18883 }
18884
18885 // Handle multiple events separated by a space
18886 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
18887 t = types.length;
18888 while ( t-- ) {
18889 tmp = rtypenamespace.exec( types[ t ] ) || [];
18890 type = origType = tmp[ 1 ];
18891 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
18892
18893 // There *must* be a type, no attaching namespace-only handlers
18894 if ( !type ) {
18895 continue;
18896 }
18897
18898 // If event changes its type, use the special event handlers for the changed type
18899 special = jQuery.event.special[ type ] || {};
18900
18901 // If selector defined, determine special event api type, otherwise given type
18902 type = ( selector ? special.delegateType : special.bindType ) || type;
18903
18904 // Update special based on newly reset type
18905 special = jQuery.event.special[ type ] || {};
18906
18907 // handleObj is passed to all event handlers
18908 handleObj = jQuery.extend( {
18909 type: type,
18910 origType: origType,
18911 data: data,
18912 handler: handler,
18913 guid: handler.guid,
18914 selector: selector,
18915 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
18916 namespace: namespaces.join( "." )
18917 }, handleObjIn );
18918
18919 // Init the event handler queue if we're the first
18920 if ( !( handlers = events[ type ] ) ) {
18921 handlers = events[ type ] = [];
18922 handlers.delegateCount = 0;
18923
18924 // Only use addEventListener if the special events handler returns false
18925 if ( !special.setup ||
18926 special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
18927
18928 if ( elem.addEventListener ) {
18929 elem.addEventListener( type, eventHandle );
18930 }
18931 }
18932 }
18933
18934 if ( special.add ) {
18935 special.add.call( elem, handleObj );
18936
18937 if ( !handleObj.handler.guid ) {
18938 handleObj.handler.guid = handler.guid;
18939 }
18940 }
18941
18942 // Add to the element's handler list, delegates in front
18943 if ( selector ) {
18944 handlers.splice( handlers.delegateCount++, 0, handleObj );
18945 } else {
18946 handlers.push( handleObj );
18947 }
18948
18949 // Keep track of which events have ever been used, for event optimization
18950 jQuery.event.global[ type ] = true;
18951 }
18952
18953 },
18954
18955 // Detach an event or set of events from an element
18956 remove: function( elem, types, handler, selector, mappedTypes ) {
18957
18958 var j, origCount, tmp,
18959 events, t, handleObj,
18960 special, handlers, type, namespaces, origType,
18961 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
18962
18963 if ( !elemData || !( events = elemData.events ) ) {
18964 return;
18965 }
18966
18967 // Once for each type.namespace in types; type may be omitted
18968 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
18969 t = types.length;
18970 while ( t-- ) {
18971 tmp = rtypenamespace.exec( types[ t ] ) || [];
18972 type = origType = tmp[ 1 ];
18973 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
18974
18975 // Unbind all events (on this namespace, if provided) for the element
18976 if ( !type ) {
18977 for ( type in events ) {
18978 jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
18979 }
18980 continue;
18981 }
18982
18983 special = jQuery.event.special[ type ] || {};
18984 type = ( selector ? special.delegateType : special.bindType ) || type;
18985 handlers = events[ type ] || [];
18986 tmp = tmp[ 2 ] &&
18987 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
18988
18989 // Remove matching events
18990 origCount = j = handlers.length;
18991 while ( j-- ) {
18992 handleObj = handlers[ j ];
18993
18994 if ( ( mappedTypes || origType === handleObj.origType ) &&
18995 ( !handler || handler.guid === handleObj.guid ) &&
18996 ( !tmp || tmp.test( handleObj.namespace ) ) &&
18997 ( !selector || selector === handleObj.selector ||
18998 selector === "**" && handleObj.selector ) ) {
18999 handlers.splice( j, 1 );
19000
19001 if ( handleObj.selector ) {
19002 handlers.delegateCount--;
19003 }
19004 if ( special.remove ) {
19005 special.remove.call( elem, handleObj );
19006 }
19007 }
19008 }
19009
19010 // Remove generic event handler if we removed something and no more handlers exist
19011 // (avoids potential for endless recursion during removal of special event handlers)
19012 if ( origCount && !handlers.length ) {
19013 if ( !special.teardown ||
19014 special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
19015
19016 jQuery.removeEvent( elem, type, elemData.handle );
19017 }
19018
19019 delete events[ type ];
19020 }
19021 }
19022
19023 // Remove data and the expando if it's no longer used
19024 if ( jQuery.isEmptyObject( events ) ) {
19025 dataPriv.remove( elem, "handle events" );
19026 }
19027 },
19028
19029 dispatch: function( nativeEvent ) {
19030
19031 // Make a writable jQuery.Event from the native event object
19032 var event = jQuery.event.fix( nativeEvent );
19033
19034 var i, j, ret, matched, handleObj, handlerQueue,
19035 args = new Array( arguments.length ),
19036 handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
19037 special = jQuery.event.special[ event.type ] || {};
19038
19039 // Use the fix-ed jQuery.Event rather than the (read-only) native event
19040 args[ 0 ] = event;
19041
19042 for ( i = 1; i < arguments.length; i++ ) {
19043 args[ i ] = arguments[ i ];
19044 }
19045
19046 event.delegateTarget = this;
19047
19048 // Call the preDispatch hook for the mapped type, and let it bail if desired
19049 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
19050 return;
19051 }
19052
19053 // Determine handlers
19054 handlerQueue = jQuery.event.handlers.call( this, event, handlers );
19055
19056 // Run delegates first; they may want to stop propagation beneath us
19057 i = 0;
19058 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
19059 event.currentTarget = matched.elem;
19060
19061 j = 0;
19062 while ( ( handleObj = matched.handlers[ j++ ] ) &&
19063 !event.isImmediatePropagationStopped() ) {
19064
19065 // Triggered event must either 1) have no namespace, or 2) have namespace(s)
19066 // a subset or equal to those in the bound event (both can have no namespace).
19067 if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
19068
19069 event.handleObj = handleObj;
19070 event.data = handleObj.data;
19071
19072 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
19073 handleObj.handler ).apply( matched.elem, args );
19074
19075 if ( ret !== undefined ) {
19076 if ( ( event.result = ret ) === false ) {
19077 event.preventDefault();
19078 event.stopPropagation();
19079 }
19080 }
19081 }
19082 }
19083 }
19084
19085 // Call the postDispatch hook for the mapped type
19086 if ( special.postDispatch ) {
19087 special.postDispatch.call( this, event );
19088 }
19089
19090 return event.result;
19091 },
19092
19093 handlers: function( event, handlers ) {
19094 var i, handleObj, sel, matchedHandlers, matchedSelectors,
19095 handlerQueue = [],
19096 delegateCount = handlers.delegateCount,
19097 cur = event.target;
19098
19099 // Find delegate handlers
19100 if ( delegateCount &&
19101
19102 // Support: IE <=9
19103 // Black-hole SVG <use> instance trees (trac-13180)
19104 cur.nodeType &&
19105
19106 // Support: Firefox <=42
19107 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
19108 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
19109 // Support: IE 11 only
19110 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
19111 !( event.type === "click" && event.button >= 1 ) ) {
19112
19113 for ( ; cur !== this; cur = cur.parentNode || this ) {
19114
19115 // Don't check non-elements (#13208)
19116 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
19117 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
19118 matchedHandlers = [];
19119 matchedSelectors = {};
19120 for ( i = 0; i < delegateCount; i++ ) {
19121 handleObj = handlers[ i ];
19122
19123 // Don't conflict with Object.prototype properties (#13203)
19124 sel = handleObj.selector + " ";
19125
19126 if ( matchedSelectors[ sel ] === undefined ) {
19127 matchedSelectors[ sel ] = handleObj.needsContext ?
19128 jQuery( sel, this ).index( cur ) > -1 :
19129 jQuery.find( sel, this, null, [ cur ] ).length;
19130 }
19131 if ( matchedSelectors[ sel ] ) {
19132 matchedHandlers.push( handleObj );
19133 }
19134 }
19135 if ( matchedHandlers.length ) {
19136 handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
19137 }
19138 }
19139 }
19140 }
19141
19142 // Add the remaining (directly-bound) handlers
19143 cur = this;
19144 if ( delegateCount < handlers.length ) {
19145 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
19146 }
19147
19148 return handlerQueue;
19149 },
19150
19151 addProp: function( name, hook ) {
19152 Object.defineProperty( jQuery.Event.prototype, name, {
19153 enumerable: true,
19154 configurable: true,
19155
19156 get: jQuery.isFunction( hook ) ?
19157 function() {
19158 if ( this.originalEvent ) {
19159 return hook( this.originalEvent );
19160 }
19161 } :
19162 function() {
19163 if ( this.originalEvent ) {
19164 return this.originalEvent[ name ];
19165 }
19166 },
19167
19168 set: function( value ) {
19169 Object.defineProperty( this, name, {
19170 enumerable: true,
19171 configurable: true,
19172 writable: true,
19173 value: value
19174 } );
19175 }
19176 } );
19177 },
19178
19179 fix: function( originalEvent ) {
19180 return originalEvent[ jQuery.expando ] ?
19181 originalEvent :
19182 new jQuery.Event( originalEvent );
19183 },
19184
19185 special: {
19186 load: {
19187
19188 // Prevent triggered image.load events from bubbling to window.load
19189 noBubble: true
19190 },
19191 focus: {
19192
19193 // Fire native event if possible so blur/focus sequence is correct
19194 trigger: function() {
19195 if ( this !== safeActiveElement() && this.focus ) {
19196 this.focus();
19197 return false;
19198 }
19199 },
19200 delegateType: "focusin"
19201 },
19202 blur: {
19203 trigger: function() {
19204 if ( this === safeActiveElement() && this.blur ) {
19205 this.blur();
19206 return false;
19207 }
19208 },
19209 delegateType: "focusout"
19210 },
19211 click: {
19212
19213 // For checkbox, fire native event so checked state will be right
19214 trigger: function() {
19215 if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
19216 this.click();
19217 return false;
19218 }
19219 },
19220
19221 // For cross-browser consistency, don't fire native .click() on links
19222 _default: function( event ) {
19223 return nodeName( event.target, "a" );
19224 }
19225 },
19226
19227 beforeunload: {
19228 postDispatch: function( event ) {
19229
19230 // Support: Firefox 20+
19231 // Firefox doesn't alert if the returnValue field is not set.
19232 if ( event.result !== undefined && event.originalEvent ) {
19233 event.originalEvent.returnValue = event.result;
19234 }
19235 }
19236 }
19237 }
19238};
19239
19240jQuery.removeEvent = function( elem, type, handle ) {
19241
19242 // This "if" is needed for plain objects
19243 if ( elem.removeEventListener ) {
19244 elem.removeEventListener( type, handle );
19245 }
19246};
19247
19248jQuery.Event = function( src, props ) {
19249
19250 // Allow instantiation without the 'new' keyword
19251 if ( !( this instanceof jQuery.Event ) ) {
19252 return new jQuery.Event( src, props );
19253 }
19254
19255 // Event object
19256 if ( src && src.type ) {
19257 this.originalEvent = src;
19258 this.type = src.type;
19259
19260 // Events bubbling up the document may have been marked as prevented
19261 // by a handler lower down the tree; reflect the correct value.
19262 this.isDefaultPrevented = src.defaultPrevented ||
19263 src.defaultPrevented === undefined &&
19264
19265 // Support: Android <=2.3 only
19266 src.returnValue === false ?
19267 returnTrue :
19268 returnFalse;
19269
19270 // Create target properties
19271 // Support: Safari <=6 - 7 only
19272 // Target should not be a text node (#504, #13143)
19273 this.target = ( src.target && src.target.nodeType === 3 ) ?
19274 src.target.parentNode :
19275 src.target;
19276
19277 this.currentTarget = src.currentTarget;
19278 this.relatedTarget = src.relatedTarget;
19279
19280 // Event type
19281 } else {
19282 this.type = src;
19283 }
19284
19285 // Put explicitly provided properties onto the event object
19286 if ( props ) {
19287 jQuery.extend( this, props );
19288 }
19289
19290 // Create a timestamp if incoming event doesn't have one
19291 this.timeStamp = src && src.timeStamp || jQuery.now();
19292
19293 // Mark it as fixed
19294 this[ jQuery.expando ] = true;
19295};
19296
19297// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
19298// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
19299jQuery.Event.prototype = {
19300 constructor: jQuery.Event,
19301 isDefaultPrevented: returnFalse,
19302 isPropagationStopped: returnFalse,
19303 isImmediatePropagationStopped: returnFalse,
19304 isSimulated: false,
19305
19306 preventDefault: function() {
19307 var e = this.originalEvent;
19308
19309 this.isDefaultPrevented = returnTrue;
19310
19311 if ( e && !this.isSimulated ) {
19312 e.preventDefault();
19313 }
19314 },
19315 stopPropagation: function() {
19316 var e = this.originalEvent;
19317
19318 this.isPropagationStopped = returnTrue;
19319
19320 if ( e && !this.isSimulated ) {
19321 e.stopPropagation();
19322 }
19323 },
19324 stopImmediatePropagation: function() {
19325 var e = this.originalEvent;
19326
19327 this.isImmediatePropagationStopped = returnTrue;
19328
19329 if ( e && !this.isSimulated ) {
19330 e.stopImmediatePropagation();
19331 }
19332
19333 this.stopPropagation();
19334 }
19335};
19336
19337// Includes all common event props including KeyEvent and MouseEvent specific props
19338jQuery.each( {
19339 altKey: true,
19340 bubbles: true,
19341 cancelable: true,
19342 changedTouches: true,
19343 ctrlKey: true,
19344 detail: true,
19345 eventPhase: true,
19346 metaKey: true,
19347 pageX: true,
19348 pageY: true,
19349 shiftKey: true,
19350 view: true,
19351 "char": true,
19352 charCode: true,
19353 key: true,
19354 keyCode: true,
19355 button: true,
19356 buttons: true,
19357 clientX: true,
19358 clientY: true,
19359 offsetX: true,
19360 offsetY: true,
19361 pointerId: true,
19362 pointerType: true,
19363 screenX: true,
19364 screenY: true,
19365 targetTouches: true,
19366 toElement: true,
19367 touches: true,
19368
19369 which: function( event ) {
19370 var button = event.button;
19371
19372 // Add which for key events
19373 if ( event.which == null && rkeyEvent.test( event.type ) ) {
19374 return event.charCode != null ? event.charCode : event.keyCode;
19375 }
19376
19377 // Add which for click: 1 === left; 2 === middle; 3 === right
19378 if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
19379 if ( button & 1 ) {
19380 return 1;
19381 }
19382
19383 if ( button & 2 ) {
19384 return 3;
19385 }
19386
19387 if ( button & 4 ) {
19388 return 2;
19389 }
19390
19391 return 0;
19392 }
19393
19394 return event.which;
19395 }
19396}, jQuery.event.addProp );
19397
19398// Create mouseenter/leave events using mouseover/out and event-time checks
19399// so that event delegation works in jQuery.
19400// Do the same for pointerenter/pointerleave and pointerover/pointerout
19401//
19402// Support: Safari 7 only
19403// Safari sends mouseenter too often; see:
19404// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
19405// for the description of the bug (it existed in older Chrome versions as well).
19406jQuery.each( {
19407 mouseenter: "mouseover",
19408 mouseleave: "mouseout",
19409 pointerenter: "pointerover",
19410 pointerleave: "pointerout"
19411}, function( orig, fix ) {
19412 jQuery.event.special[ orig ] = {
19413 delegateType: fix,
19414 bindType: fix,
19415
19416 handle: function( event ) {
19417 var ret,
19418 target = this,
19419 related = event.relatedTarget,
19420 handleObj = event.handleObj;
19421
19422 // For mouseenter/leave call the handler if related is outside the target.
19423 // NB: No relatedTarget if the mouse left/entered the browser window
19424 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
19425 event.type = handleObj.origType;
19426 ret = handleObj.handler.apply( this, arguments );
19427 event.type = fix;
19428 }
19429 return ret;
19430 }
19431 };
19432} );
19433
19434jQuery.fn.extend( {
19435
19436 on: function( types, selector, data, fn ) {
19437 return on( this, types, selector, data, fn );
19438 },
19439 one: function( types, selector, data, fn ) {
19440 return on( this, types, selector, data, fn, 1 );
19441 },
19442 off: function( types, selector, fn ) {
19443 var handleObj, type;
19444 if ( types && types.preventDefault && types.handleObj ) {
19445
19446 // ( event ) dispatched jQuery.Event
19447 handleObj = types.handleObj;
19448 jQuery( types.delegateTarget ).off(
19449 handleObj.namespace ?
19450 handleObj.origType + "." + handleObj.namespace :
19451 handleObj.origType,
19452 handleObj.selector,
19453 handleObj.handler
19454 );
19455 return this;
19456 }
19457 if ( typeof types === "object" ) {
19458
19459 // ( types-object [, selector] )
19460 for ( type in types ) {
19461 this.off( type, selector, types[ type ] );
19462 }
19463 return this;
19464 }
19465 if ( selector === false || typeof selector === "function" ) {
19466
19467 // ( types [, fn] )
19468 fn = selector;
19469 selector = undefined;
19470 }
19471 if ( fn === false ) {
19472 fn = returnFalse;
19473 }
19474 return this.each( function() {
19475 jQuery.event.remove( this, types, fn, selector );
19476 } );
19477 }
19478} );
19479
19480
19481var
19482
19483 /* eslint-disable max-len */
19484
19485 // See https://github.com/eslint/eslint/issues/3229
19486 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
19487
19488 /* eslint-enable */
19489
19490 // Support: IE <=10 - 11, Edge 12 - 13
19491 // In IE/Edge using regex groups here causes severe slowdowns.
19492 // See https://connect.microsoft.com/IE/feedback/details/1736512/
19493 rnoInnerhtml = /<script|<style|<link/i,
19494
19495 // checked="checked" or checked
19496 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
19497 rscriptTypeMasked = /^true\/(.*)/,
19498 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
19499
19500// Prefer a tbody over its parent table for containing new rows
19501function manipulationTarget( elem, content ) {
19502 if ( nodeName( elem, "table" ) &&
19503 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
19504
19505 return jQuery( ">tbody", elem )[ 0 ] || elem;
19506 }
19507
19508 return elem;
19509}
19510
19511// Replace/restore the type attribute of script elements for safe DOM manipulation
19512function disableScript( elem ) {
19513 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
19514 return elem;
19515}
19516function restoreScript( elem ) {
19517 var match = rscriptTypeMasked.exec( elem.type );
19518
19519 if ( match ) {
19520 elem.type = match[ 1 ];
19521 } else {
19522 elem.removeAttribute( "type" );
19523 }
19524
19525 return elem;
19526}
19527
19528function cloneCopyEvent( src, dest ) {
19529 var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
19530
19531 if ( dest.nodeType !== 1 ) {
19532 return;
19533 }
19534
19535 // 1. Copy private data: events, handlers, etc.
19536 if ( dataPriv.hasData( src ) ) {
19537 pdataOld = dataPriv.access( src );
19538 pdataCur = dataPriv.set( dest, pdataOld );
19539 events = pdataOld.events;
19540
19541 if ( events ) {
19542 delete pdataCur.handle;
19543 pdataCur.events = {};
19544
19545 for ( type in events ) {
19546 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
19547 jQuery.event.add( dest, type, events[ type ][ i ] );
19548 }
19549 }
19550 }
19551 }
19552
19553 // 2. Copy user data
19554 if ( dataUser.hasData( src ) ) {
19555 udataOld = dataUser.access( src );
19556 udataCur = jQuery.extend( {}, udataOld );
19557
19558 dataUser.set( dest, udataCur );
19559 }
19560}
19561
19562// Fix IE bugs, see support tests
19563function fixInput( src, dest ) {
19564 var nodeName = dest.nodeName.toLowerCase();
19565
19566 // Fails to persist the checked state of a cloned checkbox or radio button.
19567 if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
19568 dest.checked = src.checked;
19569
19570 // Fails to return the selected option to the default selected state when cloning options
19571 } else if ( nodeName === "input" || nodeName === "textarea" ) {
19572 dest.defaultValue = src.defaultValue;
19573 }
19574}
19575
19576function domManip( collection, args, callback, ignored ) {
19577
19578 // Flatten any nested arrays
19579 args = concat.apply( [], args );
19580
19581 var fragment, first, scripts, hasScripts, node, doc,
19582 i = 0,
19583 l = collection.length,
19584 iNoClone = l - 1,
19585 value = args[ 0 ],
19586 isFunction = jQuery.isFunction( value );
19587
19588 // We can't cloneNode fragments that contain checked, in WebKit
19589 if ( isFunction ||
19590 ( l > 1 && typeof value === "string" &&
19591 !support.checkClone && rchecked.test( value ) ) ) {
19592 return collection.each( function( index ) {
19593 var self = collection.eq( index );
19594 if ( isFunction ) {
19595 args[ 0 ] = value.call( this, index, self.html() );
19596 }
19597 domManip( self, args, callback, ignored );
19598 } );
19599 }
19600
19601 if ( l ) {
19602 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
19603 first = fragment.firstChild;
19604
19605 if ( fragment.childNodes.length === 1 ) {
19606 fragment = first;
19607 }
19608
19609 // Require either new content or an interest in ignored elements to invoke the callback
19610 if ( first || ignored ) {
19611 scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
19612 hasScripts = scripts.length;
19613
19614 // Use the original fragment for the last item
19615 // instead of the first because it can end up
19616 // being emptied incorrectly in certain situations (#8070).
19617 for ( ; i < l; i++ ) {
19618 node = fragment;
19619
19620 if ( i !== iNoClone ) {
19621 node = jQuery.clone( node, true, true );
19622
19623 // Keep references to cloned scripts for later restoration
19624 if ( hasScripts ) {
19625
19626 // Support: Android <=4.0 only, PhantomJS 1 only
19627 // push.apply(_, arraylike) throws on ancient WebKit
19628 jQuery.merge( scripts, getAll( node, "script" ) );
19629 }
19630 }
19631
19632 callback.call( collection[ i ], node, i );
19633 }
19634
19635 if ( hasScripts ) {
19636 doc = scripts[ scripts.length - 1 ].ownerDocument;
19637
19638 // Reenable scripts
19639 jQuery.map( scripts, restoreScript );
19640
19641 // Evaluate executable scripts on first document insertion
19642 for ( i = 0; i < hasScripts; i++ ) {
19643 node = scripts[ i ];
19644 if ( rscriptType.test( node.type || "" ) &&
19645 !dataPriv.access( node, "globalEval" ) &&
19646 jQuery.contains( doc, node ) ) {
19647
19648 if ( node.src ) {
19649
19650 // Optional AJAX dependency, but won't run scripts if not present
19651 if ( jQuery._evalUrl ) {
19652 jQuery._evalUrl( node.src );
19653 }
19654 } else {
19655 DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
19656 }
19657 }
19658 }
19659 }
19660 }
19661 }
19662
19663 return collection;
19664}
19665
19666function remove( elem, selector, keepData ) {
19667 var node,
19668 nodes = selector ? jQuery.filter( selector, elem ) : elem,
19669 i = 0;
19670
19671 for ( ; ( node = nodes[ i ] ) != null; i++ ) {
19672 if ( !keepData && node.nodeType === 1 ) {
19673 jQuery.cleanData( getAll( node ) );
19674 }
19675
19676 if ( node.parentNode ) {
19677 if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
19678 setGlobalEval( getAll( node, "script" ) );
19679 }
19680 node.parentNode.removeChild( node );
19681 }
19682 }
19683
19684 return elem;
19685}
19686
19687jQuery.extend( {
19688 htmlPrefilter: function( html ) {
19689 return html.replace( rxhtmlTag, "<$1></$2>" );
19690 },
19691
19692 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
19693 var i, l, srcElements, destElements,
19694 clone = elem.cloneNode( true ),
19695 inPage = jQuery.contains( elem.ownerDocument, elem );
19696
19697 // Fix IE cloning issues
19698 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
19699 !jQuery.isXMLDoc( elem ) ) {
19700
19701 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
19702 destElements = getAll( clone );
19703 srcElements = getAll( elem );
19704
19705 for ( i = 0, l = srcElements.length; i < l; i++ ) {
19706 fixInput( srcElements[ i ], destElements[ i ] );
19707 }
19708 }
19709
19710 // Copy the events from the original to the clone
19711 if ( dataAndEvents ) {
19712 if ( deepDataAndEvents ) {
19713 srcElements = srcElements || getAll( elem );
19714 destElements = destElements || getAll( clone );
19715
19716 for ( i = 0, l = srcElements.length; i < l; i++ ) {
19717 cloneCopyEvent( srcElements[ i ], destElements[ i ] );
19718 }
19719 } else {
19720 cloneCopyEvent( elem, clone );
19721 }
19722 }
19723
19724 // Preserve script evaluation history
19725 destElements = getAll( clone, "script" );
19726 if ( destElements.length > 0 ) {
19727 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
19728 }
19729
19730 // Return the cloned set
19731 return clone;
19732 },
19733
19734 cleanData: function( elems ) {
19735 var data, elem, type,
19736 special = jQuery.event.special,
19737 i = 0;
19738
19739 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
19740 if ( acceptData( elem ) ) {
19741 if ( ( data = elem[ dataPriv.expando ] ) ) {
19742 if ( data.events ) {
19743 for ( type in data.events ) {
19744 if ( special[ type ] ) {
19745 jQuery.event.remove( elem, type );
19746
19747 // This is a shortcut to avoid jQuery.event.remove's overhead
19748 } else {
19749 jQuery.removeEvent( elem, type, data.handle );
19750 }
19751 }
19752 }
19753
19754 // Support: Chrome <=35 - 45+
19755 // Assign undefined instead of using delete, see Data#remove
19756 elem[ dataPriv.expando ] = undefined;
19757 }
19758 if ( elem[ dataUser.expando ] ) {
19759
19760 // Support: Chrome <=35 - 45+
19761 // Assign undefined instead of using delete, see Data#remove
19762 elem[ dataUser.expando ] = undefined;
19763 }
19764 }
19765 }
19766 }
19767} );
19768
19769jQuery.fn.extend( {
19770 detach: function( selector ) {
19771 return remove( this, selector, true );
19772 },
19773
19774 remove: function( selector ) {
19775 return remove( this, selector );
19776 },
19777
19778 text: function( value ) {
19779 return access( this, function( value ) {
19780 return value === undefined ?
19781 jQuery.text( this ) :
19782 this.empty().each( function() {
19783 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
19784 this.textContent = value;
19785 }
19786 } );
19787 }, null, value, arguments.length );
19788 },
19789
19790 append: function() {
19791 return domManip( this, arguments, function( elem ) {
19792 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
19793 var target = manipulationTarget( this, elem );
19794 target.appendChild( elem );
19795 }
19796 } );
19797 },
19798
19799 prepend: function() {
19800 return domManip( this, arguments, function( elem ) {
19801 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
19802 var target = manipulationTarget( this, elem );
19803 target.insertBefore( elem, target.firstChild );
19804 }
19805 } );
19806 },
19807
19808 before: function() {
19809 return domManip( this, arguments, function( elem ) {
19810 if ( this.parentNode ) {
19811 this.parentNode.insertBefore( elem, this );
19812 }
19813 } );
19814 },
19815
19816 after: function() {
19817 return domManip( this, arguments, function( elem ) {
19818 if ( this.parentNode ) {
19819 this.parentNode.insertBefore( elem, this.nextSibling );
19820 }
19821 } );
19822 },
19823
19824 empty: function() {
19825 var elem,
19826 i = 0;
19827
19828 for ( ; ( elem = this[ i ] ) != null; i++ ) {
19829 if ( elem.nodeType === 1 ) {
19830
19831 // Prevent memory leaks
19832 jQuery.cleanData( getAll( elem, false ) );
19833
19834 // Remove any remaining nodes
19835 elem.textContent = "";
19836 }
19837 }
19838
19839 return this;
19840 },
19841
19842 clone: function( dataAndEvents, deepDataAndEvents ) {
19843 dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
19844 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
19845
19846 return this.map( function() {
19847 return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
19848 } );
19849 },
19850
19851 html: function( value ) {
19852 return access( this, function( value ) {
19853 var elem = this[ 0 ] || {},
19854 i = 0,
19855 l = this.length;
19856
19857 if ( value === undefined && elem.nodeType === 1 ) {
19858 return elem.innerHTML;
19859 }
19860
19861 // See if we can take a shortcut and just use innerHTML
19862 if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
19863 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
19864
19865 value = jQuery.htmlPrefilter( value );
19866
19867 try {
19868 for ( ; i < l; i++ ) {
19869 elem = this[ i ] || {};
19870
19871 // Remove element nodes and prevent memory leaks
19872 if ( elem.nodeType === 1 ) {
19873 jQuery.cleanData( getAll( elem, false ) );
19874 elem.innerHTML = value;
19875 }
19876 }
19877
19878 elem = 0;
19879
19880 // If using innerHTML throws an exception, use the fallback method
19881 } catch ( e ) {}
19882 }
19883
19884 if ( elem ) {
19885 this.empty().append( value );
19886 }
19887 }, null, value, arguments.length );
19888 },
19889
19890 replaceWith: function() {
19891 var ignored = [];
19892
19893 // Make the changes, replacing each non-ignored context element with the new content
19894 return domManip( this, arguments, function( elem ) {
19895 var parent = this.parentNode;
19896
19897 if ( jQuery.inArray( this, ignored ) < 0 ) {
19898 jQuery.cleanData( getAll( this ) );
19899 if ( parent ) {
19900 parent.replaceChild( elem, this );
19901 }
19902 }
19903
19904 // Force callback invocation
19905 }, ignored );
19906 }
19907} );
19908
19909jQuery.each( {
19910 appendTo: "append",
19911 prependTo: "prepend",
19912 insertBefore: "before",
19913 insertAfter: "after",
19914 replaceAll: "replaceWith"
19915}, function( name, original ) {
19916 jQuery.fn[ name ] = function( selector ) {
19917 var elems,
19918 ret = [],
19919 insert = jQuery( selector ),
19920 last = insert.length - 1,
19921 i = 0;
19922
19923 for ( ; i <= last; i++ ) {
19924 elems = i === last ? this : this.clone( true );
19925 jQuery( insert[ i ] )[ original ]( elems );
19926
19927 // Support: Android <=4.0 only, PhantomJS 1 only
19928 // .get() because push.apply(_, arraylike) throws on ancient WebKit
19929 push.apply( ret, elems.get() );
19930 }
19931
19932 return this.pushStack( ret );
19933 };
19934} );
19935var rmargin = ( /^margin/ );
19936
19937var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
19938
19939var getStyles = function( elem ) {
19940
19941 // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
19942 // IE throws on elements created in popups
19943 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
19944 var view = elem.ownerDocument.defaultView;
19945
19946 if ( !view || !view.opener ) {
19947 view = window;
19948 }
19949
19950 return view.getComputedStyle( elem );
19951 };
19952
19953
19954
19955( function() {
19956
19957 // Executing both pixelPosition & boxSizingReliable tests require only one layout
19958 // so they're executed at the same time to save the second computation.
19959 function computeStyleTests() {
19960
19961 // This is a singleton, we need to execute it only once
19962 if ( !div ) {
19963 return;
19964 }
19965
19966 div.style.cssText =
19967 "box-sizing:border-box;" +
19968 "position:relative;display:block;" +
19969 "margin:auto;border:1px;padding:1px;" +
19970 "top:1%;width:50%";
19971 div.innerHTML = "";
19972 documentElement.appendChild( container );
19973
19974 var divStyle = window.getComputedStyle( div );
19975 pixelPositionVal = divStyle.top !== "1%";
19976
19977 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
19978 reliableMarginLeftVal = divStyle.marginLeft === "2px";
19979 boxSizingReliableVal = divStyle.width === "4px";
19980
19981 // Support: Android 4.0 - 4.3 only
19982 // Some styles come back with percentage values, even though they shouldn't
19983 div.style.marginRight = "50%";
19984 pixelMarginRightVal = divStyle.marginRight === "4px";
19985
19986 documentElement.removeChild( container );
19987
19988 // Nullify the div so it wouldn't be stored in the memory and
19989 // it will also be a sign that checks already performed
19990 div = null;
19991 }
19992
19993 var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
19994 container = document.createElement( "div" ),
19995 div = document.createElement( "div" );
19996
19997 // Finish early in limited (non-browser) environments
19998 if ( !div.style ) {
19999 return;
20000 }
20001
20002 // Support: IE <=9 - 11 only
20003 // Style of cloned element affects source element cloned (#8908)
20004 div.style.backgroundClip = "content-box";
20005 div.cloneNode( true ).style.backgroundClip = "";
20006 support.clearCloneStyle = div.style.backgroundClip === "content-box";
20007
20008 container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
20009 "padding:0;margin-top:1px;position:absolute";
20010 container.appendChild( div );
20011
20012 jQuery.extend( support, {
20013 pixelPosition: function() {
20014 computeStyleTests();
20015 return pixelPositionVal;
20016 },
20017 boxSizingReliable: function() {
20018 computeStyleTests();
20019 return boxSizingReliableVal;
20020 },
20021 pixelMarginRight: function() {
20022 computeStyleTests();
20023 return pixelMarginRightVal;
20024 },
20025 reliableMarginLeft: function() {
20026 computeStyleTests();
20027 return reliableMarginLeftVal;
20028 }
20029 } );
20030} )();
20031
20032
20033function curCSS( elem, name, computed ) {
20034 var width, minWidth, maxWidth, ret,
20035
20036 // Support: Firefox 51+
20037 // Retrieving style before computed somehow
20038 // fixes an issue with getting wrong values
20039 // on detached elements
20040 style = elem.style;
20041
20042 computed = computed || getStyles( elem );
20043
20044 // getPropertyValue is needed for:
20045 // .css('filter') (IE 9 only, #12537)
20046 // .css('--customProperty) (#3144)
20047 if ( computed ) {
20048 ret = computed.getPropertyValue( name ) || computed[ name ];
20049
20050 if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
20051 ret = jQuery.style( elem, name );
20052 }
20053
20054 // A tribute to the "awesome hack by Dean Edwards"
20055 // Android Browser returns percentage for some values,
20056 // but width seems to be reliably pixels.
20057 // This is against the CSSOM draft spec:
20058 // https://drafts.csswg.org/cssom/#resolved-values
20059 if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
20060
20061 // Remember the original values
20062 width = style.width;
20063 minWidth = style.minWidth;
20064 maxWidth = style.maxWidth;
20065
20066 // Put in the new values to get a computed value out
20067 style.minWidth = style.maxWidth = style.width = ret;
20068 ret = computed.width;
20069
20070 // Revert the changed values
20071 style.width = width;
20072 style.minWidth = minWidth;
20073 style.maxWidth = maxWidth;
20074 }
20075 }
20076
20077 return ret !== undefined ?
20078
20079 // Support: IE <=9 - 11 only
20080 // IE returns zIndex value as an integer.
20081 ret + "" :
20082 ret;
20083}
20084
20085
20086function addGetHookIf( conditionFn, hookFn ) {
20087
20088 // Define the hook, we'll check on the first run if it's really needed.
20089 return {
20090 get: function() {
20091 if ( conditionFn() ) {
20092
20093 // Hook not needed (or it's not possible to use it due
20094 // to missing dependency), remove it.
20095 delete this.get;
20096 return;
20097 }
20098
20099 // Hook needed; redefine it so that the support test is not executed again.
20100 return ( this.get = hookFn ).apply( this, arguments );
20101 }
20102 };
20103}
20104
20105
20106var
20107
20108 // Swappable if display is none or starts with table
20109 // except "table", "table-cell", or "table-caption"
20110 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
20111 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
20112 rcustomProp = /^--/,
20113 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
20114 cssNormalTransform = {
20115 letterSpacing: "0",
20116 fontWeight: "400"
20117 },
20118
20119 cssPrefixes = [ "Webkit", "Moz", "ms" ],
20120 emptyStyle = document.createElement( "div" ).style;
20121
20122// Return a css property mapped to a potentially vendor prefixed property
20123function vendorPropName( name ) {
20124
20125 // Shortcut for names that are not vendor prefixed
20126 if ( name in emptyStyle ) {
20127 return name;
20128 }
20129
20130 // Check for vendor prefixed names
20131 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
20132 i = cssPrefixes.length;
20133
20134 while ( i-- ) {
20135 name = cssPrefixes[ i ] + capName;
20136 if ( name in emptyStyle ) {
20137 return name;
20138 }
20139 }
20140}
20141
20142// Return a property mapped along what jQuery.cssProps suggests or to
20143// a vendor prefixed property.
20144function finalPropName( name ) {
20145 var ret = jQuery.cssProps[ name ];
20146 if ( !ret ) {
20147 ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
20148 }
20149 return ret;
20150}
20151
20152function setPositiveNumber( elem, value, subtract ) {
20153
20154 // Any relative (+/-) values have already been
20155 // normalized at this point
20156 var matches = rcssNum.exec( value );
20157 return matches ?
20158
20159 // Guard against undefined "subtract", e.g., when used as in cssHooks
20160 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
20161 value;
20162}
20163
20164function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
20165 var i,
20166 val = 0;
20167
20168 // If we already have the right measurement, avoid augmentation
20169 if ( extra === ( isBorderBox ? "border" : "content" ) ) {
20170 i = 4;
20171
20172 // Otherwise initialize for horizontal or vertical properties
20173 } else {
20174 i = name === "width" ? 1 : 0;
20175 }
20176
20177 for ( ; i < 4; i += 2 ) {
20178
20179 // Both box models exclude margin, so add it if we want it
20180 if ( extra === "margin" ) {
20181 val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
20182 }
20183
20184 if ( isBorderBox ) {
20185
20186 // border-box includes padding, so remove it if we want content
20187 if ( extra === "content" ) {
20188 val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
20189 }
20190
20191 // At this point, extra isn't border nor margin, so remove border
20192 if ( extra !== "margin" ) {
20193 val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
20194 }
20195 } else {
20196
20197 // At this point, extra isn't content, so add padding
20198 val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
20199
20200 // At this point, extra isn't content nor padding, so add border
20201 if ( extra !== "padding" ) {
20202 val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
20203 }
20204 }
20205 }
20206
20207 return val;
20208}
20209
20210function getWidthOrHeight( elem, name, extra ) {
20211
20212 // Start with computed style
20213 var valueIsBorderBox,
20214 styles = getStyles( elem ),
20215 val = curCSS( elem, name, styles ),
20216 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
20217
20218 // Computed unit is not pixels. Stop here and return.
20219 if ( rnumnonpx.test( val ) ) {
20220 return val;
20221 }
20222
20223 // Check for style in case a browser which returns unreliable values
20224 // for getComputedStyle silently falls back to the reliable elem.style
20225 valueIsBorderBox = isBorderBox &&
20226 ( support.boxSizingReliable() || val === elem.style[ name ] );
20227
20228 // Fall back to offsetWidth/Height when value is "auto"
20229 // This happens for inline elements with no explicit setting (gh-3571)
20230 if ( val === "auto" ) {
20231 val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
20232 }
20233
20234 // Normalize "", auto, and prepare for extra
20235 val = parseFloat( val ) || 0;
20236
20237 // Use the active box-sizing model to add/subtract irrelevant styles
20238 return ( val +
20239 augmentWidthOrHeight(
20240 elem,
20241 name,
20242 extra || ( isBorderBox ? "border" : "content" ),
20243 valueIsBorderBox,
20244 styles
20245 )
20246 ) + "px";
20247}
20248
20249jQuery.extend( {
20250
20251 // Add in style property hooks for overriding the default
20252 // behavior of getting and setting a style property
20253 cssHooks: {
20254 opacity: {
20255 get: function( elem, computed ) {
20256 if ( computed ) {
20257
20258 // We should always get a number back from opacity
20259 var ret = curCSS( elem, "opacity" );
20260 return ret === "" ? "1" : ret;
20261 }
20262 }
20263 }
20264 },
20265
20266 // Don't automatically add "px" to these possibly-unitless properties
20267 cssNumber: {
20268 "animationIterationCount": true,
20269 "columnCount": true,
20270 "fillOpacity": true,
20271 "flexGrow": true,
20272 "flexShrink": true,
20273 "fontWeight": true,
20274 "lineHeight": true,
20275 "opacity": true,
20276 "order": true,
20277 "orphans": true,
20278 "widows": true,
20279 "zIndex": true,
20280 "zoom": true
20281 },
20282
20283 // Add in properties whose names you wish to fix before
20284 // setting or getting the value
20285 cssProps: {
20286 "float": "cssFloat"
20287 },
20288
20289 // Get and set the style property on a DOM Node
20290 style: function( elem, name, value, extra ) {
20291
20292 // Don't set styles on text and comment nodes
20293 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
20294 return;
20295 }
20296
20297 // Make sure that we're working with the right name
20298 var ret, type, hooks,
20299 origName = jQuery.camelCase( name ),
20300 isCustomProp = rcustomProp.test( name ),
20301 style = elem.style;
20302
20303 // Make sure that we're working with the right name. We don't
20304 // want to query the value if it is a CSS custom property
20305 // since they are user-defined.
20306 if ( !isCustomProp ) {
20307 name = finalPropName( origName );
20308 }
20309
20310 // Gets hook for the prefixed version, then unprefixed version
20311 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
20312
20313 // Check if we're setting a value
20314 if ( value !== undefined ) {
20315 type = typeof value;
20316
20317 // Convert "+=" or "-=" to relative numbers (#7345)
20318 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
20319 value = adjustCSS( elem, name, ret );
20320
20321 // Fixes bug #9237
20322 type = "number";
20323 }
20324
20325 // Make sure that null and NaN values aren't set (#7116)
20326 if ( value == null || value !== value ) {
20327 return;
20328 }
20329
20330 // If a number was passed in, add the unit (except for certain CSS properties)
20331 if ( type === "number" ) {
20332 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
20333 }
20334
20335 // background-* props affect original clone's values
20336 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
20337 style[ name ] = "inherit";
20338 }
20339
20340 // If a hook was provided, use that value, otherwise just set the specified value
20341 if ( !hooks || !( "set" in hooks ) ||
20342 ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
20343
20344 if ( isCustomProp ) {
20345 style.setProperty( name, value );
20346 } else {
20347 style[ name ] = value;
20348 }
20349 }
20350
20351 } else {
20352
20353 // If a hook was provided get the non-computed value from there
20354 if ( hooks && "get" in hooks &&
20355 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
20356
20357 return ret;
20358 }
20359
20360 // Otherwise just get the value from the style object
20361 return style[ name ];
20362 }
20363 },
20364
20365 css: function( elem, name, extra, styles ) {
20366 var val, num, hooks,
20367 origName = jQuery.camelCase( name ),
20368 isCustomProp = rcustomProp.test( name );
20369
20370 // Make sure that we're working with the right name. We don't
20371 // want to modify the value if it is a CSS custom property
20372 // since they are user-defined.
20373 if ( !isCustomProp ) {
20374 name = finalPropName( origName );
20375 }
20376
20377 // Try prefixed name followed by the unprefixed name
20378 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
20379
20380 // If a hook was provided get the computed value from there
20381 if ( hooks && "get" in hooks ) {
20382 val = hooks.get( elem, true, extra );
20383 }
20384
20385 // Otherwise, if a way to get the computed value exists, use that
20386 if ( val === undefined ) {
20387 val = curCSS( elem, name, styles );
20388 }
20389
20390 // Convert "normal" to computed value
20391 if ( val === "normal" && name in cssNormalTransform ) {
20392 val = cssNormalTransform[ name ];
20393 }
20394
20395 // Make numeric if forced or a qualifier was provided and val looks numeric
20396 if ( extra === "" || extra ) {
20397 num = parseFloat( val );
20398 return extra === true || isFinite( num ) ? num || 0 : val;
20399 }
20400
20401 return val;
20402 }
20403} );
20404
20405jQuery.each( [ "height", "width" ], function( i, name ) {
20406 jQuery.cssHooks[ name ] = {
20407 get: function( elem, computed, extra ) {
20408 if ( computed ) {
20409
20410 // Certain elements can have dimension info if we invisibly show them
20411 // but it must have a current display style that would benefit
20412 return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
20413
20414 // Support: Safari 8+
20415 // Table columns in Safari have non-zero offsetWidth & zero
20416 // getBoundingClientRect().width unless display is changed.
20417 // Support: IE <=11 only
20418 // Running getBoundingClientRect on a disconnected node
20419 // in IE throws an error.
20420 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
20421 swap( elem, cssShow, function() {
20422 return getWidthOrHeight( elem, name, extra );
20423 } ) :
20424 getWidthOrHeight( elem, name, extra );
20425 }
20426 },
20427
20428 set: function( elem, value, extra ) {
20429 var matches,
20430 styles = extra && getStyles( elem ),
20431 subtract = extra && augmentWidthOrHeight(
20432 elem,
20433 name,
20434 extra,
20435 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
20436 styles
20437 );
20438
20439 // Convert to pixels if value adjustment is needed
20440 if ( subtract && ( matches = rcssNum.exec( value ) ) &&
20441 ( matches[ 3 ] || "px" ) !== "px" ) {
20442
20443 elem.style[ name ] = value;
20444 value = jQuery.css( elem, name );
20445 }
20446
20447 return setPositiveNumber( elem, value, subtract );
20448 }
20449 };
20450} );
20451
20452jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
20453 function( elem, computed ) {
20454 if ( computed ) {
20455 return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
20456 elem.getBoundingClientRect().left -
20457 swap( elem, { marginLeft: 0 }, function() {
20458 return elem.getBoundingClientRect().left;
20459 } )
20460 ) + "px";
20461 }
20462 }
20463);
20464
20465// These hooks are used by animate to expand properties
20466jQuery.each( {
20467 margin: "",
20468 padding: "",
20469 border: "Width"
20470}, function( prefix, suffix ) {
20471 jQuery.cssHooks[ prefix + suffix ] = {
20472 expand: function( value ) {
20473 var i = 0,
20474 expanded = {},
20475
20476 // Assumes a single number if not a string
20477 parts = typeof value === "string" ? value.split( " " ) : [ value ];
20478
20479 for ( ; i < 4; i++ ) {
20480 expanded[ prefix + cssExpand[ i ] + suffix ] =
20481 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
20482 }
20483
20484 return expanded;
20485 }
20486 };
20487
20488 if ( !rmargin.test( prefix ) ) {
20489 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
20490 }
20491} );
20492
20493jQuery.fn.extend( {
20494 css: function( name, value ) {
20495 return access( this, function( elem, name, value ) {
20496 var styles, len,
20497 map = {},
20498 i = 0;
20499
20500 if ( Array.isArray( name ) ) {
20501 styles = getStyles( elem );
20502 len = name.length;
20503
20504 for ( ; i < len; i++ ) {
20505 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
20506 }
20507
20508 return map;
20509 }
20510
20511 return value !== undefined ?
20512 jQuery.style( elem, name, value ) :
20513 jQuery.css( elem, name );
20514 }, name, value, arguments.length > 1 );
20515 }
20516} );
20517
20518
20519function Tween( elem, options, prop, end, easing ) {
20520 return new Tween.prototype.init( elem, options, prop, end, easing );
20521}
20522jQuery.Tween = Tween;
20523
20524Tween.prototype = {
20525 constructor: Tween,
20526 init: function( elem, options, prop, end, easing, unit ) {
20527 this.elem = elem;
20528 this.prop = prop;
20529 this.easing = easing || jQuery.easing._default;
20530 this.options = options;
20531 this.start = this.now = this.cur();
20532 this.end = end;
20533 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
20534 },
20535 cur: function() {
20536 var hooks = Tween.propHooks[ this.prop ];
20537
20538 return hooks && hooks.get ?
20539 hooks.get( this ) :
20540 Tween.propHooks._default.get( this );
20541 },
20542 run: function( percent ) {
20543 var eased,
20544 hooks = Tween.propHooks[ this.prop ];
20545
20546 if ( this.options.duration ) {
20547 this.pos = eased = jQuery.easing[ this.easing ](
20548 percent, this.options.duration * percent, 0, 1, this.options.duration
20549 );
20550 } else {
20551 this.pos = eased = percent;
20552 }
20553 this.now = ( this.end - this.start ) * eased + this.start;
20554
20555 if ( this.options.step ) {
20556 this.options.step.call( this.elem, this.now, this );
20557 }
20558
20559 if ( hooks && hooks.set ) {
20560 hooks.set( this );
20561 } else {
20562 Tween.propHooks._default.set( this );
20563 }
20564 return this;
20565 }
20566};
20567
20568Tween.prototype.init.prototype = Tween.prototype;
20569
20570Tween.propHooks = {
20571 _default: {
20572 get: function( tween ) {
20573 var result;
20574
20575 // Use a property on the element directly when it is not a DOM element,
20576 // or when there is no matching style property that exists.
20577 if ( tween.elem.nodeType !== 1 ||
20578 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
20579 return tween.elem[ tween.prop ];
20580 }
20581
20582 // Passing an empty string as a 3rd parameter to .css will automatically
20583 // attempt a parseFloat and fallback to a string if the parse fails.
20584 // Simple values such as "10px" are parsed to Float;
20585 // complex values such as "rotate(1rad)" are returned as-is.
20586 result = jQuery.css( tween.elem, tween.prop, "" );
20587
20588 // Empty strings, null, undefined and "auto" are converted to 0.
20589 return !result || result === "auto" ? 0 : result;
20590 },
20591 set: function( tween ) {
20592
20593 // Use step hook for back compat.
20594 // Use cssHook if its there.
20595 // Use .style if available and use plain properties where available.
20596 if ( jQuery.fx.step[ tween.prop ] ) {
20597 jQuery.fx.step[ tween.prop ]( tween );
20598 } else if ( tween.elem.nodeType === 1 &&
20599 ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
20600 jQuery.cssHooks[ tween.prop ] ) ) {
20601 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
20602 } else {
20603 tween.elem[ tween.prop ] = tween.now;
20604 }
20605 }
20606 }
20607};
20608
20609// Support: IE <=9 only
20610// Panic based approach to setting things on disconnected nodes
20611Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
20612 set: function( tween ) {
20613 if ( tween.elem.nodeType && tween.elem.parentNode ) {
20614 tween.elem[ tween.prop ] = tween.now;
20615 }
20616 }
20617};
20618
20619jQuery.easing = {
20620 linear: function( p ) {
20621 return p;
20622 },
20623 swing: function( p ) {
20624 return 0.5 - Math.cos( p * Math.PI ) / 2;
20625 },
20626 _default: "swing"
20627};
20628
20629jQuery.fx = Tween.prototype.init;
20630
20631// Back compat <1.8 extension point
20632jQuery.fx.step = {};
20633
20634
20635
20636
20637var
20638 fxNow, inProgress,
20639 rfxtypes = /^(?:toggle|show|hide)$/,
20640 rrun = /queueHooks$/;
20641
20642function schedule() {
20643 if ( inProgress ) {
20644 if ( document.hidden === false && window.requestAnimationFrame ) {
20645 window.requestAnimationFrame( schedule );
20646 } else {
20647 window.setTimeout( schedule, jQuery.fx.interval );
20648 }
20649
20650 jQuery.fx.tick();
20651 }
20652}
20653
20654// Animations created synchronously will run synchronously
20655function createFxNow() {
20656 window.setTimeout( function() {
20657 fxNow = undefined;
20658 } );
20659 return ( fxNow = jQuery.now() );
20660}
20661
20662// Generate parameters to create a standard animation
20663function genFx( type, includeWidth ) {
20664 var which,
20665 i = 0,
20666 attrs = { height: type };
20667
20668 // If we include width, step value is 1 to do all cssExpand values,
20669 // otherwise step value is 2 to skip over Left and Right
20670 includeWidth = includeWidth ? 1 : 0;
20671 for ( ; i < 4; i += 2 - includeWidth ) {
20672 which = cssExpand[ i ];
20673 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
20674 }
20675
20676 if ( includeWidth ) {
20677 attrs.opacity = attrs.width = type;
20678 }
20679
20680 return attrs;
20681}
20682
20683function createTween( value, prop, animation ) {
20684 var tween,
20685 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
20686 index = 0,
20687 length = collection.length;
20688 for ( ; index < length; index++ ) {
20689 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
20690
20691 // We're done with this property
20692 return tween;
20693 }
20694 }
20695}
20696
20697function defaultPrefilter( elem, props, opts ) {
20698 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
20699 isBox = "width" in props || "height" in props,
20700 anim = this,
20701 orig = {},
20702 style = elem.style,
20703 hidden = elem.nodeType && isHiddenWithinTree( elem ),
20704 dataShow = dataPriv.get( elem, "fxshow" );
20705
20706 // Queue-skipping animations hijack the fx hooks
20707 if ( !opts.queue ) {
20708 hooks = jQuery._queueHooks( elem, "fx" );
20709 if ( hooks.unqueued == null ) {
20710 hooks.unqueued = 0;
20711 oldfire = hooks.empty.fire;
20712 hooks.empty.fire = function() {
20713 if ( !hooks.unqueued ) {
20714 oldfire();
20715 }
20716 };
20717 }
20718 hooks.unqueued++;
20719
20720 anim.always( function() {
20721
20722 // Ensure the complete handler is called before this completes
20723 anim.always( function() {
20724 hooks.unqueued--;
20725 if ( !jQuery.queue( elem, "fx" ).length ) {
20726 hooks.empty.fire();
20727 }
20728 } );
20729 } );
20730 }
20731
20732 // Detect show/hide animations
20733 for ( prop in props ) {
20734 value = props[ prop ];
20735 if ( rfxtypes.test( value ) ) {
20736 delete props[ prop ];
20737 toggle = toggle || value === "toggle";
20738 if ( value === ( hidden ? "hide" : "show" ) ) {
20739
20740 // Pretend to be hidden if this is a "show" and
20741 // there is still data from a stopped show/hide
20742 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
20743 hidden = true;
20744
20745 // Ignore all other no-op show/hide data
20746 } else {
20747 continue;
20748 }
20749 }
20750 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
20751 }
20752 }
20753
20754 // Bail out if this is a no-op like .hide().hide()
20755 propTween = !jQuery.isEmptyObject( props );
20756 if ( !propTween && jQuery.isEmptyObject( orig ) ) {
20757 return;
20758 }
20759
20760 // Restrict "overflow" and "display" styles during box animations
20761 if ( isBox && elem.nodeType === 1 ) {
20762
20763 // Support: IE <=9 - 11, Edge 12 - 13
20764 // Record all 3 overflow attributes because IE does not infer the shorthand
20765 // from identically-valued overflowX and overflowY
20766 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
20767
20768 // Identify a display type, preferring old show/hide data over the CSS cascade
20769 restoreDisplay = dataShow && dataShow.display;
20770 if ( restoreDisplay == null ) {
20771 restoreDisplay = dataPriv.get( elem, "display" );
20772 }
20773 display = jQuery.css( elem, "display" );
20774 if ( display === "none" ) {
20775 if ( restoreDisplay ) {
20776 display = restoreDisplay;
20777 } else {
20778
20779 // Get nonempty value(s) by temporarily forcing visibility
20780 showHide( [ elem ], true );
20781 restoreDisplay = elem.style.display || restoreDisplay;
20782 display = jQuery.css( elem, "display" );
20783 showHide( [ elem ] );
20784 }
20785 }
20786
20787 // Animate inline elements as inline-block
20788 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
20789 if ( jQuery.css( elem, "float" ) === "none" ) {
20790
20791 // Restore the original display value at the end of pure show/hide animations
20792 if ( !propTween ) {
20793 anim.done( function() {
20794 style.display = restoreDisplay;
20795 } );
20796 if ( restoreDisplay == null ) {
20797 display = style.display;
20798 restoreDisplay = display === "none" ? "" : display;
20799 }
20800 }
20801 style.display = "inline-block";
20802 }
20803 }
20804 }
20805
20806 if ( opts.overflow ) {
20807 style.overflow = "hidden";
20808 anim.always( function() {
20809 style.overflow = opts.overflow[ 0 ];
20810 style.overflowX = opts.overflow[ 1 ];
20811 style.overflowY = opts.overflow[ 2 ];
20812 } );
20813 }
20814
20815 // Implement show/hide animations
20816 propTween = false;
20817 for ( prop in orig ) {
20818
20819 // General show/hide setup for this element animation
20820 if ( !propTween ) {
20821 if ( dataShow ) {
20822 if ( "hidden" in dataShow ) {
20823 hidden = dataShow.hidden;
20824 }
20825 } else {
20826 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
20827 }
20828
20829 // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
20830 if ( toggle ) {
20831 dataShow.hidden = !hidden;
20832 }
20833
20834 // Show elements before animating them
20835 if ( hidden ) {
20836 showHide( [ elem ], true );
20837 }
20838
20839 /* eslint-disable no-loop-func */
20840
20841 anim.done( function() {
20842
20843 /* eslint-enable no-loop-func */
20844
20845 // The final step of a "hide" animation is actually hiding the element
20846 if ( !hidden ) {
20847 showHide( [ elem ] );
20848 }
20849 dataPriv.remove( elem, "fxshow" );
20850 for ( prop in orig ) {
20851 jQuery.style( elem, prop, orig[ prop ] );
20852 }
20853 } );
20854 }
20855
20856 // Per-property setup
20857 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
20858 if ( !( prop in dataShow ) ) {
20859 dataShow[ prop ] = propTween.start;
20860 if ( hidden ) {
20861 propTween.end = propTween.start;
20862 propTween.start = 0;
20863 }
20864 }
20865 }
20866}
20867
20868function propFilter( props, specialEasing ) {
20869 var index, name, easing, value, hooks;
20870
20871 // camelCase, specialEasing and expand cssHook pass
20872 for ( index in props ) {
20873 name = jQuery.camelCase( index );
20874 easing = specialEasing[ name ];
20875 value = props[ index ];
20876 if ( Array.isArray( value ) ) {
20877 easing = value[ 1 ];
20878 value = props[ index ] = value[ 0 ];
20879 }
20880
20881 if ( index !== name ) {
20882 props[ name ] = value;
20883 delete props[ index ];
20884 }
20885
20886 hooks = jQuery.cssHooks[ name ];
20887 if ( hooks && "expand" in hooks ) {
20888 value = hooks.expand( value );
20889 delete props[ name ];
20890
20891 // Not quite $.extend, this won't overwrite existing keys.
20892 // Reusing 'index' because we have the correct "name"
20893 for ( index in value ) {
20894 if ( !( index in props ) ) {
20895 props[ index ] = value[ index ];
20896 specialEasing[ index ] = easing;
20897 }
20898 }
20899 } else {
20900 specialEasing[ name ] = easing;
20901 }
20902 }
20903}
20904
20905function Animation( elem, properties, options ) {
20906 var result,
20907 stopped,
20908 index = 0,
20909 length = Animation.prefilters.length,
20910 deferred = jQuery.Deferred().always( function() {
20911
20912 // Don't match elem in the :animated selector
20913 delete tick.elem;
20914 } ),
20915 tick = function() {
20916 if ( stopped ) {
20917 return false;
20918 }
20919 var currentTime = fxNow || createFxNow(),
20920 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
20921
20922 // Support: Android 2.3 only
20923 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
20924 temp = remaining / animation.duration || 0,
20925 percent = 1 - temp,
20926 index = 0,
20927 length = animation.tweens.length;
20928
20929 for ( ; index < length; index++ ) {
20930 animation.tweens[ index ].run( percent );
20931 }
20932
20933 deferred.notifyWith( elem, [ animation, percent, remaining ] );
20934
20935 // If there's more to do, yield
20936 if ( percent < 1 && length ) {
20937 return remaining;
20938 }
20939
20940 // If this was an empty animation, synthesize a final progress notification
20941 if ( !length ) {
20942 deferred.notifyWith( elem, [ animation, 1, 0 ] );
20943 }
20944
20945 // Resolve the animation and report its conclusion
20946 deferred.resolveWith( elem, [ animation ] );
20947 return false;
20948 },
20949 animation = deferred.promise( {
20950 elem: elem,
20951 props: jQuery.extend( {}, properties ),
20952 opts: jQuery.extend( true, {
20953 specialEasing: {},
20954 easing: jQuery.easing._default
20955 }, options ),
20956 originalProperties: properties,
20957 originalOptions: options,
20958 startTime: fxNow || createFxNow(),
20959 duration: options.duration,
20960 tweens: [],
20961 createTween: function( prop, end ) {
20962 var tween = jQuery.Tween( elem, animation.opts, prop, end,
20963 animation.opts.specialEasing[ prop ] || animation.opts.easing );
20964 animation.tweens.push( tween );
20965 return tween;
20966 },
20967 stop: function( gotoEnd ) {
20968 var index = 0,
20969
20970 // If we are going to the end, we want to run all the tweens
20971 // otherwise we skip this part
20972 length = gotoEnd ? animation.tweens.length : 0;
20973 if ( stopped ) {
20974 return this;
20975 }
20976 stopped = true;
20977 for ( ; index < length; index++ ) {
20978 animation.tweens[ index ].run( 1 );
20979 }
20980
20981 // Resolve when we played the last frame; otherwise, reject
20982 if ( gotoEnd ) {
20983 deferred.notifyWith( elem, [ animation, 1, 0 ] );
20984 deferred.resolveWith( elem, [ animation, gotoEnd ] );
20985 } else {
20986 deferred.rejectWith( elem, [ animation, gotoEnd ] );
20987 }
20988 return this;
20989 }
20990 } ),
20991 props = animation.props;
20992
20993 propFilter( props, animation.opts.specialEasing );
20994
20995 for ( ; index < length; index++ ) {
20996 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
20997 if ( result ) {
20998 if ( jQuery.isFunction( result.stop ) ) {
20999 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
21000 jQuery.proxy( result.stop, result );
21001 }
21002 return result;
21003 }
21004 }
21005
21006 jQuery.map( props, createTween, animation );
21007
21008 if ( jQuery.isFunction( animation.opts.start ) ) {
21009 animation.opts.start.call( elem, animation );
21010 }
21011
21012 // Attach callbacks from options
21013 animation
21014 .progress( animation.opts.progress )
21015 .done( animation.opts.done, animation.opts.complete )
21016 .fail( animation.opts.fail )
21017 .always( animation.opts.always );
21018
21019 jQuery.fx.timer(
21020 jQuery.extend( tick, {
21021 elem: elem,
21022 anim: animation,
21023 queue: animation.opts.queue
21024 } )
21025 );
21026
21027 return animation;
21028}
21029
21030jQuery.Animation = jQuery.extend( Animation, {
21031
21032 tweeners: {
21033 "*": [ function( prop, value ) {
21034 var tween = this.createTween( prop, value );
21035 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
21036 return tween;
21037 } ]
21038 },
21039
21040 tweener: function( props, callback ) {
21041 if ( jQuery.isFunction( props ) ) {
21042 callback = props;
21043 props = [ "*" ];
21044 } else {
21045 props = props.match( rnothtmlwhite );
21046 }
21047
21048 var prop,
21049 index = 0,
21050 length = props.length;
21051
21052 for ( ; index < length; index++ ) {
21053 prop = props[ index ];
21054 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
21055 Animation.tweeners[ prop ].unshift( callback );
21056 }
21057 },
21058
21059 prefilters: [ defaultPrefilter ],
21060
21061 prefilter: function( callback, prepend ) {
21062 if ( prepend ) {
21063 Animation.prefilters.unshift( callback );
21064 } else {
21065 Animation.prefilters.push( callback );
21066 }
21067 }
21068} );
21069
21070jQuery.speed = function( speed, easing, fn ) {
21071 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
21072 complete: fn || !fn && easing ||
21073 jQuery.isFunction( speed ) && speed,
21074 duration: speed,
21075 easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
21076 };
21077
21078 // Go to the end state if fx are off
21079 if ( jQuery.fx.off ) {
21080 opt.duration = 0;
21081
21082 } else {
21083 if ( typeof opt.duration !== "number" ) {
21084 if ( opt.duration in jQuery.fx.speeds ) {
21085 opt.duration = jQuery.fx.speeds[ opt.duration ];
21086
21087 } else {
21088 opt.duration = jQuery.fx.speeds._default;
21089 }
21090 }
21091 }
21092
21093 // Normalize opt.queue - true/undefined/null -> "fx"
21094 if ( opt.queue == null || opt.queue === true ) {
21095 opt.queue = "fx";
21096 }
21097
21098 // Queueing
21099 opt.old = opt.complete;
21100
21101 opt.complete = function() {
21102 if ( jQuery.isFunction( opt.old ) ) {
21103 opt.old.call( this );
21104 }
21105
21106 if ( opt.queue ) {
21107 jQuery.dequeue( this, opt.queue );
21108 }
21109 };
21110
21111 return opt;
21112};
21113
21114jQuery.fn.extend( {
21115 fadeTo: function( speed, to, easing, callback ) {
21116
21117 // Show any hidden elements after setting opacity to 0
21118 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
21119
21120 // Animate to the value specified
21121 .end().animate( { opacity: to }, speed, easing, callback );
21122 },
21123 animate: function( prop, speed, easing, callback ) {
21124 var empty = jQuery.isEmptyObject( prop ),
21125 optall = jQuery.speed( speed, easing, callback ),
21126 doAnimation = function() {
21127
21128 // Operate on a copy of prop so per-property easing won't be lost
21129 var anim = Animation( this, jQuery.extend( {}, prop ), optall );
21130
21131 // Empty animations, or finishing resolves immediately
21132 if ( empty || dataPriv.get( this, "finish" ) ) {
21133 anim.stop( true );
21134 }
21135 };
21136 doAnimation.finish = doAnimation;
21137
21138 return empty || optall.queue === false ?
21139 this.each( doAnimation ) :
21140 this.queue( optall.queue, doAnimation );
21141 },
21142 stop: function( type, clearQueue, gotoEnd ) {
21143 var stopQueue = function( hooks ) {
21144 var stop = hooks.stop;
21145 delete hooks.stop;
21146 stop( gotoEnd );
21147 };
21148
21149 if ( typeof type !== "string" ) {
21150 gotoEnd = clearQueue;
21151 clearQueue = type;
21152 type = undefined;
21153 }
21154 if ( clearQueue && type !== false ) {
21155 this.queue( type || "fx", [] );
21156 }
21157
21158 return this.each( function() {
21159 var dequeue = true,
21160 index = type != null && type + "queueHooks",
21161 timers = jQuery.timers,
21162 data = dataPriv.get( this );
21163
21164 if ( index ) {
21165 if ( data[ index ] && data[ index ].stop ) {
21166 stopQueue( data[ index ] );
21167 }
21168 } else {
21169 for ( index in data ) {
21170 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
21171 stopQueue( data[ index ] );
21172 }
21173 }
21174 }
21175
21176 for ( index = timers.length; index--; ) {
21177 if ( timers[ index ].elem === this &&
21178 ( type == null || timers[ index ].queue === type ) ) {
21179
21180 timers[ index ].anim.stop( gotoEnd );
21181 dequeue = false;
21182 timers.splice( index, 1 );
21183 }
21184 }
21185
21186 // Start the next in the queue if the last step wasn't forced.
21187 // Timers currently will call their complete callbacks, which
21188 // will dequeue but only if they were gotoEnd.
21189 if ( dequeue || !gotoEnd ) {
21190 jQuery.dequeue( this, type );
21191 }
21192 } );
21193 },
21194 finish: function( type ) {
21195 if ( type !== false ) {
21196 type = type || "fx";
21197 }
21198 return this.each( function() {
21199 var index,
21200 data = dataPriv.get( this ),
21201 queue = data[ type + "queue" ],
21202 hooks = data[ type + "queueHooks" ],
21203 timers = jQuery.timers,
21204 length = queue ? queue.length : 0;
21205
21206 // Enable finishing flag on private data
21207 data.finish = true;
21208
21209 // Empty the queue first
21210 jQuery.queue( this, type, [] );
21211
21212 if ( hooks && hooks.stop ) {
21213 hooks.stop.call( this, true );
21214 }
21215
21216 // Look for any active animations, and finish them
21217 for ( index = timers.length; index--; ) {
21218 if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
21219 timers[ index ].anim.stop( true );
21220 timers.splice( index, 1 );
21221 }
21222 }
21223
21224 // Look for any animations in the old queue and finish them
21225 for ( index = 0; index < length; index++ ) {
21226 if ( queue[ index ] && queue[ index ].finish ) {
21227 queue[ index ].finish.call( this );
21228 }
21229 }
21230
21231 // Turn off finishing flag
21232 delete data.finish;
21233 } );
21234 }
21235} );
21236
21237jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
21238 var cssFn = jQuery.fn[ name ];
21239 jQuery.fn[ name ] = function( speed, easing, callback ) {
21240 return speed == null || typeof speed === "boolean" ?
21241 cssFn.apply( this, arguments ) :
21242 this.animate( genFx( name, true ), speed, easing, callback );
21243 };
21244} );
21245
21246// Generate shortcuts for custom animations
21247jQuery.each( {
21248 slideDown: genFx( "show" ),
21249 slideUp: genFx( "hide" ),
21250 slideToggle: genFx( "toggle" ),
21251 fadeIn: { opacity: "show" },
21252 fadeOut: { opacity: "hide" },
21253 fadeToggle: { opacity: "toggle" }
21254}, function( name, props ) {
21255 jQuery.fn[ name ] = function( speed, easing, callback ) {
21256 return this.animate( props, speed, easing, callback );
21257 };
21258} );
21259
21260jQuery.timers = [];
21261jQuery.fx.tick = function() {
21262 var timer,
21263 i = 0,
21264 timers = jQuery.timers;
21265
21266 fxNow = jQuery.now();
21267
21268 for ( ; i < timers.length; i++ ) {
21269 timer = timers[ i ];
21270
21271 // Run the timer and safely remove it when done (allowing for external removal)
21272 if ( !timer() && timers[ i ] === timer ) {
21273 timers.splice( i--, 1 );
21274 }
21275 }
21276
21277 if ( !timers.length ) {
21278 jQuery.fx.stop();
21279 }
21280 fxNow = undefined;
21281};
21282
21283jQuery.fx.timer = function( timer ) {
21284 jQuery.timers.push( timer );
21285 jQuery.fx.start();
21286};
21287
21288jQuery.fx.interval = 13;
21289jQuery.fx.start = function() {
21290 if ( inProgress ) {
21291 return;
21292 }
21293
21294 inProgress = true;
21295 schedule();
21296};
21297
21298jQuery.fx.stop = function() {
21299 inProgress = null;
21300};
21301
21302jQuery.fx.speeds = {
21303 slow: 600,
21304 fast: 200,
21305
21306 // Default speed
21307 _default: 400
21308};
21309
21310
21311// Based off of the plugin by Clint Helfers, with permission.
21312// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
21313jQuery.fn.delay = function( time, type ) {
21314 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
21315 type = type || "fx";
21316
21317 return this.queue( type, function( next, hooks ) {
21318 var timeout = window.setTimeout( next, time );
21319 hooks.stop = function() {
21320 window.clearTimeout( timeout );
21321 };
21322 } );
21323};
21324
21325
21326( function() {
21327 var input = document.createElement( "input" ),
21328 select = document.createElement( "select" ),
21329 opt = select.appendChild( document.createElement( "option" ) );
21330
21331 input.type = "checkbox";
21332
21333 // Support: Android <=4.3 only
21334 // Default value for a checkbox should be "on"
21335 support.checkOn = input.value !== "";
21336
21337 // Support: IE <=11 only
21338 // Must access selectedIndex to make default options select
21339 support.optSelected = opt.selected;
21340
21341 // Support: IE <=11 only
21342 // An input loses its value after becoming a radio
21343 input = document.createElement( "input" );
21344 input.value = "t";
21345 input.type = "radio";
21346 support.radioValue = input.value === "t";
21347} )();
21348
21349
21350var boolHook,
21351 attrHandle = jQuery.expr.attrHandle;
21352
21353jQuery.fn.extend( {
21354 attr: function( name, value ) {
21355 return access( this, jQuery.attr, name, value, arguments.length > 1 );
21356 },
21357
21358 removeAttr: function( name ) {
21359 return this.each( function() {
21360 jQuery.removeAttr( this, name );
21361 } );
21362 }
21363} );
21364
21365jQuery.extend( {
21366 attr: function( elem, name, value ) {
21367 var ret, hooks,
21368 nType = elem.nodeType;
21369
21370 // Don't get/set attributes on text, comment and attribute nodes
21371 if ( nType === 3 || nType === 8 || nType === 2 ) {
21372 return;
21373 }
21374
21375 // Fallback to prop when attributes are not supported
21376 if ( typeof elem.getAttribute === "undefined" ) {
21377 return jQuery.prop( elem, name, value );
21378 }
21379
21380 // Attribute hooks are determined by the lowercase version
21381 // Grab necessary hook if one is defined
21382 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
21383 hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
21384 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
21385 }
21386
21387 if ( value !== undefined ) {
21388 if ( value === null ) {
21389 jQuery.removeAttr( elem, name );
21390 return;
21391 }
21392
21393 if ( hooks && "set" in hooks &&
21394 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
21395 return ret;
21396 }
21397
21398 elem.setAttribute( name, value + "" );
21399 return value;
21400 }
21401
21402 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
21403 return ret;
21404 }
21405
21406 ret = jQuery.find.attr( elem, name );
21407
21408 // Non-existent attributes return null, we normalize to undefined
21409 return ret == null ? undefined : ret;
21410 },
21411
21412 attrHooks: {
21413 type: {
21414 set: function( elem, value ) {
21415 if ( !support.radioValue && value === "radio" &&
21416 nodeName( elem, "input" ) ) {
21417 var val = elem.value;
21418 elem.setAttribute( "type", value );
21419 if ( val ) {
21420 elem.value = val;
21421 }
21422 return value;
21423 }
21424 }
21425 }
21426 },
21427
21428 removeAttr: function( elem, value ) {
21429 var name,
21430 i = 0,
21431
21432 // Attribute names can contain non-HTML whitespace characters
21433 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
21434 attrNames = value && value.match( rnothtmlwhite );
21435
21436 if ( attrNames && elem.nodeType === 1 ) {
21437 while ( ( name = attrNames[ i++ ] ) ) {
21438 elem.removeAttribute( name );
21439 }
21440 }
21441 }
21442} );
21443
21444// Hooks for boolean attributes
21445boolHook = {
21446 set: function( elem, value, name ) {
21447 if ( value === false ) {
21448
21449 // Remove boolean attributes when set to false
21450 jQuery.removeAttr( elem, name );
21451 } else {
21452 elem.setAttribute( name, name );
21453 }
21454 return name;
21455 }
21456};
21457
21458jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
21459 var getter = attrHandle[ name ] || jQuery.find.attr;
21460
21461 attrHandle[ name ] = function( elem, name, isXML ) {
21462 var ret, handle,
21463 lowercaseName = name.toLowerCase();
21464
21465 if ( !isXML ) {
21466
21467 // Avoid an infinite loop by temporarily removing this function from the getter
21468 handle = attrHandle[ lowercaseName ];
21469 attrHandle[ lowercaseName ] = ret;
21470 ret = getter( elem, name, isXML ) != null ?
21471 lowercaseName :
21472 null;
21473 attrHandle[ lowercaseName ] = handle;
21474 }
21475 return ret;
21476 };
21477} );
21478
21479
21480
21481
21482var rfocusable = /^(?:input|select|textarea|button)$/i,
21483 rclickable = /^(?:a|area)$/i;
21484
21485jQuery.fn.extend( {
21486 prop: function( name, value ) {
21487 return access( this, jQuery.prop, name, value, arguments.length > 1 );
21488 },
21489
21490 removeProp: function( name ) {
21491 return this.each( function() {
21492 delete this[ jQuery.propFix[ name ] || name ];
21493 } );
21494 }
21495} );
21496
21497jQuery.extend( {
21498 prop: function( elem, name, value ) {
21499 var ret, hooks,
21500 nType = elem.nodeType;
21501
21502 // Don't get/set properties on text, comment and attribute nodes
21503 if ( nType === 3 || nType === 8 || nType === 2 ) {
21504 return;
21505 }
21506
21507 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
21508
21509 // Fix name and attach hooks
21510 name = jQuery.propFix[ name ] || name;
21511 hooks = jQuery.propHooks[ name ];
21512 }
21513
21514 if ( value !== undefined ) {
21515 if ( hooks && "set" in hooks &&
21516 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
21517 return ret;
21518 }
21519
21520 return ( elem[ name ] = value );
21521 }
21522
21523 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
21524 return ret;
21525 }
21526
21527 return elem[ name ];
21528 },
21529
21530 propHooks: {
21531 tabIndex: {
21532 get: function( elem ) {
21533
21534 // Support: IE <=9 - 11 only
21535 // elem.tabIndex doesn't always return the
21536 // correct value when it hasn't been explicitly set
21537 // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
21538 // Use proper attribute retrieval(#12072)
21539 var tabindex = jQuery.find.attr( elem, "tabindex" );
21540
21541 if ( tabindex ) {
21542 return parseInt( tabindex, 10 );
21543 }
21544
21545 if (
21546 rfocusable.test( elem.nodeName ) ||
21547 rclickable.test( elem.nodeName ) &&
21548 elem.href
21549 ) {
21550 return 0;
21551 }
21552
21553 return -1;
21554 }
21555 }
21556 },
21557
21558 propFix: {
21559 "for": "htmlFor",
21560 "class": "className"
21561 }
21562} );
21563
21564// Support: IE <=11 only
21565// Accessing the selectedIndex property
21566// forces the browser to respect setting selected
21567// on the option
21568// The getter ensures a default option is selected
21569// when in an optgroup
21570// eslint rule "no-unused-expressions" is disabled for this code
21571// since it considers such accessions noop
21572if ( !support.optSelected ) {
21573 jQuery.propHooks.selected = {
21574 get: function( elem ) {
21575
21576 /* eslint no-unused-expressions: "off" */
21577
21578 var parent = elem.parentNode;
21579 if ( parent && parent.parentNode ) {
21580 parent.parentNode.selectedIndex;
21581 }
21582 return null;
21583 },
21584 set: function( elem ) {
21585
21586 /* eslint no-unused-expressions: "off" */
21587
21588 var parent = elem.parentNode;
21589 if ( parent ) {
21590 parent.selectedIndex;
21591
21592 if ( parent.parentNode ) {
21593 parent.parentNode.selectedIndex;
21594 }
21595 }
21596 }
21597 };
21598}
21599
21600jQuery.each( [
21601 "tabIndex",
21602 "readOnly",
21603 "maxLength",
21604 "cellSpacing",
21605 "cellPadding",
21606 "rowSpan",
21607 "colSpan",
21608 "useMap",
21609 "frameBorder",
21610 "contentEditable"
21611], function() {
21612 jQuery.propFix[ this.toLowerCase() ] = this;
21613} );
21614
21615
21616
21617
21618 // Strip and collapse whitespace according to HTML spec
21619 // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
21620 function stripAndCollapse( value ) {
21621 var tokens = value.match( rnothtmlwhite ) || [];
21622 return tokens.join( " " );
21623 }
21624
21625
21626function getClass( elem ) {
21627 return elem.getAttribute && elem.getAttribute( "class" ) || "";
21628}
21629
21630jQuery.fn.extend( {
21631 addClass: function( value ) {
21632 var classes, elem, cur, curValue, clazz, j, finalValue,
21633 i = 0;
21634
21635 if ( jQuery.isFunction( value ) ) {
21636 return this.each( function( j ) {
21637 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
21638 } );
21639 }
21640
21641 if ( typeof value === "string" && value ) {
21642 classes = value.match( rnothtmlwhite ) || [];
21643
21644 while ( ( elem = this[ i++ ] ) ) {
21645 curValue = getClass( elem );
21646 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
21647
21648 if ( cur ) {
21649 j = 0;
21650 while ( ( clazz = classes[ j++ ] ) ) {
21651 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
21652 cur += clazz + " ";
21653 }
21654 }
21655
21656 // Only assign if different to avoid unneeded rendering.
21657 finalValue = stripAndCollapse( cur );
21658 if ( curValue !== finalValue ) {
21659 elem.setAttribute( "class", finalValue );
21660 }
21661 }
21662 }
21663 }
21664
21665 return this;
21666 },
21667
21668 removeClass: function( value ) {
21669 var classes, elem, cur, curValue, clazz, j, finalValue,
21670 i = 0;
21671
21672 if ( jQuery.isFunction( value ) ) {
21673 return this.each( function( j ) {
21674 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
21675 } );
21676 }
21677
21678 if ( !arguments.length ) {
21679 return this.attr( "class", "" );
21680 }
21681
21682 if ( typeof value === "string" && value ) {
21683 classes = value.match( rnothtmlwhite ) || [];
21684
21685 while ( ( elem = this[ i++ ] ) ) {
21686 curValue = getClass( elem );
21687
21688 // This expression is here for better compressibility (see addClass)
21689 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
21690
21691 if ( cur ) {
21692 j = 0;
21693 while ( ( clazz = classes[ j++ ] ) ) {
21694
21695 // Remove *all* instances
21696 while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
21697 cur = cur.replace( " " + clazz + " ", " " );
21698 }
21699 }
21700
21701 // Only assign if different to avoid unneeded rendering.
21702 finalValue = stripAndCollapse( cur );
21703 if ( curValue !== finalValue ) {
21704 elem.setAttribute( "class", finalValue );
21705 }
21706 }
21707 }
21708 }
21709
21710 return this;
21711 },
21712
21713 toggleClass: function( value, stateVal ) {
21714 var type = typeof value;
21715
21716 if ( typeof stateVal === "boolean" && type === "string" ) {
21717 return stateVal ? this.addClass( value ) : this.removeClass( value );
21718 }
21719
21720 if ( jQuery.isFunction( value ) ) {
21721 return this.each( function( i ) {
21722 jQuery( this ).toggleClass(
21723 value.call( this, i, getClass( this ), stateVal ),
21724 stateVal
21725 );
21726 } );
21727 }
21728
21729 return this.each( function() {
21730 var className, i, self, classNames;
21731
21732 if ( type === "string" ) {
21733
21734 // Toggle individual class names
21735 i = 0;
21736 self = jQuery( this );
21737 classNames = value.match( rnothtmlwhite ) || [];
21738
21739 while ( ( className = classNames[ i++ ] ) ) {
21740
21741 // Check each className given, space separated list
21742 if ( self.hasClass( className ) ) {
21743 self.removeClass( className );
21744 } else {
21745 self.addClass( className );
21746 }
21747 }
21748
21749 // Toggle whole class name
21750 } else if ( value === undefined || type === "boolean" ) {
21751 className = getClass( this );
21752 if ( className ) {
21753
21754 // Store className if set
21755 dataPriv.set( this, "__className__", className );
21756 }
21757
21758 // If the element has a class name or if we're passed `false`,
21759 // then remove the whole classname (if there was one, the above saved it).
21760 // Otherwise bring back whatever was previously saved (if anything),
21761 // falling back to the empty string if nothing was stored.
21762 if ( this.setAttribute ) {
21763 this.setAttribute( "class",
21764 className || value === false ?
21765 "" :
21766 dataPriv.get( this, "__className__" ) || ""
21767 );
21768 }
21769 }
21770 } );
21771 },
21772
21773 hasClass: function( selector ) {
21774 var className, elem,
21775 i = 0;
21776
21777 className = " " + selector + " ";
21778 while ( ( elem = this[ i++ ] ) ) {
21779 if ( elem.nodeType === 1 &&
21780 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
21781 return true;
21782 }
21783 }
21784
21785 return false;
21786 }
21787} );
21788
21789
21790
21791
21792var rreturn = /\r/g;
21793
21794jQuery.fn.extend( {
21795 val: function( value ) {
21796 var hooks, ret, isFunction,
21797 elem = this[ 0 ];
21798
21799 if ( !arguments.length ) {
21800 if ( elem ) {
21801 hooks = jQuery.valHooks[ elem.type ] ||
21802 jQuery.valHooks[ elem.nodeName.toLowerCase() ];
21803
21804 if ( hooks &&
21805 "get" in hooks &&
21806 ( ret = hooks.get( elem, "value" ) ) !== undefined
21807 ) {
21808 return ret;
21809 }
21810
21811 ret = elem.value;
21812
21813 // Handle most common string cases
21814 if ( typeof ret === "string" ) {
21815 return ret.replace( rreturn, "" );
21816 }
21817
21818 // Handle cases where value is null/undef or number
21819 return ret == null ? "" : ret;
21820 }
21821
21822 return;
21823 }
21824
21825 isFunction = jQuery.isFunction( value );
21826
21827 return this.each( function( i ) {
21828 var val;
21829
21830 if ( this.nodeType !== 1 ) {
21831 return;
21832 }
21833
21834 if ( isFunction ) {
21835 val = value.call( this, i, jQuery( this ).val() );
21836 } else {
21837 val = value;
21838 }
21839
21840 // Treat null/undefined as ""; convert numbers to string
21841 if ( val == null ) {
21842 val = "";
21843
21844 } else if ( typeof val === "number" ) {
21845 val += "";
21846
21847 } else if ( Array.isArray( val ) ) {
21848 val = jQuery.map( val, function( value ) {
21849 return value == null ? "" : value + "";
21850 } );
21851 }
21852
21853 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
21854
21855 // If set returns undefined, fall back to normal setting
21856 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
21857 this.value = val;
21858 }
21859 } );
21860 }
21861} );
21862
21863jQuery.extend( {
21864 valHooks: {
21865 option: {
21866 get: function( elem ) {
21867
21868 var val = jQuery.find.attr( elem, "value" );
21869 return val != null ?
21870 val :
21871
21872 // Support: IE <=10 - 11 only
21873 // option.text throws exceptions (#14686, #14858)
21874 // Strip and collapse whitespace
21875 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
21876 stripAndCollapse( jQuery.text( elem ) );
21877 }
21878 },
21879 select: {
21880 get: function( elem ) {
21881 var value, option, i,
21882 options = elem.options,
21883 index = elem.selectedIndex,
21884 one = elem.type === "select-one",
21885 values = one ? null : [],
21886 max = one ? index + 1 : options.length;
21887
21888 if ( index < 0 ) {
21889 i = max;
21890
21891 } else {
21892 i = one ? index : 0;
21893 }
21894
21895 // Loop through all the selected options
21896 for ( ; i < max; i++ ) {
21897 option = options[ i ];
21898
21899 // Support: IE <=9 only
21900 // IE8-9 doesn't update selected after form reset (#2551)
21901 if ( ( option.selected || i === index ) &&
21902
21903 // Don't return options that are disabled or in a disabled optgroup
21904 !option.disabled &&
21905 ( !option.parentNode.disabled ||
21906 !nodeName( option.parentNode, "optgroup" ) ) ) {
21907
21908 // Get the specific value for the option
21909 value = jQuery( option ).val();
21910
21911 // We don't need an array for one selects
21912 if ( one ) {
21913 return value;
21914 }
21915
21916 // Multi-Selects return an array
21917 values.push( value );
21918 }
21919 }
21920
21921 return values;
21922 },
21923
21924 set: function( elem, value ) {
21925 var optionSet, option,
21926 options = elem.options,
21927 values = jQuery.makeArray( value ),
21928 i = options.length;
21929
21930 while ( i-- ) {
21931 option = options[ i ];
21932
21933 /* eslint-disable no-cond-assign */
21934
21935 if ( option.selected =
21936 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
21937 ) {
21938 optionSet = true;
21939 }
21940
21941 /* eslint-enable no-cond-assign */
21942 }
21943
21944 // Force browsers to behave consistently when non-matching value is set
21945 if ( !optionSet ) {
21946 elem.selectedIndex = -1;
21947 }
21948 return values;
21949 }
21950 }
21951 }
21952} );
21953
21954// Radios and checkboxes getter/setter
21955jQuery.each( [ "radio", "checkbox" ], function() {
21956 jQuery.valHooks[ this ] = {
21957 set: function( elem, value ) {
21958 if ( Array.isArray( value ) ) {
21959 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
21960 }
21961 }
21962 };
21963 if ( !support.checkOn ) {
21964 jQuery.valHooks[ this ].get = function( elem ) {
21965 return elem.getAttribute( "value" ) === null ? "on" : elem.value;
21966 };
21967 }
21968} );
21969
21970
21971
21972
21973// Return jQuery for attributes-only inclusion
21974
21975
21976var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
21977
21978jQuery.extend( jQuery.event, {
21979
21980 trigger: function( event, data, elem, onlyHandlers ) {
21981
21982 var i, cur, tmp, bubbleType, ontype, handle, special,
21983 eventPath = [ elem || document ],
21984 type = hasOwn.call( event, "type" ) ? event.type : event,
21985 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
21986
21987 cur = tmp = elem = elem || document;
21988
21989 // Don't do events on text and comment nodes
21990 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
21991 return;
21992 }
21993
21994 // focus/blur morphs to focusin/out; ensure we're not firing them right now
21995 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
21996 return;
21997 }
21998
21999 if ( type.indexOf( "." ) > -1 ) {
22000
22001 // Namespaced trigger; create a regexp to match event type in handle()
22002 namespaces = type.split( "." );
22003 type = namespaces.shift();
22004 namespaces.sort();
22005 }
22006 ontype = type.indexOf( ":" ) < 0 && "on" + type;
22007
22008 // Caller can pass in a jQuery.Event object, Object, or just an event type string
22009 event = event[ jQuery.expando ] ?
22010 event :
22011 new jQuery.Event( type, typeof event === "object" && event );
22012
22013 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
22014 event.isTrigger = onlyHandlers ? 2 : 3;
22015 event.namespace = namespaces.join( "." );
22016 event.rnamespace = event.namespace ?
22017 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
22018 null;
22019
22020 // Clean up the event in case it is being reused
22021 event.result = undefined;
22022 if ( !event.target ) {
22023 event.target = elem;
22024 }
22025
22026 // Clone any incoming data and prepend the event, creating the handler arg list
22027 data = data == null ?
22028 [ event ] :
22029 jQuery.makeArray( data, [ event ] );
22030
22031 // Allow special events to draw outside the lines
22032 special = jQuery.event.special[ type ] || {};
22033 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
22034 return;
22035 }
22036
22037 // Determine event propagation path in advance, per W3C events spec (#9951)
22038 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
22039 if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
22040
22041 bubbleType = special.delegateType || type;
22042 if ( !rfocusMorph.test( bubbleType + type ) ) {
22043 cur = cur.parentNode;
22044 }
22045 for ( ; cur; cur = cur.parentNode ) {
22046 eventPath.push( cur );
22047 tmp = cur;
22048 }
22049
22050 // Only add window if we got to document (e.g., not plain obj or detached DOM)
22051 if ( tmp === ( elem.ownerDocument || document ) ) {
22052 eventPath.push( tmp.defaultView || tmp.parentWindow || window );
22053 }
22054 }
22055
22056 // Fire handlers on the event path
22057 i = 0;
22058 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
22059
22060 event.type = i > 1 ?
22061 bubbleType :
22062 special.bindType || type;
22063
22064 // jQuery handler
22065 handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
22066 dataPriv.get( cur, "handle" );
22067 if ( handle ) {
22068 handle.apply( cur, data );
22069 }
22070
22071 // Native handler
22072 handle = ontype && cur[ ontype ];
22073 if ( handle && handle.apply && acceptData( cur ) ) {
22074 event.result = handle.apply( cur, data );
22075 if ( event.result === false ) {
22076 event.preventDefault();
22077 }
22078 }
22079 }
22080 event.type = type;
22081
22082 // If nobody prevented the default action, do it now
22083 if ( !onlyHandlers && !event.isDefaultPrevented() ) {
22084
22085 if ( ( !special._default ||
22086 special._default.apply( eventPath.pop(), data ) === false ) &&
22087 acceptData( elem ) ) {
22088
22089 // Call a native DOM method on the target with the same name as the event.
22090 // Don't do default actions on window, that's where global variables be (#6170)
22091 if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
22092
22093 // Don't re-trigger an onFOO event when we call its FOO() method
22094 tmp = elem[ ontype ];
22095
22096 if ( tmp ) {
22097 elem[ ontype ] = null;
22098 }
22099
22100 // Prevent re-triggering of the same event, since we already bubbled it above
22101 jQuery.event.triggered = type;
22102 elem[ type ]();
22103 jQuery.event.triggered = undefined;
22104
22105 if ( tmp ) {
22106 elem[ ontype ] = tmp;
22107 }
22108 }
22109 }
22110 }
22111
22112 return event.result;
22113 },
22114
22115 // Piggyback on a donor event to simulate a different one
22116 // Used only for `focus(in | out)` events
22117 simulate: function( type, elem, event ) {
22118 var e = jQuery.extend(
22119 new jQuery.Event(),
22120 event,
22121 {
22122 type: type,
22123 isSimulated: true
22124 }
22125 );
22126
22127 jQuery.event.trigger( e, null, elem );
22128 }
22129
22130} );
22131
22132jQuery.fn.extend( {
22133
22134 trigger: function( type, data ) {
22135 return this.each( function() {
22136 jQuery.event.trigger( type, data, this );
22137 } );
22138 },
22139 triggerHandler: function( type, data ) {
22140 var elem = this[ 0 ];
22141 if ( elem ) {
22142 return jQuery.event.trigger( type, data, elem, true );
22143 }
22144 }
22145} );
22146
22147
22148jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
22149 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
22150 "change select submit keydown keypress keyup contextmenu" ).split( " " ),
22151 function( i, name ) {
22152
22153 // Handle event binding
22154 jQuery.fn[ name ] = function( data, fn ) {
22155 return arguments.length > 0 ?
22156 this.on( name, null, data, fn ) :
22157 this.trigger( name );
22158 };
22159} );
22160
22161jQuery.fn.extend( {
22162 hover: function( fnOver, fnOut ) {
22163 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
22164 }
22165} );
22166
22167
22168
22169
22170support.focusin = "onfocusin" in window;
22171
22172
22173// Support: Firefox <=44
22174// Firefox doesn't have focus(in | out) events
22175// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
22176//
22177// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
22178// focus(in | out) events fire after focus & blur events,
22179// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
22180// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
22181if ( !support.focusin ) {
22182 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
22183
22184 // Attach a single capturing handler on the document while someone wants focusin/focusout
22185 var handler = function( event ) {
22186 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
22187 };
22188
22189 jQuery.event.special[ fix ] = {
22190 setup: function() {
22191 var doc = this.ownerDocument || this,
22192 attaches = dataPriv.access( doc, fix );
22193
22194 if ( !attaches ) {
22195 doc.addEventListener( orig, handler, true );
22196 }
22197 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
22198 },
22199 teardown: function() {
22200 var doc = this.ownerDocument || this,
22201 attaches = dataPriv.access( doc, fix ) - 1;
22202
22203 if ( !attaches ) {
22204 doc.removeEventListener( orig, handler, true );
22205 dataPriv.remove( doc, fix );
22206
22207 } else {
22208 dataPriv.access( doc, fix, attaches );
22209 }
22210 }
22211 };
22212 } );
22213}
22214var location = window.location;
22215
22216var nonce = jQuery.now();
22217
22218var rquery = ( /\?/ );
22219
22220
22221
22222// Cross-browser xml parsing
22223jQuery.parseXML = function( data ) {
22224 var xml;
22225 if ( !data || typeof data !== "string" ) {
22226 return null;
22227 }
22228
22229 // Support: IE 9 - 11 only
22230 // IE throws on parseFromString with invalid input.
22231 try {
22232 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
22233 } catch ( e ) {
22234 xml = undefined;
22235 }
22236
22237 if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
22238 jQuery.error( "Invalid XML: " + data );
22239 }
22240 return xml;
22241};
22242
22243
22244var
22245 rbracket = /\[\]$/,
22246 rCRLF = /\r?\n/g,
22247 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
22248 rsubmittable = /^(?:input|select|textarea|keygen)/i;
22249
22250function buildParams( prefix, obj, traditional, add ) {
22251 var name;
22252
22253 if ( Array.isArray( obj ) ) {
22254
22255 // Serialize array item.
22256 jQuery.each( obj, function( i, v ) {
22257 if ( traditional || rbracket.test( prefix ) ) {
22258
22259 // Treat each array item as a scalar.
22260 add( prefix, v );
22261
22262 } else {
22263
22264 // Item is non-scalar (array or object), encode its numeric index.
22265 buildParams(
22266 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
22267 v,
22268 traditional,
22269 add
22270 );
22271 }
22272 } );
22273
22274 } else if ( !traditional && jQuery.type( obj ) === "object" ) {
22275
22276 // Serialize object item.
22277 for ( name in obj ) {
22278 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
22279 }
22280
22281 } else {
22282
22283 // Serialize scalar item.
22284 add( prefix, obj );
22285 }
22286}
22287
22288// Serialize an array of form elements or a set of
22289// key/values into a query string
22290jQuery.param = function( a, traditional ) {
22291 var prefix,
22292 s = [],
22293 add = function( key, valueOrFunction ) {
22294
22295 // If value is a function, invoke it and use its return value
22296 var value = jQuery.isFunction( valueOrFunction ) ?
22297 valueOrFunction() :
22298 valueOrFunction;
22299
22300 s[ s.length ] = encodeURIComponent( key ) + "=" +
22301 encodeURIComponent( value == null ? "" : value );
22302 };
22303
22304 // If an array was passed in, assume that it is an array of form elements.
22305 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
22306
22307 // Serialize the form elements
22308 jQuery.each( a, function() {
22309 add( this.name, this.value );
22310 } );
22311
22312 } else {
22313
22314 // If traditional, encode the "old" way (the way 1.3.2 or older
22315 // did it), otherwise encode params recursively.
22316 for ( prefix in a ) {
22317 buildParams( prefix, a[ prefix ], traditional, add );
22318 }
22319 }
22320
22321 // Return the resulting serialization
22322 return s.join( "&" );
22323};
22324
22325jQuery.fn.extend( {
22326 serialize: function() {
22327 return jQuery.param( this.serializeArray() );
22328 },
22329 serializeArray: function() {
22330 return this.map( function() {
22331
22332 // Can add propHook for "elements" to filter or add form elements
22333 var elements = jQuery.prop( this, "elements" );
22334 return elements ? jQuery.makeArray( elements ) : this;
22335 } )
22336 .filter( function() {
22337 var type = this.type;
22338
22339 // Use .is( ":disabled" ) so that fieldset[disabled] works
22340 return this.name && !jQuery( this ).is( ":disabled" ) &&
22341 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
22342 ( this.checked || !rcheckableType.test( type ) );
22343 } )
22344 .map( function( i, elem ) {
22345 var val = jQuery( this ).val();
22346
22347 if ( val == null ) {
22348 return null;
22349 }
22350
22351 if ( Array.isArray( val ) ) {
22352 return jQuery.map( val, function( val ) {
22353 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
22354 } );
22355 }
22356
22357 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
22358 } ).get();
22359 }
22360} );
22361
22362
22363var
22364 r20 = /%20/g,
22365 rhash = /#.*$/,
22366 rantiCache = /([?&])_=[^&]*/,
22367 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
22368
22369 // #7653, #8125, #8152: local protocol detection
22370 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
22371 rnoContent = /^(?:GET|HEAD)$/,
22372 rprotocol = /^\/\//,
22373
22374 /* Prefilters
22375 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
22376 * 2) These are called:
22377 * - BEFORE asking for a transport
22378 * - AFTER param serialization (s.data is a string if s.processData is true)
22379 * 3) key is the dataType
22380 * 4) the catchall symbol "*" can be used
22381 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
22382 */
22383 prefilters = {},
22384
22385 /* Transports bindings
22386 * 1) key is the dataType
22387 * 2) the catchall symbol "*" can be used
22388 * 3) selection will start with transport dataType and THEN go to "*" if needed
22389 */
22390 transports = {},
22391
22392 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
22393 allTypes = "*/".concat( "*" ),
22394
22395 // Anchor tag for parsing the document origin
22396 originAnchor = document.createElement( "a" );
22397 originAnchor.href = location.href;
22398
22399// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
22400function addToPrefiltersOrTransports( structure ) {
22401
22402 // dataTypeExpression is optional and defaults to "*"
22403 return function( dataTypeExpression, func ) {
22404
22405 if ( typeof dataTypeExpression !== "string" ) {
22406 func = dataTypeExpression;
22407 dataTypeExpression = "*";
22408 }
22409
22410 var dataType,
22411 i = 0,
22412 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
22413
22414 if ( jQuery.isFunction( func ) ) {
22415
22416 // For each dataType in the dataTypeExpression
22417 while ( ( dataType = dataTypes[ i++ ] ) ) {
22418
22419 // Prepend if requested
22420 if ( dataType[ 0 ] === "+" ) {
22421 dataType = dataType.slice( 1 ) || "*";
22422 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
22423
22424 // Otherwise append
22425 } else {
22426 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
22427 }
22428 }
22429 }
22430 };
22431}
22432
22433// Base inspection function for prefilters and transports
22434function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
22435
22436 var inspected = {},
22437 seekingTransport = ( structure === transports );
22438
22439 function inspect( dataType ) {
22440 var selected;
22441 inspected[ dataType ] = true;
22442 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
22443 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
22444 if ( typeof dataTypeOrTransport === "string" &&
22445 !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
22446
22447 options.dataTypes.unshift( dataTypeOrTransport );
22448 inspect( dataTypeOrTransport );
22449 return false;
22450 } else if ( seekingTransport ) {
22451 return !( selected = dataTypeOrTransport );
22452 }
22453 } );
22454 return selected;
22455 }
22456
22457 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
22458}
22459
22460// A special extend for ajax options
22461// that takes "flat" options (not to be deep extended)
22462// Fixes #9887
22463function ajaxExtend( target, src ) {
22464 var key, deep,
22465 flatOptions = jQuery.ajaxSettings.flatOptions || {};
22466
22467 for ( key in src ) {
22468 if ( src[ key ] !== undefined ) {
22469 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
22470 }
22471 }
22472 if ( deep ) {
22473 jQuery.extend( true, target, deep );
22474 }
22475
22476 return target;
22477}
22478
22479/* Handles responses to an ajax request:
22480 * - finds the right dataType (mediates between content-type and expected dataType)
22481 * - returns the corresponding response
22482 */
22483function ajaxHandleResponses( s, jqXHR, responses ) {
22484
22485 var ct, type, finalDataType, firstDataType,
22486 contents = s.contents,
22487 dataTypes = s.dataTypes;
22488
22489 // Remove auto dataType and get content-type in the process
22490 while ( dataTypes[ 0 ] === "*" ) {
22491 dataTypes.shift();
22492 if ( ct === undefined ) {
22493 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
22494 }
22495 }
22496
22497 // Check if we're dealing with a known content-type
22498 if ( ct ) {
22499 for ( type in contents ) {
22500 if ( contents[ type ] && contents[ type ].test( ct ) ) {
22501 dataTypes.unshift( type );
22502 break;
22503 }
22504 }
22505 }
22506
22507 // Check to see if we have a response for the expected dataType
22508 if ( dataTypes[ 0 ] in responses ) {
22509 finalDataType = dataTypes[ 0 ];
22510 } else {
22511
22512 // Try convertible dataTypes
22513 for ( type in responses ) {
22514 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
22515 finalDataType = type;
22516 break;
22517 }
22518 if ( !firstDataType ) {
22519 firstDataType = type;
22520 }
22521 }
22522
22523 // Or just use first one
22524 finalDataType = finalDataType || firstDataType;
22525 }
22526
22527 // If we found a dataType
22528 // We add the dataType to the list if needed
22529 // and return the corresponding response
22530 if ( finalDataType ) {
22531 if ( finalDataType !== dataTypes[ 0 ] ) {
22532 dataTypes.unshift( finalDataType );
22533 }
22534 return responses[ finalDataType ];
22535 }
22536}
22537
22538/* Chain conversions given the request and the original response
22539 * Also sets the responseXXX fields on the jqXHR instance
22540 */
22541function ajaxConvert( s, response, jqXHR, isSuccess ) {
22542 var conv2, current, conv, tmp, prev,
22543 converters = {},
22544
22545 // Work with a copy of dataTypes in case we need to modify it for conversion
22546 dataTypes = s.dataTypes.slice();
22547
22548 // Create converters map with lowercased keys
22549 if ( dataTypes[ 1 ] ) {
22550 for ( conv in s.converters ) {
22551 converters[ conv.toLowerCase() ] = s.converters[ conv ];
22552 }
22553 }
22554
22555 current = dataTypes.shift();
22556
22557 // Convert to each sequential dataType
22558 while ( current ) {
22559
22560 if ( s.responseFields[ current ] ) {
22561 jqXHR[ s.responseFields[ current ] ] = response;
22562 }
22563
22564 // Apply the dataFilter if provided
22565 if ( !prev && isSuccess && s.dataFilter ) {
22566 response = s.dataFilter( response, s.dataType );
22567 }
22568
22569 prev = current;
22570 current = dataTypes.shift();
22571
22572 if ( current ) {
22573
22574 // There's only work to do if current dataType is non-auto
22575 if ( current === "*" ) {
22576
22577 current = prev;
22578
22579 // Convert response if prev dataType is non-auto and differs from current
22580 } else if ( prev !== "*" && prev !== current ) {
22581
22582 // Seek a direct converter
22583 conv = converters[ prev + " " + current ] || converters[ "* " + current ];
22584
22585 // If none found, seek a pair
22586 if ( !conv ) {
22587 for ( conv2 in converters ) {
22588
22589 // If conv2 outputs current
22590 tmp = conv2.split( " " );
22591 if ( tmp[ 1 ] === current ) {
22592
22593 // If prev can be converted to accepted input
22594 conv = converters[ prev + " " + tmp[ 0 ] ] ||
22595 converters[ "* " + tmp[ 0 ] ];
22596 if ( conv ) {
22597
22598 // Condense equivalence converters
22599 if ( conv === true ) {
22600 conv = converters[ conv2 ];
22601
22602 // Otherwise, insert the intermediate dataType
22603 } else if ( converters[ conv2 ] !== true ) {
22604 current = tmp[ 0 ];
22605 dataTypes.unshift( tmp[ 1 ] );
22606 }
22607 break;
22608 }
22609 }
22610 }
22611 }
22612
22613 // Apply converter (if not an equivalence)
22614 if ( conv !== true ) {
22615
22616 // Unless errors are allowed to bubble, catch and return them
22617 if ( conv && s.throws ) {
22618 response = conv( response );
22619 } else {
22620 try {
22621 response = conv( response );
22622 } catch ( e ) {
22623 return {
22624 state: "parsererror",
22625 error: conv ? e : "No conversion from " + prev + " to " + current
22626 };
22627 }
22628 }
22629 }
22630 }
22631 }
22632 }
22633
22634 return { state: "success", data: response };
22635}
22636
22637jQuery.extend( {
22638
22639 // Counter for holding the number of active queries
22640 active: 0,
22641
22642 // Last-Modified header cache for next request
22643 lastModified: {},
22644 etag: {},
22645
22646 ajaxSettings: {
22647 url: location.href,
22648 type: "GET",
22649 isLocal: rlocalProtocol.test( location.protocol ),
22650 global: true,
22651 processData: true,
22652 async: true,
22653 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
22654
22655 /*
22656 timeout: 0,
22657 data: null,
22658 dataType: null,
22659 username: null,
22660 password: null,
22661 cache: null,
22662 throws: false,
22663 traditional: false,
22664 headers: {},
22665 */
22666
22667 accepts: {
22668 "*": allTypes,
22669 text: "text/plain",
22670 html: "text/html",
22671 xml: "application/xml, text/xml",
22672 json: "application/json, text/javascript"
22673 },
22674
22675 contents: {
22676 xml: /\bxml\b/,
22677 html: /\bhtml/,
22678 json: /\bjson\b/
22679 },
22680
22681 responseFields: {
22682 xml: "responseXML",
22683 text: "responseText",
22684 json: "responseJSON"
22685 },
22686
22687 // Data converters
22688 // Keys separate source (or catchall "*") and destination types with a single space
22689 converters: {
22690
22691 // Convert anything to text
22692 "* text": String,
22693
22694 // Text to html (true = no transformation)
22695 "text html": true,
22696
22697 // Evaluate text as a json expression
22698 "text json": JSON.parse,
22699
22700 // Parse text as xml
22701 "text xml": jQuery.parseXML
22702 },
22703
22704 // For options that shouldn't be deep extended:
22705 // you can add your own custom options here if
22706 // and when you create one that shouldn't be
22707 // deep extended (see ajaxExtend)
22708 flatOptions: {
22709 url: true,
22710 context: true
22711 }
22712 },
22713
22714 // Creates a full fledged settings object into target
22715 // with both ajaxSettings and settings fields.
22716 // If target is omitted, writes into ajaxSettings.
22717 ajaxSetup: function( target, settings ) {
22718 return settings ?
22719
22720 // Building a settings object
22721 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
22722
22723 // Extending ajaxSettings
22724 ajaxExtend( jQuery.ajaxSettings, target );
22725 },
22726
22727 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
22728 ajaxTransport: addToPrefiltersOrTransports( transports ),
22729
22730 // Main method
22731 ajax: function( url, options ) {
22732
22733 // If url is an object, simulate pre-1.5 signature
22734 if ( typeof url === "object" ) {
22735 options = url;
22736 url = undefined;
22737 }
22738
22739 // Force options to be an object
22740 options = options || {};
22741
22742 var transport,
22743
22744 // URL without anti-cache param
22745 cacheURL,
22746
22747 // Response headers
22748 responseHeadersString,
22749 responseHeaders,
22750
22751 // timeout handle
22752 timeoutTimer,
22753
22754 // Url cleanup var
22755 urlAnchor,
22756
22757 // Request state (becomes false upon send and true upon completion)
22758 completed,
22759
22760 // To know if global events are to be dispatched
22761 fireGlobals,
22762
22763 // Loop variable
22764 i,
22765
22766 // uncached part of the url
22767 uncached,
22768
22769 // Create the final options object
22770 s = jQuery.ajaxSetup( {}, options ),
22771
22772 // Callbacks context
22773 callbackContext = s.context || s,
22774
22775 // Context for global events is callbackContext if it is a DOM node or jQuery collection
22776 globalEventContext = s.context &&
22777 ( callbackContext.nodeType || callbackContext.jquery ) ?
22778 jQuery( callbackContext ) :
22779 jQuery.event,
22780
22781 // Deferreds
22782 deferred = jQuery.Deferred(),
22783 completeDeferred = jQuery.Callbacks( "once memory" ),
22784
22785 // Status-dependent callbacks
22786 statusCode = s.statusCode || {},
22787
22788 // Headers (they are sent all at once)
22789 requestHeaders = {},
22790 requestHeadersNames = {},
22791
22792 // Default abort message
22793 strAbort = "canceled",
22794
22795 // Fake xhr
22796 jqXHR = {
22797 readyState: 0,
22798
22799 // Builds headers hashtable if needed
22800 getResponseHeader: function( key ) {
22801 var match;
22802 if ( completed ) {
22803 if ( !responseHeaders ) {
22804 responseHeaders = {};
22805 while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
22806 responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
22807 }
22808 }
22809 match = responseHeaders[ key.toLowerCase() ];
22810 }
22811 return match == null ? null : match;
22812 },
22813
22814 // Raw string
22815 getAllResponseHeaders: function() {
22816 return completed ? responseHeadersString : null;
22817 },
22818
22819 // Caches the header
22820 setRequestHeader: function( name, value ) {
22821 if ( completed == null ) {
22822 name = requestHeadersNames[ name.toLowerCase() ] =
22823 requestHeadersNames[ name.toLowerCase() ] || name;
22824 requestHeaders[ name ] = value;
22825 }
22826 return this;
22827 },
22828
22829 // Overrides response content-type header
22830 overrideMimeType: function( type ) {
22831 if ( completed == null ) {
22832 s.mimeType = type;
22833 }
22834 return this;
22835 },
22836
22837 // Status-dependent callbacks
22838 statusCode: function( map ) {
22839 var code;
22840 if ( map ) {
22841 if ( completed ) {
22842
22843 // Execute the appropriate callbacks
22844 jqXHR.always( map[ jqXHR.status ] );
22845 } else {
22846
22847 // Lazy-add the new callbacks in a way that preserves old ones
22848 for ( code in map ) {
22849 statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
22850 }
22851 }
22852 }
22853 return this;
22854 },
22855
22856 // Cancel the request
22857 abort: function( statusText ) {
22858 var finalText = statusText || strAbort;
22859 if ( transport ) {
22860 transport.abort( finalText );
22861 }
22862 done( 0, finalText );
22863 return this;
22864 }
22865 };
22866
22867 // Attach deferreds
22868 deferred.promise( jqXHR );
22869
22870 // Add protocol if not provided (prefilters might expect it)
22871 // Handle falsy url in the settings object (#10093: consistency with old signature)
22872 // We also use the url parameter if available
22873 s.url = ( ( url || s.url || location.href ) + "" )
22874 .replace( rprotocol, location.protocol + "//" );
22875
22876 // Alias method option to type as per ticket #12004
22877 s.type = options.method || options.type || s.method || s.type;
22878
22879 // Extract dataTypes list
22880 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
22881
22882 // A cross-domain request is in order when the origin doesn't match the current origin.
22883 if ( s.crossDomain == null ) {
22884 urlAnchor = document.createElement( "a" );
22885
22886 // Support: IE <=8 - 11, Edge 12 - 13
22887 // IE throws exception on accessing the href property if url is malformed,
22888 // e.g. http://example.com:80x/
22889 try {
22890 urlAnchor.href = s.url;
22891
22892 // Support: IE <=8 - 11 only
22893 // Anchor's host property isn't correctly set when s.url is relative
22894 urlAnchor.href = urlAnchor.href;
22895 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
22896 urlAnchor.protocol + "//" + urlAnchor.host;
22897 } catch ( e ) {
22898
22899 // If there is an error parsing the URL, assume it is crossDomain,
22900 // it can be rejected by the transport if it is invalid
22901 s.crossDomain = true;
22902 }
22903 }
22904
22905 // Convert data if not already a string
22906 if ( s.data && s.processData && typeof s.data !== "string" ) {
22907 s.data = jQuery.param( s.data, s.traditional );
22908 }
22909
22910 // Apply prefilters
22911 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
22912
22913 // If request was aborted inside a prefilter, stop there
22914 if ( completed ) {
22915 return jqXHR;
22916 }
22917
22918 // We can fire global events as of now if asked to
22919 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
22920 fireGlobals = jQuery.event && s.global;
22921
22922 // Watch for a new set of requests
22923 if ( fireGlobals && jQuery.active++ === 0 ) {
22924 jQuery.event.trigger( "ajaxStart" );
22925 }
22926
22927 // Uppercase the type
22928 s.type = s.type.toUpperCase();
22929
22930 // Determine if request has content
22931 s.hasContent = !rnoContent.test( s.type );
22932
22933 // Save the URL in case we're toying with the If-Modified-Since
22934 // and/or If-None-Match header later on
22935 // Remove hash to simplify url manipulation
22936 cacheURL = s.url.replace( rhash, "" );
22937
22938 // More options handling for requests with no content
22939 if ( !s.hasContent ) {
22940
22941 // Remember the hash so we can put it back
22942 uncached = s.url.slice( cacheURL.length );
22943
22944 // If data is available, append data to url
22945 if ( s.data ) {
22946 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
22947
22948 // #9682: remove data so that it's not used in an eventual retry
22949 delete s.data;
22950 }
22951
22952 // Add or update anti-cache param if needed
22953 if ( s.cache === false ) {
22954 cacheURL = cacheURL.replace( rantiCache, "$1" );
22955 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
22956 }
22957
22958 // Put hash and anti-cache on the URL that will be requested (gh-1732)
22959 s.url = cacheURL + uncached;
22960
22961 // Change '%20' to '+' if this is encoded form body content (gh-2658)
22962 } else if ( s.data && s.processData &&
22963 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
22964 s.data = s.data.replace( r20, "+" );
22965 }
22966
22967 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
22968 if ( s.ifModified ) {
22969 if ( jQuery.lastModified[ cacheURL ] ) {
22970 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
22971 }
22972 if ( jQuery.etag[ cacheURL ] ) {
22973 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
22974 }
22975 }
22976
22977 // Set the correct header, if data is being sent
22978 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
22979 jqXHR.setRequestHeader( "Content-Type", s.contentType );
22980 }
22981
22982 // Set the Accepts header for the server, depending on the dataType
22983 jqXHR.setRequestHeader(
22984 "Accept",
22985 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
22986 s.accepts[ s.dataTypes[ 0 ] ] +
22987 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
22988 s.accepts[ "*" ]
22989 );
22990
22991 // Check for headers option
22992 for ( i in s.headers ) {
22993 jqXHR.setRequestHeader( i, s.headers[ i ] );
22994 }
22995
22996 // Allow custom headers/mimetypes and early abort
22997 if ( s.beforeSend &&
22998 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
22999
23000 // Abort if not done already and return
23001 return jqXHR.abort();
23002 }
23003
23004 // Aborting is no longer a cancellation
23005 strAbort = "abort";
23006
23007 // Install callbacks on deferreds
23008 completeDeferred.add( s.complete );
23009 jqXHR.done( s.success );
23010 jqXHR.fail( s.error );
23011
23012 // Get transport
23013 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
23014
23015 // If no transport, we auto-abort
23016 if ( !transport ) {
23017 done( -1, "No Transport" );
23018 } else {
23019 jqXHR.readyState = 1;
23020
23021 // Send global event
23022 if ( fireGlobals ) {
23023 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
23024 }
23025
23026 // If request was aborted inside ajaxSend, stop there
23027 if ( completed ) {
23028 return jqXHR;
23029 }
23030
23031 // Timeout
23032 if ( s.async && s.timeout > 0 ) {
23033 timeoutTimer = window.setTimeout( function() {
23034 jqXHR.abort( "timeout" );
23035 }, s.timeout );
23036 }
23037
23038 try {
23039 completed = false;
23040 transport.send( requestHeaders, done );
23041 } catch ( e ) {
23042
23043 // Rethrow post-completion exceptions
23044 if ( completed ) {
23045 throw e;
23046 }
23047
23048 // Propagate others as results
23049 done( -1, e );
23050 }
23051 }
23052
23053 // Callback for when everything is done
23054 function done( status, nativeStatusText, responses, headers ) {
23055 var isSuccess, success, error, response, modified,
23056 statusText = nativeStatusText;
23057
23058 // Ignore repeat invocations
23059 if ( completed ) {
23060 return;
23061 }
23062
23063 completed = true;
23064
23065 // Clear timeout if it exists
23066 if ( timeoutTimer ) {
23067 window.clearTimeout( timeoutTimer );
23068 }
23069
23070 // Dereference transport for early garbage collection
23071 // (no matter how long the jqXHR object will be used)
23072 transport = undefined;
23073
23074 // Cache response headers
23075 responseHeadersString = headers || "";
23076
23077 // Set readyState
23078 jqXHR.readyState = status > 0 ? 4 : 0;
23079
23080 // Determine if successful
23081 isSuccess = status >= 200 && status < 300 || status === 304;
23082
23083 // Get response data
23084 if ( responses ) {
23085 response = ajaxHandleResponses( s, jqXHR, responses );
23086 }
23087
23088 // Convert no matter what (that way responseXXX fields are always set)
23089 response = ajaxConvert( s, response, jqXHR, isSuccess );
23090
23091 // If successful, handle type chaining
23092 if ( isSuccess ) {
23093
23094 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
23095 if ( s.ifModified ) {
23096 modified = jqXHR.getResponseHeader( "Last-Modified" );
23097 if ( modified ) {
23098 jQuery.lastModified[ cacheURL ] = modified;
23099 }
23100 modified = jqXHR.getResponseHeader( "etag" );
23101 if ( modified ) {
23102 jQuery.etag[ cacheURL ] = modified;
23103 }
23104 }
23105
23106 // if no content
23107 if ( status === 204 || s.type === "HEAD" ) {
23108 statusText = "nocontent";
23109
23110 // if not modified
23111 } else if ( status === 304 ) {
23112 statusText = "notmodified";
23113
23114 // If we have data, let's convert it
23115 } else {
23116 statusText = response.state;
23117 success = response.data;
23118 error = response.error;
23119 isSuccess = !error;
23120 }
23121 } else {
23122
23123 // Extract error from statusText and normalize for non-aborts
23124 error = statusText;
23125 if ( status || !statusText ) {
23126 statusText = "error";
23127 if ( status < 0 ) {
23128 status = 0;
23129 }
23130 }
23131 }
23132
23133 // Set data for the fake xhr object
23134 jqXHR.status = status;
23135 jqXHR.statusText = ( nativeStatusText || statusText ) + "";
23136
23137 // Success/Error
23138 if ( isSuccess ) {
23139 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
23140 } else {
23141 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
23142 }
23143
23144 // Status-dependent callbacks
23145 jqXHR.statusCode( statusCode );
23146 statusCode = undefined;
23147
23148 if ( fireGlobals ) {
23149 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
23150 [ jqXHR, s, isSuccess ? success : error ] );
23151 }
23152
23153 // Complete
23154 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
23155
23156 if ( fireGlobals ) {
23157 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
23158
23159 // Handle the global AJAX counter
23160 if ( !( --jQuery.active ) ) {
23161 jQuery.event.trigger( "ajaxStop" );
23162 }
23163 }
23164 }
23165
23166 return jqXHR;
23167 },
23168
23169 getJSON: function( url, data, callback ) {
23170 return jQuery.get( url, data, callback, "json" );
23171 },
23172
23173 getScript: function( url, callback ) {
23174 return jQuery.get( url, undefined, callback, "script" );
23175 }
23176} );
23177
23178jQuery.each( [ "get", "post" ], function( i, method ) {
23179 jQuery[ method ] = function( url, data, callback, type ) {
23180
23181 // Shift arguments if data argument was omitted
23182 if ( jQuery.isFunction( data ) ) {
23183 type = type || callback;
23184 callback = data;
23185 data = undefined;
23186 }
23187
23188 // The url can be an options object (which then must have .url)
23189 return jQuery.ajax( jQuery.extend( {
23190 url: url,
23191 type: method,
23192 dataType: type,
23193 data: data,
23194 success: callback
23195 }, jQuery.isPlainObject( url ) && url ) );
23196 };
23197} );
23198
23199
23200jQuery._evalUrl = function( url ) {
23201 return jQuery.ajax( {
23202 url: url,
23203
23204 // Make this explicit, since user can override this through ajaxSetup (#11264)
23205 type: "GET",
23206 dataType: "script",
23207 cache: true,
23208 async: false,
23209 global: false,
23210 "throws": true
23211 } );
23212};
23213
23214
23215jQuery.fn.extend( {
23216 wrapAll: function( html ) {
23217 var wrap;
23218
23219 if ( this[ 0 ] ) {
23220 if ( jQuery.isFunction( html ) ) {
23221 html = html.call( this[ 0 ] );
23222 }
23223
23224 // The elements to wrap the target around
23225 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
23226
23227 if ( this[ 0 ].parentNode ) {
23228 wrap.insertBefore( this[ 0 ] );
23229 }
23230
23231 wrap.map( function() {
23232 var elem = this;
23233
23234 while ( elem.firstElementChild ) {
23235 elem = elem.firstElementChild;
23236 }
23237
23238 return elem;
23239 } ).append( this );
23240 }
23241
23242 return this;
23243 },
23244
23245 wrapInner: function( html ) {
23246 if ( jQuery.isFunction( html ) ) {
23247 return this.each( function( i ) {
23248 jQuery( this ).wrapInner( html.call( this, i ) );
23249 } );
23250 }
23251
23252 return this.each( function() {
23253 var self = jQuery( this ),
23254 contents = self.contents();
23255
23256 if ( contents.length ) {
23257 contents.wrapAll( html );
23258
23259 } else {
23260 self.append( html );
23261 }
23262 } );
23263 },
23264
23265 wrap: function( html ) {
23266 var isFunction = jQuery.isFunction( html );
23267
23268 return this.each( function( i ) {
23269 jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
23270 } );
23271 },
23272
23273 unwrap: function( selector ) {
23274 this.parent( selector ).not( "body" ).each( function() {
23275 jQuery( this ).replaceWith( this.childNodes );
23276 } );
23277 return this;
23278 }
23279} );
23280
23281
23282jQuery.expr.pseudos.hidden = function( elem ) {
23283 return !jQuery.expr.pseudos.visible( elem );
23284};
23285jQuery.expr.pseudos.visible = function( elem ) {
23286 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
23287};
23288
23289
23290
23291
23292jQuery.ajaxSettings.xhr = function() {
23293 try {
23294 return new window.XMLHttpRequest();
23295 } catch ( e ) {}
23296};
23297
23298var xhrSuccessStatus = {
23299
23300 // File protocol always yields status code 0, assume 200
23301 0: 200,
23302
23303 // Support: IE <=9 only
23304 // #1450: sometimes IE returns 1223 when it should be 204
23305 1223: 204
23306 },
23307 xhrSupported = jQuery.ajaxSettings.xhr();
23308
23309support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
23310support.ajax = xhrSupported = !!xhrSupported;
23311
23312jQuery.ajaxTransport( function( options ) {
23313 var callback, errorCallback;
23314
23315 // Cross domain only allowed if supported through XMLHttpRequest
23316 if ( support.cors || xhrSupported && !options.crossDomain ) {
23317 return {
23318 send: function( headers, complete ) {
23319 var i,
23320 xhr = options.xhr();
23321
23322 xhr.open(
23323 options.type,
23324 options.url,
23325 options.async,
23326 options.username,
23327 options.password
23328 );
23329
23330 // Apply custom fields if provided
23331 if ( options.xhrFields ) {
23332 for ( i in options.xhrFields ) {
23333 xhr[ i ] = options.xhrFields[ i ];
23334 }
23335 }
23336
23337 // Override mime type if needed
23338 if ( options.mimeType && xhr.overrideMimeType ) {
23339 xhr.overrideMimeType( options.mimeType );
23340 }
23341
23342 // X-Requested-With header
23343 // For cross-domain requests, seeing as conditions for a preflight are
23344 // akin to a jigsaw puzzle, we simply never set it to be sure.
23345 // (it can always be set on a per-request basis or even using ajaxSetup)
23346 // For same-domain requests, won't change header if already provided.
23347 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
23348 headers[ "X-Requested-With" ] = "XMLHttpRequest";
23349 }
23350
23351 // Set headers
23352 for ( i in headers ) {
23353 xhr.setRequestHeader( i, headers[ i ] );
23354 }
23355
23356 // Callback
23357 callback = function( type ) {
23358 return function() {
23359 if ( callback ) {
23360 callback = errorCallback = xhr.onload =
23361 xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
23362
23363 if ( type === "abort" ) {
23364 xhr.abort();
23365 } else if ( type === "error" ) {
23366
23367 // Support: IE <=9 only
23368 // On a manual native abort, IE9 throws
23369 // errors on any property access that is not readyState
23370 if ( typeof xhr.status !== "number" ) {
23371 complete( 0, "error" );
23372 } else {
23373 complete(
23374
23375 // File: protocol always yields status 0; see #8605, #14207
23376 xhr.status,
23377 xhr.statusText
23378 );
23379 }
23380 } else {
23381 complete(
23382 xhrSuccessStatus[ xhr.status ] || xhr.status,
23383 xhr.statusText,
23384
23385 // Support: IE <=9 only
23386 // IE9 has no XHR2 but throws on binary (trac-11426)
23387 // For XHR2 non-text, let the caller handle it (gh-2498)
23388 ( xhr.responseType || "text" ) !== "text" ||
23389 typeof xhr.responseText !== "string" ?
23390 { binary: xhr.response } :
23391 { text: xhr.responseText },
23392 xhr.getAllResponseHeaders()
23393 );
23394 }
23395 }
23396 };
23397 };
23398
23399 // Listen to events
23400 xhr.onload = callback();
23401 errorCallback = xhr.onerror = callback( "error" );
23402
23403 // Support: IE 9 only
23404 // Use onreadystatechange to replace onabort
23405 // to handle uncaught aborts
23406 if ( xhr.onabort !== undefined ) {
23407 xhr.onabort = errorCallback;
23408 } else {
23409 xhr.onreadystatechange = function() {
23410
23411 // Check readyState before timeout as it changes
23412 if ( xhr.readyState === 4 ) {
23413
23414 // Allow onerror to be called first,
23415 // but that will not handle a native abort
23416 // Also, save errorCallback to a variable
23417 // as xhr.onerror cannot be accessed
23418 window.setTimeout( function() {
23419 if ( callback ) {
23420 errorCallback();
23421 }
23422 } );
23423 }
23424 };
23425 }
23426
23427 // Create the abort callback
23428 callback = callback( "abort" );
23429
23430 try {
23431
23432 // Do send the request (this may raise an exception)
23433 xhr.send( options.hasContent && options.data || null );
23434 } catch ( e ) {
23435
23436 // #14683: Only rethrow if this hasn't been notified as an error yet
23437 if ( callback ) {
23438 throw e;
23439 }
23440 }
23441 },
23442
23443 abort: function() {
23444 if ( callback ) {
23445 callback();
23446 }
23447 }
23448 };
23449 }
23450} );
23451
23452
23453
23454
23455// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
23456jQuery.ajaxPrefilter( function( s ) {
23457 if ( s.crossDomain ) {
23458 s.contents.script = false;
23459 }
23460} );
23461
23462// Install script dataType
23463jQuery.ajaxSetup( {
23464 accepts: {
23465 script: "text/javascript, application/javascript, " +
23466 "application/ecmascript, application/x-ecmascript"
23467 },
23468 contents: {
23469 script: /\b(?:java|ecma)script\b/
23470 },
23471 converters: {
23472 "text script": function( text ) {
23473 jQuery.globalEval( text );
23474 return text;
23475 }
23476 }
23477} );
23478
23479// Handle cache's special case and crossDomain
23480jQuery.ajaxPrefilter( "script", function( s ) {
23481 if ( s.cache === undefined ) {
23482 s.cache = false;
23483 }
23484 if ( s.crossDomain ) {
23485 s.type = "GET";
23486 }
23487} );
23488
23489// Bind script tag hack transport
23490jQuery.ajaxTransport( "script", function( s ) {
23491
23492 // This transport only deals with cross domain requests
23493 if ( s.crossDomain ) {
23494 var script, callback;
23495 return {
23496 send: function( _, complete ) {
23497 script = jQuery( "<script>" ).prop( {
23498 charset: s.scriptCharset,
23499 src: s.url
23500 } ).on(
23501 "load error",
23502 callback = function( evt ) {
23503 script.remove();
23504 callback = null;
23505 if ( evt ) {
23506 complete( evt.type === "error" ? 404 : 200, evt.type );
23507 }
23508 }
23509 );
23510
23511 // Use native DOM manipulation to avoid our domManip AJAX trickery
23512 document.head.appendChild( script[ 0 ] );
23513 },
23514 abort: function() {
23515 if ( callback ) {
23516 callback();
23517 }
23518 }
23519 };
23520 }
23521} );
23522
23523
23524
23525
23526var oldCallbacks = [],
23527 rjsonp = /(=)\?(?=&|$)|\?\?/;
23528
23529// Default jsonp settings
23530jQuery.ajaxSetup( {
23531 jsonp: "callback",
23532 jsonpCallback: function() {
23533 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
23534 this[ callback ] = true;
23535 return callback;
23536 }
23537} );
23538
23539// Detect, normalize options and install callbacks for jsonp requests
23540jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
23541
23542 var callbackName, overwritten, responseContainer,
23543 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
23544 "url" :
23545 typeof s.data === "string" &&
23546 ( s.contentType || "" )
23547 .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
23548 rjsonp.test( s.data ) && "data"
23549 );
23550
23551 // Handle iff the expected data type is "jsonp" or we have a parameter to set
23552 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
23553
23554 // Get callback name, remembering preexisting value associated with it
23555 callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
23556 s.jsonpCallback() :
23557 s.jsonpCallback;
23558
23559 // Insert callback into url or form data
23560 if ( jsonProp ) {
23561 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
23562 } else if ( s.jsonp !== false ) {
23563 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
23564 }
23565
23566 // Use data converter to retrieve json after script execution
23567 s.converters[ "script json" ] = function() {
23568 if ( !responseContainer ) {
23569 jQuery.error( callbackName + " was not called" );
23570 }
23571 return responseContainer[ 0 ];
23572 };
23573
23574 // Force json dataType
23575 s.dataTypes[ 0 ] = "json";
23576
23577 // Install callback
23578 overwritten = window[ callbackName ];
23579 window[ callbackName ] = function() {
23580 responseContainer = arguments;
23581 };
23582
23583 // Clean-up function (fires after converters)
23584 jqXHR.always( function() {
23585
23586 // If previous value didn't exist - remove it
23587 if ( overwritten === undefined ) {
23588 jQuery( window ).removeProp( callbackName );
23589
23590 // Otherwise restore preexisting value
23591 } else {
23592 window[ callbackName ] = overwritten;
23593 }
23594
23595 // Save back as free
23596 if ( s[ callbackName ] ) {
23597
23598 // Make sure that re-using the options doesn't screw things around
23599 s.jsonpCallback = originalSettings.jsonpCallback;
23600
23601 // Save the callback name for future use
23602 oldCallbacks.push( callbackName );
23603 }
23604
23605 // Call if it was a function and we have a response
23606 if ( responseContainer && jQuery.isFunction( overwritten ) ) {
23607 overwritten( responseContainer[ 0 ] );
23608 }
23609
23610 responseContainer = overwritten = undefined;
23611 } );
23612
23613 // Delegate to script
23614 return "script";
23615 }
23616} );
23617
23618
23619
23620
23621// Support: Safari 8 only
23622// In Safari 8 documents created via document.implementation.createHTMLDocument
23623// collapse sibling forms: the second one becomes a child of the first one.
23624// Because of that, this security measure has to be disabled in Safari 8.
23625// https://bugs.webkit.org/show_bug.cgi?id=137337
23626support.createHTMLDocument = ( function() {
23627 var body = document.implementation.createHTMLDocument( "" ).body;
23628 body.innerHTML = "<form></form><form></form>";
23629 return body.childNodes.length === 2;
23630} )();
23631
23632
23633// Argument "data" should be string of html
23634// context (optional): If specified, the fragment will be created in this context,
23635// defaults to document
23636// keepScripts (optional): If true, will include scripts passed in the html string
23637jQuery.parseHTML = function( data, context, keepScripts ) {
23638 if ( typeof data !== "string" ) {
23639 return [];
23640 }
23641 if ( typeof context === "boolean" ) {
23642 keepScripts = context;
23643 context = false;
23644 }
23645
23646 var base, parsed, scripts;
23647
23648 if ( !context ) {
23649
23650 // Stop scripts or inline event handlers from being executed immediately
23651 // by using document.implementation
23652 if ( support.createHTMLDocument ) {
23653 context = document.implementation.createHTMLDocument( "" );
23654
23655 // Set the base href for the created document
23656 // so any parsed elements with URLs
23657 // are based on the document's URL (gh-2965)
23658 base = context.createElement( "base" );
23659 base.href = document.location.href;
23660 context.head.appendChild( base );
23661 } else {
23662 context = document;
23663 }
23664 }
23665
23666 parsed = rsingleTag.exec( data );
23667 scripts = !keepScripts && [];
23668
23669 // Single tag
23670 if ( parsed ) {
23671 return [ context.createElement( parsed[ 1 ] ) ];
23672 }
23673
23674 parsed = buildFragment( [ data ], context, scripts );
23675
23676 if ( scripts && scripts.length ) {
23677 jQuery( scripts ).remove();
23678 }
23679
23680 return jQuery.merge( [], parsed.childNodes );
23681};
23682
23683
23684/**
23685 * Load a url into a page
23686 */
23687jQuery.fn.load = function( url, params, callback ) {
23688 var selector, type, response,
23689 self = this,
23690 off = url.indexOf( " " );
23691
23692 if ( off > -1 ) {
23693 selector = stripAndCollapse( url.slice( off ) );
23694 url = url.slice( 0, off );
23695 }
23696
23697 // If it's a function
23698 if ( jQuery.isFunction( params ) ) {
23699
23700 // We assume that it's the callback
23701 callback = params;
23702 params = undefined;
23703
23704 // Otherwise, build a param string
23705 } else if ( params && typeof params === "object" ) {
23706 type = "POST";
23707 }
23708
23709 // If we have elements to modify, make the request
23710 if ( self.length > 0 ) {
23711 jQuery.ajax( {
23712 url: url,
23713
23714 // If "type" variable is undefined, then "GET" method will be used.
23715 // Make value of this field explicit since
23716 // user can override it through ajaxSetup method
23717 type: type || "GET",
23718 dataType: "html",
23719 data: params
23720 } ).done( function( responseText ) {
23721
23722 // Save response for use in complete callback
23723 response = arguments;
23724
23725 self.html( selector ?
23726
23727 // If a selector was specified, locate the right elements in a dummy div
23728 // Exclude scripts to avoid IE 'Permission Denied' errors
23729 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
23730
23731 // Otherwise use the full result
23732 responseText );
23733
23734 // If the request succeeds, this function gets "data", "status", "jqXHR"
23735 // but they are ignored because response was set above.
23736 // If it fails, this function gets "jqXHR", "status", "error"
23737 } ).always( callback && function( jqXHR, status ) {
23738 self.each( function() {
23739 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
23740 } );
23741 } );
23742 }
23743
23744 return this;
23745};
23746
23747
23748
23749
23750// Attach a bunch of functions for handling common AJAX events
23751jQuery.each( [
23752 "ajaxStart",
23753 "ajaxStop",
23754 "ajaxComplete",
23755 "ajaxError",
23756 "ajaxSuccess",
23757 "ajaxSend"
23758], function( i, type ) {
23759 jQuery.fn[ type ] = function( fn ) {
23760 return this.on( type, fn );
23761 };
23762} );
23763
23764
23765
23766
23767jQuery.expr.pseudos.animated = function( elem ) {
23768 return jQuery.grep( jQuery.timers, function( fn ) {
23769 return elem === fn.elem;
23770 } ).length;
23771};
23772
23773
23774
23775
23776jQuery.offset = {
23777 setOffset: function( elem, options, i ) {
23778 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
23779 position = jQuery.css( elem, "position" ),
23780 curElem = jQuery( elem ),
23781 props = {};
23782
23783 // Set position first, in-case top/left are set even on static elem
23784 if ( position === "static" ) {
23785 elem.style.position = "relative";
23786 }
23787
23788 curOffset = curElem.offset();
23789 curCSSTop = jQuery.css( elem, "top" );
23790 curCSSLeft = jQuery.css( elem, "left" );
23791 calculatePosition = ( position === "absolute" || position === "fixed" ) &&
23792 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
23793
23794 // Need to be able to calculate position if either
23795 // top or left is auto and position is either absolute or fixed
23796 if ( calculatePosition ) {
23797 curPosition = curElem.position();
23798 curTop = curPosition.top;
23799 curLeft = curPosition.left;
23800
23801 } else {
23802 curTop = parseFloat( curCSSTop ) || 0;
23803 curLeft = parseFloat( curCSSLeft ) || 0;
23804 }
23805
23806 if ( jQuery.isFunction( options ) ) {
23807
23808 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
23809 options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
23810 }
23811
23812 if ( options.top != null ) {
23813 props.top = ( options.top - curOffset.top ) + curTop;
23814 }
23815 if ( options.left != null ) {
23816 props.left = ( options.left - curOffset.left ) + curLeft;
23817 }
23818
23819 if ( "using" in options ) {
23820 options.using.call( elem, props );
23821
23822 } else {
23823 curElem.css( props );
23824 }
23825 }
23826};
23827
23828jQuery.fn.extend( {
23829 offset: function( options ) {
23830
23831 // Preserve chaining for setter
23832 if ( arguments.length ) {
23833 return options === undefined ?
23834 this :
23835 this.each( function( i ) {
23836 jQuery.offset.setOffset( this, options, i );
23837 } );
23838 }
23839
23840 var doc, docElem, rect, win,
23841 elem = this[ 0 ];
23842
23843 if ( !elem ) {
23844 return;
23845 }
23846
23847 // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
23848 // Support: IE <=11 only
23849 // Running getBoundingClientRect on a
23850 // disconnected node in IE throws an error
23851 if ( !elem.getClientRects().length ) {
23852 return { top: 0, left: 0 };
23853 }
23854
23855 rect = elem.getBoundingClientRect();
23856
23857 doc = elem.ownerDocument;
23858 docElem = doc.documentElement;
23859 win = doc.defaultView;
23860
23861 return {
23862 top: rect.top + win.pageYOffset - docElem.clientTop,
23863 left: rect.left + win.pageXOffset - docElem.clientLeft
23864 };
23865 },
23866
23867 position: function() {
23868 if ( !this[ 0 ] ) {
23869 return;
23870 }
23871
23872 var offsetParent, offset,
23873 elem = this[ 0 ],
23874 parentOffset = { top: 0, left: 0 };
23875
23876 // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
23877 // because it is its only offset parent
23878 if ( jQuery.css( elem, "position" ) === "fixed" ) {
23879
23880 // Assume getBoundingClientRect is there when computed position is fixed
23881 offset = elem.getBoundingClientRect();
23882
23883 } else {
23884
23885 // Get *real* offsetParent
23886 offsetParent = this.offsetParent();
23887
23888 // Get correct offsets
23889 offset = this.offset();
23890 if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
23891 parentOffset = offsetParent.offset();
23892 }
23893
23894 // Add offsetParent borders
23895 parentOffset = {
23896 top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
23897 left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
23898 };
23899 }
23900
23901 // Subtract parent offsets and element margins
23902 return {
23903 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
23904 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
23905 };
23906 },
23907
23908 // This method will return documentElement in the following cases:
23909 // 1) For the element inside the iframe without offsetParent, this method will return
23910 // documentElement of the parent window
23911 // 2) For the hidden or detached element
23912 // 3) For body or html element, i.e. in case of the html node - it will return itself
23913 //
23914 // but those exceptions were never presented as a real life use-cases
23915 // and might be considered as more preferable results.
23916 //
23917 // This logic, however, is not guaranteed and can change at any point in the future
23918 offsetParent: function() {
23919 return this.map( function() {
23920 var offsetParent = this.offsetParent;
23921
23922 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
23923 offsetParent = offsetParent.offsetParent;
23924 }
23925
23926 return offsetParent || documentElement;
23927 } );
23928 }
23929} );
23930
23931// Create scrollLeft and scrollTop methods
23932jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
23933 var top = "pageYOffset" === prop;
23934
23935 jQuery.fn[ method ] = function( val ) {
23936 return access( this, function( elem, method, val ) {
23937
23938 // Coalesce documents and windows
23939 var win;
23940 if ( jQuery.isWindow( elem ) ) {
23941 win = elem;
23942 } else if ( elem.nodeType === 9 ) {
23943 win = elem.defaultView;
23944 }
23945
23946 if ( val === undefined ) {
23947 return win ? win[ prop ] : elem[ method ];
23948 }
23949
23950 if ( win ) {
23951 win.scrollTo(
23952 !top ? val : win.pageXOffset,
23953 top ? val : win.pageYOffset
23954 );
23955
23956 } else {
23957 elem[ method ] = val;
23958 }
23959 }, method, val, arguments.length );
23960 };
23961} );
23962
23963// Support: Safari <=7 - 9.1, Chrome <=37 - 49
23964// Add the top/left cssHooks using jQuery.fn.position
23965// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
23966// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
23967// getComputedStyle returns percent when specified for top/left/bottom/right;
23968// rather than make the css module depend on the offset module, just check for it here
23969jQuery.each( [ "top", "left" ], function( i, prop ) {
23970 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
23971 function( elem, computed ) {
23972 if ( computed ) {
23973 computed = curCSS( elem, prop );
23974
23975 // If curCSS returns percentage, fallback to offset
23976 return rnumnonpx.test( computed ) ?
23977 jQuery( elem ).position()[ prop ] + "px" :
23978 computed;
23979 }
23980 }
23981 );
23982} );
23983
23984
23985// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
23986jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
23987 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
23988 function( defaultExtra, funcName ) {
23989
23990 // Margin is only for outerHeight, outerWidth
23991 jQuery.fn[ funcName ] = function( margin, value ) {
23992 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
23993 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
23994
23995 return access( this, function( elem, type, value ) {
23996 var doc;
23997
23998 if ( jQuery.isWindow( elem ) ) {
23999
24000 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
24001 return funcName.indexOf( "outer" ) === 0 ?
24002 elem[ "inner" + name ] :
24003 elem.document.documentElement[ "client" + name ];
24004 }
24005
24006 // Get document width or height
24007 if ( elem.nodeType === 9 ) {
24008 doc = elem.documentElement;
24009
24010 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
24011 // whichever is greatest
24012 return Math.max(
24013 elem.body[ "scroll" + name ], doc[ "scroll" + name ],
24014 elem.body[ "offset" + name ], doc[ "offset" + name ],
24015 doc[ "client" + name ]
24016 );
24017 }
24018
24019 return value === undefined ?
24020
24021 // Get width or height on the element, requesting but not forcing parseFloat
24022 jQuery.css( elem, type, extra ) :
24023
24024 // Set width or height on the element
24025 jQuery.style( elem, type, value, extra );
24026 }, type, chainable ? margin : undefined, chainable );
24027 };
24028 } );
24029} );
24030
24031
24032jQuery.fn.extend( {
24033
24034 bind: function( types, data, fn ) {
24035 return this.on( types, null, data, fn );
24036 },
24037 unbind: function( types, fn ) {
24038 return this.off( types, null, fn );
24039 },
24040
24041 delegate: function( selector, types, data, fn ) {
24042 return this.on( types, selector, data, fn );
24043 },
24044 undelegate: function( selector, types, fn ) {
24045
24046 // ( namespace ) or ( selector, types [, fn] )
24047 return arguments.length === 1 ?
24048 this.off( selector, "**" ) :
24049 this.off( types, selector || "**", fn );
24050 }
24051} );
24052
24053jQuery.holdReady = function( hold ) {
24054 if ( hold ) {
24055 jQuery.readyWait++;
24056 } else {
24057 jQuery.ready( true );
24058 }
24059};
24060jQuery.isArray = Array.isArray;
24061jQuery.parseJSON = JSON.parse;
24062jQuery.nodeName = nodeName;
24063
24064
24065
24066
24067// Register as a named AMD module, since jQuery can be concatenated with other
24068// files that may use define, but not via a proper concatenation script that
24069// understands anonymous AMD modules. A named AMD is safest and most robust
24070// way to register. Lowercase jquery is used because AMD module names are
24071// derived from file names, and jQuery is normally delivered in a lowercase
24072// file name. Do this after creating the global so that if an AMD module wants
24073// to call noConflict to hide this version of jQuery, it will work.
24074
24075// Note that for maximum portability, libraries that are not jQuery should
24076// declare themselves as anonymous modules, and avoid setting a global if an
24077// AMD loader is present. jQuery is a special case. For more information, see
24078// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
24079
24080if ( typeof define === "function" && define.amd ) {
24081 define( "jquery", [], function() {
24082 return jQuery;
24083 } );
24084}
24085
24086
24087
24088
24089var
24090
24091 // Map over jQuery in case of overwrite
24092 _jQuery = window.jQuery,
24093
24094 // Map over the $ in case of overwrite
24095 _$ = window.$;
24096
24097jQuery.noConflict = function( deep ) {
24098 if ( window.$ === jQuery ) {
24099 window.$ = _$;
24100 }
24101
24102 if ( deep && window.jQuery === jQuery ) {
24103 window.jQuery = _jQuery;
24104 }
24105
24106 return jQuery;
24107};
24108
24109// Expose jQuery and $ identifiers, even in AMD
24110// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
24111// and CommonJS for browser emulators (#13566)
24112if ( !noGlobal ) {
24113 window.jQuery = window.$ = jQuery;
24114}
24115
24116
24117
24118
24119return jQuery;
24120} );
7119</script> 24121</script>
7120 <script>/*! 24122 <script>/*!
7121 * Bootstrap v3.2.0 (http://getbootstrap.com) 24123 * Bootstrap v3.3.7 (http://getbootstrap.com)
7122 * Copyright 2011-2014 Twitter, Inc. 24124 * Copyright 2011-2016 Twitter, Inc.
7123 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 24125 * Licensed under the MIT license
7124 */ 24126 */
7125if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);</script> 24127
24128if (typeof jQuery === 'undefined') {
24129 throw new Error('Bootstrap\'s JavaScript requires jQuery')
24130}
24131
24132+function ($) {
24133 'use strict';
24134 var version = $.fn.jquery.split(' ')[0].split('.')
24135 if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
24136 throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
24137 }
24138}(jQuery);
24139
24140/* ========================================================================
24141 * Bootstrap: transition.js v3.3.7
24142 * http://getbootstrap.com/javascript/#transitions
24143 * ========================================================================
24144 * Copyright 2011-2016 Twitter, Inc.
24145 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24146 * ======================================================================== */
24147
24148
24149+function ($) {
24150 'use strict';
24151
24152 // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
24153 // ============================================================
24154
24155 function transitionEnd() {
24156 var el = document.createElement('bootstrap')
24157
24158 var transEndEventNames = {
24159 WebkitTransition : 'webkitTransitionEnd',
24160 MozTransition : 'transitionend',
24161 OTransition : 'oTransitionEnd otransitionend',
24162 transition : 'transitionend'
24163 }
24164
24165 for (var name in transEndEventNames) {
24166 if (el.style[name] !== undefined) {
24167 return { end: transEndEventNames[name] }
24168 }
24169 }
24170
24171 return false // explicit for ie8 ( ._.)
24172 }
24173
24174 // http://blog.alexmaccaw.com/css-transitions
24175 $.fn.emulateTransitionEnd = function (duration) {
24176 var called = false
24177 var $el = this
24178 $(this).one('bsTransitionEnd', function () { called = true })
24179 var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
24180 setTimeout(callback, duration)
24181 return this
24182 }
24183
24184 $(function () {
24185 $.support.transition = transitionEnd()
24186
24187 if (!$.support.transition) return
24188
24189 $.event.special.bsTransitionEnd = {
24190 bindType: $.support.transition.end,
24191 delegateType: $.support.transition.end,
24192 handle: function (e) {
24193 if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
24194 }
24195 }
24196 })
24197
24198}(jQuery);
24199
24200/* ========================================================================
24201 * Bootstrap: alert.js v3.3.7
24202 * http://getbootstrap.com/javascript/#alerts
24203 * ========================================================================
24204 * Copyright 2011-2016 Twitter, Inc.
24205 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24206 * ======================================================================== */
24207
24208
24209+function ($) {
24210 'use strict';
24211
24212 // ALERT CLASS DEFINITION
24213 // ======================
24214
24215 var dismiss = '[data-dismiss="alert"]'
24216 var Alert = function (el) {
24217 $(el).on('click', dismiss, this.close)
24218 }
24219
24220 Alert.VERSION = '3.3.7'
24221
24222 Alert.TRANSITION_DURATION = 150
24223
24224 Alert.prototype.close = function (e) {
24225 var $this = $(this)
24226 var selector = $this.attr('data-target')
24227
24228 if (!selector) {
24229 selector = $this.attr('href')
24230 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
24231 }
24232
24233 var $parent = $(selector === '#' ? [] : selector)
24234
24235 if (e) e.preventDefault()
24236
24237 if (!$parent.length) {
24238 $parent = $this.closest('.alert')
24239 }
24240
24241 $parent.trigger(e = $.Event('close.bs.alert'))
24242
24243 if (e.isDefaultPrevented()) return
24244
24245 $parent.removeClass('in')
24246
24247 function removeElement() {
24248 // detach from parent, fire event then clean up data
24249 $parent.detach().trigger('closed.bs.alert').remove()
24250 }
24251
24252 $.support.transition && $parent.hasClass('fade') ?
24253 $parent
24254 .one('bsTransitionEnd', removeElement)
24255 .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
24256 removeElement()
24257 }
24258
24259
24260 // ALERT PLUGIN DEFINITION
24261 // =======================
24262
24263 function Plugin(option) {
24264 return this.each(function () {
24265 var $this = $(this)
24266 var data = $this.data('bs.alert')
24267
24268 if (!data) $this.data('bs.alert', (data = new Alert(this)))
24269 if (typeof option == 'string') data[option].call($this)
24270 })
24271 }
24272
24273 var old = $.fn.alert
24274
24275 $.fn.alert = Plugin
24276 $.fn.alert.Constructor = Alert
24277
24278
24279 // ALERT NO CONFLICT
24280 // =================
24281
24282 $.fn.alert.noConflict = function () {
24283 $.fn.alert = old
24284 return this
24285 }
24286
24287
24288 // ALERT DATA-API
24289 // ==============
24290
24291 $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
24292
24293}(jQuery);
24294
24295/* ========================================================================
24296 * Bootstrap: button.js v3.3.7
24297 * http://getbootstrap.com/javascript/#buttons
24298 * ========================================================================
24299 * Copyright 2011-2016 Twitter, Inc.
24300 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24301 * ======================================================================== */
24302
24303
24304+function ($) {
24305 'use strict';
24306
24307 // BUTTON PUBLIC CLASS DEFINITION
24308 // ==============================
24309
24310 var Button = function (element, options) {
24311 this.$element = $(element)
24312 this.options = $.extend({}, Button.DEFAULTS, options)
24313 this.isLoading = false
24314 }
24315
24316 Button.VERSION = '3.3.7'
24317
24318 Button.DEFAULTS = {
24319 loadingText: 'loading...'
24320 }
24321
24322 Button.prototype.setState = function (state) {
24323 var d = 'disabled'
24324 var $el = this.$element
24325 var val = $el.is('input') ? 'val' : 'html'
24326 var data = $el.data()
24327
24328 state += 'Text'
24329
24330 if (data.resetText == null) $el.data('resetText', $el[val]())
24331
24332 // push to event loop to allow forms to submit
24333 setTimeout($.proxy(function () {
24334 $el[val](data[state] == null ? this.options[state] : data[state])
24335
24336 if (state == 'loadingText') {
24337 this.isLoading = true
24338 $el.addClass(d).attr(d, d).prop(d, true)
24339 } else if (this.isLoading) {
24340 this.isLoading = false
24341 $el.removeClass(d).removeAttr(d).prop(d, false)
24342 }
24343 }, this), 0)
24344 }
24345
24346 Button.prototype.toggle = function () {
24347 var changed = true
24348 var $parent = this.$element.closest('[data-toggle="buttons"]')
24349
24350 if ($parent.length) {
24351 var $input = this.$element.find('input')
24352 if ($input.prop('type') == 'radio') {
24353 if ($input.prop('checked')) changed = false
24354 $parent.find('.active').removeClass('active')
24355 this.$element.addClass('active')
24356 } else if ($input.prop('type') == 'checkbox') {
24357 if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
24358 this.$element.toggleClass('active')
24359 }
24360 $input.prop('checked', this.$element.hasClass('active'))
24361 if (changed) $input.trigger('change')
24362 } else {
24363 this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
24364 this.$element.toggleClass('active')
24365 }
24366 }
24367
24368
24369 // BUTTON PLUGIN DEFINITION
24370 // ========================
24371
24372 function Plugin(option) {
24373 return this.each(function () {
24374 var $this = $(this)
24375 var data = $this.data('bs.button')
24376 var options = typeof option == 'object' && option
24377
24378 if (!data) $this.data('bs.button', (data = new Button(this, options)))
24379
24380 if (option == 'toggle') data.toggle()
24381 else if (option) data.setState(option)
24382 })
24383 }
24384
24385 var old = $.fn.button
24386
24387 $.fn.button = Plugin
24388 $.fn.button.Constructor = Button
24389
24390
24391 // BUTTON NO CONFLICT
24392 // ==================
24393
24394 $.fn.button.noConflict = function () {
24395 $.fn.button = old
24396 return this
24397 }
24398
24399
24400 // BUTTON DATA-API
24401 // ===============
24402
24403 $(document)
24404 .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
24405 var $btn = $(e.target).closest('.btn')
24406 Plugin.call($btn, 'toggle')
24407 if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
24408 // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
24409 e.preventDefault()
24410 // The target component still receive the focus
24411 if ($btn.is('input,button')) $btn.trigger('focus')
24412 else $btn.find('input:visible,button:visible').first().trigger('focus')
24413 }
24414 })
24415 .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
24416 $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
24417 })
24418
24419}(jQuery);
24420
24421/* ========================================================================
24422 * Bootstrap: carousel.js v3.3.7
24423 * http://getbootstrap.com/javascript/#carousel
24424 * ========================================================================
24425 * Copyright 2011-2016 Twitter, Inc.
24426 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24427 * ======================================================================== */
24428
24429
24430+function ($) {
24431 'use strict';
24432
24433 // CAROUSEL CLASS DEFINITION
24434 // =========================
24435
24436 var Carousel = function (element, options) {
24437 this.$element = $(element)
24438 this.$indicators = this.$element.find('.carousel-indicators')
24439 this.options = options
24440 this.paused = null
24441 this.sliding = null
24442 this.interval = null
24443 this.$active = null
24444 this.$items = null
24445
24446 this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
24447
24448 this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
24449 .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
24450 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
24451 }
24452
24453 Carousel.VERSION = '3.3.7'
24454
24455 Carousel.TRANSITION_DURATION = 600
24456
24457 Carousel.DEFAULTS = {
24458 interval: 5000,
24459 pause: 'hover',
24460 wrap: true,
24461 keyboard: true
24462 }
24463
24464 Carousel.prototype.keydown = function (e) {
24465 if (/input|textarea/i.test(e.target.tagName)) return
24466 switch (e.which) {
24467 case 37: this.prev(); break
24468 case 39: this.next(); break
24469 default: return
24470 }
24471
24472 e.preventDefault()
24473 }
24474
24475 Carousel.prototype.cycle = function (e) {
24476 e || (this.paused = false)
24477
24478 this.interval && clearInterval(this.interval)
24479
24480 this.options.interval
24481 && !this.paused
24482 && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
24483
24484 return this
24485 }
24486
24487 Carousel.prototype.getItemIndex = function (item) {
24488 this.$items = item.parent().children('.item')
24489 return this.$items.index(item || this.$active)
24490 }
24491
24492 Carousel.prototype.getItemForDirection = function (direction, active) {
24493 var activeIndex = this.getItemIndex(active)
24494 var willWrap = (direction == 'prev' && activeIndex === 0)
24495 || (direction == 'next' && activeIndex == (this.$items.length - 1))
24496 if (willWrap && !this.options.wrap) return active
24497 var delta = direction == 'prev' ? -1 : 1
24498 var itemIndex = (activeIndex + delta) % this.$items.length
24499 return this.$items.eq(itemIndex)
24500 }
24501
24502 Carousel.prototype.to = function (pos) {
24503 var that = this
24504 var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
24505
24506 if (pos > (this.$items.length - 1) || pos < 0) return
24507
24508 if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
24509 if (activeIndex == pos) return this.pause().cycle()
24510
24511 return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
24512 }
24513
24514 Carousel.prototype.pause = function (e) {
24515 e || (this.paused = true)
24516
24517 if (this.$element.find('.next, .prev').length && $.support.transition) {
24518 this.$element.trigger($.support.transition.end)
24519 this.cycle(true)
24520 }
24521
24522 this.interval = clearInterval(this.interval)
24523
24524 return this
24525 }
24526
24527 Carousel.prototype.next = function () {
24528 if (this.sliding) return
24529 return this.slide('next')
24530 }
24531
24532 Carousel.prototype.prev = function () {
24533 if (this.sliding) return
24534 return this.slide('prev')
24535 }
24536
24537 Carousel.prototype.slide = function (type, next) {
24538 var $active = this.$element.find('.item.active')
24539 var $next = next || this.getItemForDirection(type, $active)
24540 var isCycling = this.interval
24541 var direction = type == 'next' ? 'left' : 'right'
24542 var that = this
24543
24544 if ($next.hasClass('active')) return (this.sliding = false)
24545
24546 var relatedTarget = $next[0]
24547 var slideEvent = $.Event('slide.bs.carousel', {
24548 relatedTarget: relatedTarget,
24549 direction: direction
24550 })
24551 this.$element.trigger(slideEvent)
24552 if (slideEvent.isDefaultPrevented()) return
24553
24554 this.sliding = true
24555
24556 isCycling && this.pause()
24557
24558 if (this.$indicators.length) {
24559 this.$indicators.find('.active').removeClass('active')
24560 var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
24561 $nextIndicator && $nextIndicator.addClass('active')
24562 }
24563
24564 var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
24565 if ($.support.transition && this.$element.hasClass('slide')) {
24566 $next.addClass(type)
24567 $next[0].offsetWidth // force reflow
24568 $active.addClass(direction)
24569 $next.addClass(direction)
24570 $active
24571 .one('bsTransitionEnd', function () {
24572 $next.removeClass([type, direction].join(' ')).addClass('active')
24573 $active.removeClass(['active', direction].join(' '))
24574 that.sliding = false
24575 setTimeout(function () {
24576 that.$element.trigger(slidEvent)
24577 }, 0)
24578 })
24579 .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
24580 } else {
24581 $active.removeClass('active')
24582 $next.addClass('active')
24583 this.sliding = false
24584 this.$element.trigger(slidEvent)
24585 }
24586
24587 isCycling && this.cycle()
24588
24589 return this
24590 }
24591
24592
24593 // CAROUSEL PLUGIN DEFINITION
24594 // ==========================
24595
24596 function Plugin(option) {
24597 return this.each(function () {
24598 var $this = $(this)
24599 var data = $this.data('bs.carousel')
24600 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
24601 var action = typeof option == 'string' ? option : options.slide
24602
24603 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
24604 if (typeof option == 'number') data.to(option)
24605 else if (action) data[action]()
24606 else if (options.interval) data.pause().cycle()
24607 })
24608 }
24609
24610 var old = $.fn.carousel
24611
24612 $.fn.carousel = Plugin
24613 $.fn.carousel.Constructor = Carousel
24614
24615
24616 // CAROUSEL NO CONFLICT
24617 // ====================
24618
24619 $.fn.carousel.noConflict = function () {
24620 $.fn.carousel = old
24621 return this
24622 }
24623
24624
24625 // CAROUSEL DATA-API
24626 // =================
24627
24628 var clickHandler = function (e) {
24629 var href
24630 var $this = $(this)
24631 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
24632 if (!$target.hasClass('carousel')) return
24633 var options = $.extend({}, $target.data(), $this.data())
24634 var slideIndex = $this.attr('data-slide-to')
24635 if (slideIndex) options.interval = false
24636
24637 Plugin.call($target, options)
24638
24639 if (slideIndex) {
24640 $target.data('bs.carousel').to(slideIndex)
24641 }
24642
24643 e.preventDefault()
24644 }
24645
24646 $(document)
24647 .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
24648 .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
24649
24650 $(window).on('load', function () {
24651 $('[data-ride="carousel"]').each(function () {
24652 var $carousel = $(this)
24653 Plugin.call($carousel, $carousel.data())
24654 })
24655 })
24656
24657}(jQuery);
24658
24659/* ========================================================================
24660 * Bootstrap: collapse.js v3.3.7
24661 * http://getbootstrap.com/javascript/#collapse
24662 * ========================================================================
24663 * Copyright 2011-2016 Twitter, Inc.
24664 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24665 * ======================================================================== */
24666
24667/* jshint latedef: false */
24668
24669+function ($) {
24670 'use strict';
24671
24672 // COLLAPSE PUBLIC CLASS DEFINITION
24673 // ================================
24674
24675 var Collapse = function (element, options) {
24676 this.$element = $(element)
24677 this.options = $.extend({}, Collapse.DEFAULTS, options)
24678 this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
24679 '[data-toggle="collapse"][data-target="#' + element.id + '"]')
24680 this.transitioning = null
24681
24682 if (this.options.parent) {
24683 this.$parent = this.getParent()
24684 } else {
24685 this.addAriaAndCollapsedClass(this.$element, this.$trigger)
24686 }
24687
24688 if (this.options.toggle) this.toggle()
24689 }
24690
24691 Collapse.VERSION = '3.3.7'
24692
24693 Collapse.TRANSITION_DURATION = 350
24694
24695 Collapse.DEFAULTS = {
24696 toggle: true
24697 }
24698
24699 Collapse.prototype.dimension = function () {
24700 var hasWidth = this.$element.hasClass('width')
24701 return hasWidth ? 'width' : 'height'
24702 }
24703
24704 Collapse.prototype.show = function () {
24705 if (this.transitioning || this.$element.hasClass('in')) return
24706
24707 var activesData
24708 var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
24709
24710 if (actives && actives.length) {
24711 activesData = actives.data('bs.collapse')
24712 if (activesData && activesData.transitioning) return
24713 }
24714
24715 var startEvent = $.Event('show.bs.collapse')
24716 this.$element.trigger(startEvent)
24717 if (startEvent.isDefaultPrevented()) return
24718
24719 if (actives && actives.length) {
24720 Plugin.call(actives, 'hide')
24721 activesData || actives.data('bs.collapse', null)
24722 }
24723
24724 var dimension = this.dimension()
24725
24726 this.$element
24727 .removeClass('collapse')
24728 .addClass('collapsing')[dimension](0)
24729 .attr('aria-expanded', true)
24730
24731 this.$trigger
24732 .removeClass('collapsed')
24733 .attr('aria-expanded', true)
24734
24735 this.transitioning = 1
24736
24737 var complete = function () {
24738 this.$element
24739 .removeClass('collapsing')
24740 .addClass('collapse in')[dimension]('')
24741 this.transitioning = 0
24742 this.$element
24743 .trigger('shown.bs.collapse')
24744 }
24745
24746 if (!$.support.transition) return complete.call(this)
24747
24748 var scrollSize = $.camelCase(['scroll', dimension].join('-'))
24749
24750 this.$element
24751 .one('bsTransitionEnd', $.proxy(complete, this))
24752 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
24753 }
24754
24755 Collapse.prototype.hide = function () {
24756 if (this.transitioning || !this.$element.hasClass('in')) return
24757
24758 var startEvent = $.Event('hide.bs.collapse')
24759 this.$element.trigger(startEvent)
24760 if (startEvent.isDefaultPrevented()) return
24761
24762 var dimension = this.dimension()
24763
24764 this.$element[dimension](this.$element[dimension]())[0].offsetHeight
24765
24766 this.$element
24767 .addClass('collapsing')
24768 .removeClass('collapse in')
24769 .attr('aria-expanded', false)
24770
24771 this.$trigger
24772 .addClass('collapsed')
24773 .attr('aria-expanded', false)
24774
24775 this.transitioning = 1
24776
24777 var complete = function () {
24778 this.transitioning = 0
24779 this.$element
24780 .removeClass('collapsing')
24781 .addClass('collapse')
24782 .trigger('hidden.bs.collapse')
24783 }
24784
24785 if (!$.support.transition) return complete.call(this)
24786
24787 this.$element
24788 [dimension](0)
24789 .one('bsTransitionEnd', $.proxy(complete, this))
24790 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
24791 }
24792
24793 Collapse.prototype.toggle = function () {
24794 this[this.$element.hasClass('in') ? 'hide' : 'show']()
24795 }
24796
24797 Collapse.prototype.getParent = function () {
24798 return $(this.options.parent)
24799 .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
24800 .each($.proxy(function (i, element) {
24801 var $element = $(element)
24802 this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
24803 }, this))
24804 .end()
24805 }
24806
24807 Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
24808 var isOpen = $element.hasClass('in')
24809
24810 $element.attr('aria-expanded', isOpen)
24811 $trigger
24812 .toggleClass('collapsed', !isOpen)
24813 .attr('aria-expanded', isOpen)
24814 }
24815
24816 function getTargetFromTrigger($trigger) {
24817 var href
24818 var target = $trigger.attr('data-target')
24819 || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
24820
24821 return $(target)
24822 }
24823
24824
24825 // COLLAPSE PLUGIN DEFINITION
24826 // ==========================
24827
24828 function Plugin(option) {
24829 return this.each(function () {
24830 var $this = $(this)
24831 var data = $this.data('bs.collapse')
24832 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
24833
24834 if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
24835 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
24836 if (typeof option == 'string') data[option]()
24837 })
24838 }
24839
24840 var old = $.fn.collapse
24841
24842 $.fn.collapse = Plugin
24843 $.fn.collapse.Constructor = Collapse
24844
24845
24846 // COLLAPSE NO CONFLICT
24847 // ====================
24848
24849 $.fn.collapse.noConflict = function () {
24850 $.fn.collapse = old
24851 return this
24852 }
24853
24854
24855 // COLLAPSE DATA-API
24856 // =================
24857
24858 $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
24859 var $this = $(this)
24860
24861 if (!$this.attr('data-target')) e.preventDefault()
24862
24863 var $target = getTargetFromTrigger($this)
24864 var data = $target.data('bs.collapse')
24865 var option = data ? 'toggle' : $this.data()
24866
24867 Plugin.call($target, option)
24868 })
24869
24870}(jQuery);
24871
24872/* ========================================================================
24873 * Bootstrap: dropdown.js v3.3.7
24874 * http://getbootstrap.com/javascript/#dropdowns
24875 * ========================================================================
24876 * Copyright 2011-2016 Twitter, Inc.
24877 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24878 * ======================================================================== */
24879
24880
24881+function ($) {
24882 'use strict';
24883
24884 // DROPDOWN CLASS DEFINITION
24885 // =========================
24886
24887 var backdrop = '.dropdown-backdrop'
24888 var toggle = '[data-toggle="dropdown"]'
24889 var Dropdown = function (element) {
24890 $(element).on('click.bs.dropdown', this.toggle)
24891 }
24892
24893 Dropdown.VERSION = '3.3.7'
24894
24895 function getParent($this) {
24896 var selector = $this.attr('data-target')
24897
24898 if (!selector) {
24899 selector = $this.attr('href')
24900 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
24901 }
24902
24903 var $parent = selector && $(selector)
24904
24905 return $parent && $parent.length ? $parent : $this.parent()
24906 }
24907
24908 function clearMenus(e) {
24909 if (e && e.which === 3) return
24910 $(backdrop).remove()
24911 $(toggle).each(function () {
24912 var $this = $(this)
24913 var $parent = getParent($this)
24914 var relatedTarget = { relatedTarget: this }
24915
24916 if (!$parent.hasClass('open')) return
24917
24918 if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
24919
24920 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
24921
24922 if (e.isDefaultPrevented()) return
24923
24924 $this.attr('aria-expanded', 'false')
24925 $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
24926 })
24927 }
24928
24929 Dropdown.prototype.toggle = function (e) {
24930 var $this = $(this)
24931
24932 if ($this.is('.disabled, :disabled')) return
24933
24934 var $parent = getParent($this)
24935 var isActive = $parent.hasClass('open')
24936
24937 clearMenus()
24938
24939 if (!isActive) {
24940 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
24941 // if mobile we use a backdrop because click events don't delegate
24942 $(document.createElement('div'))
24943 .addClass('dropdown-backdrop')
24944 .insertAfter($(this))
24945 .on('click', clearMenus)
24946 }
24947
24948 var relatedTarget = { relatedTarget: this }
24949 $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
24950
24951 if (e.isDefaultPrevented()) return
24952
24953 $this
24954 .trigger('focus')
24955 .attr('aria-expanded', 'true')
24956
24957 $parent
24958 .toggleClass('open')
24959 .trigger($.Event('shown.bs.dropdown', relatedTarget))
24960 }
24961
24962 return false
24963 }
24964
24965 Dropdown.prototype.keydown = function (e) {
24966 if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
24967
24968 var $this = $(this)
24969
24970 e.preventDefault()
24971 e.stopPropagation()
24972
24973 if ($this.is('.disabled, :disabled')) return
24974
24975 var $parent = getParent($this)
24976 var isActive = $parent.hasClass('open')
24977
24978 if (!isActive && e.which != 27 || isActive && e.which == 27) {
24979 if (e.which == 27) $parent.find(toggle).trigger('focus')
24980 return $this.trigger('click')
24981 }
24982
24983 var desc = ' li:not(.disabled):visible a'
24984 var $items = $parent.find('.dropdown-menu' + desc)
24985
24986 if (!$items.length) return
24987
24988 var index = $items.index(e.target)
24989
24990 if (e.which == 38 && index > 0) index-- // up
24991 if (e.which == 40 && index < $items.length - 1) index++ // down
24992 if (!~index) index = 0
24993
24994 $items.eq(index).trigger('focus')
24995 }
24996
24997
24998 // DROPDOWN PLUGIN DEFINITION
24999 // ==========================
25000
25001 function Plugin(option) {
25002 return this.each(function () {
25003 var $this = $(this)
25004 var data = $this.data('bs.dropdown')
25005
25006 if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
25007 if (typeof option == 'string') data[option].call($this)
25008 })
25009 }
25010
25011 var old = $.fn.dropdown
25012
25013 $.fn.dropdown = Plugin
25014 $.fn.dropdown.Constructor = Dropdown
25015
25016
25017 // DROPDOWN NO CONFLICT
25018 // ====================
25019
25020 $.fn.dropdown.noConflict = function () {
25021 $.fn.dropdown = old
25022 return this
25023 }
25024
25025
25026 // APPLY TO STANDARD DROPDOWN ELEMENTS
25027 // ===================================
25028
25029 $(document)
25030 .on('click.bs.dropdown.data-api', clearMenus)
25031 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
25032 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
25033 .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
25034 .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
25035
25036}(jQuery);
25037
25038/* ========================================================================
25039 * Bootstrap: modal.js v3.3.7
25040 * http://getbootstrap.com/javascript/#modals
25041 * ========================================================================
25042 * Copyright 2011-2016 Twitter, Inc.
25043 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25044 * ======================================================================== */
25045
25046
25047+function ($) {
25048 'use strict';
25049
25050 // MODAL CLASS DEFINITION
25051 // ======================
25052
25053 var Modal = function (element, options) {
25054 this.options = options
25055 this.$body = $(document.body)
25056 this.$element = $(element)
25057 this.$dialog = this.$element.find('.modal-dialog')
25058 this.$backdrop = null
25059 this.isShown = null
25060 this.originalBodyPad = null
25061 this.scrollbarWidth = 0
25062 this.ignoreBackdropClick = false
25063
25064 if (this.options.remote) {
25065 this.$element
25066 .find('.modal-content')
25067 .load(this.options.remote, $.proxy(function () {
25068 this.$element.trigger('loaded.bs.modal')
25069 }, this))
25070 }
25071 }
25072
25073 Modal.VERSION = '3.3.7'
25074
25075 Modal.TRANSITION_DURATION = 300
25076 Modal.BACKDROP_TRANSITION_DURATION = 150
25077
25078 Modal.DEFAULTS = {
25079 backdrop: true,
25080 keyboard: true,
25081 show: true
25082 }
25083
25084 Modal.prototype.toggle = function (_relatedTarget) {
25085 return this.isShown ? this.hide() : this.show(_relatedTarget)
25086 }
25087
25088 Modal.prototype.show = function (_relatedTarget) {
25089 var that = this
25090 var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
25091
25092 this.$element.trigger(e)
25093
25094 if (this.isShown || e.isDefaultPrevented()) return
25095
25096 this.isShown = true
25097
25098 this.checkScrollbar()
25099 this.setScrollbar()
25100 this.$body.addClass('modal-open')
25101
25102 this.escape()
25103 this.resize()
25104
25105 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
25106
25107 this.$dialog.on('mousedown.dismiss.bs.modal', function () {
25108 that.$element.one('mouseup.dismiss.bs.modal', function (e) {
25109 if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
25110 })
25111 })
25112
25113 this.backdrop(function () {
25114 var transition = $.support.transition && that.$element.hasClass('fade')
25115
25116 if (!that.$element.parent().length) {
25117 that.$element.appendTo(that.$body) // don't move modals dom position
25118 }
25119
25120 that.$element
25121 .show()
25122 .scrollTop(0)
25123
25124 that.adjustDialog()
25125
25126 if (transition) {
25127 that.$element[0].offsetWidth // force reflow
25128 }
25129
25130 that.$element.addClass('in')
25131
25132 that.enforceFocus()
25133
25134 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
25135
25136 transition ?
25137 that.$dialog // wait for modal to slide in
25138 .one('bsTransitionEnd', function () {
25139 that.$element.trigger('focus').trigger(e)
25140 })
25141 .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
25142 that.$element.trigger('focus').trigger(e)
25143 })
25144 }
25145
25146 Modal.prototype.hide = function (e) {
25147 if (e) e.preventDefault()
25148
25149 e = $.Event('hide.bs.modal')
25150
25151 this.$element.trigger(e)
25152
25153 if (!this.isShown || e.isDefaultPrevented()) return
25154
25155 this.isShown = false
25156
25157 this.escape()
25158 this.resize()
25159
25160 $(document).off('focusin.bs.modal')
25161
25162 this.$element
25163 .removeClass('in')
25164 .off('click.dismiss.bs.modal')
25165 .off('mouseup.dismiss.bs.modal')
25166
25167 this.$dialog.off('mousedown.dismiss.bs.modal')
25168
25169 $.support.transition && this.$element.hasClass('fade') ?
25170 this.$element
25171 .one('bsTransitionEnd', $.proxy(this.hideModal, this))
25172 .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
25173 this.hideModal()
25174 }
25175
25176 Modal.prototype.enforceFocus = function () {
25177 $(document)
25178 .off('focusin.bs.modal') // guard against infinite focus loop
25179 .on('focusin.bs.modal', $.proxy(function (e) {
25180 if (document !== e.target &&
25181 this.$element[0] !== e.target &&
25182 !this.$element.has(e.target).length) {
25183 this.$element.trigger('focus')
25184 }
25185 }, this))
25186 }
25187
25188 Modal.prototype.escape = function () {
25189 if (this.isShown && this.options.keyboard) {
25190 this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
25191 e.which == 27 && this.hide()
25192 }, this))
25193 } else if (!this.isShown) {
25194 this.$element.off('keydown.dismiss.bs.modal')
25195 }
25196 }
25197
25198 Modal.prototype.resize = function () {
25199 if (this.isShown) {
25200 $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
25201 } else {
25202 $(window).off('resize.bs.modal')
25203 }
25204 }
25205
25206 Modal.prototype.hideModal = function () {
25207 var that = this
25208 this.$element.hide()
25209 this.backdrop(function () {
25210 that.$body.removeClass('modal-open')
25211 that.resetAdjustments()
25212 that.resetScrollbar()
25213 that.$element.trigger('hidden.bs.modal')
25214 })
25215 }
25216
25217 Modal.prototype.removeBackdrop = function () {
25218 this.$backdrop && this.$backdrop.remove()
25219 this.$backdrop = null
25220 }
25221
25222 Modal.prototype.backdrop = function (callback) {
25223 var that = this
25224 var animate = this.$element.hasClass('fade') ? 'fade' : ''
25225
25226 if (this.isShown && this.options.backdrop) {
25227 var doAnimate = $.support.transition && animate
25228
25229 this.$backdrop = $(document.createElement('div'))
25230 .addClass('modal-backdrop ' + animate)
25231 .appendTo(this.$body)
25232
25233 this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
25234 if (this.ignoreBackdropClick) {
25235 this.ignoreBackdropClick = false
25236 return
25237 }
25238 if (e.target !== e.currentTarget) return
25239 this.options.backdrop == 'static'
25240 ? this.$element[0].focus()
25241 : this.hide()
25242 }, this))
25243
25244 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
25245
25246 this.$backdrop.addClass('in')
25247
25248 if (!callback) return
25249
25250 doAnimate ?
25251 this.$backdrop
25252 .one('bsTransitionEnd', callback)
25253 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
25254 callback()
25255
25256 } else if (!this.isShown && this.$backdrop) {
25257 this.$backdrop.removeClass('in')
25258
25259 var callbackRemove = function () {
25260 that.removeBackdrop()
25261 callback && callback()
25262 }
25263 $.support.transition && this.$element.hasClass('fade') ?
25264 this.$backdrop
25265 .one('bsTransitionEnd', callbackRemove)
25266 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
25267 callbackRemove()
25268
25269 } else if (callback) {
25270 callback()
25271 }
25272 }
25273
25274 // these following methods are used to handle overflowing modals
25275
25276 Modal.prototype.handleUpdate = function () {
25277 this.adjustDialog()
25278 }
25279
25280 Modal.prototype.adjustDialog = function () {
25281 var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
25282
25283 this.$element.css({
25284 paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
25285 paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
25286 })
25287 }
25288
25289 Modal.prototype.resetAdjustments = function () {
25290 this.$element.css({
25291 paddingLeft: '',
25292 paddingRight: ''
25293 })
25294 }
25295
25296 Modal.prototype.checkScrollbar = function () {
25297 var fullWindowWidth = window.innerWidth
25298 if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
25299 var documentElementRect = document.documentElement.getBoundingClientRect()
25300 fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
25301 }
25302 this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
25303 this.scrollbarWidth = this.measureScrollbar()
25304 }
25305
25306 Modal.prototype.setScrollbar = function () {
25307 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
25308 this.originalBodyPad = document.body.style.paddingRight || ''
25309 if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
25310 }
25311
25312 Modal.prototype.resetScrollbar = function () {
25313 this.$body.css('padding-right', this.originalBodyPad)
25314 }
25315
25316 Modal.prototype.measureScrollbar = function () { // thx walsh
25317 var scrollDiv = document.createElement('div')
25318 scrollDiv.className = 'modal-scrollbar-measure'
25319 this.$body.append(scrollDiv)
25320 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
25321 this.$body[0].removeChild(scrollDiv)
25322 return scrollbarWidth
25323 }
25324
25325
25326 // MODAL PLUGIN DEFINITION
25327 // =======================
25328
25329 function Plugin(option, _relatedTarget) {
25330 return this.each(function () {
25331 var $this = $(this)
25332 var data = $this.data('bs.modal')
25333 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
25334
25335 if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
25336 if (typeof option == 'string') data[option](_relatedTarget)
25337 else if (options.show) data.show(_relatedTarget)
25338 })
25339 }
25340
25341 var old = $.fn.modal
25342
25343 $.fn.modal = Plugin
25344 $.fn.modal.Constructor = Modal
25345
25346
25347 // MODAL NO CONFLICT
25348 // =================
25349
25350 $.fn.modal.noConflict = function () {
25351 $.fn.modal = old
25352 return this
25353 }
25354
25355
25356 // MODAL DATA-API
25357 // ==============
25358
25359 $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
25360 var $this = $(this)
25361 var href = $this.attr('href')
25362 var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
25363 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
25364
25365 if ($this.is('a')) e.preventDefault()
25366
25367 $target.one('show.bs.modal', function (showEvent) {
25368 if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
25369 $target.one('hidden.bs.modal', function () {
25370 $this.is(':visible') && $this.trigger('focus')
25371 })
25372 })
25373 Plugin.call($target, option, this)
25374 })
25375
25376}(jQuery);
25377
25378/* ========================================================================
25379 * Bootstrap: tooltip.js v3.3.7
25380 * http://getbootstrap.com/javascript/#tooltip
25381 * Inspired by the original jQuery.tipsy by Jason Frame
25382 * ========================================================================
25383 * Copyright 2011-2016 Twitter, Inc.
25384 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25385 * ======================================================================== */
25386
25387
25388+function ($) {
25389 'use strict';
25390
25391 // TOOLTIP PUBLIC CLASS DEFINITION
25392 // ===============================
25393
25394 var Tooltip = function (element, options) {
25395 this.type = null
25396 this.options = null
25397 this.enabled = null
25398 this.timeout = null
25399 this.hoverState = null
25400 this.$element = null
25401 this.inState = null
25402
25403 this.init('tooltip', element, options)
25404 }
25405
25406 Tooltip.VERSION = '3.3.7'
25407
25408 Tooltip.TRANSITION_DURATION = 150
25409
25410 Tooltip.DEFAULTS = {
25411 animation: true,
25412 placement: 'top',
25413 selector: false,
25414 template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
25415 trigger: 'hover focus',
25416 title: '',
25417 delay: 0,
25418 html: false,
25419 container: false,
25420 viewport: {
25421 selector: 'body',
25422 padding: 0
25423 }
25424 }
25425
25426 Tooltip.prototype.init = function (type, element, options) {
25427 this.enabled = true
25428 this.type = type
25429 this.$element = $(element)
25430 this.options = this.getOptions(options)
25431 this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
25432 this.inState = { click: false, hover: false, focus: false }
25433
25434 if (this.$element[0] instanceof document.constructor && !this.options.selector) {
25435 throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
25436 }
25437
25438 var triggers = this.options.trigger.split(' ')
25439
25440 for (var i = triggers.length; i--;) {
25441 var trigger = triggers[i]
25442
25443 if (trigger == 'click') {
25444 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
25445 } else if (trigger != 'manual') {
25446 var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
25447 var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
25448
25449 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
25450 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
25451 }
25452 }
25453
25454 this.options.selector ?
25455 (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
25456 this.fixTitle()
25457 }
25458
25459 Tooltip.prototype.getDefaults = function () {
25460 return Tooltip.DEFAULTS
25461 }
25462
25463 Tooltip.prototype.getOptions = function (options) {
25464 options = $.extend({}, this.getDefaults(), this.$element.data(), options)
25465
25466 if (options.delay && typeof options.delay == 'number') {
25467 options.delay = {
25468 show: options.delay,
25469 hide: options.delay
25470 }
25471 }
25472
25473 return options
25474 }
25475
25476 Tooltip.prototype.getDelegateOptions = function () {
25477 var options = {}
25478 var defaults = this.getDefaults()
25479
25480 this._options && $.each(this._options, function (key, value) {
25481 if (defaults[key] != value) options[key] = value
25482 })
25483
25484 return options
25485 }
25486
25487 Tooltip.prototype.enter = function (obj) {
25488 var self = obj instanceof this.constructor ?
25489 obj : $(obj.currentTarget).data('bs.' + this.type)
25490
25491 if (!self) {
25492 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
25493 $(obj.currentTarget).data('bs.' + this.type, self)
25494 }
25495
25496 if (obj instanceof $.Event) {
25497 self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
25498 }
25499
25500 if (self.tip().hasClass('in') || self.hoverState == 'in') {
25501 self.hoverState = 'in'
25502 return
25503 }
25504
25505 clearTimeout(self.timeout)
25506
25507 self.hoverState = 'in'
25508
25509 if (!self.options.delay || !self.options.delay.show) return self.show()
25510
25511 self.timeout = setTimeout(function () {
25512 if (self.hoverState == 'in') self.show()
25513 }, self.options.delay.show)
25514 }
25515
25516 Tooltip.prototype.isInStateTrue = function () {
25517 for (var key in this.inState) {
25518 if (this.inState[key]) return true
25519 }
25520
25521 return false
25522 }
25523
25524 Tooltip.prototype.leave = function (obj) {
25525 var self = obj instanceof this.constructor ?
25526 obj : $(obj.currentTarget).data('bs.' + this.type)
25527
25528 if (!self) {
25529 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
25530 $(obj.currentTarget).data('bs.' + this.type, self)
25531 }
25532
25533 if (obj instanceof $.Event) {
25534 self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
25535 }
25536
25537 if (self.isInStateTrue()) return
25538
25539 clearTimeout(self.timeout)
25540
25541 self.hoverState = 'out'
25542
25543 if (!self.options.delay || !self.options.delay.hide) return self.hide()
25544
25545 self.timeout = setTimeout(function () {
25546 if (self.hoverState == 'out') self.hide()
25547 }, self.options.delay.hide)
25548 }
25549
25550 Tooltip.prototype.show = function () {
25551 var e = $.Event('show.bs.' + this.type)
25552
25553 if (this.hasContent() && this.enabled) {
25554 this.$element.trigger(e)
25555
25556 var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
25557 if (e.isDefaultPrevented() || !inDom) return
25558 var that = this
25559
25560 var $tip = this.tip()
25561
25562 var tipId = this.getUID(this.type)
25563
25564 this.setContent()
25565 $tip.attr('id', tipId)
25566 this.$element.attr('aria-describedby', tipId)
25567
25568 if (this.options.animation) $tip.addClass('fade')
25569
25570 var placement = typeof this.options.placement == 'function' ?
25571 this.options.placement.call(this, $tip[0], this.$element[0]) :
25572 this.options.placement
25573
25574 var autoToken = /\s?auto?\s?/i
25575 var autoPlace = autoToken.test(placement)
25576 if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
25577
25578 $tip
25579 .detach()
25580 .css({ top: 0, left: 0, display: 'block' })
25581 .addClass(placement)
25582 .data('bs.' + this.type, this)
25583
25584 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
25585 this.$element.trigger('inserted.bs.' + this.type)
25586
25587 var pos = this.getPosition()
25588 var actualWidth = $tip[0].offsetWidth
25589 var actualHeight = $tip[0].offsetHeight
25590
25591 if (autoPlace) {
25592 var orgPlacement = placement
25593 var viewportDim = this.getPosition(this.$viewport)
25594
25595 placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
25596 placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
25597 placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
25598 placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
25599 placement
25600
25601 $tip
25602 .removeClass(orgPlacement)
25603 .addClass(placement)
25604 }
25605
25606 var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
25607
25608 this.applyPlacement(calculatedOffset, placement)
25609
25610 var complete = function () {
25611 var prevHoverState = that.hoverState
25612 that.$element.trigger('shown.bs.' + that.type)
25613 that.hoverState = null
25614
25615 if (prevHoverState == 'out') that.leave(that)
25616 }
25617
25618 $.support.transition && this.$tip.hasClass('fade') ?
25619 $tip
25620 .one('bsTransitionEnd', complete)
25621 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
25622 complete()
25623 }
25624 }
25625
25626 Tooltip.prototype.applyPlacement = function (offset, placement) {
25627 var $tip = this.tip()
25628 var width = $tip[0].offsetWidth
25629 var height = $tip[0].offsetHeight
25630
25631 // manually read margins because getBoundingClientRect includes difference
25632 var marginTop = parseInt($tip.css('margin-top'), 10)
25633 var marginLeft = parseInt($tip.css('margin-left'), 10)
25634
25635 // we must check for NaN for ie 8/9
25636 if (isNaN(marginTop)) marginTop = 0
25637 if (isNaN(marginLeft)) marginLeft = 0
25638
25639 offset.top += marginTop
25640 offset.left += marginLeft
25641
25642 // $.fn.offset doesn't round pixel values
25643 // so we use setOffset directly with our own function B-0
25644 $.offset.setOffset($tip[0], $.extend({
25645 using: function (props) {
25646 $tip.css({
25647 top: Math.round(props.top),
25648 left: Math.round(props.left)
25649 })
25650 }
25651 }, offset), 0)
25652
25653 $tip.addClass('in')
25654
25655 // check to see if placing tip in new offset caused the tip to resize itself
25656 var actualWidth = $tip[0].offsetWidth
25657 var actualHeight = $tip[0].offsetHeight
25658
25659 if (placement == 'top' && actualHeight != height) {
25660 offset.top = offset.top + height - actualHeight
25661 }
25662
25663 var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
25664
25665 if (delta.left) offset.left += delta.left
25666 else offset.top += delta.top
25667
25668 var isVertical = /top|bottom/.test(placement)
25669 var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
25670 var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
25671
25672 $tip.offset(offset)
25673 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
25674 }
25675
25676 Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
25677 this.arrow()
25678 .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
25679 .css(isVertical ? 'top' : 'left', '')
25680 }
25681
25682 Tooltip.prototype.setContent = function () {
25683 var $tip = this.tip()
25684 var title = this.getTitle()
25685
25686 $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
25687 $tip.removeClass('fade in top bottom left right')
25688 }
25689
25690 Tooltip.prototype.hide = function (callback) {
25691 var that = this
25692 var $tip = $(this.$tip)
25693 var e = $.Event('hide.bs.' + this.type)
25694
25695 function complete() {
25696 if (that.hoverState != 'in') $tip.detach()
25697 if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
25698 that.$element
25699 .removeAttr('aria-describedby')
25700 .trigger('hidden.bs.' + that.type)
25701 }
25702 callback && callback()
25703 }
25704
25705 this.$element.trigger(e)
25706
25707 if (e.isDefaultPrevented()) return
25708
25709 $tip.removeClass('in')
25710
25711 $.support.transition && $tip.hasClass('fade') ?
25712 $tip
25713 .one('bsTransitionEnd', complete)
25714 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
25715 complete()
25716
25717 this.hoverState = null
25718
25719 return this
25720 }
25721
25722 Tooltip.prototype.fixTitle = function () {
25723 var $e = this.$element
25724 if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
25725 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
25726 }
25727 }
25728
25729 Tooltip.prototype.hasContent = function () {
25730 return this.getTitle()
25731 }
25732
25733 Tooltip.prototype.getPosition = function ($element) {
25734 $element = $element || this.$element
25735
25736 var el = $element[0]
25737 var isBody = el.tagName == 'BODY'
25738
25739 var elRect = el.getBoundingClientRect()
25740 if (elRect.width == null) {
25741 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
25742 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
25743 }
25744 var isSvg = window.SVGElement && el instanceof window.SVGElement
25745 // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
25746 // See https://github.com/twbs/bootstrap/issues/20280
25747 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
25748 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
25749 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
25750
25751 return $.extend({}, elRect, scroll, outerDims, elOffset)
25752 }
25753
25754 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
25755 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
25756 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
25757 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
25758 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
25759
25760 }
25761
25762 Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
25763 var delta = { top: 0, left: 0 }
25764 if (!this.$viewport) return delta
25765
25766 var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
25767 var viewportDimensions = this.getPosition(this.$viewport)
25768
25769 if (/right|left/.test(placement)) {
25770 var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
25771 var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
25772 if (topEdgeOffset < viewportDimensions.top) { // top overflow
25773 delta.top = viewportDimensions.top - topEdgeOffset
25774 } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
25775 delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
25776 }
25777 } else {
25778 var leftEdgeOffset = pos.left - viewportPadding
25779 var rightEdgeOffset = pos.left + viewportPadding + actualWidth
25780 if (leftEdgeOffset < viewportDimensions.left) { // left overflow
25781 delta.left = viewportDimensions.left - leftEdgeOffset
25782 } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
25783 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
25784 }
25785 }
25786
25787 return delta
25788 }
25789
25790 Tooltip.prototype.getTitle = function () {
25791 var title
25792 var $e = this.$element
25793 var o = this.options
25794
25795 title = $e.attr('data-original-title')
25796 || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
25797
25798 return title
25799 }
25800
25801 Tooltip.prototype.getUID = function (prefix) {
25802 do prefix += ~~(Math.random() * 1000000)
25803 while (document.getElementById(prefix))
25804 return prefix
25805 }
25806
25807 Tooltip.prototype.tip = function () {
25808 if (!this.$tip) {
25809 this.$tip = $(this.options.template)
25810 if (this.$tip.length != 1) {
25811 throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
25812 }
25813 }
25814 return this.$tip
25815 }
25816
25817 Tooltip.prototype.arrow = function () {
25818 return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
25819 }
25820
25821 Tooltip.prototype.enable = function () {
25822 this.enabled = true
25823 }
25824
25825 Tooltip.prototype.disable = function () {
25826 this.enabled = false
25827 }
25828
25829 Tooltip.prototype.toggleEnabled = function () {
25830 this.enabled = !this.enabled
25831 }
25832
25833 Tooltip.prototype.toggle = function (e) {
25834 var self = this
25835 if (e) {
25836 self = $(e.currentTarget).data('bs.' + this.type)
25837 if (!self) {
25838 self = new this.constructor(e.currentTarget, this.getDelegateOptions())
25839 $(e.currentTarget).data('bs.' + this.type, self)
25840 }
25841 }
25842
25843 if (e) {
25844 self.inState.click = !self.inState.click
25845 if (self.isInStateTrue()) self.enter(self)
25846 else self.leave(self)
25847 } else {
25848 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
25849 }
25850 }
25851
25852 Tooltip.prototype.destroy = function () {
25853 var that = this
25854 clearTimeout(this.timeout)
25855 this.hide(function () {
25856 that.$element.off('.' + that.type).removeData('bs.' + that.type)
25857 if (that.$tip) {
25858 that.$tip.detach()
25859 }
25860 that.$tip = null
25861 that.$arrow = null
25862 that.$viewport = null
25863 that.$element = null
25864 })
25865 }
25866
25867
25868 // TOOLTIP PLUGIN DEFINITION
25869 // =========================
25870
25871 function Plugin(option) {
25872 return this.each(function () {
25873 var $this = $(this)
25874 var data = $this.data('bs.tooltip')
25875 var options = typeof option == 'object' && option
25876
25877 if (!data && /destroy|hide/.test(option)) return
25878 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
25879 if (typeof option == 'string') data[option]()
25880 })
25881 }
25882
25883 var old = $.fn.tooltip
25884
25885 $.fn.tooltip = Plugin
25886 $.fn.tooltip.Constructor = Tooltip
25887
25888
25889 // TOOLTIP NO CONFLICT
25890 // ===================
25891
25892 $.fn.tooltip.noConflict = function () {
25893 $.fn.tooltip = old
25894 return this
25895 }
25896
25897}(jQuery);
25898
25899/* ========================================================================
25900 * Bootstrap: popover.js v3.3.7
25901 * http://getbootstrap.com/javascript/#popovers
25902 * ========================================================================
25903 * Copyright 2011-2016 Twitter, Inc.
25904 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25905 * ======================================================================== */
25906
25907
25908+function ($) {
25909 'use strict';
25910
25911 // POPOVER PUBLIC CLASS DEFINITION
25912 // ===============================
25913
25914 var Popover = function (element, options) {
25915 this.init('popover', element, options)
25916 }
25917
25918 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
25919
25920 Popover.VERSION = '3.3.7'
25921
25922 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
25923 placement: 'right',
25924 trigger: 'click',
25925 content: '',
25926 template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
25927 })
25928
25929
25930 // NOTE: POPOVER EXTENDS tooltip.js
25931 // ================================
25932
25933 Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
25934
25935 Popover.prototype.constructor = Popover
25936
25937 Popover.prototype.getDefaults = function () {
25938 return Popover.DEFAULTS
25939 }
25940
25941 Popover.prototype.setContent = function () {
25942 var $tip = this.tip()
25943 var title = this.getTitle()
25944 var content = this.getContent()
25945
25946 $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
25947 $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
25948 this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
25949 ](content)
25950
25951 $tip.removeClass('fade top bottom left right in')
25952
25953 // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
25954 // this manually by checking the contents.
25955 if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
25956 }
25957
25958 Popover.prototype.hasContent = function () {
25959 return this.getTitle() || this.getContent()
25960 }
25961
25962 Popover.prototype.getContent = function () {
25963 var $e = this.$element
25964 var o = this.options
25965
25966 return $e.attr('data-content')
25967 || (typeof o.content == 'function' ?
25968 o.content.call($e[0]) :
25969 o.content)
25970 }
25971
25972 Popover.prototype.arrow = function () {
25973 return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
25974 }
25975
25976
25977 // POPOVER PLUGIN DEFINITION
25978 // =========================
25979
25980 function Plugin(option) {
25981 return this.each(function () {
25982 var $this = $(this)
25983 var data = $this.data('bs.popover')
25984 var options = typeof option == 'object' && option
25985
25986 if (!data && /destroy|hide/.test(option)) return
25987 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
25988 if (typeof option == 'string') data[option]()
25989 })
25990 }
25991
25992 var old = $.fn.popover
25993
25994 $.fn.popover = Plugin
25995 $.fn.popover.Constructor = Popover
25996
25997
25998 // POPOVER NO CONFLICT
25999 // ===================
26000
26001 $.fn.popover.noConflict = function () {
26002 $.fn.popover = old
26003 return this
26004 }
26005
26006}(jQuery);
26007
26008/* ========================================================================
26009 * Bootstrap: scrollspy.js v3.3.7
26010 * http://getbootstrap.com/javascript/#scrollspy
26011 * ========================================================================
26012 * Copyright 2011-2016 Twitter, Inc.
26013 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
26014 * ======================================================================== */
26015
26016
26017+function ($) {
26018 'use strict';
26019
26020 // SCROLLSPY CLASS DEFINITION
26021 // ==========================
26022
26023 function ScrollSpy(element, options) {
26024 this.$body = $(document.body)
26025 this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
26026 this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
26027 this.selector = (this.options.target || '') + ' .nav li > a'
26028 this.offsets = []
26029 this.targets = []
26030 this.activeTarget = null
26031 this.scrollHeight = 0
26032
26033 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
26034 this.refresh()
26035 this.process()
26036 }
26037
26038 ScrollSpy.VERSION = '3.3.7'
26039
26040 ScrollSpy.DEFAULTS = {
26041 offset: 10
26042 }
26043
26044 ScrollSpy.prototype.getScrollHeight = function () {
26045 return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
26046 }
26047
26048 ScrollSpy.prototype.refresh = function () {
26049 var that = this
26050 var offsetMethod = 'offset'
26051 var offsetBase = 0
26052
26053 this.offsets = []
26054 this.targets = []
26055 this.scrollHeight = this.getScrollHeight()
26056
26057 if (!$.isWindow(this.$scrollElement[0])) {
26058 offsetMethod = 'position'
26059 offsetBase = this.$scrollElement.scrollTop()
26060 }
26061
26062 this.$body
26063 .find(this.selector)
26064 .map(function () {
26065 var $el = $(this)
26066 var href = $el.data('target') || $el.attr('href')
26067 var $href = /^#./.test(href) && $(href)
26068
26069 return ($href
26070 && $href.length
26071 && $href.is(':visible')
26072 && [[$href[offsetMethod]().top + offsetBase, href]]) || null
26073 })
26074 .sort(function (a, b) { return a[0] - b[0] })
26075 .each(function () {
26076 that.offsets.push(this[0])
26077 that.targets.push(this[1])
26078 })
26079 }
26080
26081 ScrollSpy.prototype.process = function () {
26082 var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
26083 var scrollHeight = this.getScrollHeight()
26084 var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
26085 var offsets = this.offsets
26086 var targets = this.targets
26087 var activeTarget = this.activeTarget
26088 var i
26089
26090 if (this.scrollHeight != scrollHeight) {
26091 this.refresh()
26092 }
26093
26094 if (scrollTop >= maxScroll) {
26095 return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
26096 }
26097
26098 if (activeTarget && scrollTop < offsets[0]) {
26099 this.activeTarget = null
26100 return this.clear()
26101 }
26102
26103 for (i = offsets.length; i--;) {
26104 activeTarget != targets[i]
26105 && scrollTop >= offsets[i]
26106 && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
26107 && this.activate(targets[i])
26108 }
26109 }
26110
26111 ScrollSpy.prototype.activate = function (target) {
26112 this.activeTarget = target
26113
26114 this.clear()
26115
26116 var selector = this.selector +
26117 '[data-target="' + target + '"],' +
26118 this.selector + '[href="' + target + '"]'
26119
26120 var active = $(selector)
26121 .parents('li')
26122 .addClass('active')
26123
26124 if (active.parent('.dropdown-menu').length) {
26125 active = active
26126 .closest('li.dropdown')
26127 .addClass('active')
26128 }
26129
26130 active.trigger('activate.bs.scrollspy')
26131 }
26132
26133 ScrollSpy.prototype.clear = function () {
26134 $(this.selector)
26135 .parentsUntil(this.options.target, '.active')
26136 .removeClass('active')
26137 }
26138
26139
26140 // SCROLLSPY PLUGIN DEFINITION
26141 // ===========================
26142
26143 function Plugin(option) {
26144 return this.each(function () {
26145 var $this = $(this)
26146 var data = $this.data('bs.scrollspy')
26147 var options = typeof option == 'object' && option
26148
26149 if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
26150 if (typeof option == 'string') data[option]()
26151 })
26152 }
26153
26154 var old = $.fn.scrollspy
26155
26156 $.fn.scrollspy = Plugin
26157 $.fn.scrollspy.Constructor = ScrollSpy
26158
26159
26160 // SCROLLSPY NO CONFLICT
26161 // =====================
26162
26163 $.fn.scrollspy.noConflict = function () {
26164 $.fn.scrollspy = old
26165 return this
26166 }
26167
26168
26169 // SCROLLSPY DATA-API
26170 // ==================
26171
26172 $(window).on('load.bs.scrollspy.data-api', function () {
26173 $('[data-spy="scroll"]').each(function () {
26174 var $spy = $(this)
26175 Plugin.call($spy, $spy.data())
26176 })
26177 })
26178
26179}(jQuery);
26180
26181/* ========================================================================
26182 * Bootstrap: tab.js v3.3.7
26183 * http://getbootstrap.com/javascript/#tabs
26184 * ========================================================================
26185 * Copyright 2011-2016 Twitter, Inc.
26186 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
26187 * ======================================================================== */
26188
26189
26190+function ($) {
26191 'use strict';
26192
26193 // TAB CLASS DEFINITION
26194 // ====================
26195
26196 var Tab = function (element) {
26197 // jscs:disable requireDollarBeforejQueryAssignment
26198 this.element = $(element)
26199 // jscs:enable requireDollarBeforejQueryAssignment
26200 }
26201
26202 Tab.VERSION = '3.3.7'
26203
26204 Tab.TRANSITION_DURATION = 150
26205
26206 Tab.prototype.show = function () {
26207 var $this = this.element
26208 var $ul = $this.closest('ul:not(.dropdown-menu)')
26209 var selector = $this.data('target')
26210
26211 if (!selector) {
26212 selector = $this.attr('href')
26213 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
26214 }
26215
26216 if ($this.parent('li').hasClass('active')) return
26217
26218 var $previous = $ul.find('.active:last a')
26219 var hideEvent = $.Event('hide.bs.tab', {
26220 relatedTarget: $this[0]
26221 })
26222 var showEvent = $.Event('show.bs.tab', {
26223 relatedTarget: $previous[0]
26224 })
26225
26226 $previous.trigger(hideEvent)
26227 $this.trigger(showEvent)
26228
26229 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
26230
26231 var $target = $(selector)
26232
26233 this.activate($this.closest('li'), $ul)
26234 this.activate($target, $target.parent(), function () {
26235 $previous.trigger({
26236 type: 'hidden.bs.tab',
26237 relatedTarget: $this[0]
26238 })
26239 $this.trigger({
26240 type: 'shown.bs.tab',
26241 relatedTarget: $previous[0]
26242 })
26243 })
26244 }
26245
26246 Tab.prototype.activate = function (element, container, callback) {
26247 var $active = container.find('> .active')
26248 var transition = callback
26249 && $.support.transition
26250 && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
26251
26252 function next() {
26253 $active
26254 .removeClass('active')
26255 .find('> .dropdown-menu > .active')
26256 .removeClass('active')
26257 .end()
26258 .find('[data-toggle="tab"]')
26259 .attr('aria-expanded', false)
26260
26261 element
26262 .addClass('active')
26263 .find('[data-toggle="tab"]')
26264 .attr('aria-expanded', true)
26265
26266 if (transition) {
26267 element[0].offsetWidth // reflow for transition
26268 element.addClass('in')
26269 } else {
26270 element.removeClass('fade')
26271 }
26272
26273 if (element.parent('.dropdown-menu').length) {
26274 element
26275 .closest('li.dropdown')
26276 .addClass('active')
26277 .end()
26278 .find('[data-toggle="tab"]')
26279 .attr('aria-expanded', true)
26280 }
26281
26282 callback && callback()
26283 }
26284
26285 $active.length && transition ?
26286 $active
26287 .one('bsTransitionEnd', next)
26288 .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
26289 next()
26290
26291 $active.removeClass('in')
26292 }
26293
26294
26295 // TAB PLUGIN DEFINITION
26296 // =====================
26297
26298 function Plugin(option) {
26299 return this.each(function () {
26300 var $this = $(this)
26301 var data = $this.data('bs.tab')
26302
26303 if (!data) $this.data('bs.tab', (data = new Tab(this)))
26304 if (typeof option == 'string') data[option]()
26305 })
26306 }
26307
26308 var old = $.fn.tab
26309
26310 $.fn.tab = Plugin
26311 $.fn.tab.Constructor = Tab
26312
26313
26314 // TAB NO CONFLICT
26315 // ===============
26316
26317 $.fn.tab.noConflict = function () {
26318 $.fn.tab = old
26319 return this
26320 }
26321
26322
26323 // TAB DATA-API
26324 // ============
26325
26326 var clickHandler = function (e) {
26327 e.preventDefault()
26328 Plugin.call($(this), 'show')
26329 }
26330
26331 $(document)
26332 .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
26333 .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
26334
26335}(jQuery);
26336
26337/* ========================================================================
26338 * Bootstrap: affix.js v3.3.7
26339 * http://getbootstrap.com/javascript/#affix
26340 * ========================================================================
26341 * Copyright 2011-2016 Twitter, Inc.
26342 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
26343 * ======================================================================== */
26344
26345
26346+function ($) {
26347 'use strict';
26348
26349 // AFFIX CLASS DEFINITION
26350 // ======================
26351
26352 var Affix = function (element, options) {
26353 this.options = $.extend({}, Affix.DEFAULTS, options)
26354
26355 this.$target = $(this.options.target)
26356 .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
26357 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
26358
26359 this.$element = $(element)
26360 this.affixed = null
26361 this.unpin = null
26362 this.pinnedOffset = null
26363
26364 this.checkPosition()
26365 }
26366
26367 Affix.VERSION = '3.3.7'
26368
26369 Affix.RESET = 'affix affix-top affix-bottom'
26370
26371 Affix.DEFAULTS = {
26372 offset: 0,
26373 target: window
26374 }
26375
26376 Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
26377 var scrollTop = this.$target.scrollTop()
26378 var position = this.$element.offset()
26379 var targetHeight = this.$target.height()
26380
26381 if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
26382
26383 if (this.affixed == 'bottom') {
26384 if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
26385 return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
26386 }
26387
26388 var initializing = this.affixed == null
26389 var colliderTop = initializing ? scrollTop : position.top
26390 var colliderHeight = initializing ? targetHeight : height
26391
26392 if (offsetTop != null && scrollTop <= offsetTop) return 'top'
26393 if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
26394
26395 return false
26396 }
26397
26398 Affix.prototype.getPinnedOffset = function () {
26399 if (this.pinnedOffset) return this.pinnedOffset
26400 this.$element.removeClass(Affix.RESET).addClass('affix')
26401 var scrollTop = this.$target.scrollTop()
26402 var position = this.$element.offset()
26403 return (this.pinnedOffset = position.top - scrollTop)
26404 }
26405
26406 Affix.prototype.checkPositionWithEventLoop = function () {
26407 setTimeout($.proxy(this.checkPosition, this), 1)
26408 }
26409
26410 Affix.prototype.checkPosition = function () {
26411 if (!this.$element.is(':visible')) return
26412
26413 var height = this.$element.height()
26414 var offset = this.options.offset
26415 var offsetTop = offset.top
26416 var offsetBottom = offset.bottom
26417 var scrollHeight = Math.max($(document).height(), $(document.body).height())
26418
26419 if (typeof offset != 'object') offsetBottom = offsetTop = offset
26420 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
26421 if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
26422
26423 var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
26424
26425 if (this.affixed != affix) {
26426 if (this.unpin != null) this.$element.css('top', '')
26427
26428 var affixType = 'affix' + (affix ? '-' + affix : '')
26429 var e = $.Event(affixType + '.bs.affix')
26430
26431 this.$element.trigger(e)
26432
26433 if (e.isDefaultPrevented()) return
26434
26435 this.affixed = affix
26436 this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
26437
26438 this.$element
26439 .removeClass(Affix.RESET)
26440 .addClass(affixType)
26441 .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
26442 }
26443
26444 if (affix == 'bottom') {
26445 this.$element.offset({
26446 top: scrollHeight - height - offsetBottom
26447 })
26448 }
26449 }
26450
26451
26452 // AFFIX PLUGIN DEFINITION
26453 // =======================
26454
26455 function Plugin(option) {
26456 return this.each(function () {
26457 var $this = $(this)
26458 var data = $this.data('bs.affix')
26459 var options = typeof option == 'object' && option
26460
26461 if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
26462 if (typeof option == 'string') data[option]()
26463 })
26464 }
26465
26466 var old = $.fn.affix
26467
26468 $.fn.affix = Plugin
26469 $.fn.affix.Constructor = Affix
26470
26471
26472 // AFFIX NO CONFLICT
26473 // =================
26474
26475 $.fn.affix.noConflict = function () {
26476 $.fn.affix = old
26477 return this
26478 }
26479
26480
26481 // AFFIX DATA-API
26482 // ==============
26483
26484 $(window).on('load', function () {
26485 $('[data-spy="affix"]').each(function () {
26486 var $spy = $(this)
26487 var data = $spy.data()
26488
26489 data.offset = data.offset || {}
26490
26491 if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
26492 if (data.offsetTop != null) data.offset.top = data.offsetTop
26493
26494 Plugin.call($spy, data)
26495 })
26496 })
26497
26498}(jQuery);
26499</script>
7126 <script>(function() { 26500 <script>(function() {
7127 'use strict'; 26501 'use strict';
7128 26502
@@ -7335,35 +26709,8 @@ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires j
7335}()); 26709}());
7336 26710
7337</script> 26711</script>
7338 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length}, 26712 <script>/*! kjua v0.1.1 - https://larsjung.de/kjua/ */
7339write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount; 26713!function(r,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.kjua=t():r.kjua=t()}(this,function(){return function(r){function t(n){if(e[n])return e[n].exports;var o=e[n]={exports:{},id:n,loaded:!1};return r[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var e={};return t.m=r,t.c=e,t.p="",t(0)}([function(r,t,e){"use strict";var n=e(1),o=n.createCanvas,i=n.canvasToImg,a=n.dpr,u=e(2),f=e(3),c=e(4);r.exports=function(r){var t=Object.assign({},u,r),e=f(t.text,t.ecLevel,t.minVersion,t.quiet),n=t.ratio||a,l=o(t.size,n),s=l.getContext("2d");return s.scale(n,n),c(e,s,t),"image"===t.render?i(l):l}},function(r,t){"use strict";var e=window,n=e.document,o=e.devicePixelRatio||1,i=function(r){return n.createElement(r)},a=function(r,t){return r.getAttribute(t)},u=function(r,t,e){return r.setAttribute(t,e)},f=function(r,t){var e=i("canvas");return u(e,"width",r*t),u(e,"height",r*t),e.style.width=r+"px",e.style.height=r+"px",e},c=function(r){var t=i("img");return u(t,"crossorigin","anonymous"),u(t,"src",r.toDataURL("image/png")),u(t,"width",a(r,"width")),u(t,"height",a(r,"height")),t.style.width=r.style.width,t.style.height=r.style.height,t};r.exports={createCanvas:f,canvasToImg:c,dpr:o}},function(r,t){"use strict";r.exports={render:"image",crisp:!0,minVersion:1,ecLevel:"L",size:200,ratio:null,fill:"#333",back:"#fff",text:"no text",rounded:0,quiet:0,mode:"plain",mSize:30,mPosX:50,mPosY:50,label:"no label",fontname:"sans",fontcolor:"#333",image:null}},function(r,t){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol?"symbol":typeof r},n=/code length overflow/i,o=function(){var e=function(){function r(t,e){if("undefined"==typeof t.length)throw new Error(t.length+"/"+e);var n=function(){for(var r=0;r<t.length&&0==t[r];)r+=1;for(var n=new Array(t.length-r+e),o=0;o<t.length-r;o+=1)n[o]=t[o+r];return n}(),o={};return o.getAt=function(r){return n[r]},o.getLength=function(){return n.length},o.multiply=function(t){for(var e=new Array(o.getLength()+t.getLength()-1),n=0;n<o.getLength();n+=1)for(var i=0;i<t.getLength();i+=1)e[n+i]^=a.gexp(a.glog(o.getAt(n))+a.glog(t.getAt(i)));return r(e,0)},o.mod=function(t){if(o.getLength()-t.getLength()<0)return o;for(var e=a.glog(o.getAt(0))-a.glog(t.getAt(0)),n=new Array(o.getLength()),i=0;i<o.getLength();i+=1)n[i]=o.getAt(i);for(var i=0;i<t.getLength();i+=1)n[i]^=a.gexp(a.glog(t.getAt(i))+e);return r(n,0).mod(t)},o}var t=function(t,e){var o=236,a=17,l=t,s=n[e],g=null,h=0,d=null,w=new Array,y={},p=function(r,t){h=4*l+17,g=function(r){for(var t=new Array(r),e=0;r>e;e+=1){t[e]=new Array(r);for(var n=0;r>n;n+=1)t[e][n]=null}return t}(h),m(0,0),m(h-7,0),m(0,h-7),E(),B(),M(r,t),l>=7&&T(r),null==d&&(d=x(l,s,w)),k(d,t)},m=function(r,t){for(var e=-1;7>=e;e+=1)if(!(-1>=r+e||r+e>=h))for(var n=-1;7>=n;n+=1)-1>=t+n||t+n>=h||(e>=0&&6>=e&&(0==n||6==n)||n>=0&&6>=n&&(0==e||6==e)||e>=2&&4>=e&&n>=2&&4>=n?g[r+e][t+n]=!0:g[r+e][t+n]=!1)},A=function(){for(var r=0,t=0,e=0;8>e;e+=1){p(!0,e);var n=i.getLostPoint(y);(0==e||r>n)&&(r=n,t=e)}return t},B=function(){for(var r=8;h-8>r;r+=1)null==g[r][6]&&(g[r][6]=r%2==0);for(var t=8;h-8>t;t+=1)null==g[6][t]&&(g[6][t]=t%2==0)},E=function(){for(var r=i.getPatternPosition(l),t=0;t<r.length;t+=1)for(var e=0;e<r.length;e+=1){var n=r[t],o=r[e];if(null==g[n][o])for(var a=-2;2>=a;a+=1)for(var u=-2;2>=u;u+=1)-2==a||2==a||-2==u||2==u||0==a&&0==u?g[n+a][o+u]=!0:g[n+a][o+u]=!1}},T=function(r){for(var t=i.getBCHTypeNumber(l),e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);g[Math.floor(e/3)][e%3+h-8-3]=n}for(var e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);g[e%3+h-8-3][Math.floor(e/3)]=n}},M=function(r,t){for(var e=s<<3|t,n=i.getBCHTypeInfo(e),o=0;15>o;o+=1){var a=!r&&1==(n>>o&1);6>o?g[o][8]=a:8>o?g[o+1][8]=a:g[h-15+o][8]=a}for(var o=0;15>o;o+=1){var a=!r&&1==(n>>o&1);8>o?g[8][h-o-1]=a:9>o?g[8][15-o-1+1]=a:g[8][15-o-1]=a}g[h-8][8]=!r},k=function(r,t){for(var e=-1,n=h-1,o=7,a=0,u=i.getMaskFunction(t),f=h-1;f>0;f-=2)for(6==f&&(f-=1);;){for(var c=0;2>c;c+=1)if(null==g[n][f-c]){var l=!1;a<r.length&&(l=1==(r[a]>>>o&1));var s=u(n,f-c);s&&(l=!l),g[n][f-c]=l,o-=1,-1==o&&(a+=1,o=7)}if(n+=e,0>n||n>=h){n-=e,e=-e;break}}},b=function(t,e){for(var n=0,o=0,a=0,u=new Array(e.length),f=new Array(e.length),c=0;c<e.length;c+=1){var l=e[c].dataCount,s=e[c].totalCount-l;o=Math.max(o,l),a=Math.max(a,s),u[c]=new Array(l);for(var g=0;g<u[c].length;g+=1)u[c][g]=255&t.getBuffer()[g+n];n+=l;var h=i.getErrorCorrectPolynomial(s),v=r(u[c],h.getLength()-1),d=v.mod(h);f[c]=new Array(h.getLength()-1);for(var g=0;g<f[c].length;g+=1){var w=g+d.getLength()-f[c].length;f[c][g]=w>=0?d.getAt(w):0}}for(var y=0,g=0;g<e.length;g+=1)y+=e[g].totalCount;for(var p=new Array(y),m=0,g=0;o>g;g+=1)for(var c=0;c<e.length;c+=1)g<u[c].length&&(p[m]=u[c][g],m+=1);for(var g=0;a>g;g+=1)for(var c=0;c<e.length;c+=1)g<f[c].length&&(p[m]=f[c][g],m+=1);return p},x=function(r,t,e){for(var n=u.getRSBlocks(r,t),c=f(),l=0;l<e.length;l+=1){var s=e[l];c.put(s.getMode(),4),c.put(s.getLength(),i.getLengthInBits(s.getMode(),r)),s.write(c)}for(var g=0,l=0;l<n.length;l+=1)g+=n[l].dataCount;if(c.getLengthInBits()>8*g)throw new Error("code length overflow. ("+c.getLengthInBits()+">"+8*g+")");for(c.getLengthInBits()+4<=8*g&&c.put(0,4);c.getLengthInBits()%8!=0;)c.putBit(!1);for(;;){if(c.getLengthInBits()>=8*g)break;if(c.put(o,8),c.getLengthInBits()>=8*g)break;c.put(a,8)}return b(c,n)};return y.addData=function(r){var t=c(r);w.push(t),d=null},y.isDark=function(r,t){if(0>r||r>=h||0>t||t>=h)throw new Error(r+","+t);return g[r][t]},y.getModuleCount=function(){return h},y.make=function(){p(!1,A())},y.createTableTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e="";e+='<table style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: "+t+"px;",e+='">',e+="<tbody>";for(var n=0;n<y.getModuleCount();n+=1){e+="<tr>";for(var o=0;o<y.getModuleCount();o+=1)e+='<td style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: 0px;",e+=" width: "+r+"px;",e+=" height: "+r+"px;",e+=" background-color: ",e+=y.isDark(n,o)?"#000000":"#ffffff",e+=";",e+='"/>';e+="</tr>"}return e+="</tbody>",e+="</table>"},y.createImgTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e=y.getModuleCount()*r+2*t,n=t,o=e-t;return v(e,e,function(t,e){if(t>=n&&o>t&&e>=n&&o>e){var i=Math.floor((t-n)/r),a=Math.floor((e-n)/r);return y.isDark(a,i)?0:1}return 1})},y};t.stringToBytes=function(r){for(var t=new Array,e=0;e<r.length;e+=1){var n=r.charCodeAt(e);t.push(255&n)}return t},t.createStringToBytes=function(r,t){var e=function(){for(var e=g(r),n=function(){var r=e.read();if(-1==r)throw new Error;return r},o=0,i={};;){var a=e.read();if(-1==a)break;var u=n(),f=n(),c=n(),l=String.fromCharCode(a<<8|u),s=f<<8|c;i[l]=s,o+=1}if(o!=t)throw new Error(o+" != "+t);return i}(),n="?".charCodeAt(0);return function(r){for(var t=new Array,o=0;o<r.length;o+=1){var i=r.charCodeAt(o);if(128>i)t.push(i);else{var a=e[r.charAt(o)];"number"==typeof a?(255&a)==a?t.push(a):(t.push(a>>>8),t.push(255&a)):t.push(n)}}return t}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},o={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},i=function(){var t=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,i=7973,u=21522,f={},c=function(r){for(var t=0;0!=r;)t+=1,r>>>=1;return t};return f.getBCHTypeInfo=function(r){for(var t=r<<10;c(t)-c(n)>=0;)t^=n<<c(t)-c(n);return(r<<10|t)^u},f.getBCHTypeNumber=function(r){for(var t=r<<12;c(t)-c(i)>=0;)t^=i<<c(t)-c(i);return r<<12|t},f.getPatternPosition=function(r){return t[r-1]},f.getMaskFunction=function(r){switch(r){case o.PATTERN000:return function(r,t){return(r+t)%2==0};case o.PATTERN001:return function(r,t){return r%2==0};case o.PATTERN010:return function(r,t){return t%3==0};case o.PATTERN011:return function(r,t){return(r+t)%3==0};case o.PATTERN100:return function(r,t){return(Math.floor(r/2)+Math.floor(t/3))%2==0};case o.PATTERN101:return function(r,t){return r*t%2+r*t%3==0};case o.PATTERN110:return function(r,t){return(r*t%2+r*t%3)%2==0};case o.PATTERN111:return function(r,t){return(r*t%3+(r+t)%2)%2==0};default:throw new Error("bad maskPattern:"+r)}},f.getErrorCorrectPolynomial=function(t){for(var e=r([1],0),n=0;t>n;n+=1)e=e.multiply(r([1,a.gexp(n)],0));return e},f.getLengthInBits=function(r,t){if(t>=1&&10>t)switch(r){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw new Error("mode:"+r)}else if(27>t)switch(r){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw new Error("mode:"+r)}else{if(!(41>t))throw new Error("type:"+t);switch(r){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw new Error("mode:"+r)}}},f.getLostPoint=function(r){for(var t=r.getModuleCount(),e=0,n=0;t>n;n+=1)for(var o=0;t>o;o+=1){for(var i=0,a=r.isDark(n,o),u=-1;1>=u;u+=1)if(!(0>n+u||n+u>=t))for(var f=-1;1>=f;f+=1)0>o+f||o+f>=t||0==u&&0==f||a==r.isDark(n+u,o+f)&&(i+=1);i>5&&(e+=3+i-5)}for(var n=0;t-1>n;n+=1)for(var o=0;t-1>o;o+=1){var c=0;r.isDark(n,o)&&(c+=1),r.isDark(n+1,o)&&(c+=1),r.isDark(n,o+1)&&(c+=1),r.isDark(n+1,o+1)&&(c+=1),0!=c&&4!=c||(e+=3)}for(var n=0;t>n;n+=1)for(var o=0;t-6>o;o+=1)r.isDark(n,o)&&!r.isDark(n,o+1)&&r.isDark(n,o+2)&&r.isDark(n,o+3)&&r.isDark(n,o+4)&&!r.isDark(n,o+5)&&r.isDark(n,o+6)&&(e+=40);for(var o=0;t>o;o+=1)for(var n=0;t-6>n;n+=1)r.isDark(n,o)&&!r.isDark(n+1,o)&&r.isDark(n+2,o)&&r.isDark(n+3,o)&&r.isDark(n+4,o)&&!r.isDark(n+5,o)&&r.isDark(n+6,o)&&(e+=40);for(var l=0,o=0;t>o;o+=1)for(var n=0;t>n;n+=1)r.isDark(n,o)&&(l+=1);var s=Math.abs(100*l/t/t-50)/5;return e+=10*s},f}(),a=function(){for(var r=new Array(256),t=new Array(256),e=0;8>e;e+=1)r[e]=1<<e;for(var e=8;256>e;e+=1)r[e]=r[e-4]^r[e-5]^r[e-6]^r[e-8];for(var e=0;255>e;e+=1)t[r[e]]=e;var n={};return n.glog=function(r){if(1>r)throw new Error("glog("+r+")");return t[r]},n.gexp=function(t){for(;0>t;)t+=255;for(;t>=256;)t-=255;return r[t]},n}(),u=function(){var r=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(r,t){var e={};return e.totalCount=r,e.dataCount=t,e},e={},o=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return}};return e.getRSBlocks=function(r,e){var n=o(r,e);if("undefined"==typeof n)throw new Error("bad rs block @ typeNumber:"+r+"/errorCorrectLevel:"+e);for(var i=n.length/3,a=new Array,u=0;i>u;u+=1)for(var f=n[3*u+0],c=n[3*u+1],l=n[3*u+2],s=0;f>s;s+=1)a.push(t(c,l));return a},e}(),f=function(){var r=new Array,t=0,e={};return e.getBuffer=function(){return r},e.getAt=function(t){var e=Math.floor(t/8);return 1==(r[e]>>>7-t%8&1)},e.put=function(r,t){for(var n=0;t>n;n+=1)e.putBit(1==(r>>>t-n-1&1))},e.getLengthInBits=function(){return t},e.putBit=function(e){var n=Math.floor(t/8);r.length<=n&&r.push(0),e&&(r[n]|=128>>>t%8),t+=1},e},c=function(r){var n=e.MODE_8BIT_BYTE,o=t.stringToBytes(r),i={};return i.getMode=function(){return n},i.getLength=function(r){return o.length},i.write=function(r){for(var t=0;t<o.length;t+=1)r.put(o[t],8)},i},l=function(){var r=new Array,t={};return t.writeByte=function(t){r.push(255&t)},t.writeShort=function(r){t.writeByte(r),t.writeByte(r>>>8)},t.writeBytes=function(r,e,n){e=e||0,n=n||r.length;for(var o=0;n>o;o+=1)t.writeByte(r[o+e])},t.writeString=function(r){for(var e=0;e<r.length;e+=1)t.writeByte(r.charCodeAt(e))},t.toByteArray=function(){return r},t.toString=function(){var t="";t+="[";for(var e=0;e<r.length;e+=1)e>0&&(t+=","),t+=r[e];return t+="]"},t},s=function(){var r=0,t=0,e=0,n="",o={},i=function(r){n+=String.fromCharCode(a(63&r))},a=function(r){if(0>r);else{if(26>r)return 65+r;if(52>r)return 97+(r-26);if(62>r)return 48+(r-52);if(62==r)return 43;if(63==r)return 47}throw new Error("n:"+r)};return o.writeByte=function(n){for(r=r<<8|255&n,t+=8,e+=1;t>=6;)i(r>>>t-6),t-=6},o.flush=function(){if(t>0&&(i(r<<6-t),r=0,t=0),e%3!=0)for(var o=3-e%3,a=0;o>a;a+=1)n+="="},o.toString=function(){return n},o},g=function(r){var t=r,e=0,n=0,o=0,i={};i.read=function(){for(;8>o;){if(e>=t.length){if(0==o)return-1;throw new Error("unexpected end of file./"+o)}var r=t.charAt(e);if(e+=1,"="==r)return o=0,-1;r.match(/^\s$/)||(n=n<<6|a(r.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i};var a=function(r){if(r>=65&&90>=r)return r-65;if(r>=97&&122>=r)return r-97+26;if(r>=48&&57>=r)return r-48+52;if(43==r)return 62;if(47==r)return 63;throw new Error("c:"+r)};return i},h=function(r,t){var e=r,n=t,o=new Array(r*t),i={};i.setPixel=function(r,t,n){o[t*e+r]=n},i.write=function(r){r.writeString("GIF87a"),r.writeShort(e),r.writeShort(n),r.writeByte(128),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(255),r.writeByte(255),r.writeByte(255),r.writeString(","),r.writeShort(0),r.writeShort(0),r.writeShort(e),r.writeShort(n),r.writeByte(0);var t=2,o=u(t);r.writeByte(t);for(var i=0;o.length-i>255;)r.writeByte(255),r.writeBytes(o,i,255),i+=255;r.writeByte(o.length-i),r.writeBytes(o,i,o.length-i),r.writeByte(0),r.writeString(";")};var a=function(r){var t=r,e=0,n=0,o={};return o.write=function(r,o){if(r>>>o!=0)throw new Error("length over");for(;e+o>=8;)t.writeByte(255&(r<<e|n)),o-=8-e,r>>>=8-e,n=0,e=0;n=r<<e|n,e+=o},o.flush=function(){e>0&&t.writeByte(n)},o},u=function(r){for(var t=1<<r,e=(1<<r)+1,n=r+1,i=f(),u=0;t>u;u+=1)i.add(String.fromCharCode(u));i.add(String.fromCharCode(t)),i.add(String.fromCharCode(e));var c=l(),s=a(c);s.write(t,n);var g=0,h=String.fromCharCode(o[g]);for(g+=1;g<o.length;){var v=String.fromCharCode(o[g]);g+=1,i.contains(h+v)?h+=v:(s.write(i.indexOf(h),n),i.size()<4095&&(i.size()==1<<n&&(n+=1),i.add(h+v)),h=v)}return s.write(i.indexOf(h),n),s.write(e,n),s.flush(),c.toByteArray()},f=function(){var r={},t=0,e={};return e.add=function(n){if(e.contains(n))throw new Error("dup key:"+n);r[n]=t,t+=1},e.size=function(){return t},e.indexOf=function(t){return r[t]},e.contains=function(t){return"undefined"!=typeof r[t]},e};return i},v=function(r,t,e,n){for(var o=h(r,t),i=0;t>i;i+=1)for(var a=0;r>a;a+=1)o.setPixel(a,i,e(a,i));var u=l();o.write(u);for(var f=s(),c=u.toByteArray(),g=0;g<c.length;g+=1)f.writeByte(c[g]);f.flush();var v="";return v+="<img",v+=' src="',v+="data:image/gif;base64,",v+=f,v+='"',v+=' width="',v+=r,v+='"',v+=' height="',v+=t,v+='"',n&&(v+=' alt="',v+=n,v+='"'),v+="/>"};return t}();return function(e){"function"==typeof define&&define.amd?define([],e):"object"==typeof t&&(r.exports=e())}(function(){return e}),!function(r){r.stringToBytes=function(r){function t(r){for(var t=[],e=0;e<r.length;e++){var n=r.charCodeAt(e);128>n?t.push(n):2048>n?t.push(192|n>>6,128|63&n):55296>n||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(e++,n=65536+((1023&n)<<10|1023&r.charCodeAt(e)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}return t(r)}}(e),e}(),i=function(r,t){var i=arguments.length<=2||void 0===arguments[2]?1:arguments[2];i=Math.max(1,i);for(var a=i;40>=a;a+=1)try{var u=function(){var e=o(a,t);e.addData(r),e.make();var n=e.getModuleCount(),i=function(r,t){return r>=0&&n>r&&t>=0&&n>t&&e.isDark(r,t)};return{v:{text:r,level:t,version:a,moduleCount:n,isDark:i}}}();if("object"===("undefined"==typeof u?"undefined":e(u)))return u.v}catch(f){if(!n.test(f.message))throw f}return null},a=function(){var r=arguments.length<=0||void 0===arguments[0]?"":arguments[0],t=arguments.length<=1||void 0===arguments[1]?"L":arguments[1],e=arguments.length<=2||void 0===arguments[2]?1:arguments[2],n=arguments.length<=3||void 0===arguments[3]?0:arguments[3],o=i(r,t,e);return o&&!function(){var r=o.isDark;o.moduleCount+=2*n,o.isDark=function(t,e){return r(t-n,e-n)}}(),o};r.exports=a},function(r,t,e){"use strict";var n=e(5),o=e(6),i=function(r,t){r.fillStyle=t.back,r.fillRect(0,0,t.size,t.size)},a=function(r,t,e,n,o,i){r.isDark(o,i)&&t.rect(i*n,o*n,n,n)},u=function(r,t,e){if(r){var o=e.rounded>0&&e.rounded<=100?n:a,i=r.moduleCount,u=e.size/i,f=0;e.crisp&&(u=Math.floor(u),f=Math.floor((e.size-u*i)/2)),t.translate(f,f),t.beginPath();for(var c=0;i>c;c+=1)for(var l=0;i>l;l+=1)o(r,t,e,u,c,l);t.fillStyle=e.fill,t.fill(),t.translate(-f,-f)}},f=function(r,t,e){i(t,e),u(r,t,e),o(t,e)};r.exports=f},function(r,t){"use strict";var e=function(r){return{c:r,m:function(){var r;return(r=this.c).moveTo.apply(r,arguments),this},l:function(){var r;return(r=this.c).lineTo.apply(r,arguments),this},a:function(){var r;return(r=this.c).arcTo.apply(r,arguments),this}}},n=function(r,t,e,n,o,i,a,u,f,c){a?r.m(t+i,e):r.m(t,e),u?r.l(n-i,e).a(n,e,n,o,i):r.l(n,e),f?r.l(n,o-i).a(n,o,t,o,i):r.l(n,o),c?r.l(t+i,o).a(t,o,t,e,i):r.l(t,o),a?r.l(t,e+i).a(t,e,n,e,i):r.l(t,e)},o=function(r,t,e,n,o,i,a,u,f,c){a&&r.m(t+i,e).l(t,e).l(t,e+i).a(t,e,t+i,e,i),u&&r.m(n-i,e).l(n,e).l(n,e+i).a(n,e,n-i,e,i),f&&r.m(n-i,o).l(n,o).l(n,o-i).a(n,o,n-i,o,i),c&&r.m(t+i,o).l(t,o).l(t,o-i).a(t,o,t+i,o,i)},i=function(r,t,i,a,u,f){var c=f*a,l=u*a,s=c+a,g=l+a,h=.005*i.rounded*a,v=r.isDark,d=u-1,w=u+1,y=f-1,p=f+1,m=v(u,f),A=v(d,y),B=v(d,f),E=v(d,p),T=v(u,p),M=v(w,p),k=v(w,f),b=v(w,y),x=v(u,y),D=e(t);m?n(D,c,l,s,g,h,!B&&!x,!B&&!T,!k&&!T,!k&&!x):o(D,c,l,s,g,h,B&&x&&A,B&&T&&E,k&&T&&M,k&&x&&b)};r.exports=i},function(r,t){"use strict";var e=function(r,t){var e=t.size,n="bold "+.01*t.mSize*e+"px "+t.fontname;r.strokeStyle=t.back,r.lineWidth=.01*t.mSize*e*.1,r.fillStyle=t.fontcolor,r.font=n;var o=r.measureText(t.label).width,i=.01*t.mSize,a=o/e,u=(1-a)*t.mPosX*.01,f=(1-i)*t.mPosY*.01,c=u*e,l=f*e+.75*t.mSize*.01*e;r.strokeText(t.label,c,l),r.fillText(t.label,c,l)},n=function(r,t){var e=t.size,n=t.image.naturalWidth||1,o=t.image.naturalHeight||1,i=.01*t.mSize,a=i*n/o,u=(1-a)*t.mPosX*.01,f=(1-i)*t.mPosY*.01,c=u*e,l=f*e,s=a*e,g=i*e;r.drawImage(t.image,c,l,s,g)},o=function(r,t){var o=t.mode;"label"===o?e(r,t):"image"===o&&n(r,t)};r.exports=o}])});</script>
7340for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
73417,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
73420<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
7343setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
7344j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
7345b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7346c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
73470,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7348(d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
734978,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
7350j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
7351a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
7352a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
73532)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
7354LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
7355this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7356[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7357116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
735843,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
73593,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
736055,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
736145,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7362(a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7363correctLevel:3,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7364j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
7365d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7366</script>
7367 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 26714 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoinjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
7368(function (global){ 26715(function (global){
7369'use strict'; 26716'use strict';
@@ -55204,6 +74551,7 @@ window.Entropy = new (function() {
55204 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event"); 74551 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
55205 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count"); 74552 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
55206 DOM.entropyBinary = DOM.entropyContainer.find(".binary"); 74553 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
74554 DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes");
55207 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length"); 74555 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
55208 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning"); 74556 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
55209 DOM.phrase = $(".phrase"); 74557 DOM.phrase = $(".phrase");
@@ -55386,6 +74734,8 @@ window.Entropy = new (function() {
55386 var passphrase = DOM.passphrase.val(); 74734 var passphrase = DOM.passphrase.val();
55387 calcBip32RootKeyFromSeed(phrase, passphrase); 74735 calcBip32RootKeyFromSeed(phrase, passphrase);
55388 calcForDerivationPath(); 74736 calcForDerivationPath();
74737 // Show the word indexes
74738 showWordIndexes();
55389 } 74739 }
55390 74740
55391 function tabChanged() { 74741 function tabChanged() {
@@ -55587,10 +74937,20 @@ window.Entropy = new (function() {
55587 showValidationError(errorText); 74937 showValidationError(errorText);
55588 return; 74938 return;
55589 } 74939 }
74940 // get the amount of entropy to use
55590 var numWords = parseInt(DOM.generatedStrength.val()); 74941 var numWords = parseInt(DOM.generatedStrength.val());
55591 var strength = numWords / 3 * 32; 74942 var strength = numWords / 3 * 32;
55592 var words = mnemonic.generate(strength); 74943 var buffer = new Uint8Array(strength / 8);
74944 // create secure entropy
74945 var data = crypto.getRandomValues(buffer);
74946 // show the words
74947 var words = mnemonic.toMnemonic(data);
55593 DOM.phrase.val(words); 74948 DOM.phrase.val(words);
74949 // show the entropy
74950 var entropyHex = uint8ArrayToHex(data);
74951 DOM.entropy.val(entropyHex);
74952 // ensure entropy fields are consistent with what is being displayed
74953 DOM.entropyMnemonicLength.val("raw");
55594 return words; 74954 return words;
55595 } 74955 }
55596 74956
@@ -56270,6 +75630,8 @@ window.Entropy = new (function() {
56270 var phrase = mnemonic.toMnemonic(entropyArr); 75630 var phrase = mnemonic.toMnemonic(entropyArr);
56271 // Set the mnemonic in the UI 75631 // Set the mnemonic in the UI
56272 DOM.phrase.val(phrase); 75632 DOM.phrase.val(phrase);
75633 // Show the word indexes
75634 showWordIndexes();
56273 } 75635 }
56274 75636
56275 function clearEntropyFeedback() { 75637 function clearEntropyFeedback() {
@@ -56392,8 +75754,13 @@ window.Entropy = new (function() {
56392 function createQr(e) { 75754 function createQr(e) {
56393 var content = e.target.textContent || e.target.value; 75755 var content = e.target.textContent || e.target.value;
56394 if (content) { 75756 if (content) {
56395 var size = 130; 75757 var qrEl = kjua({
56396 DOM.qrImage.qrcode({width: size, height: size, text: content}); 75758 text: content,
75759 render: "canvas",
75760 size: 310,
75761 ecLevel: 'H',
75762 });
75763 DOM.qrImage.append(qrEl);
56397 if (!showQr) { 75764 if (!showQr) {
56398 DOM.qrHider.addClass("hidden"); 75765 DOM.qrHider.addClass("hidden");
56399 } 75766 }
@@ -56495,6 +75862,32 @@ window.Entropy = new (function() {
56495 return parseInt(lastBitClean); 75862 return parseInt(lastBitClean);
56496 } 75863 }
56497 75864
75865 function uint8ArrayToHex(a) {
75866 var s = ""
75867 for (var i=0; i<a.length; i++) {
75868 var h = a[i].toString(16);
75869 while (h.length < 2) {
75870 h = "0" + h;
75871 }
75872 s = s + h;
75873 }
75874 return s;
75875 }
75876
75877 function showWordIndexes() {
75878 var phrase = DOM.phrase.val();
75879 var words = phraseToWordArray(phrase);
75880 var wordIndexes = [];
75881 var language = getLanguage();
75882 for (var i=0; i<words.length; i++) {
75883 var word = words[i];
75884 var wordIndex = WORDLISTS[language].indexOf(word);
75885 wordIndexes.push(wordIndex);
75886 }
75887 var wordIndexesStr = wordIndexes.join(", ");
75888 DOM.entropyWordIndexes.text(wordIndexesStr);
75889 }
75890
56498 var networks = [ 75891 var networks = [
56499 { 75892 {
56500 name: "BCH - Bitcoin Cash", 75893 name: "BCH - Bitcoin Cash",