#80 Remove jquery, load it from CDN
Merged 6 years ago by frantisekz. Opened 6 years ago by frantisekz.

@@ -1,1 +0,0 @@ 

- .qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:bold}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:medium none;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}/*!Light tooltip style */ .qtip-light{background-color:white;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}/*!Dark tooltip style */ .qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}/*!Cream tooltip style */ .qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}/*!Red tooltip style */ .qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon{border-color:#D95252}.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252}/*!Green tooltip style */ .qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}/*!Blue tooltip style */ .qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:white;border:0 solid transparent;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));background-image:-webkit-linear-gradient(top,#4A4A4A 0,black 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,black 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,black 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,black 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,0.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:white;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,0.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,0.4);box-shadow:4px 4px 5px rgba(0,0,0,0.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:white;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:black;background:rgba(0,0,0,.87);color:white;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:bold;line-height:16px;text-shadow:0 1px black}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:normal;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:white;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed;left:0;top:0;width:100%;height:100%}#qtip-overlay.blurs{cursor:pointer}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:black;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important}@font-face{font-family:'ComfortaaThin';src:url('fonts/Comfortaa_Thin-webfont.eot');src:local('☺'),url('fonts/Comfortaa_Thin-webfont.woff') format('woff'),url('fonts/Comfortaa_Thin-webfont.ttf') format('truetype'),url('fonts/Comfortaa_Thin-webfont.svg#webfontReo2lGxG') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'ComfortaaRegular';src:url('fonts/Comfortaa_Regular-webfont.eot');src:local('☺'),url('fonts/Comfortaa_Regular-webfont.woff') format('woff'),url('fonts/Comfortaa_Regular-webfont.ttf') format('truetype'),url('fonts/Comfortaa_Regular-webfont.svg#webfontxbL3cos8') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'ComfortaaBold';src:url('fonts/Comfortaa_Bold-webfont.eot');src:local('☺'),url('fonts/Comfortaa_Bold-webfont.woff') format('woff'),url('fonts/Comfortaa_Bold-webfont.ttf') format('truetype'),url('fonts/Comfortaa_Bold-webfont.svg#webfontjkcnhWWT') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'CantarellRegular';src:url('fonts/Cantarell-Regular-webfont.eot');src:local('☺'),url('fonts/Cantarell-Regular-webfont.woff') format('woff'),url('fonts/Cantarell-Regular-webfont.ttf') format('truetype'),url('fonts/Cantarell-Regular-webfont.svg#webfontPQ4tPnyo') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'CantarellBold';src:url('fonts/Cantarell-Bold-webfont.eot');src:local('☺'),url('fonts/Cantarell-Bold-webfont.woff') format('woff'),url('fonts/Cantarell-Bold-webfont.ttf') format('truetype'),url('fonts/Cantarell-Bold-webfont.svg#webfont3gCLDhwY') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'CantarellBoldOblique';src:url('fonts/Cantarell-BoldOblique-webfont.eot');src:local('☺'),url('fonts/Cantarell-BoldOblique-webfont.woff') format('woff'),url('fonts/Cantarell-BoldOblique-webfont.ttf') format('truetype'),url('fonts/Cantarell-BoldOblique-webfont.svg#webfont3gCLDhwY') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'CantarellOblique';src:url('fonts/Cantarell-Oblique-webfont.eot');src:local('☺'),url('fonts/Cantarell-Oblique-webfont.woff') format('woff'),url('fonts/Cantarell-Oblique-webfont.ttf') format('truetype'),url('fonts/Cantarell-Oblique-webfont.svg#webfont3gCLDhwY') format('svg');font-weight:normal;font-style:normal}/*!* Bootstrap v4.0.0(https://getbootstrap.com) * Copyright 2011-2018 The Bootstrap Authors * Copyright 2011-2018 Twitter,Inc. * Licensed under MIT(https://github.com/twbs/bootstrap/blob/master/LICENSE) */ :root{--blue:#3c6eb4;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#3c6eb4;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:Open Sans;--font-family-monospace:"Hack",monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Open Sans";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3c6eb4;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#294b7b;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,.h1{font-size:2rem}h2,.h2{font-size:1.75rem}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:"Hack",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#586e75}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width:576px){.container{max-width:540px}}@media(min-width:768px){.container{max-width:720px}}@media(min-width:992px){.container{max-width:960px}}@media(min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.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,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media(min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media(min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media(min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media(min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#c8d6ea}.table-hover .table-primary:hover{background-color:#b6c8e3}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b6c8e3}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media(max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media(max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media(max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media(max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#94b2db;outline:0;box-shadow:0 0 0 .2rem rgba(60,110,180,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem+2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem+1px);padding-bottom:calc(0.375rem+1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem+1px);padding-bottom:calc(0.5rem+1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem+1px);padding-bottom:calc(0.25rem+1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem+2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem+2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media(min-width:576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(60,110,180,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#3c6eb4;border-color:#3c6eb4}.btn-primary:hover{color:#fff;background-color:#325c97;border-color:#2f578e}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(60,110,180,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#3c6eb4;border-color:#3c6eb4}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2f578e;border-color:#2c5184}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(60,110,180,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#3c6eb4;background-color:transparent;background-image:none;border-color:#3c6eb4}.btn-outline-primary:hover{color:#fff;background-color:#3c6eb4;border-color:#3c6eb4}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(60,110,180,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#3c6eb4;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#3c6eb4;border-color:#3c6eb4}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(60,110,180,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#3c6eb4;background-color:transparent}.btn-link:hover{color:#294b7b;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#3c6eb4}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.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(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#3c6eb4}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(60,110,180,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#bacde8}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#3c6eb4}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#3c6eb4}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(60,110,180,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(60,110,180,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#3c6eb4}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(60,110,180,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem+2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#94b2db;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(148,178,219,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem+2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem+2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem+2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem+2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#94b2db;box-shadow:0 0 0 .2rem rgba(60,110,180,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#94b2db}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem+2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem+2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#3c6eb4}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media(max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media(min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media(max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media(min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media(max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media(min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media(max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media(min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-0.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.625rem;margin-bottom:-0.75rem;margin-left:-0.625rem;border-bottom:0}.card-header-pills{margin-right:-0.625rem;margin-left:-0.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media(min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media(min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media(min-width:576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#3c6eb4;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#294b7b;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(60,110,180,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#3c6eb4;border-color:#3c6eb4}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#3c6eb4}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#2f578e}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media(min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#1f395e;background-color:#d8e2f0;border-color:#c8d6ea}.alert-primary hr{border-top-color:#b6c8e3}.alert-primary .alert-link{color:#122238}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#3c6eb4;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#3c6eb4;border-color:#3c6eb4}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#1f395e;background-color:#c8d6ea}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1f395e;background-color:#b6c8e3}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f395e;border-color:#1f395e}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-25%)}.modal.show .modal-dialog{transform:translate(0,0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% -(0.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% -(1.75rem * 2))}.modal-sm{max-width:300px}}@media(min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Open Sans";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Open Sans";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem+1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem+1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem+1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem+1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform .6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports(transform-style:preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0,0,0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports(transform-style:preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%,0,0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports(transform-style:preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%,0,0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#3c6eb4!important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#2f578e!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#3c6eb4!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media(min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media(min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media(min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media(min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media(min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media(min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media(min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media(min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media(min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media(min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media(min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media(min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports(position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media(min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media(min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media(min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media(min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media(min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media(min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media(min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media(min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#3c6eb4!important}a.text-primary:hover,a.text-primary:focus{color:#2f578e!important}.text-secondary{color:#6c757d!important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:hover,a.text-success:focus{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:hover,a.text-info:focus{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:hover,a.text-warning:focus{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:hover,a.text-danger:focus{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:hover,a.text-light:focus{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:hover,a.text-dark:focus{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,*::before,*::after{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:"(" attr(title) ")"}pre{white-space:pre-wrap!important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}.container-narrow{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width:576px){.container-narrow{max-width:34rem}}@media(min-width:768px){.container-narrow{max-width:45rem}}@media(min-width:992px){.container-narrow{max-width:45rem}}@media(min-width:1200px){.container-narrow{max-width:45rem}}.inline-list li{display:inline-block}.social-list li{margin:0 .4rem 1em 0}.social-list a{font-size:1.6em}.headline-list{margin-bottom:1em}.headline-list.flush{margin:0}.headline-list h4{font-weight:normal}.headline-list li{padding:1em/4 0;border-top:1px solid #d5d5d5}.post-list li{margin-bottom:1em}.bullet-list{list-style:square;margin:0 0 1em 1.2em;line-height:1.3}.bullet-list li{margin-bottom:1em}.text-list{margin:0 0 1em;line-height:1.3}.text-list li{margin-bottom:1em}.c-media-list__item{margin-bottom:1.5em}.c-tile-list{display:flex;flex-direction:column}@media all and (min-width:55rem){.c-tile-list{flex-direction:row;flex-wrap:wrap}}.c-tile-list__item{width:100%;margin-bottom:1em;position:relative}.c-tile-list__item:nth-child(2n){padding-right:0}@media all and (min-width:55rem){.c-tile-list__item{width:50%;margin:0;padding:0 1em 1em 0}}.c-thumbnail-list li{margin-bottom:1.5em}.c-thumbnail-list .c-block-media__media{width:80px}.c-thumbnail-list .c-block-media__headline{text-transform:none!important;font-size:1.5em}.c-color-bars-list li{max-width:480px;position:relative;height:80px;padding-top:15px;padding-left:20px;border:1px solid #d5d5d5;border-top:0;color:#55595c;font-size:1.3rem;font-weight:bold}.c-color-bars-list li:first-child{border-top:1px solid #d5d5d5}.c-color-bars-list li.cur{height:120px}.c-color-bars-list li.cur:before{position:absolute;height:100%;width:10px;bottom:0;left:0;content:"";background:#3c6eb4}.c-color-bars-list li.prev:before{position:absolute;height:100%;width:10px;bottom:0;left:0;content:"";background:#79db32}.c-color-bars-list li.old{color:#d5d5d5}.c-ticket-list{max-width:480px}.c-ticket-list li{border:1px solid #d5d5d5;border-top:0;padding:15px 20px;color:#808080}.c-ticket-list:first-child{border-top:1px solid #d5d5d5}.c-ticket-list .list-item-title,.c-ticket-list .list-item-data{float:left}.c-ticket-list .list-item-title{border-radius:20px;padding:4px 10px;background:#808080;color:white;font-size:1.2rem;font-weight:bold}.c-ticket-list .origin{float:right;margin-top:3px}.c-ticket-list .origin p{display:inline-block;margin-right:2px}.c-ticket-list .origin img{margin-bottom:5px}.c-ticket-list .c-widget-action-btn.btn{float:right;padding:3px 15px}.c-ticket-list .c-widget-action-btn.btn img{display:block}.c-ticket-list .list-subheader{font-size:1.2rem;font-weight:bold}.c-ticket-list .list-item-info,.c-ticket-list .list-item-data{margin:0;font-size:1.2rem}.nav-underline .nav-item.active,.nav-underline .nav-item.active:hover{box-shadow:0 -3px 0 0 #3c6eb4 inset}.nav-underline .nav-item.active .nav-link,.nav-underline .nav-item.active:hover .nav-link{color:#3c6eb4}.nav-underline li:hover{box-shadow:0 -3px 0 0 #ddd inset}.nav-underline li{padding-top:.2rem;padding-bottom:.2rem}.navbar-underline{background-color:#d5d5d5;border-top:1px solid #c8c8c8}pre{background-color:#fdf6e3;padding:1rem}.table-expand-col{min-width:100%}body{background-color:#495057}.modal-header{background-color:#eceeef}.modal-footer{border-top:0!important}.modal h4{text-transform:none!important}.modal-card{background-color:#d5d5d5;padding:15px}.modal-body h4{font-weight:600!important}.c-widget-header.card-header{padding:10px 10px 5px 10px;max-width:480px;border:1px solid #d5d5d5;border-radius:0!important;background:#f7f7f9}.c-widget-header h6{font-family:"Open Sans";font-size:1.3rem;font-weight:normal}.c-widget-header-btn{margin-top:-29px;float:right}.c-widget-action-btn.btn{padding:5px 10px;color:#a07cbc;font-weight:bold}.c-widget-action-btn.btn:hover,.c-widget-action-btn.btn:focus,.c-widget-action-btn.btn:active,.c-widget-action-btn.btn:active:focus{color:#a07cbc}.c-widget-view-more-btn button{padding:0;margin-right:5px;color:#808080;font-size:1.2rem}.c-widget-view-more-btn button:hover,.c-widget-view-more-btn button:focus{color:#55595c}.c-widget-view-more-btn img{margin-top:2px}.c-widget-meeting-event{max-width:480px;border:1px solid #d5d5d5;padding:15px 20px}.c-widget-meeting-event h6,.c-widget-meeting-event h5,.c-widget-meeting-event p{color:#55595c;font-family:"Open Sans"}.c-widget-meeting-event h5{font-weight:bold;font-size:2rem}.c-widget-meeting-event h6{margin-top:2px;margin-bottom:10px;font-size:1.1rem}.c-widget-meeting-event .date,.c-widget-meeting-event .time-ch{font-size:.9rem;float:left}.c-widget-meeting-event button{float:right}.c-widget-meeting-event .date{margin-right:20px}.c-widget-meeting-event .time-ch p,.c-widget-meeting-event .time-ch a{padding:0;margin:0}.c-widget-meeting-request{max-width:480px;border:1px solid #d5d5d5;padding:15px 20px}.c-widget-meeting-request h6,.c-widget-meeting-request h5{color:#55595c;font-family:"Open Sans"}.c-widget-meeting-request h5{float:left;font-weight:bold;font-size:2rem}.c-widget-meeting-request h6{margin-top:2px;margin-bottom:10px;font-size:1.1rem}.c-widget-meeting-request .meeting-request-btn{float:right}.masthead{background-image:linear-gradient(to bottom,#eee 0,#ddd 100%);background-repeat:repeat-x;padding-top:10px;padding-bottom:10px}.subheader{background:#f8f9fa;border-bottom:1px solid #dee2e6}.subheader .nav-tabs{margin-bottom:-1px}.footer{background-color:#495057}.bodycontent{background:#fff}.document-docutils>.section{padding-bottom:1rem}.document-docutils pre{}.document-docutils pre .comment{color:#586e75}.document-docutils pre .error{color:#93a1a1}.document-docutils pre .generic{color:#93a1a1}.document-docutils pre .keyword{color:#859900}.document-docutils pre .literal{color:#93a1a1}.document-docutils pre .name{color:#93a1a1}.document-docutils pre .operator{color:#859900}.document-docutils pre .other{color:#cb4b16}.document-docutils pre .punctuation{color:#93a1a1}.document-docutils pre .comment.multiline{color:#586e75}.document-docutils pre .comment.preproc{color:#859900}.document-docutils pre .comment.single{color:#586e75}.document-docutils pre .comment.special{color:#859900}.document-docutils pre .generic.deleted{color:#2aa198}.document-docutils pre .generic.emph{color:#93a1a1;font-style:italic}.document-docutils pre .generic.error{color:#dc322f}.document-docutils pre .generic.heading{color:#cb4b16}.document-docutils pre .generic.inserted{color:#859900}.document-docutils pre .generic.output{color:#93a1a1}.document-docutils pre .generic.prompt{color:#93a1a1}.document-docutils pre .generic.strong{color:#93a1a1;font-weight:bold}.document-docutils pre .generic.subheading{color:#cb4b16}.document-docutils pre .generic.traceback{color:#93a1a1}.document-docutils pre .keyword.constant{color:#cb4b16}.document-docutils pre .keyword.declaration{color:#268bd2}.document-docutils pre .keyword.namespace{color:#859900}.document-docutils pre .keyword.pseudo{color:#859900}.document-docutils pre .keyword.reserved{color:#268bd2}.document-docutils pre .keyword.type{color:#dc322f}.document-docutils pre .literal.date{color:#93a1a1}.document-docutils pre .literal.number{color:#2aa198}.document-docutils pre .literal.string{color:#2aa198}.document-docutils pre .name.attribute{color:#93a1a1}.document-docutils pre .name.builtin{color:#B58900}.document-docutils pre .name.class{color:#268bd2}.document-docutils pre .name.constant{color:#cb4b16}.document-docutils pre .name.decorator{color:#268bd2}.document-docutils pre .name.entity{color:#cb4b16}.document-docutils pre .name.exception{color:#cb4b16}.document-docutils pre .name.function{color:#268bd2}.document-docutils pre .name.label{color:#93a1a1}.document-docutils pre .name.namespace{color:#93a1a1}.document-docutils pre .name.other{color:#93a1a1}.document-docutils pre .name.property{color:#93a1a1}.document-docutils pre .name.tag{color:#268bd2}.document-docutils pre .name.variable{color:#268bd2}.document-docutils pre .operator.word{color:#859900}.document-docutils pre .text.whitespace{color:#93a1a1}.document-docutils pre .literal.number.float{color:#2aa198}.document-docutils pre .literal.number.hex{color:#2aa198}.document-docutils pre .literal.number.integer{color:#2aa198}.document-docutils pre .literal.number.oct{color:#2aa198}.document-docutils pre .literal.string.backtick{color:#586e75}.document-docutils pre .literal.string.char{color:#2aa198}.document-docutils pre .literal.string.doc{color:#93a1a1}.document-docutils pre .literal.string.double{color:#2aa198}.document-docutils pre .literal.string.escape{color:#cb4b16}.document-docutils pre .literal.string.heredoc{color:#93a1a1}.document-docutils pre .literal.string.interpol{color:#2aa198}.document-docutils pre .literal.string.other{color:#2aa198}.document-docutils pre .literal.string.regex{color:#dc322f}.document-docutils pre .literal.string.single{color:#2aa198}.document-docutils pre .literal.string.symbol{color:#2aa198}.document-docutils pre .name.builtin.pseudo{color:#268bd2}.document-docutils pre .name.variable.class{color:#268bd2}.document-docutils pre .name.variable.global{color:#268bd2}.document-docutils pre .name.variable.instance{color:#268bd2}.document-docutils pre .literal.number.integer.long{color:#2aa198}.fedora-preheader{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:100%!important;position:relative;background:white url(../img/repeater.png) 0 100% repeat-x;display:block;color:black}.fedora-preheader a{color:#000}.fedora-header{display:block;text-indent:-9999px;background:url(../img/blockerbugs-logo-light.png) 10px 50% no-repeat;height:73px;width:175px;overflow:hidden;text-decoration:none}.fedora-preheader-staging{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:100%!important;position:relative;display:block;color:black}.fedora-header-staging{display:block;text-indent:-9999px;background:url(../img/blockerbugs-logo-light.png) no-repeat;background-size:100%;height:40px;width:175px;overflow:hidden;text-decoration:none}.login-header{display:flex;align-items:center;justify-content:center;height:100%}#main-nav button a{color:#333}.btn-primary a{color:#eee!important}#main-nav{padding-top:2em}#secondary-nav{padding-top:.75em;padding-bottom:1.5em}table.tablesorter thead tr .headerSortUp{background-image:url(../img/asc.gif)}.thead-dark th{color:#55595c!important;border:none!important;background-image:linear-gradient(to bottom,#eee 0,#ddd 100%)!important}.btn-light{background-color:white}.btn-light .active{background-color:#ddd!important}table.tablesorter tr:nth-child(even){background-color:#f7f7f9}table.tablesorter tr:nth-child(odd){background-color:white}.btn-bb-light{background-color:#dae0e5;border-color:#d3d9df}.foundicon-idea.yellow{color:#e59728}.foundicon-refresh.green{color:#61b921}.needinfo{font-weight:bold;color:#885aab;font-size:17px}body{margin-bottom:200px}.footer{position:absolute;display:flex;align-items:center;justify-content:center;bottom:0;width:100%;height:100px;vertical-align:middle}html{position:relative;min-height:100%;overflow-y:scroll}.fedora-prefooter{color:#818a91}textarea{width:100%;height:150px}fieldset{border:1px solid #dae0e5!important;border-radius:4px;padding:1em}fieldset legend{width:unset!important;font-size:1em;margin-left:1em;padding-left:2px;padding-right:2px;font-weight:600}form label{font-weight:600}.big-checkbox{width:24px;height:24px}.alert{margin-top:1em!important}@font-face{font-family:"GeneralFoundicons";src:url("fonts/general_foundicons.eot");src:url("fonts/general_foundicons.eot?#iefix") format("embedded-opentype"),url("fonts/general_foundicons.woff") format("woff"),url("fonts/general_foundicons.ttf") format("truetype"),url("fonts/general_foundicons.svg#GeneralFoundicons") format("svg");font-weight:normal;font-style:normal}[class*="foundicon-"]{display:inline;width:auto;height:auto;line-height:inherit;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat}[class*="foundicon-"]:before{font-family:"GeneralFoundicons";font-weight:normal;font-style:normal;text-decoration:inherit}.foundicon-settings:before{content:"\f000"}.foundicon-heart:before{content:"\f001"}.foundicon-star:before{content:"\f002"}.foundicon-plus:before{content:"\f003"}.foundicon-minus:before{content:"\f004"}.foundicon-checkmark:before{content:"\f005"}.foundicon-remove:before{content:"\f006"}.foundicon-mail:before{content:"\f007"}.foundicon-calendar:before{content:"\f008"}.foundicon-page:before{content:"\f009"}.foundicon-tools:before{content:"\f00a"}.foundicon-globe:before{content:"\f00b"}.foundicon-home:before{content:"\f00c"}.foundicon-quote:before{content:"\f00d"}.foundicon-people:before{content:"\f00e"}.foundicon-monitor:before{content:"\f00f"}.foundicon-laptop:before{content:"\f010"}.foundicon-phone:before{content:"\f011"}.foundicon-cloud:before{content:"\f012"}.foundicon-error:before{content:"\f013"}.foundicon-right-arrow:before{content:"\f014"}.foundicon-left-arrow:before{content:"\f015"}.foundicon-up-arrow:before{content:"\f016"}.foundicon-down-arrow:before{content:"\f017"}.foundicon-trash:before{content:"\f018"}.foundicon-add-doc:before{content:"\f019"}.foundicon-edit:before{content:"\f01a"}.foundicon-lock:before{content:"\f01b"}.foundicon-unlock:before{content:"\f01c"}.foundicon-refresh:before{content:"\f01d"}.foundicon-paper-clip:before{content:"\f01e"}.foundicon-video:before{content:"\f01f"}.foundicon-photo:before{content:"\f020"}.foundicon-graph:before{content:"\f021"}.foundicon-idea:before{content:"\f022"}.foundicon-mic:before{content:"\f023"}.foundicon-cart:before{content:"\f024"}.foundicon-address-book:before{content:"\f025"}.foundicon-compass:before{content:"\f026"}.foundicon-flag:before{content:"\f027"}.foundicon-location:before{content:"\f028"}.foundicon-clock:before{content:"\f029"}.foundicon-folder:before{content:"\f02a"}.foundicon-inbox:before{content:"\f02b"}.foundicon-website:before{content:"\f02c"}.foundicon-smiley:before{content:"\f02d"}.foundicon-search:before{content:"\f02e"} 

\ No newline at end of file

@@ -1,10364 +0,0 @@ 

- /*!

-  * jQuery JavaScript Library v3.3.1

-  * https://jquery.com/

-  *

-  * Includes Sizzle.js

-  * https://sizzlejs.com/

-  *

-  * Copyright JS Foundation and other contributors

-  * Released under the MIT license

-  * https://jquery.org/license

-  *

-  * Date: 2018-01-20T17:24Z

-  */

- ( function( global, factory ) {

- 

- 	"use strict";

- 

- 	if ( typeof module === "object" && typeof module.exports === "object" ) {

- 

- 		// For CommonJS and CommonJS-like environments where a proper `window`

- 		// is present, execute the factory and get jQuery.

- 		// For environments that do not have a `window` with a `document`

- 		// (such as Node.js), expose a factory as module.exports.

- 		// This accentuates the need for the creation of a real `window`.

- 		// e.g. var jQuery = require("jquery")(window);

- 		// See ticket #14549 for more info.

- 		module.exports = global.document ?

- 			factory( global, true ) :

- 			function( w ) {

- 				if ( !w.document ) {

- 					throw new Error( "jQuery requires a window with a document" );

- 				}

- 				return factory( w );

- 			};

- 	} else {

- 		factory( global );

- 	}

- 

- // Pass this if window is not defined yet

- } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {

- 

- // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1

- // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode

- // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common

- // enough that all such attempts are guarded in a try block.

- "use strict";

- 

- var arr = [];

- 

- var document = window.document;

- 

- var getProto = Object.getPrototypeOf;

- 

- var slice = arr.slice;

- 

- var concat = arr.concat;

- 

- var push = arr.push;

- 

- var indexOf = arr.indexOf;

- 

- var class2type = {};

- 

- var toString = class2type.toString;

- 

- var hasOwn = class2type.hasOwnProperty;

- 

- var fnToString = hasOwn.toString;

- 

- var ObjectFunctionString = fnToString.call( Object );

- 

- var support = {};

- 

- var isFunction = function isFunction( obj ) {

- 

-       // Support: Chrome <=57, Firefox <=52

-       // In some browsers, typeof returns "function" for HTML <object> elements

-       // (i.e., `typeof document.createElement( "object" ) === "function"`).

-       // We don't want to classify *any* DOM node as a function.

-       return typeof obj === "function" && typeof obj.nodeType !== "number";

-   };

- 

- 

- var isWindow = function isWindow( obj ) {

- 		return obj != null && obj === obj.window;

- 	};

- 

- 

- 

- 

- 	var preservedScriptAttributes = {

- 		type: true,

- 		src: true,

- 		noModule: true

- 	};

- 

- 	function DOMEval( code, doc, node ) {

- 		doc = doc || document;

- 

- 		var i,

- 			script = doc.createElement( "script" );

- 

- 		script.text = code;

- 		if ( node ) {

- 			for ( i in preservedScriptAttributes ) {

- 				if ( node[ i ] ) {

- 					script[ i ] = node[ i ];

- 				}

- 			}

- 		}

- 		doc.head.appendChild( script ).parentNode.removeChild( script );

- 	}

- 

- 

- function toType( obj ) {

- 	if ( obj == null ) {

- 		return obj + "";

- 	}

- 

- 	// Support: Android <=2.3 only (functionish RegExp)

- 	return typeof obj === "object" || typeof obj === "function" ?

- 		class2type[ toString.call( obj ) ] || "object" :

- 		typeof obj;

- }

- /* global Symbol */

- // Defining this global in .eslintrc.json would create a danger of using the global

- // unguarded in another place, it seems safer to define global only for this module

- 

- 

- 

- var

- 	version = "3.3.1",

- 

- 	// Define a local copy of jQuery

- 	jQuery = function( selector, context ) {

- 

- 		// The jQuery object is actually just the init constructor 'enhanced'

- 		// Need init if jQuery is called (just allow error to be thrown if not included)

- 		return new jQuery.fn.init( selector, context );

- 	},

- 

- 	// Support: Android <=4.0 only

- 	// Make sure we trim BOM and NBSP

- 	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;

- 

- jQuery.fn = jQuery.prototype = {

- 

- 	// The current version of jQuery being used

- 	jquery: version,

- 

- 	constructor: jQuery,

- 

- 	// The default length of a jQuery object is 0

- 	length: 0,

- 

- 	toArray: function() {

- 		return slice.call( this );

- 	},

- 

- 	// Get the Nth element in the matched element set OR

- 	// Get the whole matched element set as a clean array

- 	get: function( num ) {

- 

- 		// Return all the elements in a clean array

- 		if ( num == null ) {

- 			return slice.call( this );

- 		}

- 

- 		// Return just the one element from the set

- 		return num < 0 ? this[ num + this.length ] : this[ num ];

- 	},

- 

- 	// Take an array of elements and push it onto the stack

- 	// (returning the new matched element set)

- 	pushStack: function( elems ) {

- 

- 		// Build a new jQuery matched element set

- 		var ret = jQuery.merge( this.constructor(), elems );

- 

- 		// Add the old object onto the stack (as a reference)

- 		ret.prevObject = this;

- 

- 		// Return the newly-formed element set

- 		return ret;

- 	},

- 

- 	// Execute a callback for every element in the matched set.

- 	each: function( callback ) {

- 		return jQuery.each( this, callback );

- 	},

- 

- 	map: function( callback ) {

- 		return this.pushStack( jQuery.map( this, function( elem, i ) {

- 			return callback.call( elem, i, elem );

- 		} ) );

- 	},

- 

- 	slice: function() {

- 		return this.pushStack( slice.apply( this, arguments ) );

- 	},

- 

- 	first: function() {

- 		return this.eq( 0 );

- 	},

- 

- 	last: function() {

- 		return this.eq( -1 );

- 	},

- 

- 	eq: function( i ) {

- 		var len = this.length,

- 			j = +i + ( i < 0 ? len : 0 );

- 		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );

- 	},

- 

- 	end: function() {

- 		return this.prevObject || this.constructor();

- 	},

- 

- 	// For internal use only.

- 	// Behaves like an Array's method, not like a jQuery method.

- 	push: push,

- 	sort: arr.sort,

- 	splice: arr.splice

- };

- 

- jQuery.extend = jQuery.fn.extend = function() {

- 	var options, name, src, copy, copyIsArray, clone,

- 		target = arguments[ 0 ] || {},

- 		i = 1,

- 		length = arguments.length,

- 		deep = false;

- 

- 	// Handle a deep copy situation

- 	if ( typeof target === "boolean" ) {

- 		deep = target;

- 

- 		// Skip the boolean and the target

- 		target = arguments[ i ] || {};

- 		i++;

- 	}

- 

- 	// Handle case when target is a string or something (possible in deep copy)

- 	if ( typeof target !== "object" && !isFunction( target ) ) {

- 		target = {};

- 	}

- 

- 	// Extend jQuery itself if only one argument is passed

- 	if ( i === length ) {

- 		target = this;

- 		i--;

- 	}

- 

- 	for ( ; i < length; i++ ) {

- 

- 		// Only deal with non-null/undefined values

- 		if ( ( options = arguments[ i ] ) != null ) {

- 

- 			// Extend the base object

- 			for ( name in options ) {

- 				src = target[ name ];

- 				copy = options[ name ];

- 

- 				// Prevent never-ending loop

- 				if ( target === copy ) {

- 					continue;

- 				}

- 

- 				// Recurse if we're merging plain objects or arrays

- 				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||

- 					( copyIsArray = Array.isArray( copy ) ) ) ) {

- 

- 					if ( copyIsArray ) {

- 						copyIsArray = false;

- 						clone = src && Array.isArray( src ) ? src : [];

- 

- 					} else {

- 						clone = src && jQuery.isPlainObject( src ) ? src : {};

- 					}

- 

- 					// Never move original objects, clone them

- 					target[ name ] = jQuery.extend( deep, clone, copy );

- 

- 				// Don't bring in undefined values

- 				} else if ( copy !== undefined ) {

- 					target[ name ] = copy;

- 				}

- 			}

- 		}

- 	}

- 

- 	// Return the modified object

- 	return target;

- };

- 

- jQuery.extend( {

- 

- 	// Unique for each copy of jQuery on the page

- 	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),

- 

- 	// Assume jQuery is ready without the ready module

- 	isReady: true,

- 

- 	error: function( msg ) {

- 		throw new Error( msg );

- 	},

- 

- 	noop: function() {},

- 

- 	isPlainObject: function( obj ) {

- 		var proto, Ctor;

- 

- 		// Detect obvious negatives

- 		// Use toString instead of jQuery.type to catch host objects

- 		if ( !obj || toString.call( obj ) !== "[object Object]" ) {

- 			return false;

- 		}

- 

- 		proto = getProto( obj );

- 

- 		// Objects with no prototype (e.g., `Object.create( null )`) are plain

- 		if ( !proto ) {

- 			return true;

- 		}

- 

- 		// Objects with prototype are plain iff they were constructed by a global Object function

- 		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;

- 		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;

- 	},

- 

- 	isEmptyObject: function( obj ) {

- 

- 		/* eslint-disable no-unused-vars */

- 		// See https://github.com/eslint/eslint/issues/6125

- 		var name;

- 

- 		for ( name in obj ) {

- 			return false;

- 		}

- 		return true;

- 	},

- 

- 	// Evaluates a script in a global context

- 	globalEval: function( code ) {

- 		DOMEval( code );

- 	},

- 

- 	each: function( obj, callback ) {

- 		var length, i = 0;

- 

- 		if ( isArrayLike( obj ) ) {

- 			length = obj.length;

- 			for ( ; i < length; i++ ) {

- 				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {

- 					break;

- 				}

- 			}

- 		} else {

- 			for ( i in obj ) {

- 				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {

- 					break;

- 				}

- 			}

- 		}

- 

- 		return obj;

- 	},

- 

- 	// Support: Android <=4.0 only

- 	trim: function( text ) {

- 		return text == null ?

- 			"" :

- 			( text + "" ).replace( rtrim, "" );

- 	},

- 

- 	// results is for internal usage only

- 	makeArray: function( arr, results ) {

- 		var ret = results || [];

- 

- 		if ( arr != null ) {

- 			if ( isArrayLike( Object( arr ) ) ) {

- 				jQuery.merge( ret,

- 					typeof arr === "string" ?

- 					[ arr ] : arr

- 				);

- 			} else {

- 				push.call( ret, arr );

- 			}

- 		}

- 

- 		return ret;

- 	},

- 

- 	inArray: function( elem, arr, i ) {

- 		return arr == null ? -1 : indexOf.call( arr, elem, i );

- 	},

- 

- 	// Support: Android <=4.0 only, PhantomJS 1 only

- 	// push.apply(_, arraylike) throws on ancient WebKit

- 	merge: function( first, second ) {

- 		var len = +second.length,

- 			j = 0,

- 			i = first.length;

- 

- 		for ( ; j < len; j++ ) {

- 			first[ i++ ] = second[ j ];

- 		}

- 

- 		first.length = i;

- 

- 		return first;

- 	},

- 

- 	grep: function( elems, callback, invert ) {

- 		var callbackInverse,

- 			matches = [],

- 			i = 0,

- 			length = elems.length,

- 			callbackExpect = !invert;

- 

- 		// Go through the array, only saving the items

- 		// that pass the validator function

- 		for ( ; i < length; i++ ) {

- 			callbackInverse = !callback( elems[ i ], i );

- 			if ( callbackInverse !== callbackExpect ) {

- 				matches.push( elems[ i ] );

- 			}

- 		}

- 

- 		return matches;

- 	},

- 

- 	// arg is for internal usage only

- 	map: function( elems, callback, arg ) {

- 		var length, value,

- 			i = 0,

- 			ret = [];

- 

- 		// Go through the array, translating each of the items to their new values

- 		if ( isArrayLike( elems ) ) {

- 			length = elems.length;

- 			for ( ; i < length; i++ ) {

- 				value = callback( elems[ i ], i, arg );

- 

- 				if ( value != null ) {

- 					ret.push( value );

- 				}

- 			}

- 

- 		// Go through every key on the object,

- 		} else {

- 			for ( i in elems ) {

- 				value = callback( elems[ i ], i, arg );

- 

- 				if ( value != null ) {

- 					ret.push( value );

- 				}

- 			}

- 		}

- 

- 		// Flatten any nested arrays

- 		return concat.apply( [], ret );

- 	},

- 

- 	// A global GUID counter for objects

- 	guid: 1,

- 

- 	// jQuery.support is not used in Core but other projects attach their

- 	// properties to it so it needs to exist.

- 	support: support

- } );

- 

- if ( typeof Symbol === "function" ) {

- 	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];

- }

- 

- // Populate the class2type map

- jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),

- function( i, name ) {

- 	class2type[ "[object " + name + "]" ] = name.toLowerCase();

- } );

- 

- function isArrayLike( obj ) {

- 

- 	// Support: real iOS 8.2 only (not reproducible in simulator)

- 	// `in` check used to prevent JIT error (gh-2145)

- 	// hasOwn isn't used here due to false negatives

- 	// regarding Nodelist length in IE

- 	var length = !!obj && "length" in obj && obj.length,

- 		type = toType( obj );

- 

- 	if ( isFunction( obj ) || isWindow( obj ) ) {

- 		return false;

- 	}

- 

- 	return type === "array" || length === 0 ||

- 		typeof length === "number" && length > 0 && ( length - 1 ) in obj;

- }

- var Sizzle =

- /*!

-  * Sizzle CSS Selector Engine v2.3.3

-  * https://sizzlejs.com/

-  *

-  * Copyright jQuery Foundation and other contributors

-  * Released under the MIT license

-  * http://jquery.org/license

-  *

-  * Date: 2016-08-08

-  */

- (function( window ) {

- 

- var i,

- 	support,

- 	Expr,

- 	getText,

- 	isXML,

- 	tokenize,

- 	compile,

- 	select,

- 	outermostContext,

- 	sortInput,

- 	hasDuplicate,

- 

- 	// Local document vars

- 	setDocument,

- 	document,

- 	docElem,

- 	documentIsHTML,

- 	rbuggyQSA,

- 	rbuggyMatches,

- 	matches,

- 	contains,

- 

- 	// Instance-specific data

- 	expando = "sizzle" + 1 * new Date(),

- 	preferredDoc = window.document,

- 	dirruns = 0,

- 	done = 0,

- 	classCache = createCache(),

- 	tokenCache = createCache(),

- 	compilerCache = createCache(),

- 	sortOrder = function( a, b ) {

- 		if ( a === b ) {

- 			hasDuplicate = true;

- 		}

- 		return 0;

- 	},

- 

- 	// Instance methods

- 	hasOwn = ({}).hasOwnProperty,

- 	arr = [],

- 	pop = arr.pop,

- 	push_native = arr.push,

- 	push = arr.push,

- 	slice = arr.slice,

- 	// Use a stripped-down indexOf as it's faster than native

- 	// https://jsperf.com/thor-indexof-vs-for/5

- 	indexOf = function( list, elem ) {

- 		var i = 0,

- 			len = list.length;

- 		for ( ; i < len; i++ ) {

- 			if ( list[i] === elem ) {

- 				return i;

- 			}

- 		}

- 		return -1;

- 	},

- 

- 	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",

- 

- 	// Regular expressions

- 

- 	// http://www.w3.org/TR/css3-selectors/#whitespace

- 	whitespace = "[\\x20\\t\\r\\n\\f]",

- 

- 	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier

- 	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",

- 

- 	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors

- 	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +

- 		// Operator (capture 2)

- 		"*([*^$|!~]?=)" + whitespace +

- 		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"

- 		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +

- 		"*\\]",

- 

- 	pseudos = ":(" + identifier + ")(?:\\((" +

- 		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:

- 		// 1. quoted (capture 3; capture 4 or capture 5)

- 		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +

- 		// 2. simple (capture 6)

- 		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +

- 		// 3. anything else (capture 2)

- 		".*" +

- 		")\\)|)",

- 

- 	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter

- 	rwhitespace = new RegExp( whitespace + "+", "g" ),

- 	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),

- 

- 	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),

- 	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),

- 

- 	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),

- 

- 	rpseudo = new RegExp( pseudos ),

- 	ridentifier = new RegExp( "^" + identifier + "$" ),

- 

- 	matchExpr = {

- 		"ID": new RegExp( "^#(" + identifier + ")" ),

- 		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),

- 		"TAG": new RegExp( "^(" + identifier + "|[*])" ),

- 		"ATTR": new RegExp( "^" + attributes ),

- 		"PSEUDO": new RegExp( "^" + pseudos ),

- 		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +

- 			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +

- 			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),

- 		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),

- 		// For use in libraries implementing .is()

- 		// We use this for POS matching in `select`

- 		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +

- 			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )

- 	},

- 

- 	rinputs = /^(?:input|select|textarea|button)$/i,

- 	rheader = /^h\d$/i,

- 

- 	rnative = /^[^{]+\{\s*\[native \w/,

- 

- 	// Easily-parseable/retrievable ID or TAG or CLASS selectors

- 	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,

- 

- 	rsibling = /[+~]/,

- 

- 	// CSS escapes

- 	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters

- 	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),

- 	funescape = function( _, escaped, escapedWhitespace ) {

- 		var high = "0x" + escaped - 0x10000;

- 		// NaN means non-codepoint

- 		// Support: Firefox<24

- 		// Workaround erroneous numeric interpretation of +"0x"

- 		return high !== high || escapedWhitespace ?

- 			escaped :

- 			high < 0 ?

- 				// BMP codepoint

- 				String.fromCharCode( high + 0x10000 ) :

- 				// Supplemental Plane codepoint (surrogate pair)

- 				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );

- 	},

- 

- 	// CSS string/identifier serialization

- 	// https://drafts.csswg.org/cssom/#common-serializing-idioms

- 	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,

- 	fcssescape = function( ch, asCodePoint ) {

- 		if ( asCodePoint ) {

- 

- 			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER

- 			if ( ch === "\0" ) {

- 				return "\uFFFD";

- 			}

- 

- 			// Control characters and (dependent upon position) numbers get escaped as code points

- 			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";

- 		}

- 

- 		// Other potentially-special ASCII characters get backslash-escaped

- 		return "\\" + ch;

- 	},

- 

- 	// Used for iframes

- 	// See setDocument()

- 	// Removing the function wrapper causes a "Permission Denied"

- 	// error in IE

- 	unloadHandler = function() {

- 		setDocument();

- 	},

- 

- 	disabledAncestor = addCombinator(

- 		function( elem ) {

- 			return elem.disabled === true && ("form" in elem || "label" in elem);

- 		},

- 		{ dir: "parentNode", next: "legend" }

- 	);

- 

- // Optimize for push.apply( _, NodeList )

- try {

- 	push.apply(

- 		(arr = slice.call( preferredDoc.childNodes )),

- 		preferredDoc.childNodes

- 	);

- 	// Support: Android<4.0

- 	// Detect silently failing push.apply

- 	arr[ preferredDoc.childNodes.length ].nodeType;

- } catch ( e ) {

- 	push = { apply: arr.length ?

- 

- 		// Leverage slice if possible

- 		function( target, els ) {

- 			push_native.apply( target, slice.call(els) );

- 		} :

- 

- 		// Support: IE<9

- 		// Otherwise append directly

- 		function( target, els ) {

- 			var j = target.length,

- 				i = 0;

- 			// Can't trust NodeList.length

- 			while ( (target[j++] = els[i++]) ) {}

- 			target.length = j - 1;

- 		}

- 	};

- }

- 

- function Sizzle( selector, context, results, seed ) {

- 	var m, i, elem, nid, match, groups, newSelector,

- 		newContext = context && context.ownerDocument,

- 

- 		// nodeType defaults to 9, since context defaults to document

- 		nodeType = context ? context.nodeType : 9;

- 

- 	results = results || [];

- 

- 	// Return early from calls with invalid selector or context

- 	if ( typeof selector !== "string" || !selector ||

- 		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {

- 

- 		return results;

- 	}

- 

- 	// Try to shortcut find operations (as opposed to filters) in HTML documents

- 	if ( !seed ) {

- 

- 		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {

- 			setDocument( context );

- 		}

- 		context = context || document;

- 

- 		if ( documentIsHTML ) {

- 

- 			// If the selector is sufficiently simple, try using a "get*By*" DOM method

- 			// (excepting DocumentFragment context, where the methods don't exist)

- 			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {

- 

- 				// ID selector

- 				if ( (m = match[1]) ) {

- 

- 					// Document context

- 					if ( nodeType === 9 ) {

- 						if ( (elem = context.getElementById( m )) ) {

- 

- 							// Support: IE, Opera, Webkit

- 							// TODO: identify versions

- 							// getElementById can match elements by name instead of ID

- 							if ( elem.id === m ) {

- 								results.push( elem );

- 								return results;

- 							}

- 						} else {

- 							return results;

- 						}

- 

- 					// Element context

- 					} else {

- 

- 						// Support: IE, Opera, Webkit

- 						// TODO: identify versions

- 						// getElementById can match elements by name instead of ID

- 						if ( newContext && (elem = newContext.getElementById( m )) &&

- 							contains( context, elem ) &&

- 							elem.id === m ) {

- 

- 							results.push( elem );

- 							return results;

- 						}

- 					}

- 

- 				// Type selector

- 				} else if ( match[2] ) {

- 					push.apply( results, context.getElementsByTagName( selector ) );

- 					return results;

- 

- 				// Class selector

- 				} else if ( (m = match[3]) && support.getElementsByClassName &&

- 					context.getElementsByClassName ) {

- 

- 					push.apply( results, context.getElementsByClassName( m ) );

- 					return results;

- 				}

- 			}

- 

- 			// Take advantage of querySelectorAll

- 			if ( support.qsa &&

- 				!compilerCache[ selector + " " ] &&

- 				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {

- 

- 				if ( nodeType !== 1 ) {

- 					newContext = context;

- 					newSelector = selector;

- 

- 				// qSA looks outside Element context, which is not what we want

- 				// Thanks to Andrew Dupont for this workaround technique

- 				// Support: IE <=8

- 				// Exclude object elements

- 				} else if ( context.nodeName.toLowerCase() !== "object" ) {

- 

- 					// Capture the context ID, setting it first if necessary

- 					if ( (nid = context.getAttribute( "id" )) ) {

- 						nid = nid.replace( rcssescape, fcssescape );

- 					} else {

- 						context.setAttribute( "id", (nid = expando) );

- 					}

- 

- 					// Prefix every selector in the list

- 					groups = tokenize( selector );

- 					i = groups.length;

- 					while ( i-- ) {

- 						groups[i] = "#" + nid + " " + toSelector( groups[i] );

- 					}

- 					newSelector = groups.join( "," );

- 

- 					// Expand context for sibling selectors

- 					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||

- 						context;

- 				}

- 

- 				if ( newSelector ) {

- 					try {

- 						push.apply( results,

- 							newContext.querySelectorAll( newSelector )

- 						);

- 						return results;

- 					} catch ( qsaError ) {

- 					} finally {

- 						if ( nid === expando ) {

- 							context.removeAttribute( "id" );

- 						}

- 					}

- 				}

- 			}

- 		}

- 	}

- 

- 	// All others

- 	return select( selector.replace( rtrim, "$1" ), context, results, seed );

- }

- 

- /**

-  * Create key-value caches of limited size

-  * @returns {function(string, object)} Returns the Object data after storing it on itself with

-  *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)

-  *	deleting the oldest entry

-  */

- function createCache() {

- 	var keys = [];

- 

- 	function cache( key, value ) {

- 		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)

- 		if ( keys.push( key + " " ) > Expr.cacheLength ) {

- 			// Only keep the most recent entries

- 			delete cache[ keys.shift() ];

- 		}

- 		return (cache[ key + " " ] = value);

- 	}

- 	return cache;

- }

- 

- /**

-  * Mark a function for special use by Sizzle

-  * @param {Function} fn The function to mark

-  */

- function markFunction( fn ) {

- 	fn[ expando ] = true;

- 	return fn;

- }

- 

- /**

-  * Support testing using an element

-  * @param {Function} fn Passed the created element and returns a boolean result

-  */

- function assert( fn ) {

- 	var el = document.createElement("fieldset");

- 

- 	try {

- 		return !!fn( el );

- 	} catch (e) {

- 		return false;

- 	} finally {

- 		// Remove from its parent by default

- 		if ( el.parentNode ) {

- 			el.parentNode.removeChild( el );

- 		}

- 		// release memory in IE

- 		el = null;

- 	}

- }

- 

- /**

-  * Adds the same handler for all of the specified attrs

-  * @param {String} attrs Pipe-separated list of attributes

-  * @param {Function} handler The method that will be applied

-  */

- function addHandle( attrs, handler ) {

- 	var arr = attrs.split("|"),

- 		i = arr.length;

- 

- 	while ( i-- ) {

- 		Expr.attrHandle[ arr[i] ] = handler;

- 	}

- }

- 

- /**

-  * Checks document order of two siblings

-  * @param {Element} a

-  * @param {Element} b

-  * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b

-  */

- function siblingCheck( a, b ) {

- 	var cur = b && a,

- 		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&

- 			a.sourceIndex - b.sourceIndex;

- 

- 	// Use IE sourceIndex if available on both nodes

- 	if ( diff ) {

- 		return diff;

- 	}

- 

- 	// Check if b follows a

- 	if ( cur ) {

- 		while ( (cur = cur.nextSibling) ) {

- 			if ( cur === b ) {

- 				return -1;

- 			}

- 		}

- 	}

- 

- 	return a ? 1 : -1;

- }

- 

- /**

-  * Returns a function to use in pseudos for input types

-  * @param {String} type

-  */

- function createInputPseudo( type ) {

- 	return function( elem ) {

- 		var name = elem.nodeName.toLowerCase();

- 		return name === "input" && elem.type === type;

- 	};

- }

- 

- /**

-  * Returns a function to use in pseudos for buttons

-  * @param {String} type

-  */

- function createButtonPseudo( type ) {

- 	return function( elem ) {

- 		var name = elem.nodeName.toLowerCase();

- 		return (name === "input" || name === "button") && elem.type === type;

- 	};

- }

- 

- /**

-  * Returns a function to use in pseudos for :enabled/:disabled

-  * @param {Boolean} disabled true for :disabled; false for :enabled

-  */

- function createDisabledPseudo( disabled ) {

- 

- 	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable

- 	return function( elem ) {

- 

- 		// Only certain elements can match :enabled or :disabled

- 		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled

- 		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled

- 		if ( "form" in elem ) {

- 

- 			// Check for inherited disabledness on relevant non-disabled elements:

- 			// * listed form-associated elements in a disabled fieldset

- 			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed

- 			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled

- 			// * option elements in a disabled optgroup

- 			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled

- 			// All such elements have a "form" property.

- 			if ( elem.parentNode && elem.disabled === false ) {

- 

- 				// Option elements defer to a parent optgroup if present

- 				if ( "label" in elem ) {

- 					if ( "label" in elem.parentNode ) {

- 						return elem.parentNode.disabled === disabled;

- 					} else {

- 						return elem.disabled === disabled;

- 					}

- 				}

- 

- 				// Support: IE 6 - 11

- 				// Use the isDisabled shortcut property to check for disabled fieldset ancestors

- 				return elem.isDisabled === disabled ||

- 

- 					// Where there is no isDisabled, check manually

- 					/* jshint -W018 */

- 					elem.isDisabled !== !disabled &&

- 						disabledAncestor( elem ) === disabled;

- 			}

- 

- 			return elem.disabled === disabled;

- 

- 		// Try to winnow out elements that can't be disabled before trusting the disabled property.

- 		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't

- 		// even exist on them, let alone have a boolean value.

- 		} else if ( "label" in elem ) {

- 			return elem.disabled === disabled;

- 		}

- 

- 		// Remaining elements are neither :enabled nor :disabled

- 		return false;

- 	};

- }

- 

- /**

-  * Returns a function to use in pseudos for positionals

-  * @param {Function} fn

-  */

- function createPositionalPseudo( fn ) {

- 	return markFunction(function( argument ) {

- 		argument = +argument;

- 		return markFunction(function( seed, matches ) {

- 			var j,

- 				matchIndexes = fn( [], seed.length, argument ),

- 				i = matchIndexes.length;

- 

- 			// Match elements found at the specified indexes

- 			while ( i-- ) {

- 				if ( seed[ (j = matchIndexes[i]) ] ) {

- 					seed[j] = !(matches[j] = seed[j]);

- 				}

- 			}

- 		});

- 	});

- }

- 

- /**

-  * Checks a node for validity as a Sizzle context

-  * @param {Element|Object=} context

-  * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value

-  */

- function testContext( context ) {

- 	return context && typeof context.getElementsByTagName !== "undefined" && context;

- }

- 

- // Expose support vars for convenience

- support = Sizzle.support = {};

- 

- /**

-  * Detects XML nodes

-  * @param {Element|Object} elem An element or a document

-  * @returns {Boolean} True iff elem is a non-HTML XML node

-  */

- isXML = Sizzle.isXML = function( elem ) {

- 	// documentElement is verified for cases where it doesn't yet exist

- 	// (such as loading iframes in IE - #4833)

- 	var documentElement = elem && (elem.ownerDocument || elem).documentElement;

- 	return documentElement ? documentElement.nodeName !== "HTML" : false;

- };

- 

- /**

-  * Sets document-related variables once based on the current document

-  * @param {Element|Object} [doc] An element or document object to use to set the document

-  * @returns {Object} Returns the current document

-  */

- setDocument = Sizzle.setDocument = function( node ) {

- 	var hasCompare, subWindow,

- 		doc = node ? node.ownerDocument || node : preferredDoc;

- 

- 	// Return early if doc is invalid or already selected

- 	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {

- 		return document;

- 	}

- 

- 	// Update global variables

- 	document = doc;

- 	docElem = document.documentElement;

- 	documentIsHTML = !isXML( document );

- 

- 	// Support: IE 9-11, Edge

- 	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)

- 	if ( preferredDoc !== document &&

- 		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {

- 

- 		// Support: IE 11, Edge

- 		if ( subWindow.addEventListener ) {

- 			subWindow.addEventListener( "unload", unloadHandler, false );

- 

- 		// Support: IE 9 - 10 only

- 		} else if ( subWindow.attachEvent ) {

- 			subWindow.attachEvent( "onunload", unloadHandler );

- 		}

- 	}

- 

- 	/* Attributes

- 	---------------------------------------------------------------------- */

- 

- 	// Support: IE<8

- 	// Verify that getAttribute really returns attributes and not properties

- 	// (excepting IE8 booleans)

- 	support.attributes = assert(function( el ) {

- 		el.className = "i";

- 		return !el.getAttribute("className");

- 	});

- 

- 	/* getElement(s)By*

- 	---------------------------------------------------------------------- */

- 

- 	// Check if getElementsByTagName("*") returns only elements

- 	support.getElementsByTagName = assert(function( el ) {

- 		el.appendChild( document.createComment("") );

- 		return !el.getElementsByTagName("*").length;

- 	});

- 

- 	// Support: IE<9

- 	support.getElementsByClassName = rnative.test( document.getElementsByClassName );

- 

- 	// Support: IE<10

- 	// Check if getElementById returns elements by name

- 	// The broken getElementById methods don't pick up programmatically-set names,

- 	// so use a roundabout getElementsByName test

- 	support.getById = assert(function( el ) {

- 		docElem.appendChild( el ).id = expando;

- 		return !document.getElementsByName || !document.getElementsByName( expando ).length;

- 	});

- 

- 	// ID filter and find

- 	if ( support.getById ) {

- 		Expr.filter["ID"] = function( id ) {

- 			var attrId = id.replace( runescape, funescape );

- 			return function( elem ) {

- 				return elem.getAttribute("id") === attrId;

- 			};

- 		};

- 		Expr.find["ID"] = function( id, context ) {

- 			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {

- 				var elem = context.getElementById( id );

- 				return elem ? [ elem ] : [];

- 			}

- 		};

- 	} else {

- 		Expr.filter["ID"] =  function( id ) {

- 			var attrId = id.replace( runescape, funescape );

- 			return function( elem ) {

- 				var node = typeof elem.getAttributeNode !== "undefined" &&

- 					elem.getAttributeNode("id");

- 				return node && node.value === attrId;

- 			};

- 		};

- 

- 		// Support: IE 6 - 7 only

- 		// getElementById is not reliable as a find shortcut

- 		Expr.find["ID"] = function( id, context ) {

- 			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {

- 				var node, i, elems,

- 					elem = context.getElementById( id );

- 

- 				if ( elem ) {

- 

- 					// Verify the id attribute

- 					node = elem.getAttributeNode("id");

- 					if ( node && node.value === id ) {

- 						return [ elem ];

- 					}

- 

- 					// Fall back on getElementsByName

- 					elems = context.getElementsByName( id );

- 					i = 0;

- 					while ( (elem = elems[i++]) ) {

- 						node = elem.getAttributeNode("id");

- 						if ( node && node.value === id ) {

- 							return [ elem ];

- 						}

- 					}

- 				}

- 

- 				return [];

- 			}

- 		};

- 	}

- 

- 	// Tag

- 	Expr.find["TAG"] = support.getElementsByTagName ?

- 		function( tag, context ) {

- 			if ( typeof context.getElementsByTagName !== "undefined" ) {

- 				return context.getElementsByTagName( tag );

- 

- 			// DocumentFragment nodes don't have gEBTN

- 			} else if ( support.qsa ) {

- 				return context.querySelectorAll( tag );

- 			}

- 		} :

- 

- 		function( tag, context ) {

- 			var elem,

- 				tmp = [],

- 				i = 0,

- 				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too

- 				results = context.getElementsByTagName( tag );

- 

- 			// Filter out possible comments

- 			if ( tag === "*" ) {

- 				while ( (elem = results[i++]) ) {

- 					if ( elem.nodeType === 1 ) {

- 						tmp.push( elem );

- 					}

- 				}

- 

- 				return tmp;

- 			}

- 			return results;

- 		};

- 

- 	// Class

- 	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {

- 		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {

- 			return context.getElementsByClassName( className );

- 		}

- 	};

- 

- 	/* QSA/matchesSelector

- 	---------------------------------------------------------------------- */

- 

- 	// QSA and matchesSelector support

- 

- 	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)

- 	rbuggyMatches = [];

- 

- 	// qSa(:focus) reports false when true (Chrome 21)

- 	// We allow this because of a bug in IE8/9 that throws an error

- 	// whenever `document.activeElement` is accessed on an iframe

- 	// So, we allow :focus to pass through QSA all the time to avoid the IE error

- 	// See https://bugs.jquery.com/ticket/13378

- 	rbuggyQSA = [];

- 

- 	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {

- 		// Build QSA regex

- 		// Regex strategy adopted from Diego Perini

- 		assert(function( el ) {

- 			// Select is set to empty string on purpose

- 			// This is to test IE's treatment of not explicitly

- 			// setting a boolean content attribute,

- 			// since its presence should be enough

- 			// https://bugs.jquery.com/ticket/12359

- 			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +

- 				"<select id='" + expando + "-\r\\' msallowcapture=''>" +

- 				"<option selected=''></option></select>";

- 

- 			// Support: IE8, Opera 11-12.16

- 			// Nothing should be selected when empty strings follow ^= or $= or *=

- 			// The test attribute must be unknown in Opera but "safe" for WinRT

- 			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section

- 			if ( el.querySelectorAll("[msallowcapture^='']").length ) {

- 				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );

- 			}

- 

- 			// Support: IE8

- 			// Boolean attributes and "value" are not treated correctly

- 			if ( !el.querySelectorAll("[selected]").length ) {

- 				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );

- 			}

- 

- 			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+

- 			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {

- 				rbuggyQSA.push("~=");

- 			}

- 

- 			// Webkit/Opera - :checked should return selected option elements

- 			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked

- 			// IE8 throws error here and will not see later tests

- 			if ( !el.querySelectorAll(":checked").length ) {

- 				rbuggyQSA.push(":checked");

- 			}

- 

- 			// Support: Safari 8+, iOS 8+

- 			// https://bugs.webkit.org/show_bug.cgi?id=136851

- 			// In-page `selector#id sibling-combinator selector` fails

- 			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {

- 				rbuggyQSA.push(".#.+[+~]");

- 			}

- 		});

- 

- 		assert(function( el ) {

- 			el.innerHTML = "<a href='' disabled='disabled'></a>" +

- 				"<select disabled='disabled'><option/></select>";

- 

- 			// Support: Windows 8 Native Apps

- 			// The type and name attributes are restricted during .innerHTML assignment

- 			var input = document.createElement("input");

- 			input.setAttribute( "type", "hidden" );

- 			el.appendChild( input ).setAttribute( "name", "D" );

- 

- 			// Support: IE8

- 			// Enforce case-sensitivity of name attribute

- 			if ( el.querySelectorAll("[name=d]").length ) {

- 				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );

- 			}

- 

- 			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)

- 			// IE8 throws error here and will not see later tests

- 			if ( el.querySelectorAll(":enabled").length !== 2 ) {

- 				rbuggyQSA.push( ":enabled", ":disabled" );

- 			}

- 

- 			// Support: IE9-11+

- 			// IE's :disabled selector does not pick up the children of disabled fieldsets

- 			docElem.appendChild( el ).disabled = true;

- 			if ( el.querySelectorAll(":disabled").length !== 2 ) {

- 				rbuggyQSA.push( ":enabled", ":disabled" );

- 			}

- 

- 			// Opera 10-11 does not throw on post-comma invalid pseudos

- 			el.querySelectorAll("*,:x");

- 			rbuggyQSA.push(",.*:");

- 		});

- 	}

- 

- 	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||

- 		docElem.webkitMatchesSelector ||

- 		docElem.mozMatchesSelector ||

- 		docElem.oMatchesSelector ||

- 		docElem.msMatchesSelector) )) ) {

- 

- 		assert(function( el ) {

- 			// Check to see if it's possible to do matchesSelector

- 			// on a disconnected node (IE 9)

- 			support.disconnectedMatch = matches.call( el, "*" );

- 

- 			// This should fail with an exception

- 			// Gecko does not error, returns false instead

- 			matches.call( el, "[s!='']:x" );

- 			rbuggyMatches.push( "!=", pseudos );

- 		});

- 	}

- 

- 	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );

- 	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );

- 

- 	/* Contains

- 	---------------------------------------------------------------------- */

- 	hasCompare = rnative.test( docElem.compareDocumentPosition );

- 

- 	// Element contains another

- 	// Purposefully self-exclusive

- 	// As in, an element does not contain itself

- 	contains = hasCompare || rnative.test( docElem.contains ) ?

- 		function( a, b ) {

- 			var adown = a.nodeType === 9 ? a.documentElement : a,

- 				bup = b && b.parentNode;

- 			return a === bup || !!( bup && bup.nodeType === 1 && (

- 				adown.contains ?

- 					adown.contains( bup ) :

- 					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16

- 			));

- 		} :

- 		function( a, b ) {

- 			if ( b ) {

- 				while ( (b = b.parentNode) ) {

- 					if ( b === a ) {

- 						return true;

- 					}

- 				}

- 			}

- 			return false;

- 		};

- 

- 	/* Sorting

- 	---------------------------------------------------------------------- */

- 

- 	// Document order sorting

- 	sortOrder = hasCompare ?

- 	function( a, b ) {

- 

- 		// Flag for duplicate removal

- 		if ( a === b ) {

- 			hasDuplicate = true;

- 			return 0;

- 		}

- 

- 		// Sort on method existence if only one input has compareDocumentPosition

- 		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;

- 		if ( compare ) {

- 			return compare;

- 		}

- 

- 		// Calculate position if both inputs belong to the same document

- 		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?

- 			a.compareDocumentPosition( b ) :

- 

- 			// Otherwise we know they are disconnected

- 			1;

- 

- 		// Disconnected nodes

- 		if ( compare & 1 ||

- 			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {

- 

- 			// Choose the first element that is related to our preferred document

- 			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {

- 				return -1;

- 			}

- 			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {

- 				return 1;

- 			}

- 

- 			// Maintain original order

- 			return sortInput ?

- 				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :

- 				0;

- 		}

- 

- 		return compare & 4 ? -1 : 1;

- 	} :

- 	function( a, b ) {

- 		// Exit early if the nodes are identical

- 		if ( a === b ) {

- 			hasDuplicate = true;

- 			return 0;

- 		}

- 

- 		var cur,

- 			i = 0,

- 			aup = a.parentNode,

- 			bup = b.parentNode,

- 			ap = [ a ],

- 			bp = [ b ];

- 

- 		// Parentless nodes are either documents or disconnected

- 		if ( !aup || !bup ) {

- 			return a === document ? -1 :

- 				b === document ? 1 :

- 				aup ? -1 :

- 				bup ? 1 :

- 				sortInput ?

- 				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :

- 				0;

- 

- 		// If the nodes are siblings, we can do a quick check

- 		} else if ( aup === bup ) {

- 			return siblingCheck( a, b );

- 		}

- 

- 		// Otherwise we need full lists of their ancestors for comparison

- 		cur = a;

- 		while ( (cur = cur.parentNode) ) {

- 			ap.unshift( cur );

- 		}

- 		cur = b;

- 		while ( (cur = cur.parentNode) ) {

- 			bp.unshift( cur );

- 		}

- 

- 		// Walk down the tree looking for a discrepancy

- 		while ( ap[i] === bp[i] ) {

- 			i++;

- 		}

- 

- 		return i ?

- 			// Do a sibling check if the nodes have a common ancestor

- 			siblingCheck( ap[i], bp[i] ) :

- 

- 			// Otherwise nodes in our document sort first

- 			ap[i] === preferredDoc ? -1 :

- 			bp[i] === preferredDoc ? 1 :

- 			0;

- 	};

- 

- 	return document;

- };

- 

- Sizzle.matches = function( expr, elements ) {

- 	return Sizzle( expr, null, null, elements );

- };

- 

- Sizzle.matchesSelector = function( elem, expr ) {

- 	// Set document vars if needed

- 	if ( ( elem.ownerDocument || elem ) !== document ) {

- 		setDocument( elem );

- 	}

- 

- 	// Make sure that attribute selectors are quoted

- 	expr = expr.replace( rattributeQuotes, "='$1']" );

- 

- 	if ( support.matchesSelector && documentIsHTML &&

- 		!compilerCache[ expr + " " ] &&

- 		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&

- 		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {

- 

- 		try {

- 			var ret = matches.call( elem, expr );

- 

- 			// IE 9's matchesSelector returns false on disconnected nodes

- 			if ( ret || support.disconnectedMatch ||

- 					// As well, disconnected nodes are said to be in a document

- 					// fragment in IE 9

- 					elem.document && elem.document.nodeType !== 11 ) {

- 				return ret;

- 			}

- 		} catch (e) {}

- 	}

- 

- 	return Sizzle( expr, document, null, [ elem ] ).length > 0;

- };

- 

- Sizzle.contains = function( context, elem ) {

- 	// Set document vars if needed

- 	if ( ( context.ownerDocument || context ) !== document ) {

- 		setDocument( context );

- 	}

- 	return contains( context, elem );

- };

- 

- Sizzle.attr = function( elem, name ) {

- 	// Set document vars if needed

- 	if ( ( elem.ownerDocument || elem ) !== document ) {

- 		setDocument( elem );

- 	}

- 

- 	var fn = Expr.attrHandle[ name.toLowerCase() ],

- 		// Don't get fooled by Object.prototype properties (jQuery #13807)

- 		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?

- 			fn( elem, name, !documentIsHTML ) :

- 			undefined;

- 

- 	return val !== undefined ?

- 		val :

- 		support.attributes || !documentIsHTML ?

- 			elem.getAttribute( name ) :

- 			(val = elem.getAttributeNode(name)) && val.specified ?

- 				val.value :

- 				null;

- };

- 

- Sizzle.escape = function( sel ) {

- 	return (sel + "").replace( rcssescape, fcssescape );

- };

- 

- Sizzle.error = function( msg ) {

- 	throw new Error( "Syntax error, unrecognized expression: " + msg );

- };

- 

- /**

-  * Document sorting and removing duplicates

-  * @param {ArrayLike} results

-  */

- Sizzle.uniqueSort = function( results ) {

- 	var elem,

- 		duplicates = [],

- 		j = 0,

- 		i = 0;

- 

- 	// Unless we *know* we can detect duplicates, assume their presence

- 	hasDuplicate = !support.detectDuplicates;

- 	sortInput = !support.sortStable && results.slice( 0 );

- 	results.sort( sortOrder );

- 

- 	if ( hasDuplicate ) {

- 		while ( (elem = results[i++]) ) {

- 			if ( elem === results[ i ] ) {

- 				j = duplicates.push( i );

- 			}

- 		}

- 		while ( j-- ) {

- 			results.splice( duplicates[ j ], 1 );

- 		}

- 	}

- 

- 	// Clear input after sorting to release objects

- 	// See https://github.com/jquery/sizzle/pull/225

- 	sortInput = null;

- 

- 	return results;

- };

- 

- /**

-  * Utility function for retrieving the text value of an array of DOM nodes

-  * @param {Array|Element} elem

-  */

- getText = Sizzle.getText = function( elem ) {

- 	var node,

- 		ret = "",

- 		i = 0,

- 		nodeType = elem.nodeType;

- 

- 	if ( !nodeType ) {

- 		// If no nodeType, this is expected to be an array

- 		while ( (node = elem[i++]) ) {

- 			// Do not traverse comment nodes

- 			ret += getText( node );

- 		}

- 	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {

- 		// Use textContent for elements

- 		// innerText usage removed for consistency of new lines (jQuery #11153)

- 		if ( typeof elem.textContent === "string" ) {

- 			return elem.textContent;

- 		} else {

- 			// Traverse its children

- 			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {

- 				ret += getText( elem );

- 			}

- 		}

- 	} else if ( nodeType === 3 || nodeType === 4 ) {

- 		return elem.nodeValue;

- 	}

- 	// Do not include comment or processing instruction nodes

- 

- 	return ret;

- };

- 

- Expr = Sizzle.selectors = {

- 

- 	// Can be adjusted by the user

- 	cacheLength: 50,

- 

- 	createPseudo: markFunction,

- 

- 	match: matchExpr,

- 

- 	attrHandle: {},

- 

- 	find: {},

- 

- 	relative: {

- 		">": { dir: "parentNode", first: true },

- 		" ": { dir: "parentNode" },

- 		"+": { dir: "previousSibling", first: true },

- 		"~": { dir: "previousSibling" }

- 	},

- 

- 	preFilter: {

- 		"ATTR": function( match ) {

- 			match[1] = match[1].replace( runescape, funescape );

- 

- 			// Move the given value to match[3] whether quoted or unquoted

- 			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );

- 

- 			if ( match[2] === "~=" ) {

- 				match[3] = " " + match[3] + " ";

- 			}

- 

- 			return match.slice( 0, 4 );

- 		},

- 

- 		"CHILD": function( match ) {

- 			/* matches from matchExpr["CHILD"]

- 				1 type (only|nth|...)

- 				2 what (child|of-type)

- 				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)

- 				4 xn-component of xn+y argument ([+-]?\d*n|)

- 				5 sign of xn-component

- 				6 x of xn-component

- 				7 sign of y-component

- 				8 y of y-component

- 			*/

- 			match[1] = match[1].toLowerCase();

- 

- 			if ( match[1].slice( 0, 3 ) === "nth" ) {

- 				// nth-* requires argument

- 				if ( !match[3] ) {

- 					Sizzle.error( match[0] );

- 				}

- 

- 				// numeric x and y parameters for Expr.filter.CHILD

- 				// remember that false/true cast respectively to 0/1

- 				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );

- 				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );

- 

- 			// other types prohibit arguments

- 			} else if ( match[3] ) {

- 				Sizzle.error( match[0] );

- 			}

- 

- 			return match;

- 		},

- 

- 		"PSEUDO": function( match ) {

- 			var excess,

- 				unquoted = !match[6] && match[2];

- 

- 			if ( matchExpr["CHILD"].test( match[0] ) ) {

- 				return null;

- 			}

- 

- 			// Accept quoted arguments as-is

- 			if ( match[3] ) {

- 				match[2] = match[4] || match[5] || "";

- 

- 			// Strip excess characters from unquoted arguments

- 			} else if ( unquoted && rpseudo.test( unquoted ) &&

- 				// Get excess from tokenize (recursively)

- 				(excess = tokenize( unquoted, true )) &&

- 				// advance to the next closing parenthesis

- 				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {

- 

- 				// excess is a negative index

- 				match[0] = match[0].slice( 0, excess );

- 				match[2] = unquoted.slice( 0, excess );

- 			}

- 

- 			// Return only captures needed by the pseudo filter method (type and argument)

- 			return match.slice( 0, 3 );

- 		}

- 	},

- 

- 	filter: {

- 

- 		"TAG": function( nodeNameSelector ) {

- 			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();

- 			return nodeNameSelector === "*" ?

- 				function() { return true; } :

- 				function( elem ) {

- 					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;

- 				};

- 		},

- 

- 		"CLASS": function( className ) {

- 			var pattern = classCache[ className + " " ];

- 

- 			return pattern ||

- 				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&

- 				classCache( className, function( elem ) {

- 					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );

- 				});

- 		},

- 

- 		"ATTR": function( name, operator, check ) {

- 			return function( elem ) {

- 				var result = Sizzle.attr( elem, name );

- 

- 				if ( result == null ) {

- 					return operator === "!=";

- 				}

- 				if ( !operator ) {

- 					return true;

- 				}

- 

- 				result += "";

- 

- 				return operator === "=" ? result === check :

- 					operator === "!=" ? result !== check :

- 					operator === "^=" ? check && result.indexOf( check ) === 0 :

- 					operator === "*=" ? check && result.indexOf( check ) > -1 :

- 					operator === "$=" ? check && result.slice( -check.length ) === check :

- 					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :

- 					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :

- 					false;

- 			};

- 		},

- 

- 		"CHILD": function( type, what, argument, first, last ) {

- 			var simple = type.slice( 0, 3 ) !== "nth",

- 				forward = type.slice( -4 ) !== "last",

- 				ofType = what === "of-type";

- 

- 			return first === 1 && last === 0 ?

- 

- 				// Shortcut for :nth-*(n)

- 				function( elem ) {

- 					return !!elem.parentNode;

- 				} :

- 

- 				function( elem, context, xml ) {

- 					var cache, uniqueCache, outerCache, node, nodeIndex, start,

- 						dir = simple !== forward ? "nextSibling" : "previousSibling",

- 						parent = elem.parentNode,

- 						name = ofType && elem.nodeName.toLowerCase(),

- 						useCache = !xml && !ofType,

- 						diff = false;

- 

- 					if ( parent ) {

- 

- 						// :(first|last|only)-(child|of-type)

- 						if ( simple ) {

- 							while ( dir ) {

- 								node = elem;

- 								while ( (node = node[ dir ]) ) {

- 									if ( ofType ?

- 										node.nodeName.toLowerCase() === name :

- 										node.nodeType === 1 ) {

- 

- 										return false;

- 									}

- 								}

- 								// Reverse direction for :only-* (if we haven't yet done so)

- 								start = dir = type === "only" && !start && "nextSibling";

- 							}

- 							return true;

- 						}

- 

- 						start = [ forward ? parent.firstChild : parent.lastChild ];

- 

- 						// non-xml :nth-child(...) stores cache data on `parent`

- 						if ( forward && useCache ) {

- 

- 							// Seek `elem` from a previously-cached index

- 

- 							// ...in a gzip-friendly way

- 							node = parent;

- 							outerCache = node[ expando ] || (node[ expando ] = {});

- 

- 							// Support: IE <9 only

- 							// Defend against cloned attroperties (jQuery gh-1709)

- 							uniqueCache = outerCache[ node.uniqueID ] ||

- 								(outerCache[ node.uniqueID ] = {});

- 

- 							cache = uniqueCache[ type ] || [];

- 							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];

- 							diff = nodeIndex && cache[ 2 ];

- 							node = nodeIndex && parent.childNodes[ nodeIndex ];

- 

- 							while ( (node = ++nodeIndex && node && node[ dir ] ||

- 

- 								// Fallback to seeking `elem` from the start

- 								(diff = nodeIndex = 0) || start.pop()) ) {

- 

- 								// When found, cache indexes on `parent` and break

- 								if ( node.nodeType === 1 && ++diff && node === elem ) {

- 									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];

- 									break;

- 								}

- 							}

- 

- 						} else {

- 							// Use previously-cached element index if available

- 							if ( useCache ) {

- 								// ...in a gzip-friendly way

- 								node = elem;

- 								outerCache = node[ expando ] || (node[ expando ] = {});

- 

- 								// Support: IE <9 only

- 								// Defend against cloned attroperties (jQuery gh-1709)

- 								uniqueCache = outerCache[ node.uniqueID ] ||

- 									(outerCache[ node.uniqueID ] = {});

- 

- 								cache = uniqueCache[ type ] || [];

- 								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];

- 								diff = nodeIndex;

- 							}

- 

- 							// xml :nth-child(...)

- 							// or :nth-last-child(...) or :nth(-last)?-of-type(...)

- 							if ( diff === false ) {

- 								// Use the same loop as above to seek `elem` from the start

- 								while ( (node = ++nodeIndex && node && node[ dir ] ||

- 									(diff = nodeIndex = 0) || start.pop()) ) {

- 

- 									if ( ( ofType ?

- 										node.nodeName.toLowerCase() === name :

- 										node.nodeType === 1 ) &&

- 										++diff ) {

- 

- 										// Cache the index of each encountered element

- 										if ( useCache ) {

- 											outerCache = node[ expando ] || (node[ expando ] = {});

- 

- 											// Support: IE <9 only

- 											// Defend against cloned attroperties (jQuery gh-1709)

- 											uniqueCache = outerCache[ node.uniqueID ] ||

- 												(outerCache[ node.uniqueID ] = {});

- 

- 											uniqueCache[ type ] = [ dirruns, diff ];

- 										}

- 

- 										if ( node === elem ) {

- 											break;

- 										}

- 									}

- 								}

- 							}

- 						}

- 

- 						// Incorporate the offset, then check against cycle size

- 						diff -= last;

- 						return diff === first || ( diff % first === 0 && diff / first >= 0 );

- 					}

- 				};

- 		},

- 

- 		"PSEUDO": function( pseudo, argument ) {

- 			// pseudo-class names are case-insensitive

- 			// http://www.w3.org/TR/selectors/#pseudo-classes

- 			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters

- 			// Remember that setFilters inherits from pseudos

- 			var args,

- 				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||

- 					Sizzle.error( "unsupported pseudo: " + pseudo );

- 

- 			// The user may use createPseudo to indicate that

- 			// arguments are needed to create the filter function

- 			// just as Sizzle does

- 			if ( fn[ expando ] ) {

- 				return fn( argument );

- 			}

- 

- 			// But maintain support for old signatures

- 			if ( fn.length > 1 ) {

- 				args = [ pseudo, pseudo, "", argument ];

- 				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?

- 					markFunction(function( seed, matches ) {

- 						var idx,

- 							matched = fn( seed, argument ),

- 							i = matched.length;

- 						while ( i-- ) {

- 							idx = indexOf( seed, matched[i] );

- 							seed[ idx ] = !( matches[ idx ] = matched[i] );

- 						}

- 					}) :

- 					function( elem ) {

- 						return fn( elem, 0, args );

- 					};

- 			}

- 

- 			return fn;

- 		}

- 	},

- 

- 	pseudos: {

- 		// Potentially complex pseudos

- 		"not": markFunction(function( selector ) {

- 			// Trim the selector passed to compile

- 			// to avoid treating leading and trailing

- 			// spaces as combinators

- 			var input = [],

- 				results = [],

- 				matcher = compile( selector.replace( rtrim, "$1" ) );

- 

- 			return matcher[ expando ] ?

- 				markFunction(function( seed, matches, context, xml ) {

- 					var elem,

- 						unmatched = matcher( seed, null, xml, [] ),

- 						i = seed.length;

- 

- 					// Match elements unmatched by `matcher`

- 					while ( i-- ) {

- 						if ( (elem = unmatched[i]) ) {

- 							seed[i] = !(matches[i] = elem);

- 						}

- 					}

- 				}) :

- 				function( elem, context, xml ) {

- 					input[0] = elem;

- 					matcher( input, null, xml, results );

- 					// Don't keep the element (issue #299)

- 					input[0] = null;

- 					return !results.pop();

- 				};

- 		}),

- 

- 		"has": markFunction(function( selector ) {

- 			return function( elem ) {

- 				return Sizzle( selector, elem ).length > 0;

- 			};

- 		}),

- 

- 		"contains": markFunction(function( text ) {

- 			text = text.replace( runescape, funescape );

- 			return function( elem ) {

- 				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;

- 			};

- 		}),

- 

- 		// "Whether an element is represented by a :lang() selector

- 		// is based solely on the element's language value

- 		// being equal to the identifier C,

- 		// or beginning with the identifier C immediately followed by "-".

- 		// The matching of C against the element's language value is performed case-insensitively.

- 		// The identifier C does not have to be a valid language name."

- 		// http://www.w3.org/TR/selectors/#lang-pseudo

- 		"lang": markFunction( function( lang ) {

- 			// lang value must be a valid identifier

- 			if ( !ridentifier.test(lang || "") ) {

- 				Sizzle.error( "unsupported lang: " + lang );

- 			}

- 			lang = lang.replace( runescape, funescape ).toLowerCase();

- 			return function( elem ) {

- 				var elemLang;

- 				do {

- 					if ( (elemLang = documentIsHTML ?

- 						elem.lang :

- 						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {

- 

- 						elemLang = elemLang.toLowerCase();

- 						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;

- 					}

- 				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );

- 				return false;

- 			};

- 		}),

- 

- 		// Miscellaneous

- 		"target": function( elem ) {

- 			var hash = window.location && window.location.hash;

- 			return hash && hash.slice( 1 ) === elem.id;

- 		},

- 

- 		"root": function( elem ) {

- 			return elem === docElem;

- 		},

- 

- 		"focus": function( elem ) {

- 			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);

- 		},

- 

- 		// Boolean properties

- 		"enabled": createDisabledPseudo( false ),

- 		"disabled": createDisabledPseudo( true ),

- 

- 		"checked": function( elem ) {

- 			// In CSS3, :checked should return both checked and selected elements

- 			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked

- 			var nodeName = elem.nodeName.toLowerCase();

- 			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);

- 		},

- 

- 		"selected": function( elem ) {

- 			// Accessing this property makes selected-by-default

- 			// options in Safari work properly

- 			if ( elem.parentNode ) {

- 				elem.parentNode.selectedIndex;

- 			}

- 

- 			return elem.selected === true;

- 		},

- 

- 		// Contents

- 		"empty": function( elem ) {

- 			// http://www.w3.org/TR/selectors/#empty-pseudo

- 			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),

- 			//   but not by others (comment: 8; processing instruction: 7; etc.)

- 			// nodeType < 6 works because attributes (2) do not appear as children

- 			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {

- 				if ( elem.nodeType < 6 ) {

- 					return false;

- 				}

- 			}

- 			return true;

- 		},

- 

- 		"parent": function( elem ) {

- 			return !Expr.pseudos["empty"]( elem );

- 		},

- 

- 		// Element/input types

- 		"header": function( elem ) {

- 			return rheader.test( elem.nodeName );

- 		},

- 

- 		"input": function( elem ) {

- 			return rinputs.test( elem.nodeName );

- 		},

- 

- 		"button": function( elem ) {

- 			var name = elem.nodeName.toLowerCase();

- 			return name === "input" && elem.type === "button" || name === "button";

- 		},

- 

- 		"text": function( elem ) {

- 			var attr;

- 			return elem.nodeName.toLowerCase() === "input" &&

- 				elem.type === "text" &&

- 

- 				// Support: IE<8

- 				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"

- 				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );

- 		},

- 

- 		// Position-in-collection

- 		"first": createPositionalPseudo(function() {

- 			return [ 0 ];

- 		}),

- 

- 		"last": createPositionalPseudo(function( matchIndexes, length ) {

- 			return [ length - 1 ];

- 		}),

- 

- 		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {

- 			return [ argument < 0 ? argument + length : argument ];

- 		}),

- 

- 		"even": createPositionalPseudo(function( matchIndexes, length ) {

- 			var i = 0;

- 			for ( ; i < length; i += 2 ) {

- 				matchIndexes.push( i );

- 			}

- 			return matchIndexes;

- 		}),

- 

- 		"odd": createPositionalPseudo(function( matchIndexes, length ) {

- 			var i = 1;

- 			for ( ; i < length; i += 2 ) {

- 				matchIndexes.push( i );

- 			}

- 			return matchIndexes;

- 		}),

- 

- 		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {

- 			var i = argument < 0 ? argument + length : argument;

- 			for ( ; --i >= 0; ) {

- 				matchIndexes.push( i );

- 			}

- 			return matchIndexes;

- 		}),

- 

- 		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {

- 			var i = argument < 0 ? argument + length : argument;

- 			for ( ; ++i < length; ) {

- 				matchIndexes.push( i );

- 			}

- 			return matchIndexes;

- 		})

- 	}

- };

- 

- Expr.pseudos["nth"] = Expr.pseudos["eq"];

- 

- // Add button/input type pseudos

- for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {

- 	Expr.pseudos[ i ] = createInputPseudo( i );

- }

- for ( i in { submit: true, reset: true } ) {

- 	Expr.pseudos[ i ] = createButtonPseudo( i );

- }

- 

- // Easy API for creating new setFilters

- function setFilters() {}

- setFilters.prototype = Expr.filters = Expr.pseudos;

- Expr.setFilters = new setFilters();

- 

- tokenize = Sizzle.tokenize = function( selector, parseOnly ) {

- 	var matched, match, tokens, type,

- 		soFar, groups, preFilters,

- 		cached = tokenCache[ selector + " " ];

- 

- 	if ( cached ) {

- 		return parseOnly ? 0 : cached.slice( 0 );

- 	}

- 

- 	soFar = selector;

- 	groups = [];

- 	preFilters = Expr.preFilter;

- 

- 	while ( soFar ) {

- 

- 		// Comma and first run

- 		if ( !matched || (match = rcomma.exec( soFar )) ) {

- 			if ( match ) {

- 				// Don't consume trailing commas as valid

- 				soFar = soFar.slice( match[0].length ) || soFar;

- 			}

- 			groups.push( (tokens = []) );

- 		}

- 

- 		matched = false;

- 

- 		// Combinators

- 		if ( (match = rcombinators.exec( soFar )) ) {

- 			matched = match.shift();

- 			tokens.push({

- 				value: matched,

- 				// Cast descendant combinators to space

- 				type: match[0].replace( rtrim, " " )

- 			});

- 			soFar = soFar.slice( matched.length );

- 		}

- 

- 		// Filters

- 		for ( type in Expr.filter ) {

- 			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||

- 				(match = preFilters[ type ]( match ))) ) {

- 				matched = match.shift();

- 				tokens.push({

- 					value: matched,

- 					type: type,

- 					matches: match

- 				});

- 				soFar = soFar.slice( matched.length );

- 			}

- 		}

- 

- 		if ( !matched ) {

- 			break;

- 		}

- 	}

- 

- 	// Return the length of the invalid excess

- 	// if we're just parsing

- 	// Otherwise, throw an error or return tokens

- 	return parseOnly ?

- 		soFar.length :

- 		soFar ?

- 			Sizzle.error( selector ) :

- 			// Cache the tokens

- 			tokenCache( selector, groups ).slice( 0 );

- };

- 

- function toSelector( tokens ) {

- 	var i = 0,

- 		len = tokens.length,

- 		selector = "";

- 	for ( ; i < len; i++ ) {

- 		selector += tokens[i].value;

- 	}

- 	return selector;

- }

- 

- function addCombinator( matcher, combinator, base ) {

- 	var dir = combinator.dir,

- 		skip = combinator.next,

- 		key = skip || dir,

- 		checkNonElements = base && key === "parentNode",

- 		doneName = done++;

- 

- 	return combinator.first ?

- 		// Check against closest ancestor/preceding element

- 		function( elem, context, xml ) {

- 			while ( (elem = elem[ dir ]) ) {

- 				if ( elem.nodeType === 1 || checkNonElements ) {

- 					return matcher( elem, context, xml );

- 				}

- 			}

- 			return false;

- 		} :

- 

- 		// Check against all ancestor/preceding elements

- 		function( elem, context, xml ) {

- 			var oldCache, uniqueCache, outerCache,

- 				newCache = [ dirruns, doneName ];

- 

- 			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching

- 			if ( xml ) {

- 				while ( (elem = elem[ dir ]) ) {

- 					if ( elem.nodeType === 1 || checkNonElements ) {

- 						if ( matcher( elem, context, xml ) ) {

- 							return true;

- 						}

- 					}

- 				}

- 			} else {

- 				while ( (elem = elem[ dir ]) ) {

- 					if ( elem.nodeType === 1 || checkNonElements ) {

- 						outerCache = elem[ expando ] || (elem[ expando ] = {});

- 

- 						// Support: IE <9 only

- 						// Defend against cloned attroperties (jQuery gh-1709)

- 						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});

- 

- 						if ( skip && skip === elem.nodeName.toLowerCase() ) {

- 							elem = elem[ dir ] || elem;

- 						} else if ( (oldCache = uniqueCache[ key ]) &&

- 							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {

- 

- 							// Assign to newCache so results back-propagate to previous elements

- 							return (newCache[ 2 ] = oldCache[ 2 ]);

- 						} else {

- 							// Reuse newcache so results back-propagate to previous elements

- 							uniqueCache[ key ] = newCache;

- 

- 							// A match means we're done; a fail means we have to keep checking

- 							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {

- 								return true;

- 							}

- 						}

- 					}

- 				}

- 			}

- 			return false;

- 		};

- }

- 

- function elementMatcher( matchers ) {

- 	return matchers.length > 1 ?

- 		function( elem, context, xml ) {

- 			var i = matchers.length;

- 			while ( i-- ) {

- 				if ( !matchers[i]( elem, context, xml ) ) {

- 					return false;

- 				}

- 			}

- 			return true;

- 		} :

- 		matchers[0];

- }

- 

- function multipleContexts( selector, contexts, results ) {

- 	var i = 0,

- 		len = contexts.length;

- 	for ( ; i < len; i++ ) {

- 		Sizzle( selector, contexts[i], results );

- 	}

- 	return results;

- }

- 

- function condense( unmatched, map, filter, context, xml ) {

- 	var elem,

- 		newUnmatched = [],

- 		i = 0,

- 		len = unmatched.length,

- 		mapped = map != null;

- 

- 	for ( ; i < len; i++ ) {

- 		if ( (elem = unmatched[i]) ) {

- 			if ( !filter || filter( elem, context, xml ) ) {

- 				newUnmatched.push( elem );

- 				if ( mapped ) {

- 					map.push( i );

- 				}

- 			}

- 		}

- 	}

- 

- 	return newUnmatched;

- }

- 

- function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {

- 	if ( postFilter && !postFilter[ expando ] ) {

- 		postFilter = setMatcher( postFilter );

- 	}

- 	if ( postFinder && !postFinder[ expando ] ) {

- 		postFinder = setMatcher( postFinder, postSelector );

- 	}

- 	return markFunction(function( seed, results, context, xml ) {

- 		var temp, i, elem,

- 			preMap = [],

- 			postMap = [],

- 			preexisting = results.length,

- 

- 			// Get initial elements from seed or context

- 			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),

- 

- 			// Prefilter to get matcher input, preserving a map for seed-results synchronization

- 			matcherIn = preFilter && ( seed || !selector ) ?

- 				condense( elems, preMap, preFilter, context, xml ) :

- 				elems,

- 

- 			matcherOut = matcher ?

- 				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,

- 				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?

- 

- 					// ...intermediate processing is necessary

- 					[] :

- 

- 					// ...otherwise use results directly

- 					results :

- 				matcherIn;

- 

- 		// Find primary matches

- 		if ( matcher ) {

- 			matcher( matcherIn, matcherOut, context, xml );

- 		}

- 

- 		// Apply postFilter

- 		if ( postFilter ) {

- 			temp = condense( matcherOut, postMap );

- 			postFilter( temp, [], context, xml );

- 

- 			// Un-match failing elements by moving them back to matcherIn

- 			i = temp.length;

- 			while ( i-- ) {

- 				if ( (elem = temp[i]) ) {

- 					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);

- 				}

- 			}

- 		}

- 

- 		if ( seed ) {

- 			if ( postFinder || preFilter ) {

- 				if ( postFinder ) {

- 					// Get the final matcherOut by condensing this intermediate into postFinder contexts

- 					temp = [];

- 					i = matcherOut.length;

- 					while ( i-- ) {

- 						if ( (elem = matcherOut[i]) ) {

- 							// Restore matcherIn since elem is not yet a final match

- 							temp.push( (matcherIn[i] = elem) );

- 						}

- 					}

- 					postFinder( null, (matcherOut = []), temp, xml );

- 				}

- 

- 				// Move matched elements from seed to results to keep them synchronized

- 				i = matcherOut.length;

- 				while ( i-- ) {

- 					if ( (elem = matcherOut[i]) &&

- 						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {

- 

- 						seed[temp] = !(results[temp] = elem);

- 					}

- 				}

- 			}

- 

- 		// Add elements to results, through postFinder if defined

- 		} else {

- 			matcherOut = condense(

- 				matcherOut === results ?

- 					matcherOut.splice( preexisting, matcherOut.length ) :

- 					matcherOut

- 			);

- 			if ( postFinder ) {

- 				postFinder( null, results, matcherOut, xml );

- 			} else {

- 				push.apply( results, matcherOut );

- 			}

- 		}

- 	});

- }

- 

- function matcherFromTokens( tokens ) {

- 	var checkContext, matcher, j,

- 		len = tokens.length,

- 		leadingRelative = Expr.relative[ tokens[0].type ],

- 		implicitRelative = leadingRelative || Expr.relative[" "],

- 		i = leadingRelative ? 1 : 0,

- 

- 		// The foundational matcher ensures that elements are reachable from top-level context(s)

- 		matchContext = addCombinator( function( elem ) {

- 			return elem === checkContext;

- 		}, implicitRelative, true ),

- 		matchAnyContext = addCombinator( function( elem ) {

- 			return indexOf( checkContext, elem ) > -1;

- 		}, implicitRelative, true ),

- 		matchers = [ function( elem, context, xml ) {

- 			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (

- 				(checkContext = context).nodeType ?

- 					matchContext( elem, context, xml ) :

- 					matchAnyContext( elem, context, xml ) );

- 			// Avoid hanging onto element (issue #299)

- 			checkContext = null;

- 			return ret;

- 		} ];

- 

- 	for ( ; i < len; i++ ) {

- 		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {

- 			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];

- 		} else {

- 			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );

- 

- 			// Return special upon seeing a positional matcher

- 			if ( matcher[ expando ] ) {

- 				// Find the next relative operator (if any) for proper handling

- 				j = ++i;

- 				for ( ; j < len; j++ ) {

- 					if ( Expr.relative[ tokens[j].type ] ) {

- 						break;

- 					}

- 				}

- 				return setMatcher(

- 					i > 1 && elementMatcher( matchers ),

- 					i > 1 && toSelector(

- 						// If the preceding token was a descendant combinator, insert an implicit any-element `*`

- 						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })

- 					).replace( rtrim, "$1" ),

- 					matcher,

- 					i < j && matcherFromTokens( tokens.slice( i, j ) ),

- 					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),

- 					j < len && toSelector( tokens )

- 				);

- 			}

- 			matchers.push( matcher );

- 		}

- 	}

- 

- 	return elementMatcher( matchers );

- }

- 

- function matcherFromGroupMatchers( elementMatchers, setMatchers ) {

- 	var bySet = setMatchers.length > 0,

- 		byElement = elementMatchers.length > 0,

- 		superMatcher = function( seed, context, xml, results, outermost ) {

- 			var elem, j, matcher,

- 				matchedCount = 0,

- 				i = "0",

- 				unmatched = seed && [],

- 				setMatched = [],

- 				contextBackup = outermostContext,

- 				// We must always have either seed elements or outermost context

- 				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),

- 				// Use integer dirruns iff this is the outermost matcher

- 				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),

- 				len = elems.length;

- 

- 			if ( outermost ) {

- 				outermostContext = context === document || context || outermost;

- 			}

- 

- 			// Add elements passing elementMatchers directly to results

- 			// Support: IE<9, Safari

- 			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id

- 			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {

- 				if ( byElement && elem ) {

- 					j = 0;

- 					if ( !context && elem.ownerDocument !== document ) {

- 						setDocument( elem );

- 						xml = !documentIsHTML;

- 					}

- 					while ( (matcher = elementMatchers[j++]) ) {

- 						if ( matcher( elem, context || document, xml) ) {

- 							results.push( elem );

- 							break;

- 						}

- 					}

- 					if ( outermost ) {

- 						dirruns = dirrunsUnique;

- 					}

- 				}

- 

- 				// Track unmatched elements for set filters

- 				if ( bySet ) {

- 					// They will have gone through all possible matchers

- 					if ( (elem = !matcher && elem) ) {

- 						matchedCount--;

- 					}

- 

- 					// Lengthen the array for every element, matched or not

- 					if ( seed ) {

- 						unmatched.push( elem );

- 					}

- 				}

- 			}

- 

- 			// `i` is now the count of elements visited above, and adding it to `matchedCount`

- 			// makes the latter nonnegative.

- 			matchedCount += i;

- 

- 			// Apply set filters to unmatched elements

- 			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`

- 			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have

- 			// no element matchers and no seed.

- 			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that

- 			// case, which will result in a "00" `matchedCount` that differs from `i` but is also

- 			// numerically zero.

- 			if ( bySet && i !== matchedCount ) {

- 				j = 0;

- 				while ( (matcher = setMatchers[j++]) ) {

- 					matcher( unmatched, setMatched, context, xml );

- 				}

- 

- 				if ( seed ) {

- 					// Reintegrate element matches to eliminate the need for sorting

- 					if ( matchedCount > 0 ) {

- 						while ( i-- ) {

- 							if ( !(unmatched[i] || setMatched[i]) ) {

- 								setMatched[i] = pop.call( results );

- 							}

- 						}

- 					}

- 

- 					// Discard index placeholder values to get only actual matches

- 					setMatched = condense( setMatched );

- 				}

- 

- 				// Add matches to results

- 				push.apply( results, setMatched );

- 

- 				// Seedless set matches succeeding multiple successful matchers stipulate sorting

- 				if ( outermost && !seed && setMatched.length > 0 &&

- 					( matchedCount + setMatchers.length ) > 1 ) {

- 

- 					Sizzle.uniqueSort( results );

- 				}

- 			}

- 

- 			// Override manipulation of globals by nested matchers

- 			if ( outermost ) {

- 				dirruns = dirrunsUnique;

- 				outermostContext = contextBackup;

- 			}

- 

- 			return unmatched;

- 		};

- 

- 	return bySet ?

- 		markFunction( superMatcher ) :

- 		superMatcher;

- }

- 

- compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {

- 	var i,

- 		setMatchers = [],

- 		elementMatchers = [],

- 		cached = compilerCache[ selector + " " ];

- 

- 	if ( !cached ) {

- 		// Generate a function of recursive functions that can be used to check each element

- 		if ( !match ) {

- 			match = tokenize( selector );

- 		}

- 		i = match.length;

- 		while ( i-- ) {

- 			cached = matcherFromTokens( match[i] );

- 			if ( cached[ expando ] ) {

- 				setMatchers.push( cached );

- 			} else {

- 				elementMatchers.push( cached );

- 			}

- 		}

- 

- 		// Cache the compiled function

- 		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );

- 

- 		// Save selector and tokenization

- 		cached.selector = selector;

- 	}

- 	return cached;

- };

- 

- /**

-  * A low-level selection function that works with Sizzle's compiled

-  *  selector functions

-  * @param {String|Function} selector A selector or a pre-compiled

-  *  selector function built with Sizzle.compile

-  * @param {Element} context

-  * @param {Array} [results]

-  * @param {Array} [seed] A set of elements to match against

-  */

- select = Sizzle.select = function( selector, context, results, seed ) {

- 	var i, tokens, token, type, find,

- 		compiled = typeof selector === "function" && selector,

- 		match = !seed && tokenize( (selector = compiled.selector || selector) );

- 

- 	results = results || [];

- 

- 	// Try to minimize operations if there is only one selector in the list and no seed

- 	// (the latter of which guarantees us context)

- 	if ( match.length === 1 ) {

- 

- 		// Reduce context if the leading compound selector is an ID

- 		tokens = match[0] = match[0].slice( 0 );

- 		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&

- 				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {

- 

- 			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];

- 			if ( !context ) {

- 				return results;

- 

- 			// Precompiled matchers will still verify ancestry, so step up a level

- 			} else if ( compiled ) {

- 				context = context.parentNode;

- 			}

- 

- 			selector = selector.slice( tokens.shift().value.length );

- 		}

- 

- 		// Fetch a seed set for right-to-left matching

- 		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;

- 		while ( i-- ) {

- 			token = tokens[i];

- 

- 			// Abort if we hit a combinator

- 			if ( Expr.relative[ (type = token.type) ] ) {

- 				break;

- 			}

- 			if ( (find = Expr.find[ type ]) ) {

- 				// Search, expanding context for leading sibling combinators

- 				if ( (seed = find(

- 					token.matches[0].replace( runescape, funescape ),

- 					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context

- 				)) ) {

- 

- 					// If seed is empty or no tokens remain, we can return early

- 					tokens.splice( i, 1 );

- 					selector = seed.length && toSelector( tokens );

- 					if ( !selector ) {

- 						push.apply( results, seed );

- 						return results;

- 					}

- 

- 					break;

- 				}

- 			}

- 		}

- 	}

- 

- 	// Compile and execute a filtering function if one is not provided

- 	// Provide `match` to avoid retokenization if we modified the selector above

- 	( compiled || compile( selector, match ) )(

- 		seed,

- 		context,

- 		!documentIsHTML,

- 		results,

- 		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context

- 	);

- 	return results;

- };

- 

- // One-time assignments

- 

- // Sort stability

- support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;

- 

- // Support: Chrome 14-35+

- // Always assume duplicates if they aren't passed to the comparison function

- support.detectDuplicates = !!hasDuplicate;

- 

- // Initialize against the default document

- setDocument();

- 

- // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)

- // Detached nodes confoundingly follow *each other*

- support.sortDetached = assert(function( el ) {

- 	// Should return 1, but returns 4 (following)

- 	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;

- });

- 

- // Support: IE<8

- // Prevent attribute/property "interpolation"

- // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx

- if ( !assert(function( el ) {

- 	el.innerHTML = "<a href='#'></a>";

- 	return el.firstChild.getAttribute("href") === "#" ;

- }) ) {

- 	addHandle( "type|href|height|width", function( elem, name, isXML ) {

- 		if ( !isXML ) {

- 			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );

- 		}

- 	});

- }

- 

- // Support: IE<9

- // Use defaultValue in place of getAttribute("value")

- if ( !support.attributes || !assert(function( el ) {

- 	el.innerHTML = "<input/>";

- 	el.firstChild.setAttribute( "value", "" );

- 	return el.firstChild.getAttribute( "value" ) === "";

- }) ) {

- 	addHandle( "value", function( elem, name, isXML ) {

- 		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {

- 			return elem.defaultValue;

- 		}

- 	});

- }

- 

- // Support: IE<9

- // Use getAttributeNode to fetch booleans when getAttribute lies

- if ( !assert(function( el ) {

- 	return el.getAttribute("disabled") == null;

- }) ) {

- 	addHandle( booleans, function( elem, name, isXML ) {

- 		var val;

- 		if ( !isXML ) {

- 			return elem[ name ] === true ? name.toLowerCase() :

- 					(val = elem.getAttributeNode( name )) && val.specified ?

- 					val.value :

- 				null;

- 		}

- 	});

- }

- 

- return Sizzle;

- 

- })( window );

- 

- 

- 

- jQuery.find = Sizzle;

- jQuery.expr = Sizzle.selectors;

- 

- // Deprecated

- jQuery.expr[ ":" ] = jQuery.expr.pseudos;

- jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;

- jQuery.text = Sizzle.getText;

- jQuery.isXMLDoc = Sizzle.isXML;

- jQuery.contains = Sizzle.contains;

- jQuery.escapeSelector = Sizzle.escape;

- 

- 

- 

- 

- var dir = function( elem, dir, until ) {

- 	var matched = [],

- 		truncate = until !== undefined;

- 

- 	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {

- 		if ( elem.nodeType === 1 ) {

- 			if ( truncate && jQuery( elem ).is( until ) ) {

- 				break;

- 			}

- 			matched.push( elem );

- 		}

- 	}

- 	return matched;

- };

- 

- 

- var siblings = function( n, elem ) {

- 	var matched = [];

- 

- 	for ( ; n; n = n.nextSibling ) {

- 		if ( n.nodeType === 1 && n !== elem ) {

- 			matched.push( n );

- 		}

- 	}

- 

- 	return matched;

- };

- 

- 

- var rneedsContext = jQuery.expr.match.needsContext;

- 

- 

- 

- function nodeName( elem, name ) {

- 

-   return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();

- 

- };

- var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );

- 

- 

- 

- // Implement the identical functionality for filter and not

- function winnow( elements, qualifier, not ) {

- 	if ( isFunction( qualifier ) ) {

- 		return jQuery.grep( elements, function( elem, i ) {

- 			return !!qualifier.call( elem, i, elem ) !== not;

- 		} );

- 	}

- 

- 	// Single element

- 	if ( qualifier.nodeType ) {

- 		return jQuery.grep( elements, function( elem ) {

- 			return ( elem === qualifier ) !== not;

- 		} );

- 	}

- 

- 	// Arraylike of elements (jQuery, arguments, Array)

- 	if ( typeof qualifier !== "string" ) {

- 		return jQuery.grep( elements, function( elem ) {

- 			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;

- 		} );

- 	}

- 

- 	// Filtered directly for both simple and complex selectors

- 	return jQuery.filter( qualifier, elements, not );

- }

- 

- jQuery.filter = function( expr, elems, not ) {

- 	var elem = elems[ 0 ];

- 

- 	if ( not ) {

- 		expr = ":not(" + expr + ")";

- 	}

- 

- 	if ( elems.length === 1 && elem.nodeType === 1 ) {

- 		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];

- 	}

- 

- 	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {

- 		return elem.nodeType === 1;

- 	} ) );

- };

- 

- jQuery.fn.extend( {

- 	find: function( selector ) {

- 		var i, ret,

- 			len = this.length,

- 			self = this;

- 

- 		if ( typeof selector !== "string" ) {

- 			return this.pushStack( jQuery( selector ).filter( function() {

- 				for ( i = 0; i < len; i++ ) {

- 					if ( jQuery.contains( self[ i ], this ) ) {

- 						return true;

- 					}

- 				}

- 			} ) );

- 		}

- 

- 		ret = this.pushStack( [] );

- 

- 		for ( i = 0; i < len; i++ ) {

- 			jQuery.find( selector, self[ i ], ret );

- 		}

- 

- 		return len > 1 ? jQuery.uniqueSort( ret ) : ret;

- 	},

- 	filter: function( selector ) {

- 		return this.pushStack( winnow( this, selector || [], false ) );

- 	},

- 	not: function( selector ) {

- 		return this.pushStack( winnow( this, selector || [], true ) );

- 	},

- 	is: function( selector ) {

- 		return !!winnow(

- 			this,

- 

- 			// If this is a positional/relative selector, check membership in the returned set

- 			// so $("p:first").is("p:last") won't return true for a doc with two "p".

- 			typeof selector === "string" && rneedsContext.test( selector ) ?

- 				jQuery( selector ) :

- 				selector || [],

- 			false

- 		).length;

- 	}

- } );

- 

- 

- // Initialize a jQuery object

- 

- 

- // A central reference to the root jQuery(document)

- var rootjQuery,

- 

- 	// A simple way to check for HTML strings

- 	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)

- 	// Strict HTML recognition (#11290: must start with <)

- 	// Shortcut simple #id case for speed

- 	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,

- 

- 	init = jQuery.fn.init = function( selector, context, root ) {

- 		var match, elem;

- 

- 		// HANDLE: $(""), $(null), $(undefined), $(false)

- 		if ( !selector ) {

- 			return this;

- 		}

- 

- 		// Method init() accepts an alternate rootjQuery

- 		// so migrate can support jQuery.sub (gh-2101)

- 		root = root || rootjQuery;

- 

- 		// Handle HTML strings

- 		if ( typeof selector === "string" ) {

- 			if ( selector[ 0 ] === "<" &&

- 				selector[ selector.length - 1 ] === ">" &&

- 				selector.length >= 3 ) {

- 

- 				// Assume that strings that start and end with <> are HTML and skip the regex check

- 				match = [ null, selector, null ];

- 

- 			} else {

- 				match = rquickExpr.exec( selector );

- 			}

- 

- 			// Match html or make sure no context is specified for #id

- 			if ( match && ( match[ 1 ] || !context ) ) {

- 

- 				// HANDLE: $(html) -> $(array)

- 				if ( match[ 1 ] ) {

- 					context = context instanceof jQuery ? context[ 0 ] : context;

- 

- 					// Option to run scripts is true for back-compat

- 					// Intentionally let the error be thrown if parseHTML is not present

- 					jQuery.merge( this, jQuery.parseHTML(

- 						match[ 1 ],

- 						context && context.nodeType ? context.ownerDocument || context : document,

- 						true

- 					) );

- 

- 					// HANDLE: $(html, props)

- 					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {

- 						for ( match in context ) {

- 

- 							// Properties of context are called as methods if possible

- 							if ( isFunction( this[ match ] ) ) {

- 								this[ match ]( context[ match ] );

- 

- 							// ...and otherwise set as attributes

- 							} else {

- 								this.attr( match, context[ match ] );

- 							}

- 						}

- 					}

- 

- 					return this;

- 

- 				// HANDLE: $(#id)

- 				} else {

- 					elem = document.getElementById( match[ 2 ] );

- 

- 					if ( elem ) {

- 

- 						// Inject the element directly into the jQuery object

- 						this[ 0 ] = elem;

- 						this.length = 1;

- 					}

- 					return this;

- 				}

- 

- 			// HANDLE: $(expr, $(...))

- 			} else if ( !context || context.jquery ) {

- 				return ( context || root ).find( selector );

- 

- 			// HANDLE: $(expr, context)

- 			// (which is just equivalent to: $(context).find(expr)

- 			} else {

- 				return this.constructor( context ).find( selector );

- 			}

- 

- 		// HANDLE: $(DOMElement)

- 		} else if ( selector.nodeType ) {

- 			this[ 0 ] = selector;

- 			this.length = 1;

- 			return this;

- 

- 		// HANDLE: $(function)

- 		// Shortcut for document ready

- 		} else if ( isFunction( selector ) ) {

- 			return root.ready !== undefined ?

- 				root.ready( selector ) :

- 

- 				// Execute immediately if ready is not present

- 				selector( jQuery );

- 		}

- 

- 		return jQuery.makeArray( selector, this );

- 	};

- 

- // Give the init function the jQuery prototype for later instantiation

- init.prototype = jQuery.fn;

- 

- // Initialize central reference

- rootjQuery = jQuery( document );

- 

- 

- var rparentsprev = /^(?:parents|prev(?:Until|All))/,

- 

- 	// Methods guaranteed to produce a unique set when starting from a unique set

- 	guaranteedUnique = {

- 		children: true,

- 		contents: true,

- 		next: true,

- 		prev: true

- 	};

- 

- jQuery.fn.extend( {

- 	has: function( target ) {

- 		var targets = jQuery( target, this ),

- 			l = targets.length;

- 

- 		return this.filter( function() {

- 			var i = 0;

- 			for ( ; i < l; i++ ) {

- 				if ( jQuery.contains( this, targets[ i ] ) ) {

- 					return true;

- 				}

- 			}

- 		} );

- 	},

- 

- 	closest: function( selectors, context ) {

- 		var cur,

- 			i = 0,

- 			l = this.length,

- 			matched = [],

- 			targets = typeof selectors !== "string" && jQuery( selectors );

- 

- 		// Positional selectors never match, since there's no _selection_ context

- 		if ( !rneedsContext.test( selectors ) ) {

- 			for ( ; i < l; i++ ) {

- 				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {

- 

- 					// Always skip document fragments

- 					if ( cur.nodeType < 11 && ( targets ?

- 						targets.index( cur ) > -1 :

- 

- 						// Don't pass non-elements to Sizzle

- 						cur.nodeType === 1 &&

- 							jQuery.find.matchesSelector( cur, selectors ) ) ) {

- 

- 						matched.push( cur );

- 						break;

- 					}

- 				}

- 			}

- 		}

- 

- 		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );

- 	},

- 

- 	// Determine the position of an element within the set

- 	index: function( elem ) {

- 

- 		// No argument, return index in parent

- 		if ( !elem ) {

- 			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;

- 		}

- 

- 		// Index in selector

- 		if ( typeof elem === "string" ) {

- 			return indexOf.call( jQuery( elem ), this[ 0 ] );

- 		}

- 

- 		// Locate the position of the desired element

- 		return indexOf.call( this,

- 

- 			// If it receives a jQuery object, the first element is used

- 			elem.jquery ? elem[ 0 ] : elem

- 		);

- 	},

- 

- 	add: function( selector, context ) {

- 		return this.pushStack(

- 			jQuery.uniqueSort(

- 				jQuery.merge( this.get(), jQuery( selector, context ) )

- 			)

- 		);

- 	},

- 

- 	addBack: function( selector ) {

- 		return this.add( selector == null ?

- 			this.prevObject : this.prevObject.filter( selector )

- 		);

- 	}

- } );

- 

- function sibling( cur, dir ) {

- 	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}

- 	return cur;

- }

- 

- jQuery.each( {

- 	parent: function( elem ) {

- 		var parent = elem.parentNode;

- 		return parent && parent.nodeType !== 11 ? parent : null;

- 	},

- 	parents: function( elem ) {

- 		return dir( elem, "parentNode" );

- 	},

- 	parentsUntil: function( elem, i, until ) {

- 		return dir( elem, "parentNode", until );

- 	},

- 	next: function( elem ) {

- 		return sibling( elem, "nextSibling" );

- 	},

- 	prev: function( elem ) {

- 		return sibling( elem, "previousSibling" );

- 	},

- 	nextAll: function( elem ) {

- 		return dir( elem, "nextSibling" );

- 	},

- 	prevAll: function( elem ) {

- 		return dir( elem, "previousSibling" );

- 	},

- 	nextUntil: function( elem, i, until ) {

- 		return dir( elem, "nextSibling", until );

- 	},

- 	prevUntil: function( elem, i, until ) {

- 		return dir( elem, "previousSibling", until );

- 	},

- 	siblings: function( elem ) {

- 		return siblings( ( elem.parentNode || {} ).firstChild, elem );

- 	},

- 	children: function( elem ) {

- 		return siblings( elem.firstChild );

- 	},

- 	contents: function( elem ) {

-         if ( nodeName( elem, "iframe" ) ) {

-             return elem.contentDocument;

-         }

- 

-         // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only

-         // Treat the template element as a regular one in browsers that

-         // don't support it.

-         if ( nodeName( elem, "template" ) ) {

-             elem = elem.content || elem;

-         }

- 

-         return jQuery.merge( [], elem.childNodes );

- 	}

- }, function( name, fn ) {

- 	jQuery.fn[ name ] = function( until, selector ) {

- 		var matched = jQuery.map( this, fn, until );

- 

- 		if ( name.slice( -5 ) !== "Until" ) {

- 			selector = until;

- 		}

- 

- 		if ( selector && typeof selector === "string" ) {

- 			matched = jQuery.filter( selector, matched );

- 		}

- 

- 		if ( this.length > 1 ) {

- 

- 			// Remove duplicates

- 			if ( !guaranteedUnique[ name ] ) {

- 				jQuery.uniqueSort( matched );

- 			}

- 

- 			// Reverse order for parents* and prev-derivatives

- 			if ( rparentsprev.test( name ) ) {

- 				matched.reverse();

- 			}

- 		}

- 

- 		return this.pushStack( matched );

- 	};

- } );

- var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );

- 

- 

- 

- // Convert String-formatted options into Object-formatted ones

- function createOptions( options ) {

- 	var object = {};

- 	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {

- 		object[ flag ] = true;

- 	} );

- 	return object;

- }

- 

- /*

-  * Create a callback list using the following parameters:

-  *

-  *	options: an optional list of space-separated options that will change how

-  *			the callback list behaves or a more traditional option object

-  *

-  * By default a callback list will act like an event callback list and can be

-  * "fired" multiple times.

-  *

-  * Possible options:

-  *

-  *	once:			will ensure the callback list can only be fired once (like a Deferred)

-  *

-  *	memory:			will keep track of previous values and will call any callback added

-  *					after the list has been fired right away with the latest "memorized"

-  *					values (like a Deferred)

-  *

-  *	unique:			will ensure a callback can only be added once (no duplicate in the list)

-  *

-  *	stopOnFalse:	interrupt callings when a callback returns false

-  *

-  */

- jQuery.Callbacks = function( options ) {

- 

- 	// Convert options from String-formatted to Object-formatted if needed

- 	// (we check in cache first)

- 	options = typeof options === "string" ?

- 		createOptions( options ) :

- 		jQuery.extend( {}, options );

- 

- 	var // Flag to know if list is currently firing

- 		firing,

- 

- 		// Last fire value for non-forgettable lists

- 		memory,

- 

- 		// Flag to know if list was already fired

- 		fired,

- 

- 		// Flag to prevent firing

- 		locked,

- 

- 		// Actual callback list

- 		list = [],

- 

- 		// Queue of execution data for repeatable lists

- 		queue = [],

- 

- 		// Index of currently firing callback (modified by add/remove as needed)

- 		firingIndex = -1,

- 

- 		// Fire callbacks

- 		fire = function() {

- 

- 			// Enforce single-firing

- 			locked = locked || options.once;

- 

- 			// Execute callbacks for all pending executions,

- 			// respecting firingIndex overrides and runtime changes

- 			fired = firing = true;

- 			for ( ; queue.length; firingIndex = -1 ) {

- 				memory = queue.shift();

- 				while ( ++firingIndex < list.length ) {

- 

- 					// Run callback and check for early termination

- 					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&

- 						options.stopOnFalse ) {

- 

- 						// Jump to end and forget the data so .add doesn't re-fire

- 						firingIndex = list.length;

- 						memory = false;

- 					}

- 				}

- 			}

- 

- 			// Forget the data if we're done with it

- 			if ( !options.memory ) {

- 				memory = false;

- 			}

- 

- 			firing = false;

- 

- 			// Clean up if we're done firing for good

- 			if ( locked ) {

- 

- 				// Keep an empty list if we have data for future add calls

- 				if ( memory ) {

- 					list = [];

- 

- 				// Otherwise, this object is spent

- 				} else {

- 					list = "";

- 				}

- 			}

- 		},

- 

- 		// Actual Callbacks object

- 		self = {

- 

- 			// Add a callback or a collection of callbacks to the list

- 			add: function() {

- 				if ( list ) {

- 

- 					// If we have memory from a past run, we should fire after adding

- 					if ( memory && !firing ) {

- 						firingIndex = list.length - 1;

- 						queue.push( memory );

- 					}

- 

- 					( function add( args ) {

- 						jQuery.each( args, function( _, arg ) {

- 							if ( isFunction( arg ) ) {

- 								if ( !options.unique || !self.has( arg ) ) {

- 									list.push( arg );

- 								}

- 							} else if ( arg && arg.length && toType( arg ) !== "string" ) {

- 

- 								// Inspect recursively

- 								add( arg );

- 							}

- 						} );

- 					} )( arguments );

- 

- 					if ( memory && !firing ) {

- 						fire();

- 					}

- 				}

- 				return this;

- 			},

- 

- 			// Remove a callback from the list

- 			remove: function() {

- 				jQuery.each( arguments, function( _, arg ) {

- 					var index;

- 					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {

- 						list.splice( index, 1 );

- 

- 						// Handle firing indexes

- 						if ( index <= firingIndex ) {

- 							firingIndex--;

- 						}

- 					}

- 				} );

- 				return this;

- 			},

- 

- 			// Check if a given callback is in the list.

- 			// If no argument is given, return whether or not list has callbacks attached.

- 			has: function( fn ) {

- 				return fn ?

- 					jQuery.inArray( fn, list ) > -1 :

- 					list.length > 0;

- 			},

- 

- 			// Remove all callbacks from the list

- 			empty: function() {

- 				if ( list ) {

- 					list = [];

- 				}

- 				return this;

- 			},

- 

- 			// Disable .fire and .add

- 			// Abort any current/pending executions

- 			// Clear all callbacks and values

- 			disable: function() {

- 				locked = queue = [];

- 				list = memory = "";

- 				return this;

- 			},

- 			disabled: function() {

- 				return !list;

- 			},

- 

- 			// Disable .fire

- 			// Also disable .add unless we have memory (since it would have no effect)

- 			// Abort any pending executions

- 			lock: function() {

- 				locked = queue = [];

- 				if ( !memory && !firing ) {

- 					list = memory = "";

- 				}

- 				return this;

- 			},

- 			locked: function() {

- 				return !!locked;

- 			},

- 

- 			// Call all callbacks with the given context and arguments

- 			fireWith: function( context, args ) {

- 				if ( !locked ) {

- 					args = args || [];

- 					args = [ context, args.slice ? args.slice() : args ];

- 					queue.push( args );

- 					if ( !firing ) {

- 						fire();

- 					}

- 				}

- 				return this;

- 			},

- 

- 			// Call all the callbacks with the given arguments

- 			fire: function() {

- 				self.fireWith( this, arguments );

- 				return this;

- 			},

- 

- 			// To know if the callbacks have already been called at least once

- 			fired: function() {

- 				return !!fired;

- 			}

- 		};

- 

- 	return self;

- };

- 

- 

- function Identity( v ) {

- 	return v;

- }

- function Thrower( ex ) {

- 	throw ex;

- }

- 

- function adoptValue( value, resolve, reject, noValue ) {

- 	var method;

- 

- 	try {

- 

- 		// Check for promise aspect first to privilege synchronous behavior

- 		if ( value && isFunction( ( method = value.promise ) ) ) {

- 			method.call( value ).done( resolve ).fail( reject );

- 

- 		// Other thenables

- 		} else if ( value && isFunction( ( method = value.then ) ) ) {

- 			method.call( value, resolve, reject );

- 

- 		// Other non-thenables

- 		} else {

- 

- 			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:

- 			// * false: [ value ].slice( 0 ) => resolve( value )

- 			// * true: [ value ].slice( 1 ) => resolve()

- 			resolve.apply( undefined, [ value ].slice( noValue ) );

- 		}

- 

- 	// For Promises/A+, convert exceptions into rejections

- 	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in

- 	// Deferred#then to conditionally suppress rejection.

- 	} catch ( value ) {

- 

- 		// Support: Android 4.0 only

- 		// Strict mode functions invoked without .call/.apply get global-object context

- 		reject.apply( undefined, [ value ] );

- 	}

- }

- 

- jQuery.extend( {

- 

- 	Deferred: function( func ) {

- 		var tuples = [

- 

- 				// action, add listener, callbacks,

- 				// ... .then handlers, argument index, [final state]

- 				[ "notify", "progress", jQuery.Callbacks( "memory" ),

- 					jQuery.Callbacks( "memory" ), 2 ],

- 				[ "resolve", "done", jQuery.Callbacks( "once memory" ),

- 					jQuery.Callbacks( "once memory" ), 0, "resolved" ],

- 				[ "reject", "fail", jQuery.Callbacks( "once memory" ),

- 					jQuery.Callbacks( "once memory" ), 1, "rejected" ]

- 			],

- 			state = "pending",

- 			promise = {

- 				state: function() {

- 					return state;

- 				},

- 				always: function() {

- 					deferred.done( arguments ).fail( arguments );

- 					return this;

- 				},

- 				"catch": function( fn ) {

- 					return promise.then( null, fn );

- 				},

- 

- 				// Keep pipe for back-compat

- 				pipe: function( /* fnDone, fnFail, fnProgress */ ) {

- 					var fns = arguments;

- 

- 					return jQuery.Deferred( function( newDefer ) {

- 						jQuery.each( tuples, function( i, tuple ) {

- 

- 							// Map tuples (progress, done, fail) to arguments (done, fail, progress)

- 							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];

- 

- 							// deferred.progress(function() { bind to newDefer or newDefer.notify })

- 							// deferred.done(function() { bind to newDefer or newDefer.resolve })

- 							// deferred.fail(function() { bind to newDefer or newDefer.reject })

- 							deferred[ tuple[ 1 ] ]( function() {

- 								var returned = fn && fn.apply( this, arguments );

- 								if ( returned && isFunction( returned.promise ) ) {

- 									returned.promise()

- 										.progress( newDefer.notify )

- 										.done( newDefer.resolve )

- 										.fail( newDefer.reject );

- 								} else {

- 									newDefer[ tuple[ 0 ] + "With" ](

- 										this,

- 										fn ? [ returned ] : arguments

- 									);

- 								}

- 							} );

- 						} );

- 						fns = null;

- 					} ).promise();

- 				},

- 				then: function( onFulfilled, onRejected, onProgress ) {

- 					var maxDepth = 0;

- 					function resolve( depth, deferred, handler, special ) {

- 						return function() {

- 							var that = this,

- 								args = arguments,

- 								mightThrow = function() {

- 									var returned, then;

- 

- 									// Support: Promises/A+ section 2.3.3.3.3

- 									// https://promisesaplus.com/#point-59

- 									// Ignore double-resolution attempts

- 									if ( depth < maxDepth ) {

- 										return;

- 									}

- 

- 									returned = handler.apply( that, args );

- 

- 									// Support: Promises/A+ section 2.3.1

- 									// https://promisesaplus.com/#point-48

- 									if ( returned === deferred.promise() ) {

- 										throw new TypeError( "Thenable self-resolution" );

- 									}

- 

- 									// Support: Promises/A+ sections 2.3.3.1, 3.5

- 									// https://promisesaplus.com/#point-54

- 									// https://promisesaplus.com/#point-75

- 									// Retrieve `then` only once

- 									then = returned &&

- 

- 										// Support: Promises/A+ section 2.3.4

- 										// https://promisesaplus.com/#point-64

- 										// Only check objects and functions for thenability

- 										( typeof returned === "object" ||

- 											typeof returned === "function" ) &&

- 										returned.then;

- 

- 									// Handle a returned thenable

- 									if ( isFunction( then ) ) {

- 

- 										// Special processors (notify) just wait for resolution

- 										if ( special ) {

- 											then.call(

- 												returned,

- 												resolve( maxDepth, deferred, Identity, special ),

- 												resolve( maxDepth, deferred, Thrower, special )

- 											);

- 

- 										// Normal processors (resolve) also hook into progress

- 										} else {

- 

- 											// ...and disregard older resolution values

- 											maxDepth++;

- 

- 											then.call(

- 												returned,

- 												resolve( maxDepth, deferred, Identity, special ),

- 												resolve( maxDepth, deferred, Thrower, special ),

- 												resolve( maxDepth, deferred, Identity,

- 													deferred.notifyWith )

- 											);

- 										}

- 

- 									// Handle all other returned values

- 									} else {

- 

- 										// Only substitute handlers pass on context

- 										// and multiple values (non-spec behavior)

- 										if ( handler !== Identity ) {

- 											that = undefined;

- 											args = [ returned ];

- 										}

- 

- 										// Process the value(s)

- 										// Default process is resolve

- 										( special || deferred.resolveWith )( that, args );

- 									}

- 								},

- 

- 								// Only normal processors (resolve) catch and reject exceptions

- 								process = special ?

- 									mightThrow :

- 									function() {

- 										try {

- 											mightThrow();

- 										} catch ( e ) {

- 

- 											if ( jQuery.Deferred.exceptionHook ) {

- 												jQuery.Deferred.exceptionHook( e,

- 													process.stackTrace );

- 											}

- 

- 											// Support: Promises/A+ section 2.3.3.3.4.1

- 											// https://promisesaplus.com/#point-61

- 											// Ignore post-resolution exceptions

- 											if ( depth + 1 >= maxDepth ) {

- 

- 												// Only substitute handlers pass on context

- 												// and multiple values (non-spec behavior)

- 												if ( handler !== Thrower ) {

- 													that = undefined;

- 													args = [ e ];

- 												}

- 

- 												deferred.rejectWith( that, args );

- 											}

- 										}

- 									};

- 

- 							// Support: Promises/A+ section 2.3.3.3.1

- 							// https://promisesaplus.com/#point-57

- 							// Re-resolve promises immediately to dodge false rejection from

- 							// subsequent errors

- 							if ( depth ) {

- 								process();

- 							} else {

- 

- 								// Call an optional hook to record the stack, in case of exception

- 								// since it's otherwise lost when execution goes async

- 								if ( jQuery.Deferred.getStackHook ) {

- 									process.stackTrace = jQuery.Deferred.getStackHook();

- 								}

- 								window.setTimeout( process );

- 							}

- 						};

- 					}

- 

- 					return jQuery.Deferred( function( newDefer ) {

- 

- 						// progress_handlers.add( ... )

- 						tuples[ 0 ][ 3 ].add(

- 							resolve(

- 								0,

- 								newDefer,

- 								isFunction( onProgress ) ?

- 									onProgress :

- 									Identity,

- 								newDefer.notifyWith

- 							)

- 						);

- 

- 						// fulfilled_handlers.add( ... )

- 						tuples[ 1 ][ 3 ].add(

- 							resolve(

- 								0,

- 								newDefer,

- 								isFunction( onFulfilled ) ?

- 									onFulfilled :

- 									Identity

- 							)

- 						);

- 

- 						// rejected_handlers.add( ... )

- 						tuples[ 2 ][ 3 ].add(

- 							resolve(

- 								0,

- 								newDefer,

- 								isFunction( onRejected ) ?

- 									onRejected :

- 									Thrower

- 							)

- 						);

- 					} ).promise();

- 				},

- 

- 				// Get a promise for this deferred

- 				// If obj is provided, the promise aspect is added to the object

- 				promise: function( obj ) {

- 					return obj != null ? jQuery.extend( obj, promise ) : promise;

- 				}

- 			},

- 			deferred = {};

- 

- 		// Add list-specific methods

- 		jQuery.each( tuples, function( i, tuple ) {

- 			var list = tuple[ 2 ],

- 				stateString = tuple[ 5 ];

- 

- 			// promise.progress = list.add

- 			// promise.done = list.add

- 			// promise.fail = list.add

- 			promise[ tuple[ 1 ] ] = list.add;

- 

- 			// Handle state

- 			if ( stateString ) {

- 				list.add(

- 					function() {

- 

- 						// state = "resolved" (i.e., fulfilled)

- 						// state = "rejected"

- 						state = stateString;

- 					},

- 

- 					// rejected_callbacks.disable

- 					// fulfilled_callbacks.disable

- 					tuples[ 3 - i ][ 2 ].disable,

- 

- 					// rejected_handlers.disable

- 					// fulfilled_handlers.disable

- 					tuples[ 3 - i ][ 3 ].disable,

- 

- 					// progress_callbacks.lock

- 					tuples[ 0 ][ 2 ].lock,

- 

- 					// progress_handlers.lock

- 					tuples[ 0 ][ 3 ].lock

- 				);

- 			}

- 

- 			// progress_handlers.fire

- 			// fulfilled_handlers.fire

- 			// rejected_handlers.fire

- 			list.add( tuple[ 3 ].fire );

- 

- 			// deferred.notify = function() { deferred.notifyWith(...) }

- 			// deferred.resolve = function() { deferred.resolveWith(...) }

- 			// deferred.reject = function() { deferred.rejectWith(...) }

- 			deferred[ tuple[ 0 ] ] = function() {

- 				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );

- 				return this;

- 			};

- 

- 			// deferred.notifyWith = list.fireWith

- 			// deferred.resolveWith = list.fireWith

- 			// deferred.rejectWith = list.fireWith

- 			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;

- 		} );

- 

- 		// Make the deferred a promise

- 		promise.promise( deferred );

- 

- 		// Call given func if any

- 		if ( func ) {

- 			func.call( deferred, deferred );

- 		}

- 

- 		// All done!

- 		return deferred;

- 	},

- 

- 	// Deferred helper

- 	when: function( singleValue ) {

- 		var

- 

- 			// count of uncompleted subordinates

- 			remaining = arguments.length,

- 

- 			// count of unprocessed arguments

- 			i = remaining,

- 

- 			// subordinate fulfillment data

- 			resolveContexts = Array( i ),

- 			resolveValues = slice.call( arguments ),

- 

- 			// the master Deferred

- 			master = jQuery.Deferred(),

- 

- 			// subordinate callback factory

- 			updateFunc = function( i ) {

- 				return function( value ) {

- 					resolveContexts[ i ] = this;

- 					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;

- 					if ( !( --remaining ) ) {

- 						master.resolveWith( resolveContexts, resolveValues );

- 					}

- 				};

- 			};

- 

- 		// Single- and empty arguments are adopted like Promise.resolve

- 		if ( remaining <= 1 ) {

- 			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,

- 				!remaining );

- 

- 			// Use .then() to unwrap secondary thenables (cf. gh-3000)

- 			if ( master.state() === "pending" ||

- 				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {

- 

- 				return master.then();

- 			}

- 		}

- 

- 		// Multiple arguments are aggregated like Promise.all array elements

- 		while ( i-- ) {

- 			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );

- 		}

- 

- 		return master.promise();

- 	}

- } );

- 

- 

- // These usually indicate a programmer mistake during development,

- // warn about them ASAP rather than swallowing them by default.

- var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;

- 

- jQuery.Deferred.exceptionHook = function( error, stack ) {

- 

- 	// Support: IE 8 - 9 only

- 	// Console exists when dev tools are open, which can happen at any time

- 	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {

- 		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );

- 	}

- };

- 

- 

- 

- 

- jQuery.readyException = function( error ) {

- 	window.setTimeout( function() {

- 		throw error;

- 	} );

- };

- 

- 

- 

- 

- // The deferred used on DOM ready

- var readyList = jQuery.Deferred();

- 

- jQuery.fn.ready = function( fn ) {

- 

- 	readyList

- 		.then( fn )

- 

- 		// Wrap jQuery.readyException in a function so that the lookup

- 		// happens at the time of error handling instead of callback

- 		// registration.

- 		.catch( function( error ) {

- 			jQuery.readyException( error );

- 		} );

- 

- 	return this;

- };

- 

- jQuery.extend( {

- 

- 	// Is the DOM ready to be used? Set to true once it occurs.

- 	isReady: false,

- 

- 	// A counter to track how many items to wait for before

- 	// the ready event fires. See #6781

- 	readyWait: 1,

- 

- 	// Handle when the DOM is ready

- 	ready: function( wait ) {

- 

- 		// Abort if there are pending holds or we're already ready

- 		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {

- 			return;

- 		}

- 

- 		// Remember that the DOM is ready

- 		jQuery.isReady = true;

- 

- 		// If a normal DOM Ready event fired, decrement, and wait if need be

- 		if ( wait !== true && --jQuery.readyWait > 0 ) {

- 			return;

- 		}

- 

- 		// If there are functions bound, to execute

- 		readyList.resolveWith( document, [ jQuery ] );

- 	}

- } );

- 

- jQuery.ready.then = readyList.then;

- 

- // The ready event handler and self cleanup method

- function completed() {

- 	document.removeEventListener( "DOMContentLoaded", completed );

- 	window.removeEventListener( "load", completed );

- 	jQuery.ready();

- }

- 

- // Catch cases where $(document).ready() is called

- // after the browser event has already occurred.

- // Support: IE <=9 - 10 only

- // Older IE sometimes signals "interactive" too soon

- if ( document.readyState === "complete" ||

- 	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {

- 

- 	// Handle it asynchronously to allow scripts the opportunity to delay ready

- 	window.setTimeout( jQuery.ready );

- 

- } else {

- 

- 	// Use the handy event callback

- 	document.addEventListener( "DOMContentLoaded", completed );

- 

- 	// A fallback to window.onload, that will always work

- 	window.addEventListener( "load", completed );

- }

- 

- 

- 

- 

- // Multifunctional method to get and set values of a collection

- // The value/s can optionally be executed if it's a function

- var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {

- 	var i = 0,

- 		len = elems.length,

- 		bulk = key == null;

- 

- 	// Sets many values

- 	if ( toType( key ) === "object" ) {

- 		chainable = true;

- 		for ( i in key ) {

- 			access( elems, fn, i, key[ i ], true, emptyGet, raw );

- 		}

- 

- 	// Sets one value

- 	} else if ( value !== undefined ) {

- 		chainable = true;

- 

- 		if ( !isFunction( value ) ) {

- 			raw = true;

- 		}

- 

- 		if ( bulk ) {

- 

- 			// Bulk operations run against the entire set

- 			if ( raw ) {

- 				fn.call( elems, value );

- 				fn = null;

- 

- 			// ...except when executing function values

- 			} else {

- 				bulk = fn;

- 				fn = function( elem, key, value ) {

- 					return bulk.call( jQuery( elem ), value );

- 				};

- 			}

- 		}

- 

- 		if ( fn ) {

- 			for ( ; i < len; i++ ) {

- 				fn(

- 					elems[ i ], key, raw ?

- 					value :

- 					value.call( elems[ i ], i, fn( elems[ i ], key ) )

- 				);

- 			}

- 		}

- 	}

- 

- 	if ( chainable ) {

- 		return elems;

- 	}

- 

- 	// Gets

- 	if ( bulk ) {

- 		return fn.call( elems );

- 	}

- 

- 	return len ? fn( elems[ 0 ], key ) : emptyGet;

- };

- 

- 

- // Matches dashed string for camelizing

- var rmsPrefix = /^-ms-/,

- 	rdashAlpha = /-([a-z])/g;

- 

- // Used by camelCase as callback to replace()

- function fcamelCase( all, letter ) {

- 	return letter.toUpperCase();

- }

- 

- // Convert dashed to camelCase; used by the css and data modules

- // Support: IE <=9 - 11, Edge 12 - 15

- // Microsoft forgot to hump their vendor prefix (#9572)

- function camelCase( string ) {

- 	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );

- }

- var acceptData = function( owner ) {

- 

- 	// Accepts only:

- 	//  - Node

- 	//    - Node.ELEMENT_NODE

- 	//    - Node.DOCUMENT_NODE

- 	//  - Object

- 	//    - Any

- 	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );

- };

- 

- 

- 

- 

- function Data() {

- 	this.expando = jQuery.expando + Data.uid++;

- }

- 

- Data.uid = 1;

- 

- Data.prototype = {

- 

- 	cache: function( owner ) {

- 

- 		// Check if the owner object already has a cache

- 		var value = owner[ this.expando ];

- 

- 		// If not, create one

- 		if ( !value ) {

- 			value = {};

- 

- 			// We can accept data for non-element nodes in modern browsers,

- 			// but we should not, see #8335.

- 			// Always return an empty object.

- 			if ( acceptData( owner ) ) {

- 

- 				// If it is a node unlikely to be stringify-ed or looped over

- 				// use plain assignment

- 				if ( owner.nodeType ) {

- 					owner[ this.expando ] = value;

- 

- 				// Otherwise secure it in a non-enumerable property

- 				// configurable must be true to allow the property to be

- 				// deleted when data is removed

- 				} else {

- 					Object.defineProperty( owner, this.expando, {

- 						value: value,

- 						configurable: true

- 					} );

- 				}

- 			}

- 		}

- 

- 		return value;

- 	},

- 	set: function( owner, data, value ) {

- 		var prop,

- 			cache = this.cache( owner );

- 

- 		// Handle: [ owner, key, value ] args

- 		// Always use camelCase key (gh-2257)

- 		if ( typeof data === "string" ) {

- 			cache[ camelCase( data ) ] = value;

- 

- 		// Handle: [ owner, { properties } ] args

- 		} else {

- 

- 			// Copy the properties one-by-one to the cache object

- 			for ( prop in data ) {

- 				cache[ camelCase( prop ) ] = data[ prop ];

- 			}

- 		}

- 		return cache;

- 	},

- 	get: function( owner, key ) {

- 		return key === undefined ?

- 			this.cache( owner ) :

- 

- 			// Always use camelCase key (gh-2257)

- 			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];

- 	},

- 	access: function( owner, key, value ) {

- 

- 		// In cases where either:

- 		//

- 		//   1. No key was specified

- 		//   2. A string key was specified, but no value provided

- 		//

- 		// Take the "read" path and allow the get method to determine

- 		// which value to return, respectively either:

- 		//

- 		//   1. The entire cache object

- 		//   2. The data stored at the key

- 		//

- 		if ( key === undefined ||

- 				( ( key && typeof key === "string" ) && value === undefined ) ) {

- 

- 			return this.get( owner, key );

- 		}

- 

- 		// When the key is not a string, or both a key and value

- 		// are specified, set or extend (existing objects) with either:

- 		//

- 		//   1. An object of properties

- 		//   2. A key and value

- 		//

- 		this.set( owner, key, value );

- 

- 		// Since the "set" path can have two possible entry points

- 		// return the expected data based on which path was taken[*]

- 		return value !== undefined ? value : key;

- 	},

- 	remove: function( owner, key ) {

- 		var i,

- 			cache = owner[ this.expando ];

- 

- 		if ( cache === undefined ) {

- 			return;

- 		}

- 

- 		if ( key !== undefined ) {

- 

- 			// Support array or space separated string of keys

- 			if ( Array.isArray( key ) ) {

- 

- 				// If key is an array of keys...

- 				// We always set camelCase keys, so remove that.

- 				key = key.map( camelCase );

- 			} else {

- 				key = camelCase( key );

- 

- 				// If a key with the spaces exists, use it.

- 				// Otherwise, create an array by matching non-whitespace

- 				key = key in cache ?

- 					[ key ] :

- 					( key.match( rnothtmlwhite ) || [] );

- 			}

- 

- 			i = key.length;

- 

- 			while ( i-- ) {

- 				delete cache[ key[ i ] ];

- 			}

- 		}

- 

- 		// Remove the expando if there's no more data

- 		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {

- 

- 			// Support: Chrome <=35 - 45

- 			// Webkit & Blink performance suffers when deleting properties

- 			// from DOM nodes, so set to undefined instead

- 			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)

- 			if ( owner.nodeType ) {

- 				owner[ this.expando ] = undefined;

- 			} else {

- 				delete owner[ this.expando ];

- 			}

- 		}

- 	},

- 	hasData: function( owner ) {

- 		var cache = owner[ this.expando ];

- 		return cache !== undefined && !jQuery.isEmptyObject( cache );

- 	}

- };

- var dataPriv = new Data();

- 

- var dataUser = new Data();

- 

- 

- 

- //	Implementation Summary

- //

- //	1. Enforce API surface and semantic compatibility with 1.9.x branch

- //	2. Improve the module's maintainability by reducing the storage

- //		paths to a single mechanism.

- //	3. Use the same single mechanism to support "private" and "user" data.

- //	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)

- //	5. Avoid exposing implementation details on user objects (eg. expando properties)

- //	6. Provide a clear path for implementation upgrade to WeakMap in 2014

- 

- var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,

- 	rmultiDash = /[A-Z]/g;

- 

- function getData( data ) {

- 	if ( data === "true" ) {

- 		return true;

- 	}

- 

- 	if ( data === "false" ) {

- 		return false;

- 	}

- 

- 	if ( data === "null" ) {

- 		return null;

- 	}

- 

- 	// Only convert to a number if it doesn't change the string

- 	if ( data === +data + "" ) {

- 		return +data;

- 	}

- 

- 	if ( rbrace.test( data ) ) {

- 		return JSON.parse( data );

- 	}

- 

- 	return data;

- }

- 

- function dataAttr( elem, key, data ) {

- 	var name;

- 

- 	// If nothing was found internally, try to fetch any

- 	// data from the HTML5 data-* attribute

- 	if ( data === undefined && elem.nodeType === 1 ) {

- 		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();

- 		data = elem.getAttribute( name );

- 

- 		if ( typeof data === "string" ) {

- 			try {

- 				data = getData( data );

- 			} catch ( e ) {}

- 

- 			// Make sure we set the data so it isn't changed later

- 			dataUser.set( elem, key, data );

- 		} else {

- 			data = undefined;

- 		}

- 	}

- 	return data;

- }

- 

- jQuery.extend( {

- 	hasData: function( elem ) {

- 		return dataUser.hasData( elem ) || dataPriv.hasData( elem );

- 	},

- 

- 	data: function( elem, name, data ) {

- 		return dataUser.access( elem, name, data );

- 	},

- 

- 	removeData: function( elem, name ) {

- 		dataUser.remove( elem, name );

- 	},

- 

- 	// TODO: Now that all calls to _data and _removeData have been replaced

- 	// with direct calls to dataPriv methods, these can be deprecated.

- 	_data: function( elem, name, data ) {

- 		return dataPriv.access( elem, name, data );

- 	},

- 

- 	_removeData: function( elem, name ) {

- 		dataPriv.remove( elem, name );

- 	}

- } );

- 

- jQuery.fn.extend( {

- 	data: function( key, value ) {

- 		var i, name, data,

- 			elem = this[ 0 ],

- 			attrs = elem && elem.attributes;

- 

- 		// Gets all values

- 		if ( key === undefined ) {

- 			if ( this.length ) {

- 				data = dataUser.get( elem );

- 

- 				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {

- 					i = attrs.length;

- 					while ( i-- ) {

- 

- 						// Support: IE 11 only

- 						// The attrs elements can be null (#14894)

- 						if ( attrs[ i ] ) {

- 							name = attrs[ i ].name;

- 							if ( name.indexOf( "data-" ) === 0 ) {

- 								name = camelCase( name.slice( 5 ) );

- 								dataAttr( elem, name, data[ name ] );

- 							}

- 						}

- 					}

- 					dataPriv.set( elem, "hasDataAttrs", true );

- 				}

- 			}

- 

- 			return data;

- 		}

- 

- 		// Sets multiple values

- 		if ( typeof key === "object" ) {

- 			return this.each( function() {

- 				dataUser.set( this, key );

- 			} );

- 		}

- 

- 		return access( this, function( value ) {

- 			var data;

- 

- 			// The calling jQuery object (element matches) is not empty

- 			// (and therefore has an element appears at this[ 0 ]) and the

- 			// `value` parameter was not undefined. An empty jQuery object

- 			// will result in `undefined` for elem = this[ 0 ] which will

- 			// throw an exception if an attempt to read a data cache is made.

- 			if ( elem && value === undefined ) {

- 

- 				// Attempt to get data from the cache

- 				// The key will always be camelCased in Data

- 				data = dataUser.get( elem, key );

- 				if ( data !== undefined ) {

- 					return data;

- 				}

- 

- 				// Attempt to "discover" the data in

- 				// HTML5 custom data-* attrs

- 				data = dataAttr( elem, key );

- 				if ( data !== undefined ) {

- 					return data;

- 				}

- 

- 				// We tried really hard, but the data doesn't exist.

- 				return;

- 			}

- 

- 			// Set the data...

- 			this.each( function() {

- 

- 				// We always store the camelCased key

- 				dataUser.set( this, key, value );

- 			} );

- 		}, null, value, arguments.length > 1, null, true );

- 	},

- 

- 	removeData: function( key ) {

- 		return this.each( function() {

- 			dataUser.remove( this, key );

- 		} );

- 	}

- } );

- 

- 

- jQuery.extend( {

- 	queue: function( elem, type, data ) {

- 		var queue;

- 

- 		if ( elem ) {

- 			type = ( type || "fx" ) + "queue";

- 			queue = dataPriv.get( elem, type );

- 

- 			// Speed up dequeue by getting out quickly if this is just a lookup

- 			if ( data ) {

- 				if ( !queue || Array.isArray( data ) ) {

- 					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );

- 				} else {

- 					queue.push( data );

- 				}

- 			}

- 			return queue || [];

- 		}

- 	},

- 

- 	dequeue: function( elem, type ) {

- 		type = type || "fx";

- 

- 		var queue = jQuery.queue( elem, type ),

- 			startLength = queue.length,

- 			fn = queue.shift(),

- 			hooks = jQuery._queueHooks( elem, type ),

- 			next = function() {

- 				jQuery.dequeue( elem, type );

- 			};

- 

- 		// If the fx queue is dequeued, always remove the progress sentinel

- 		if ( fn === "inprogress" ) {

- 			fn = queue.shift();

- 			startLength--;

- 		}

- 

- 		if ( fn ) {

- 

- 			// Add a progress sentinel to prevent the fx queue from being

- 			// automatically dequeued

- 			if ( type === "fx" ) {

- 				queue.unshift( "inprogress" );

- 			}

- 

- 			// Clear up the last queue stop function

- 			delete hooks.stop;

- 			fn.call( elem, next, hooks );

- 		}

- 

- 		if ( !startLength && hooks ) {

- 			hooks.empty.fire();

- 		}

- 	},

- 

- 	// Not public - generate a queueHooks object, or return the current one

- 	_queueHooks: function( elem, type ) {

- 		var key = type + "queueHooks";

- 		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {

- 			empty: jQuery.Callbacks( "once memory" ).add( function() {

- 				dataPriv.remove( elem, [ type + "queue", key ] );

- 			} )

- 		} );

- 	}

- } );

- 

- jQuery.fn.extend( {

- 	queue: function( type, data ) {

- 		var setter = 2;

- 

- 		if ( typeof type !== "string" ) {

- 			data = type;

- 			type = "fx";

- 			setter--;

- 		}

- 

- 		if ( arguments.length < setter ) {

- 			return jQuery.queue( this[ 0 ], type );

- 		}

- 

- 		return data === undefined ?

- 			this :

- 			this.each( function() {

- 				var queue = jQuery.queue( this, type, data );

- 

- 				// Ensure a hooks for this queue

- 				jQuery._queueHooks( this, type );

- 

- 				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {

- 					jQuery.dequeue( this, type );

- 				}

- 			} );

- 	},

- 	dequeue: function( type ) {

- 		return this.each( function() {

- 			jQuery.dequeue( this, type );

- 		} );

- 	},

- 	clearQueue: function( type ) {

- 		return this.queue( type || "fx", [] );

- 	},

- 

- 	// Get a promise resolved when queues of a certain type

- 	// are emptied (fx is the type by default)

- 	promise: function( type, obj ) {

- 		var tmp,

- 			count = 1,

- 			defer = jQuery.Deferred(),

- 			elements = this,

- 			i = this.length,

- 			resolve = function() {

- 				if ( !( --count ) ) {

- 					defer.resolveWith( elements, [ elements ] );

- 				}

- 			};

- 

- 		if ( typeof type !== "string" ) {

- 			obj = type;

- 			type = undefined;

- 		}

- 		type = type || "fx";

- 

- 		while ( i-- ) {

- 			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );

- 			if ( tmp && tmp.empty ) {

- 				count++;

- 				tmp.empty.add( resolve );

- 			}

- 		}

- 		resolve();

- 		return defer.promise( obj );

- 	}

- } );

- var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;

- 

- var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );

- 

- 

- var cssExpand = [ "Top", "Right", "Bottom", "Left" ];

- 

- var isHiddenWithinTree = function( elem, el ) {

- 

- 		// isHiddenWithinTree might be called from jQuery#filter function;

- 		// in that case, element will be second argument

- 		elem = el || elem;

- 

- 		// Inline style trumps all

- 		return elem.style.display === "none" ||

- 			elem.style.display === "" &&

- 

- 			// Otherwise, check computed style

- 			// Support: Firefox <=43 - 45

- 			// Disconnected elements can have computed display: none, so first confirm that elem is

- 			// in the document.

- 			jQuery.contains( elem.ownerDocument, elem ) &&

- 

- 			jQuery.css( elem, "display" ) === "none";

- 	};

- 

- var swap = function( elem, options, callback, args ) {

- 	var ret, name,

- 		old = {};

- 

- 	// Remember the old values, and insert the new ones

- 	for ( name in options ) {

- 		old[ name ] = elem.style[ name ];

- 		elem.style[ name ] = options[ name ];

- 	}

- 

- 	ret = callback.apply( elem, args || [] );

- 

- 	// Revert the old values

- 	for ( name in options ) {

- 		elem.style[ name ] = old[ name ];

- 	}

- 

- 	return ret;

- };

- 

- 

- 

- 

- function adjustCSS( elem, prop, valueParts, tween ) {

- 	var adjusted, scale,

- 		maxIterations = 20,

- 		currentValue = tween ?

- 			function() {

- 				return tween.cur();

- 			} :

- 			function() {

- 				return jQuery.css( elem, prop, "" );

- 			},

- 		initial = currentValue(),

- 		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),

- 

- 		// Starting value computation is required for potential unit mismatches

- 		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&

- 			rcssNum.exec( jQuery.css( elem, prop ) );

- 

- 	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {

- 

- 		// Support: Firefox <=54

- 		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)

- 		initial = initial / 2;

- 

- 		// Trust units reported by jQuery.css

- 		unit = unit || initialInUnit[ 3 ];

- 

- 		// Iteratively approximate from a nonzero starting point

- 		initialInUnit = +initial || 1;

- 

- 		while ( maxIterations-- ) {

- 

- 			// Evaluate and update our best guess (doubling guesses that zero out).

- 			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).

- 			jQuery.style( elem, prop, initialInUnit + unit );

- 			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {

- 				maxIterations = 0;

- 			}

- 			initialInUnit = initialInUnit / scale;

- 

- 		}

- 

- 		initialInUnit = initialInUnit * 2;

- 		jQuery.style( elem, prop, initialInUnit + unit );

- 

- 		// Make sure we update the tween properties later on

- 		valueParts = valueParts || [];

- 	}

- 

- 	if ( valueParts ) {

- 		initialInUnit = +initialInUnit || +initial || 0;

- 

- 		// Apply relative offset (+=/-=) if specified

- 		adjusted = valueParts[ 1 ] ?

- 			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :

- 			+valueParts[ 2 ];

- 		if ( tween ) {

- 			tween.unit = unit;

- 			tween.start = initialInUnit;

- 			tween.end = adjusted;

- 		}

- 	}

- 	return adjusted;

- }

- 

- 

- var defaultDisplayMap = {};

- 

- function getDefaultDisplay( elem ) {

- 	var temp,

- 		doc = elem.ownerDocument,

- 		nodeName = elem.nodeName,

- 		display = defaultDisplayMap[ nodeName ];

- 

- 	if ( display ) {

- 		return display;

- 	}

- 

- 	temp = doc.body.appendChild( doc.createElement( nodeName ) );

- 	display = jQuery.css( temp, "display" );

- 

- 	temp.parentNode.removeChild( temp );

- 

- 	if ( display === "none" ) {

- 		display = "block";

- 	}

- 	defaultDisplayMap[ nodeName ] = display;

- 

- 	return display;

- }

- 

- function showHide( elements, show ) {

- 	var display, elem,

- 		values = [],

- 		index = 0,

- 		length = elements.length;

- 

- 	// Determine new display value for elements that need to change

- 	for ( ; index < length; index++ ) {

- 		elem = elements[ index ];

- 		if ( !elem.style ) {

- 			continue;

- 		}

- 

- 		display = elem.style.display;

- 		if ( show ) {

- 

- 			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)

- 			// check is required in this first loop unless we have a nonempty display value (either

- 			// inline or about-to-be-restored)

- 			if ( display === "none" ) {

- 				values[ index ] = dataPriv.get( elem, "display" ) || null;

- 				if ( !values[ index ] ) {

- 					elem.style.display = "";

- 				}

- 			}

- 			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {

- 				values[ index ] = getDefaultDisplay( elem );

- 			}

- 		} else {

- 			if ( display !== "none" ) {

- 				values[ index ] = "none";

- 

- 				// Remember what we're overwriting

- 				dataPriv.set( elem, "display", display );

- 			}

- 		}

- 	}

- 

- 	// Set the display of the elements in a second loop to avoid constant reflow

- 	for ( index = 0; index < length; index++ ) {

- 		if ( values[ index ] != null ) {

- 			elements[ index ].style.display = values[ index ];

- 		}

- 	}

- 

- 	return elements;

- }

- 

- jQuery.fn.extend( {

- 	show: function() {

- 		return showHide( this, true );

- 	},

- 	hide: function() {

- 		return showHide( this );

- 	},

- 	toggle: function( state ) {

- 		if ( typeof state === "boolean" ) {

- 			return state ? this.show() : this.hide();

- 		}

- 

- 		return this.each( function() {

- 			if ( isHiddenWithinTree( this ) ) {

- 				jQuery( this ).show();

- 			} else {

- 				jQuery( this ).hide();

- 			}

- 		} );

- 	}

- } );

- var rcheckableType = ( /^(?:checkbox|radio)$/i );

- 

- var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );

- 

- var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );

- 

- 

- 

- // We have to close these tags to support XHTML (#13200)

- var wrapMap = {

- 

- 	// Support: IE <=9 only

- 	option: [ 1, "<select multiple='multiple'>", "</select>" ],

- 

- 	// XHTML parsers do not magically insert elements in the

- 	// same way that tag soup parsers do. So we cannot shorten

- 	// this by omitting <tbody> or other required elements.

- 	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, "", "" ]

- };

- 

- // Support: IE <=9 only

- wrapMap.optgroup = wrapMap.option;

- 

- wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;

- wrapMap.th = wrapMap.td;

- 

- 

- function getAll( context, tag ) {

- 

- 	// Support: IE <=9 - 11 only

- 	// Use typeof to avoid zero-argument method invocation on host objects (#15151)

- 	var ret;

- 

- 	if ( typeof context.getElementsByTagName !== "undefined" ) {

- 		ret = context.getElementsByTagName( tag || "*" );

- 

- 	} else if ( typeof context.querySelectorAll !== "undefined" ) {

- 		ret = context.querySelectorAll( tag || "*" );

- 

- 	} else {

- 		ret = [];

- 	}

- 

- 	if ( tag === undefined || tag && nodeName( context, tag ) ) {

- 		return jQuery.merge( [ context ], ret );

- 	}

- 

- 	return ret;

- }

- 

- 

- // Mark scripts as having already been evaluated

- function setGlobalEval( elems, refElements ) {

- 	var i = 0,

- 		l = elems.length;

- 

- 	for ( ; i < l; i++ ) {

- 		dataPriv.set(

- 			elems[ i ],

- 			"globalEval",

- 			!refElements || dataPriv.get( refElements[ i ], "globalEval" )

- 		);

- 	}

- }

- 

- 

- var rhtml = /<|&#?\w+;/;

- 

- function buildFragment( elems, context, scripts, selection, ignored ) {

- 	var elem, tmp, tag, wrap, contains, j,

- 		fragment = context.createDocumentFragment(),

- 		nodes = [],

- 		i = 0,

- 		l = elems.length;

- 

- 	for ( ; i < l; i++ ) {

- 		elem = elems[ i ];

- 

- 		if ( elem || elem === 0 ) {

- 

- 			// Add nodes directly

- 			if ( toType( elem ) === "object" ) {

- 

- 				// Support: Android <=4.0 only, PhantomJS 1 only

- 				// push.apply(_, arraylike) throws on ancient WebKit

- 				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );

- 

- 			// Convert non-html into a text node

- 			} else if ( !rhtml.test( elem ) ) {

- 				nodes.push( context.createTextNode( elem ) );

- 

- 			// Convert html into DOM nodes

- 			} else {

- 				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );

- 

- 				// Deserialize a standard representation

- 				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();

- 				wrap = wrapMap[ tag ] || wrapMap._default;

- 				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];

- 

- 				// Descend through wrappers to the right content

- 				j = wrap[ 0 ];

- 				while ( j-- ) {

- 					tmp = tmp.lastChild;

- 				}

- 

- 				// Support: Android <=4.0 only, PhantomJS 1 only

- 				// push.apply(_, arraylike) throws on ancient WebKit

- 				jQuery.merge( nodes, tmp.childNodes );

- 

- 				// Remember the top-level container

- 				tmp = fragment.firstChild;

- 

- 				// Ensure the created nodes are orphaned (#12392)

- 				tmp.textContent = "";

- 			}

- 		}

- 	}

- 

- 	// Remove wrapper from fragment

- 	fragment.textContent = "";

- 

- 	i = 0;

- 	while ( ( elem = nodes[ i++ ] ) ) {

- 

- 		// Skip elements already in the context collection (trac-4087)

- 		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {

- 			if ( ignored ) {

- 				ignored.push( elem );

- 			}

- 			continue;

- 		}

- 

- 		contains = jQuery.contains( elem.ownerDocument, elem );

- 

- 		// Append to fragment

- 		tmp = getAll( fragment.appendChild( elem ), "script" );

- 

- 		// Preserve script evaluation history

- 		if ( contains ) {

- 			setGlobalEval( tmp );

- 		}

- 

- 		// Capture executables

- 		if ( scripts ) {

- 			j = 0;

- 			while ( ( elem = tmp[ j++ ] ) ) {

- 				if ( rscriptType.test( elem.type || "" ) ) {

- 					scripts.push( elem );

- 				}

- 			}

- 		}

- 	}

- 

- 	return fragment;

- }

- 

- 

- ( function() {

- 	var fragment = document.createDocumentFragment(),

- 		div = fragment.appendChild( document.createElement( "div" ) ),

- 		input = document.createElement( "input" );

- 

- 	// Support: Android 4.0 - 4.3 only

- 	// Check state lost if the name is set (#11217)

- 	// Support: Windows Web Apps (WWA)

- 	// `name` and `type` must use .setAttribute for WWA (#14901)

- 	input.setAttribute( "type", "radio" );

- 	input.setAttribute( "checked", "checked" );

- 	input.setAttribute( "name", "t" );

- 

- 	div.appendChild( input );

- 

- 	// Support: Android <=4.1 only

- 	// Older WebKit doesn't clone checked state correctly in fragments

- 	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;

- 

- 	// Support: IE <=11 only

- 	// Make sure textarea (and checkbox) defaultValue is properly cloned

- 	div.innerHTML = "<textarea>x</textarea>";

- 	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;

- } )();

- var documentElement = document.documentElement;

- 

- 

- 

- var

- 	rkeyEvent = /^key/,

- 	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,

- 	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;

- 

- function returnTrue() {

- 	return true;

- }

- 

- function returnFalse() {

- 	return false;

- }

- 

- // Support: IE <=9 only

- // See #13393 for more info

- function safeActiveElement() {

- 	try {

- 		return document.activeElement;

- 	} catch ( err ) { }

- }

- 

- function on( elem, types, selector, data, fn, one ) {

- 	var origFn, type;

- 

- 	// Types can be a map of types/handlers

- 	if ( typeof types === "object" ) {

- 

- 		// ( types-Object, selector, data )

- 		if ( typeof selector !== "string" ) {

- 

- 			// ( types-Object, data )

- 			data = data || selector;

- 			selector = undefined;

- 		}

- 		for ( type in types ) {

- 			on( elem, type, selector, data, types[ type ], one );

- 		}

- 		return elem;

- 	}

- 

- 	if ( data == null && fn == null ) {

- 

- 		// ( types, fn )

- 		fn = selector;

- 		data = selector = undefined;

- 	} else if ( fn == null ) {

- 		if ( typeof selector === "string" ) {

- 

- 			// ( types, selector, fn )

- 			fn = data;

- 			data = undefined;

- 		} else {

- 

- 			// ( types, data, fn )

- 			fn = data;

- 			data = selector;

- 			selector = undefined;

- 		}

- 	}

- 	if ( fn === false ) {

- 		fn = returnFalse;

- 	} else if ( !fn ) {

- 		return elem;

- 	}

- 

- 	if ( one === 1 ) {

- 		origFn = fn;

- 		fn = function( event ) {

- 

- 			// Can use an empty set, since event contains the info

- 			jQuery().off( event );

- 			return origFn.apply( this, arguments );

- 		};

- 

- 		// Use same guid so caller can remove using origFn

- 		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );

- 	}

- 	return elem.each( function() {

- 		jQuery.event.add( this, types, fn, data, selector );

- 	} );

- }

- 

- /*

-  * Helper functions for managing events -- not part of the public interface.

-  * Props to Dean Edwards' addEvent library for many of the ideas.

-  */

- jQuery.event = {

- 

- 	global: {},

- 

- 	add: function( elem, types, handler, data, selector ) {

- 

- 		var handleObjIn, eventHandle, tmp,

- 			events, t, handleObj,

- 			special, handlers, type, namespaces, origType,

- 			elemData = dataPriv.get( elem );

- 

- 		// Don't attach events to noData or text/comment nodes (but allow plain objects)

- 		if ( !elemData ) {

- 			return;

- 		}

- 

- 		// Caller can pass in an object of custom data in lieu of the handler

- 		if ( handler.handler ) {

- 			handleObjIn = handler;

- 			handler = handleObjIn.handler;

- 			selector = handleObjIn.selector;

- 		}

- 

- 		// Ensure that invalid selectors throw exceptions at attach time

- 		// Evaluate against documentElement in case elem is a non-element node (e.g., document)

- 		if ( selector ) {

- 			jQuery.find.matchesSelector( documentElement, selector );

- 		}

- 

- 		// Make sure that the handler has a unique ID, used to find/remove it later

- 		if ( !handler.guid ) {

- 			handler.guid = jQuery.guid++;

- 		}

- 

- 		// Init the element's event structure and main handler, if this is the first

- 		if ( !( events = elemData.events ) ) {

- 			events = elemData.events = {};

- 		}

- 		if ( !( eventHandle = elemData.handle ) ) {

- 			eventHandle = elemData.handle = function( e ) {

- 

- 				// Discard the second event of a jQuery.event.trigger() and

- 				// when an event is called after a page has unloaded

- 				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?

- 					jQuery.event.dispatch.apply( elem, arguments ) : undefined;

- 			};

- 		}

- 

- 		// Handle multiple events separated by a space

- 		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];

- 		t = types.length;

- 		while ( t-- ) {

- 			tmp = rtypenamespace.exec( types[ t ] ) || [];

- 			type = origType = tmp[ 1 ];

- 			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();

- 

- 			// There *must* be a type, no attaching namespace-only handlers

- 			if ( !type ) {

- 				continue;

- 			}

- 

- 			// If event changes its type, use the special event handlers for the changed type

- 			special = jQuery.event.special[ type ] || {};

- 

- 			// If selector defined, determine special event api type, otherwise given type

- 			type = ( selector ? special.delegateType : special.bindType ) || type;

- 

- 			// Update special based on newly reset type

- 			special = jQuery.event.special[ type ] || {};

- 

- 			// handleObj is passed to all event handlers

- 			handleObj = jQuery.extend( {

- 				type: type,

- 				origType: origType,

- 				data: data,

- 				handler: handler,

- 				guid: handler.guid,

- 				selector: selector,

- 				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),

- 				namespace: namespaces.join( "." )

- 			}, handleObjIn );

- 

- 			// Init the event handler queue if we're the first

- 			if ( !( handlers = events[ type ] ) ) {

- 				handlers = events[ type ] = [];

- 				handlers.delegateCount = 0;

- 

- 				// Only use addEventListener if the special events handler returns false

- 				if ( !special.setup ||

- 					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {

- 

- 					if ( elem.addEventListener ) {

- 						elem.addEventListener( type, eventHandle );

- 					}

- 				}

- 			}

- 

- 			if ( special.add ) {

- 				special.add.call( elem, handleObj );

- 

- 				if ( !handleObj.handler.guid ) {

- 					handleObj.handler.guid = handler.guid;

- 				}

- 			}

- 

- 			// Add to the element's handler list, delegates in front

- 			if ( selector ) {

- 				handlers.splice( handlers.delegateCount++, 0, handleObj );

- 			} else {

- 				handlers.push( handleObj );

- 			}

- 

- 			// Keep track of which events have ever been used, for event optimization

- 			jQuery.event.global[ type ] = true;

- 		}

- 

- 	},

- 

- 	// Detach an event or set of events from an element

- 	remove: function( elem, types, handler, selector, mappedTypes ) {

- 

- 		var j, origCount, tmp,

- 			events, t, handleObj,

- 			special, handlers, type, namespaces, origType,

- 			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );

- 

- 		if ( !elemData || !( events = elemData.events ) ) {

- 			return;

- 		}

- 

- 		// Once for each type.namespace in types; type may be omitted

- 		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];

- 		t = types.length;

- 		while ( t-- ) {

- 			tmp = rtypenamespace.exec( types[ t ] ) || [];

- 			type = origType = tmp[ 1 ];

- 			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();

- 

- 			// Unbind all events (on this namespace, if provided) for the element

- 			if ( !type ) {

- 				for ( type in events ) {

- 					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );

- 				}

- 				continue;

- 			}

- 

- 			special = jQuery.event.special[ type ] || {};

- 			type = ( selector ? special.delegateType : special.bindType ) || type;

- 			handlers = events[ type ] || [];

- 			tmp = tmp[ 2 ] &&

- 				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );

- 

- 			// Remove matching events

- 			origCount = j = handlers.length;

- 			while ( j-- ) {

- 				handleObj = handlers[ j ];

- 

- 				if ( ( mappedTypes || origType === handleObj.origType ) &&

- 					( !handler || handler.guid === handleObj.guid ) &&

- 					( !tmp || tmp.test( handleObj.namespace ) ) &&

- 					( !selector || selector === handleObj.selector ||

- 						selector === "**" && handleObj.selector ) ) {

- 					handlers.splice( j, 1 );

- 

- 					if ( handleObj.selector ) {

- 						handlers.delegateCount--;

- 					}

- 					if ( special.remove ) {

- 						special.remove.call( elem, handleObj );

- 					}

- 				}

- 			}

- 

- 			// Remove generic event handler if we removed something and no more handlers exist

- 			// (avoids potential for endless recursion during removal of special event handlers)

- 			if ( origCount && !handlers.length ) {

- 				if ( !special.teardown ||

- 					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {

- 

- 					jQuery.removeEvent( elem, type, elemData.handle );

- 				}

- 

- 				delete events[ type ];

- 			}

- 		}

- 

- 		// Remove data and the expando if it's no longer used

- 		if ( jQuery.isEmptyObject( events ) ) {

- 			dataPriv.remove( elem, "handle events" );

- 		}

- 	},

- 

- 	dispatch: function( nativeEvent ) {

- 

- 		// Make a writable jQuery.Event from the native event object

- 		var event = jQuery.event.fix( nativeEvent );

- 

- 		var i, j, ret, matched, handleObj, handlerQueue,

- 			args = new Array( arguments.length ),

- 			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],

- 			special = jQuery.event.special[ event.type ] || {};

- 

- 		// Use the fix-ed jQuery.Event rather than the (read-only) native event

- 		args[ 0 ] = event;

- 

- 		for ( i = 1; i < arguments.length; i++ ) {

- 			args[ i ] = arguments[ i ];

- 		}

- 

- 		event.delegateTarget = this;

- 

- 		// Call the preDispatch hook for the mapped type, and let it bail if desired

- 		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {

- 			return;

- 		}

- 

- 		// Determine handlers

- 		handlerQueue = jQuery.event.handlers.call( this, event, handlers );

- 

- 		// Run delegates first; they may want to stop propagation beneath us

- 		i = 0;

- 		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {

- 			event.currentTarget = matched.elem;

- 

- 			j = 0;

- 			while ( ( handleObj = matched.handlers[ j++ ] ) &&

- 				!event.isImmediatePropagationStopped() ) {

- 

- 				// Triggered event must either 1) have no namespace, or 2) have namespace(s)

- 				// a subset or equal to those in the bound event (both can have no namespace).

- 				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {

- 

- 					event.handleObj = handleObj;

- 					event.data = handleObj.data;

- 

- 					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||

- 						handleObj.handler ).apply( matched.elem, args );

- 

- 					if ( ret !== undefined ) {

- 						if ( ( event.result = ret ) === false ) {

- 							event.preventDefault();

- 							event.stopPropagation();

- 						}

- 					}

- 				}

- 			}

- 		}

- 

- 		// Call the postDispatch hook for the mapped type

- 		if ( special.postDispatch ) {

- 			special.postDispatch.call( this, event );

- 		}

- 

- 		return event.result;

- 	},

- 

- 	handlers: function( event, handlers ) {

- 		var i, handleObj, sel, matchedHandlers, matchedSelectors,

- 			handlerQueue = [],

- 			delegateCount = handlers.delegateCount,

- 			cur = event.target;

- 

- 		// Find delegate handlers

- 		if ( delegateCount &&

- 

- 			// Support: IE <=9

- 			// Black-hole SVG <use> instance trees (trac-13180)

- 			cur.nodeType &&

- 

- 			// Support: Firefox <=42

- 			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)

- 			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click

- 			// Support: IE 11 only

- 			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)

- 			!( event.type === "click" && event.button >= 1 ) ) {

- 

- 			for ( ; cur !== this; cur = cur.parentNode || this ) {

- 

- 				// Don't check non-elements (#13208)

- 				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)

- 				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {

- 					matchedHandlers = [];

- 					matchedSelectors = {};

- 					for ( i = 0; i < delegateCount; i++ ) {

- 						handleObj = handlers[ i ];

- 

- 						// Don't conflict with Object.prototype properties (#13203)

- 						sel = handleObj.selector + " ";

- 

- 						if ( matchedSelectors[ sel ] === undefined ) {

- 							matchedSelectors[ sel ] = handleObj.needsContext ?

- 								jQuery( sel, this ).index( cur ) > -1 :

- 								jQuery.find( sel, this, null, [ cur ] ).length;

- 						}

- 						if ( matchedSelectors[ sel ] ) {

- 							matchedHandlers.push( handleObj );

- 						}

- 					}

- 					if ( matchedHandlers.length ) {

- 						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );

- 					}

- 				}

- 			}

- 		}

- 

- 		// Add the remaining (directly-bound) handlers

- 		cur = this;

- 		if ( delegateCount < handlers.length ) {

- 			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );

- 		}

- 

- 		return handlerQueue;

- 	},

- 

- 	addProp: function( name, hook ) {

- 		Object.defineProperty( jQuery.Event.prototype, name, {

- 			enumerable: true,

- 			configurable: true,

- 

- 			get: isFunction( hook ) ?

- 				function() {

- 					if ( this.originalEvent ) {

- 							return hook( this.originalEvent );

- 					}

- 				} :

- 				function() {

- 					if ( this.originalEvent ) {

- 							return this.originalEvent[ name ];

- 					}

- 				},

- 

- 			set: function( value ) {

- 				Object.defineProperty( this, name, {

- 					enumerable: true,

- 					configurable: true,

- 					writable: true,

- 					value: value

- 				} );

- 			}

- 		} );

- 	},

- 

- 	fix: function( originalEvent ) {

- 		return originalEvent[ jQuery.expando ] ?

- 			originalEvent :

- 			new jQuery.Event( originalEvent );

- 	},

- 

- 	special: {

- 		load: {

- 

- 			// Prevent triggered image.load events from bubbling to window.load

- 			noBubble: true

- 		},

- 		focus: {

- 

- 			// Fire native event if possible so blur/focus sequence is correct

- 			trigger: function() {

- 				if ( this !== safeActiveElement() && this.focus ) {

- 					this.focus();

- 					return false;

- 				}

- 			},

- 			delegateType: "focusin"

- 		},

- 		blur: {

- 			trigger: function() {

- 				if ( this === safeActiveElement() && this.blur ) {

- 					this.blur();

- 					return false;

- 				}

- 			},

- 			delegateType: "focusout"

- 		},

- 		click: {

- 

- 			// For checkbox, fire native event so checked state will be right

- 			trigger: function() {

- 				if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {

- 					this.click();

- 					return false;

- 				}

- 			},

- 

- 			// For cross-browser consistency, don't fire native .click() on links

- 			_default: function( event ) {

- 				return nodeName( event.target, "a" );

- 			}

- 		},

- 

- 		beforeunload: {

- 			postDispatch: function( event ) {

- 

- 				// Support: Firefox 20+

- 				// Firefox doesn't alert if the returnValue field is not set.

- 				if ( event.result !== undefined && event.originalEvent ) {

- 					event.originalEvent.returnValue = event.result;

- 				}

- 			}

- 		}

- 	}

- };

- 

- jQuery.removeEvent = function( elem, type, handle ) {

- 

- 	// This "if" is needed for plain objects

- 	if ( elem.removeEventListener ) {

- 		elem.removeEventListener( type, handle );

- 	}

- };

- 

- jQuery.Event = function( src, props ) {

- 

- 	// Allow instantiation without the 'new' keyword

- 	if ( !( this instanceof jQuery.Event ) ) {

- 		return new jQuery.Event( src, props );

- 	}

- 

- 	// Event object

- 	if ( src && src.type ) {

- 		this.originalEvent = src;

- 		this.type = src.type;

- 

- 		// Events bubbling up the document may have been marked as prevented

- 		// by a handler lower down the tree; reflect the correct value.

- 		this.isDefaultPrevented = src.defaultPrevented ||

- 				src.defaultPrevented === undefined &&

- 

- 				// Support: Android <=2.3 only

- 				src.returnValue === false ?

- 			returnTrue :

- 			returnFalse;

- 

- 		// Create target properties

- 		// Support: Safari <=6 - 7 only

- 		// Target should not be a text node (#504, #13143)

- 		this.target = ( src.target && src.target.nodeType === 3 ) ?

- 			src.target.parentNode :

- 			src.target;

- 

- 		this.currentTarget = src.currentTarget;

- 		this.relatedTarget = src.relatedTarget;

- 

- 	// Event type

- 	} else {

- 		this.type = src;

- 	}

- 

- 	// Put explicitly provided properties onto the event object

- 	if ( props ) {

- 		jQuery.extend( this, props );

- 	}

- 

- 	// Create a timestamp if incoming event doesn't have one

- 	this.timeStamp = src && src.timeStamp || Date.now();

- 

- 	// Mark it as fixed

- 	this[ jQuery.expando ] = true;

- };

- 

- // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding

- // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html

- jQuery.Event.prototype = {

- 	constructor: jQuery.Event,

- 	isDefaultPrevented: returnFalse,

- 	isPropagationStopped: returnFalse,

- 	isImmediatePropagationStopped: returnFalse,

- 	isSimulated: false,

- 

- 	preventDefault: function() {

- 		var e = this.originalEvent;

- 

- 		this.isDefaultPrevented = returnTrue;

- 

- 		if ( e && !this.isSimulated ) {

- 			e.preventDefault();

- 		}

- 	},

- 	stopPropagation: function() {

- 		var e = this.originalEvent;

- 

- 		this.isPropagationStopped = returnTrue;

- 

- 		if ( e && !this.isSimulated ) {

- 			e.stopPropagation();

- 		}

- 	},

- 	stopImmediatePropagation: function() {

- 		var e = this.originalEvent;

- 

- 		this.isImmediatePropagationStopped = returnTrue;

- 

- 		if ( e && !this.isSimulated ) {

- 			e.stopImmediatePropagation();

- 		}

- 

- 		this.stopPropagation();

- 	}

- };

- 

- // Includes all common event props including KeyEvent and MouseEvent specific props

- jQuery.each( {

- 	altKey: true,

- 	bubbles: true,

- 	cancelable: true,

- 	changedTouches: true,

- 	ctrlKey: true,

- 	detail: true,

- 	eventPhase: true,

- 	metaKey: true,

- 	pageX: true,

- 	pageY: true,

- 	shiftKey: true,

- 	view: true,

- 	"char": true,

- 	charCode: true,

- 	key: true,

- 	keyCode: true,

- 	button: true,

- 	buttons: true,

- 	clientX: true,

- 	clientY: true,

- 	offsetX: true,

- 	offsetY: true,

- 	pointerId: true,

- 	pointerType: true,

- 	screenX: true,

- 	screenY: true,

- 	targetTouches: true,

- 	toElement: true,

- 	touches: true,

- 

- 	which: function( event ) {

- 		var button = event.button;

- 

- 		// Add which for key events

- 		if ( event.which == null && rkeyEvent.test( event.type ) ) {

- 			return event.charCode != null ? event.charCode : event.keyCode;

- 		}

- 

- 		// Add which for click: 1 === left; 2 === middle; 3 === right

- 		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {

- 			if ( button & 1 ) {

- 				return 1;

- 			}

- 

- 			if ( button & 2 ) {

- 				return 3;

- 			}

- 

- 			if ( button & 4 ) {

- 				return 2;

- 			}

- 

- 			return 0;

- 		}

- 

- 		return event.which;

- 	}

- }, jQuery.event.addProp );

- 

- // Create mouseenter/leave events using mouseover/out and event-time checks

- // so that event delegation works in jQuery.

- // Do the same for pointerenter/pointerleave and pointerover/pointerout

- //

- // Support: Safari 7 only

- // Safari sends mouseenter too often; see:

- // https://bugs.chromium.org/p/chromium/issues/detail?id=470258

- // for the description of the bug (it existed in older Chrome versions as well).

- jQuery.each( {

- 	mouseenter: "mouseover",

- 	mouseleave: "mouseout",

- 	pointerenter: "pointerover",

- 	pointerleave: "pointerout"

- }, function( orig, fix ) {

- 	jQuery.event.special[ orig ] = {

- 		delegateType: fix,

- 		bindType: fix,

- 

- 		handle: function( event ) {

- 			var ret,

- 				target = this,

- 				related = event.relatedTarget,

- 				handleObj = event.handleObj;

- 

- 			// For mouseenter/leave call the handler if related is outside the target.

- 			// NB: No relatedTarget if the mouse left/entered the browser window

- 			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {

- 				event.type = handleObj.origType;

- 				ret = handleObj.handler.apply( this, arguments );

- 				event.type = fix;

- 			}

- 			return ret;

- 		}

- 	};

- } );

- 

- jQuery.fn.extend( {

- 

- 	on: function( types, selector, data, fn ) {

- 		return on( this, types, selector, data, fn );

- 	},

- 	one: function( types, selector, data, fn ) {

- 		return on( this, types, selector, data, fn, 1 );

- 	},

- 	off: function( types, selector, fn ) {

- 		var handleObj, type;

- 		if ( types && types.preventDefault && types.handleObj ) {

- 

- 			// ( event )  dispatched jQuery.Event

- 			handleObj = types.handleObj;

- 			jQuery( types.delegateTarget ).off(

- 				handleObj.namespace ?

- 					handleObj.origType + "." + handleObj.namespace :

- 					handleObj.origType,

- 				handleObj.selector,

- 				handleObj.handler

- 			);

- 			return this;

- 		}

- 		if ( typeof types === "object" ) {

- 

- 			// ( types-object [, selector] )

- 			for ( type in types ) {

- 				this.off( type, selector, types[ type ] );

- 			}

- 			return this;

- 		}

- 		if ( selector === false || typeof selector === "function" ) {

- 

- 			// ( types [, fn] )

- 			fn = selector;

- 			selector = undefined;

- 		}

- 		if ( fn === false ) {

- 			fn = returnFalse;

- 		}

- 		return this.each( function() {

- 			jQuery.event.remove( this, types, fn, selector );

- 		} );

- 	}

- } );

- 

- 

- var

- 

- 	/* eslint-disable max-len */

- 

- 	// See https://github.com/eslint/eslint/issues/3229

- 	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,

- 

- 	/* eslint-enable */

- 

- 	// Support: IE <=10 - 11, Edge 12 - 13 only

- 	// In IE/Edge using regex groups here causes severe slowdowns.

- 	// See https://connect.microsoft.com/IE/feedback/details/1736512/

- 	rnoInnerhtml = /<script|<style|<link/i,

- 

- 	// checked="checked" or checked

- 	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,

- 	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

- 

- // Prefer a tbody over its parent table for containing new rows

- function manipulationTarget( elem, content ) {

- 	if ( nodeName( elem, "table" ) &&

- 		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {

- 

- 		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;

- 	}

- 

- 	return elem;

- }

- 

- // Replace/restore the type attribute of script elements for safe DOM manipulation

- function disableScript( elem ) {

- 	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;

- 	return elem;

- }

- function restoreScript( elem ) {

- 	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {

- 		elem.type = elem.type.slice( 5 );

- 	} else {

- 		elem.removeAttribute( "type" );

- 	}

- 

- 	return elem;

- }

- 

- function cloneCopyEvent( src, dest ) {

- 	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;

- 

- 	if ( dest.nodeType !== 1 ) {

- 		return;

- 	}

- 

- 	// 1. Copy private data: events, handlers, etc.

- 	if ( dataPriv.hasData( src ) ) {

- 		pdataOld = dataPriv.access( src );

- 		pdataCur = dataPriv.set( dest, pdataOld );

- 		events = pdataOld.events;

- 

- 		if ( events ) {

- 			delete pdataCur.handle;

- 			pdataCur.events = {};

- 

- 			for ( type in events ) {

- 				for ( i = 0, l = events[ type ].length; i < l; i++ ) {

- 					jQuery.event.add( dest, type, events[ type ][ i ] );

- 				}

- 			}

- 		}

- 	}

- 

- 	// 2. Copy user data

- 	if ( dataUser.hasData( src ) ) {

- 		udataOld = dataUser.access( src );

- 		udataCur = jQuery.extend( {}, udataOld );

- 

- 		dataUser.set( dest, udataCur );

- 	}

- }

- 

- // Fix IE bugs, see support tests

- function fixInput( src, dest ) {

- 	var nodeName = dest.nodeName.toLowerCase();

- 

- 	// Fails to persist the checked state of a cloned checkbox or radio button.

- 	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {

- 		dest.checked = src.checked;

- 

- 	// Fails to return the selected option to the default selected state when cloning options

- 	} else if ( nodeName === "input" || nodeName === "textarea" ) {

- 		dest.defaultValue = src.defaultValue;

- 	}

- }

- 

- function domManip( collection, args, callback, ignored ) {

- 

- 	// Flatten any nested arrays

- 	args = concat.apply( [], args );

- 

- 	var fragment, first, scripts, hasScripts, node, doc,

- 		i = 0,

- 		l = collection.length,

- 		iNoClone = l - 1,

- 		value = args[ 0 ],

- 		valueIsFunction = isFunction( value );

- 

- 	// We can't cloneNode fragments that contain checked, in WebKit

- 	if ( valueIsFunction ||

- 			( l > 1 && typeof value === "string" &&

- 				!support.checkClone && rchecked.test( value ) ) ) {

- 		return collection.each( function( index ) {

- 			var self = collection.eq( index );

- 			if ( valueIsFunction ) {

- 				args[ 0 ] = value.call( this, index, self.html() );

- 			}

- 			domManip( self, args, callback, ignored );

- 		} );

- 	}

- 

- 	if ( l ) {

- 		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );

- 		first = fragment.firstChild;

- 

- 		if ( fragment.childNodes.length === 1 ) {

- 			fragment = first;

- 		}

- 

- 		// Require either new content or an interest in ignored elements to invoke the callback

- 		if ( first || ignored ) {

- 			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );

- 			hasScripts = scripts.length;

- 

- 			// Use the original fragment for the last item

- 			// instead of the first because it can end up

- 			// being emptied incorrectly in certain situations (#8070).

- 			for ( ; i < l; i++ ) {

- 				node = fragment;

- 

- 				if ( i !== iNoClone ) {

- 					node = jQuery.clone( node, true, true );

- 

- 					// Keep references to cloned scripts for later restoration

- 					if ( hasScripts ) {

- 

- 						// Support: Android <=4.0 only, PhantomJS 1 only

- 						// push.apply(_, arraylike) throws on ancient WebKit

- 						jQuery.merge( scripts, getAll( node, "script" ) );

- 					}

- 				}

- 

- 				callback.call( collection[ i ], node, i );

- 			}

- 

- 			if ( hasScripts ) {

- 				doc = scripts[ scripts.length - 1 ].ownerDocument;

- 

- 				// Reenable scripts

- 				jQuery.map( scripts, restoreScript );

- 

- 				// Evaluate executable scripts on first document insertion

- 				for ( i = 0; i < hasScripts; i++ ) {

- 					node = scripts[ i ];

- 					if ( rscriptType.test( node.type || "" ) &&

- 						!dataPriv.access( node, "globalEval" ) &&

- 						jQuery.contains( doc, node ) ) {

- 

- 						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {

- 

- 							// Optional AJAX dependency, but won't run scripts if not present

- 							if ( jQuery._evalUrl ) {

- 								jQuery._evalUrl( node.src );

- 							}

- 						} else {

- 							DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node );

- 						}

- 					}

- 				}

- 			}

- 		}

- 	}

- 

- 	return collection;

- }

- 

- function remove( elem, selector, keepData ) {

- 	var node,

- 		nodes = selector ? jQuery.filter( selector, elem ) : elem,

- 		i = 0;

- 

- 	for ( ; ( node = nodes[ i ] ) != null; i++ ) {

- 		if ( !keepData && node.nodeType === 1 ) {

- 			jQuery.cleanData( getAll( node ) );

- 		}

- 

- 		if ( node.parentNode ) {

- 			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {

- 				setGlobalEval( getAll( node, "script" ) );

- 			}

- 			node.parentNode.removeChild( node );

- 		}

- 	}

- 

- 	return elem;

- }

- 

- jQuery.extend( {

- 	htmlPrefilter: function( html ) {

- 		return html.replace( rxhtmlTag, "<$1></$2>" );

- 	},

- 

- 	clone: function( elem, dataAndEvents, deepDataAndEvents ) {

- 		var i, l, srcElements, destElements,

- 			clone = elem.cloneNode( true ),

- 			inPage = jQuery.contains( elem.ownerDocument, elem );

- 

- 		// Fix IE cloning issues

- 		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&

- 				!jQuery.isXMLDoc( elem ) ) {

- 

- 			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2

- 			destElements = getAll( clone );

- 			srcElements = getAll( elem );

- 

- 			for ( i = 0, l = srcElements.length; i < l; i++ ) {

- 				fixInput( srcElements[ i ], destElements[ i ] );

- 			}

- 		}

- 

- 		// Copy the events from the original to the clone

- 		if ( dataAndEvents ) {

- 			if ( deepDataAndEvents ) {

- 				srcElements = srcElements || getAll( elem );

- 				destElements = destElements || getAll( clone );

- 

- 				for ( i = 0, l = srcElements.length; i < l; i++ ) {

- 					cloneCopyEvent( srcElements[ i ], destElements[ i ] );

- 				}

- 			} else {

- 				cloneCopyEvent( elem, clone );

- 			}

- 		}

- 

- 		// Preserve script evaluation history

- 		destElements = getAll( clone, "script" );

- 		if ( destElements.length > 0 ) {

- 			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );

- 		}

- 

- 		// Return the cloned set

- 		return clone;

- 	},

- 

- 	cleanData: function( elems ) {

- 		var data, elem, type,

- 			special = jQuery.event.special,

- 			i = 0;

- 

- 		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {

- 			if ( acceptData( elem ) ) {

- 				if ( ( data = elem[ dataPriv.expando ] ) ) {

- 					if ( data.events ) {

- 						for ( type in data.events ) {

- 							if ( special[ type ] ) {

- 								jQuery.event.remove( elem, type );

- 

- 							// This is a shortcut to avoid jQuery.event.remove's overhead

- 							} else {

- 								jQuery.removeEvent( elem, type, data.handle );

- 							}

- 						}

- 					}

- 

- 					// Support: Chrome <=35 - 45+

- 					// Assign undefined instead of using delete, see Data#remove

- 					elem[ dataPriv.expando ] = undefined;

- 				}

- 				if ( elem[ dataUser.expando ] ) {

- 

- 					// Support: Chrome <=35 - 45+

- 					// Assign undefined instead of using delete, see Data#remove

- 					elem[ dataUser.expando ] = undefined;

- 				}

- 			}

- 		}

- 	}

- } );

- 

- jQuery.fn.extend( {

- 	detach: function( selector ) {

- 		return remove( this, selector, true );

- 	},

- 

- 	remove: function( selector ) {

- 		return remove( this, selector );

- 	},

- 

- 	text: function( value ) {

- 		return access( this, function( value ) {

- 			return value === undefined ?

- 				jQuery.text( this ) :

- 				this.empty().each( function() {

- 					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {

- 						this.textContent = value;

- 					}

- 				} );

- 		}, null, value, arguments.length );

- 	},

- 

- 	append: function() {

- 		return domManip( this, arguments, function( elem ) {

- 			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {

- 				var target = manipulationTarget( this, elem );

- 				target.appendChild( elem );

- 			}

- 		} );

- 	},

- 

- 	prepend: function() {

- 		return domManip( this, arguments, function( elem ) {

- 			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {

- 				var target = manipulationTarget( this, elem );

- 				target.insertBefore( elem, target.firstChild );

- 			}

- 		} );

- 	},

- 

- 	before: function() {

- 		return domManip( this, arguments, function( elem ) {

- 			if ( this.parentNode ) {

- 				this.parentNode.insertBefore( elem, this );

- 			}

- 		} );

- 	},

- 

- 	after: function() {

- 		return domManip( this, arguments, function( elem ) {

- 			if ( this.parentNode ) {

- 				this.parentNode.insertBefore( elem, this.nextSibling );

- 			}

- 		} );

- 	},

- 

- 	empty: function() {

- 		var elem,

- 			i = 0;

- 

- 		for ( ; ( elem = this[ i ] ) != null; i++ ) {

- 			if ( elem.nodeType === 1 ) {

- 

- 				// Prevent memory leaks

- 				jQuery.cleanData( getAll( elem, false ) );

- 

- 				// Remove any remaining nodes

- 				elem.textContent = "";

- 			}

- 		}

- 

- 		return this;

- 	},

- 

- 	clone: function( dataAndEvents, deepDataAndEvents ) {

- 		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;

- 		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;

- 

- 		return this.map( function() {

- 			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );

- 		} );

- 	},

- 

- 	html: function( value ) {

- 		return access( this, function( value ) {

- 			var elem = this[ 0 ] || {},

- 				i = 0,

- 				l = this.length;

- 

- 			if ( value === undefined && elem.nodeType === 1 ) {

- 				return elem.innerHTML;

- 			}

- 

- 			// See if we can take a shortcut and just use innerHTML

- 			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&

- 				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {

- 

- 				value = jQuery.htmlPrefilter( value );

- 

- 				try {

- 					for ( ; i < l; i++ ) {

- 						elem = this[ i ] || {};

- 

- 						// Remove element nodes and prevent memory leaks

- 						if ( elem.nodeType === 1 ) {

- 							jQuery.cleanData( getAll( elem, false ) );

- 							elem.innerHTML = value;

- 						}

- 					}

- 

- 					elem = 0;

- 

- 				// If using innerHTML throws an exception, use the fallback method

- 				} catch ( e ) {}

- 			}

- 

- 			if ( elem ) {

- 				this.empty().append( value );

- 			}

- 		}, null, value, arguments.length );

- 	},

- 

- 	replaceWith: function() {

- 		var ignored = [];

- 

- 		// Make the changes, replacing each non-ignored context element with the new content

- 		return domManip( this, arguments, function( elem ) {

- 			var parent = this.parentNode;

- 

- 			if ( jQuery.inArray( this, ignored ) < 0 ) {

- 				jQuery.cleanData( getAll( this ) );

- 				if ( parent ) {

- 					parent.replaceChild( elem, this );

- 				}

- 			}

- 

- 		// Force callback invocation

- 		}, ignored );

- 	}

- } );

- 

- jQuery.each( {

- 	appendTo: "append",

- 	prependTo: "prepend",

- 	insertBefore: "before",

- 	insertAfter: "after",

- 	replaceAll: "replaceWith"

- }, function( name, original ) {

- 	jQuery.fn[ name ] = function( selector ) {

- 		var elems,

- 			ret = [],

- 			insert = jQuery( selector ),

- 			last = insert.length - 1,

- 			i = 0;

- 

- 		for ( ; i <= last; i++ ) {

- 			elems = i === last ? this : this.clone( true );

- 			jQuery( insert[ i ] )[ original ]( elems );

- 

- 			// Support: Android <=4.0 only, PhantomJS 1 only

- 			// .get() because push.apply(_, arraylike) throws on ancient WebKit

- 			push.apply( ret, elems.get() );

- 		}

- 

- 		return this.pushStack( ret );

- 	};

- } );

- var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );

- 

- var getStyles = function( elem ) {

- 

- 		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)

- 		// IE throws on elements created in popups

- 		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"

- 		var view = elem.ownerDocument.defaultView;

- 

- 		if ( !view || !view.opener ) {

- 			view = window;

- 		}

- 

- 		return view.getComputedStyle( elem );

- 	};

- 

- var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );

- 

- 

- 

- ( function() {

- 

- 	// Executing both pixelPosition & boxSizingReliable tests require only one layout

- 	// so they're executed at the same time to save the second computation.

- 	function computeStyleTests() {

- 

- 		// This is a singleton, we need to execute it only once

- 		if ( !div ) {

- 			return;

- 		}

- 

- 		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +

- 			"margin-top:1px;padding:0;border:0";

- 		div.style.cssText =

- 			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +

- 			"margin:auto;border:1px;padding:1px;" +

- 			"width:60%;top:1%";

- 		documentElement.appendChild( container ).appendChild( div );

- 

- 		var divStyle = window.getComputedStyle( div );

- 		pixelPositionVal = divStyle.top !== "1%";

- 

- 		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44

- 		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;

- 

- 		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3

- 		// Some styles come back with percentage values, even though they shouldn't

- 		div.style.right = "60%";

- 		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;

- 

- 		// Support: IE 9 - 11 only

- 		// Detect misreporting of content dimensions for box-sizing:border-box elements

- 		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;

- 

- 		// Support: IE 9 only

- 		// Detect overflow:scroll screwiness (gh-3699)

- 		div.style.position = "absolute";

- 		scrollboxSizeVal = div.offsetWidth === 36 || "absolute";

- 

- 		documentElement.removeChild( container );

- 

- 		// Nullify the div so it wouldn't be stored in the memory and

- 		// it will also be a sign that checks already performed

- 		div = null;

- 	}

- 

- 	function roundPixelMeasures( measure ) {

- 		return Math.round( parseFloat( measure ) );

- 	}

- 

- 	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,

- 		reliableMarginLeftVal,

- 		container = document.createElement( "div" ),

- 		div = document.createElement( "div" );

- 

- 	// Finish early in limited (non-browser) environments

- 	if ( !div.style ) {

- 		return;

- 	}

- 

- 	// Support: IE <=9 - 11 only

- 	// Style of cloned element affects source element cloned (#8908)

- 	div.style.backgroundClip = "content-box";

- 	div.cloneNode( true ).style.backgroundClip = "";

- 	support.clearCloneStyle = div.style.backgroundClip === "content-box";

- 

- 	jQuery.extend( support, {

- 		boxSizingReliable: function() {

- 			computeStyleTests();

- 			return boxSizingReliableVal;

- 		},

- 		pixelBoxStyles: function() {

- 			computeStyleTests();

- 			return pixelBoxStylesVal;

- 		},

- 		pixelPosition: function() {

- 			computeStyleTests();

- 			return pixelPositionVal;

- 		},

- 		reliableMarginLeft: function() {

- 			computeStyleTests();

- 			return reliableMarginLeftVal;

- 		},

- 		scrollboxSize: function() {

- 			computeStyleTests();

- 			return scrollboxSizeVal;

- 		}

- 	} );

- } )();

- 

- 

- function curCSS( elem, name, computed ) {

- 	var width, minWidth, maxWidth, ret,

- 

- 		// Support: Firefox 51+

- 		// Retrieving style before computed somehow

- 		// fixes an issue with getting wrong values

- 		// on detached elements

- 		style = elem.style;

- 

- 	computed = computed || getStyles( elem );

- 

- 	// getPropertyValue is needed for:

- 	//   .css('filter') (IE 9 only, #12537)

- 	//   .css('--customProperty) (#3144)

- 	if ( computed ) {

- 		ret = computed.getPropertyValue( name ) || computed[ name ];

- 

- 		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {

- 			ret = jQuery.style( elem, name );

- 		}

- 

- 		// A tribute to the "awesome hack by Dean Edwards"

- 		// Android Browser returns percentage for some values,

- 		// but width seems to be reliably pixels.

- 		// This is against the CSSOM draft spec:

- 		// https://drafts.csswg.org/cssom/#resolved-values

- 		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {

- 

- 			// Remember the original values

- 			width = style.width;

- 			minWidth = style.minWidth;

- 			maxWidth = style.maxWidth;

- 

- 			// Put in the new values to get a computed value out

- 			style.minWidth = style.maxWidth = style.width = ret;

- 			ret = computed.width;

- 

- 			// Revert the changed values

- 			style.width = width;

- 			style.minWidth = minWidth;

- 			style.maxWidth = maxWidth;

- 		}

- 	}

- 

- 	return ret !== undefined ?

- 

- 		// Support: IE <=9 - 11 only

- 		// IE returns zIndex value as an integer.

- 		ret + "" :

- 		ret;

- }

- 

- 

- function addGetHookIf( conditionFn, hookFn ) {

- 

- 	// Define the hook, we'll check on the first run if it's really needed.

- 	return {

- 		get: function() {

- 			if ( conditionFn() ) {

- 

- 				// Hook not needed (or it's not possible to use it due

- 				// to missing dependency), remove it.

- 				delete this.get;

- 				return;

- 			}

- 

- 			// Hook needed; redefine it so that the support test is not executed again.

- 			return ( this.get = hookFn ).apply( this, arguments );

- 		}

- 	};

- }

- 

- 

- var

- 

- 	// Swappable if display is none or starts with table

- 	// except "table", "table-cell", or "table-caption"

- 	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display

- 	rdisplayswap = /^(none|table(?!-c[ea]).+)/,

- 	rcustomProp = /^--/,

- 	cssShow = { position: "absolute", visibility: "hidden", display: "block" },

- 	cssNormalTransform = {

- 		letterSpacing: "0",

- 		fontWeight: "400"

- 	},

- 

- 	cssPrefixes = [ "Webkit", "Moz", "ms" ],

- 	emptyStyle = document.createElement( "div" ).style;

- 

- // Return a css property mapped to a potentially vendor prefixed property

- function vendorPropName( name ) {

- 

- 	// Shortcut for names that are not vendor prefixed

- 	if ( name in emptyStyle ) {

- 		return name;

- 	}

- 

- 	// Check for vendor prefixed names

- 	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),

- 		i = cssPrefixes.length;

- 

- 	while ( i-- ) {

- 		name = cssPrefixes[ i ] + capName;

- 		if ( name in emptyStyle ) {

- 			return name;

- 		}

- 	}

- }

- 

- // Return a property mapped along what jQuery.cssProps suggests or to

- // a vendor prefixed property.

- function finalPropName( name ) {

- 	var ret = jQuery.cssProps[ name ];

- 	if ( !ret ) {

- 		ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;

- 	}

- 	return ret;

- }

- 

- function setPositiveNumber( elem, value, subtract ) {

- 

- 	// Any relative (+/-) values have already been

- 	// normalized at this point

- 	var matches = rcssNum.exec( value );

- 	return matches ?

- 

- 		// Guard against undefined "subtract", e.g., when used as in cssHooks

- 		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :

- 		value;

- }

- 

- function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {

- 	var i = dimension === "width" ? 1 : 0,

- 		extra = 0,

- 		delta = 0;

- 

- 	// Adjustment may not be necessary

- 	if ( box === ( isBorderBox ? "border" : "content" ) ) {

- 		return 0;

- 	}

- 

- 	for ( ; i < 4; i += 2 ) {

- 

- 		// Both box models exclude margin

- 		if ( box === "margin" ) {

- 			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );

- 		}

- 

- 		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"

- 		if ( !isBorderBox ) {

- 

- 			// Add padding

- 			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );

- 

- 			// For "border" or "margin", add border

- 			if ( box !== "padding" ) {

- 				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );

- 

- 			// But still keep track of it otherwise

- 			} else {

- 				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );

- 			}

- 

- 		// If we get here with a border-box (content + padding + border), we're seeking "content" or

- 		// "padding" or "margin"

- 		} else {

- 

- 			// For "content", subtract padding

- 			if ( box === "content" ) {

- 				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );

- 			}

- 

- 			// For "content" or "padding", subtract border

- 			if ( box !== "margin" ) {

- 				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );

- 			}

- 		}

- 	}

- 

- 	// Account for positive content-box scroll gutter when requested by providing computedVal

- 	if ( !isBorderBox && computedVal >= 0 ) {

- 

- 		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border

- 		// Assuming integer scroll gutter, subtract the rest and round down

- 		delta += Math.max( 0, Math.ceil(

- 			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -

- 			computedVal -

- 			delta -

- 			extra -

- 			0.5

- 		) );

- 	}

- 

- 	return delta;

- }

- 

- function getWidthOrHeight( elem, dimension, extra ) {

- 

- 	// Start with computed style

- 	var styles = getStyles( elem ),

- 		val = curCSS( elem, dimension, styles ),

- 		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",

- 		valueIsBorderBox = isBorderBox;

- 

- 	// Support: Firefox <=54

- 	// Return a confounding non-pixel value or feign ignorance, as appropriate.

- 	if ( rnumnonpx.test( val ) ) {

- 		if ( !extra ) {

- 			return val;

- 		}

- 		val = "auto";

- 	}

- 

- 	// Check for style in case a browser which returns unreliable values

- 	// for getComputedStyle silently falls back to the reliable elem.style

- 	valueIsBorderBox = valueIsBorderBox &&

- 		( support.boxSizingReliable() || val === elem.style[ dimension ] );

- 

- 	// Fall back to offsetWidth/offsetHeight when value is "auto"

- 	// This happens for inline elements with no explicit setting (gh-3571)

- 	// Support: Android <=4.1 - 4.3 only

- 	// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)

- 	if ( val === "auto" ||

- 		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) {

- 

- 		val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];

- 

- 		// offsetWidth/offsetHeight provide border-box values

- 		valueIsBorderBox = true;

- 	}

- 

- 	// Normalize "" and auto

- 	val = parseFloat( val ) || 0;

- 

- 	// Adjust for the element's box model

- 	return ( val +

- 		boxModelAdjustment(

- 			elem,

- 			dimension,

- 			extra || ( isBorderBox ? "border" : "content" ),

- 			valueIsBorderBox,

- 			styles,

- 

- 			// Provide the current computed size to request scroll gutter calculation (gh-3589)

- 			val

- 		)

- 	) + "px";

- }

- 

- jQuery.extend( {

- 

- 	// Add in style property hooks for overriding the default

- 	// behavior of getting and setting a style property

- 	cssHooks: {

- 		opacity: {

- 			get: function( elem, computed ) {

- 				if ( computed ) {

- 

- 					// We should always get a number back from opacity

- 					var ret = curCSS( elem, "opacity" );

- 					return ret === "" ? "1" : ret;

- 				}

- 			}

- 		}

- 	},

- 

- 	// Don't automatically add "px" to these possibly-unitless properties

- 	cssNumber: {

- 		"animationIterationCount": true,

- 		"columnCount": true,

- 		"fillOpacity": true,

- 		"flexGrow": true,

- 		"flexShrink": true,

- 		"fontWeight": true,

- 		"lineHeight": true,

- 		"opacity": true,

- 		"order": true,

- 		"orphans": true,

- 		"widows": true,

- 		"zIndex": true,

- 		"zoom": true

- 	},

- 

- 	// Add in properties whose names you wish to fix before

- 	// setting or getting the value

- 	cssProps: {},

- 

- 	// Get and set the style property on a DOM Node

- 	style: function( elem, name, value, extra ) {

- 

- 		// Don't set styles on text and comment nodes

- 		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {

- 			return;

- 		}

- 

- 		// Make sure that we're working with the right name

- 		var ret, type, hooks,

- 			origName = camelCase( name ),

- 			isCustomProp = rcustomProp.test( name ),

- 			style = elem.style;

- 

- 		// Make sure that we're working with the right name. We don't

- 		// want to query the value if it is a CSS custom property

- 		// since they are user-defined.

- 		if ( !isCustomProp ) {

- 			name = finalPropName( origName );

- 		}

- 

- 		// Gets hook for the prefixed version, then unprefixed version

- 		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

- 

- 		// Check if we're setting a value

- 		if ( value !== undefined ) {

- 			type = typeof value;

- 

- 			// Convert "+=" or "-=" to relative numbers (#7345)

- 			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {

- 				value = adjustCSS( elem, name, ret );

- 

- 				// Fixes bug #9237

- 				type = "number";

- 			}

- 

- 			// Make sure that null and NaN values aren't set (#7116)

- 			if ( value == null || value !== value ) {

- 				return;

- 			}

- 

- 			// If a number was passed in, add the unit (except for certain CSS properties)

- 			if ( type === "number" ) {

- 				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );

- 			}

- 

- 			// background-* props affect original clone's values

- 			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {

- 				style[ name ] = "inherit";

- 			}

- 

- 			// If a hook was provided, use that value, otherwise just set the specified value

- 			if ( !hooks || !( "set" in hooks ) ||

- 				( value = hooks.set( elem, value, extra ) ) !== undefined ) {

- 

- 				if ( isCustomProp ) {

- 					style.setProperty( name, value );

- 				} else {

- 					style[ name ] = value;

- 				}

- 			}

- 

- 		} else {

- 

- 			// If a hook was provided get the non-computed value from there

- 			if ( hooks && "get" in hooks &&

- 				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {

- 

- 				return ret;

- 			}

- 

- 			// Otherwise just get the value from the style object

- 			return style[ name ];

- 		}

- 	},

- 

- 	css: function( elem, name, extra, styles ) {

- 		var val, num, hooks,

- 			origName = camelCase( name ),

- 			isCustomProp = rcustomProp.test( name );

- 

- 		// Make sure that we're working with the right name. We don't

- 		// want to modify the value if it is a CSS custom property

- 		// since they are user-defined.

- 		if ( !isCustomProp ) {

- 			name = finalPropName( origName );

- 		}

- 

- 		// Try prefixed name followed by the unprefixed name

- 		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

- 

- 		// If a hook was provided get the computed value from there

- 		if ( hooks && "get" in hooks ) {

- 			val = hooks.get( elem, true, extra );

- 		}

- 

- 		// Otherwise, if a way to get the computed value exists, use that

- 		if ( val === undefined ) {

- 			val = curCSS( elem, name, styles );

- 		}

- 

- 		// Convert "normal" to computed value

- 		if ( val === "normal" && name in cssNormalTransform ) {

- 			val = cssNormalTransform[ name ];

- 		}

- 

- 		// Make numeric if forced or a qualifier was provided and val looks numeric

- 		if ( extra === "" || extra ) {

- 			num = parseFloat( val );

- 			return extra === true || isFinite( num ) ? num || 0 : val;

- 		}

- 

- 		return val;

- 	}

- } );

- 

- jQuery.each( [ "height", "width" ], function( i, dimension ) {

- 	jQuery.cssHooks[ dimension ] = {

- 		get: function( elem, computed, extra ) {

- 			if ( computed ) {

- 

- 				// Certain elements can have dimension info if we invisibly show them

- 				// but it must have a current display style that would benefit

- 				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&

- 

- 					// Support: Safari 8+

- 					// Table columns in Safari have non-zero offsetWidth & zero

- 					// getBoundingClientRect().width unless display is changed.

- 					// Support: IE <=11 only

- 					// Running getBoundingClientRect on a disconnected node

- 					// in IE throws an error.

- 					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?

- 						swap( elem, cssShow, function() {

- 							return getWidthOrHeight( elem, dimension, extra );

- 						} ) :

- 						getWidthOrHeight( elem, dimension, extra );

- 			}

- 		},

- 

- 		set: function( elem, value, extra ) {

- 			var matches,

- 				styles = getStyles( elem ),

- 				isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",

- 				subtract = extra && boxModelAdjustment(

- 					elem,

- 					dimension,

- 					extra,

- 					isBorderBox,

- 					styles

- 				);

- 

- 			// Account for unreliable border-box dimensions by comparing offset* to computed and

- 			// faking a content-box to get border and padding (gh-3699)

- 			if ( isBorderBox && support.scrollboxSize() === styles.position ) {

- 				subtract -= Math.ceil(

- 					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -

- 					parseFloat( styles[ dimension ] ) -

- 					boxModelAdjustment( elem, dimension, "border", false, styles ) -

- 					0.5

- 				);

- 			}

- 

- 			// Convert to pixels if value adjustment is needed

- 			if ( subtract && ( matches = rcssNum.exec( value ) ) &&

- 				( matches[ 3 ] || "px" ) !== "px" ) {

- 

- 				elem.style[ dimension ] = value;

- 				value = jQuery.css( elem, dimension );

- 			}

- 

- 			return setPositiveNumber( elem, value, subtract );

- 		}

- 	};

- } );

- 

- jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,

- 	function( elem, computed ) {

- 		if ( computed ) {

- 			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||

- 				elem.getBoundingClientRect().left -

- 					swap( elem, { marginLeft: 0 }, function() {

- 						return elem.getBoundingClientRect().left;

- 					} )

- 				) + "px";

- 		}

- 	}

- );

- 

- // These hooks are used by animate to expand properties

- jQuery.each( {

- 	margin: "",

- 	padding: "",

- 	border: "Width"

- }, function( prefix, suffix ) {

- 	jQuery.cssHooks[ prefix + suffix ] = {

- 		expand: function( value ) {

- 			var i = 0,

- 				expanded = {},

- 

- 				// Assumes a single number if not a string

- 				parts = typeof value === "string" ? value.split( " " ) : [ value ];

- 

- 			for ( ; i < 4; i++ ) {

- 				expanded[ prefix + cssExpand[ i ] + suffix ] =

- 					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];

- 			}

- 

- 			return expanded;

- 		}

- 	};

- 

- 	if ( prefix !== "margin" ) {

- 		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;

- 	}

- } );

- 

- jQuery.fn.extend( {

- 	css: function( name, value ) {

- 		return access( this, function( elem, name, value ) {

- 			var styles, len,

- 				map = {},

- 				i = 0;

- 

- 			if ( Array.isArray( name ) ) {

- 				styles = getStyles( elem );

- 				len = name.length;

- 

- 				for ( ; i < len; i++ ) {

- 					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );

- 				}

- 

- 				return map;

- 			}

- 

- 			return value !== undefined ?

- 				jQuery.style( elem, name, value ) :

- 				jQuery.css( elem, name );

- 		}, name, value, arguments.length > 1 );

- 	}

- } );

- 

- 

- function Tween( elem, options, prop, end, easing ) {

- 	return new Tween.prototype.init( elem, options, prop, end, easing );

- }

- jQuery.Tween = Tween;

- 

- Tween.prototype = {

- 	constructor: Tween,

- 	init: function( elem, options, prop, end, easing, unit ) {

- 		this.elem = elem;

- 		this.prop = prop;

- 		this.easing = easing || jQuery.easing._default;

- 		this.options = options;

- 		this.start = this.now = this.cur();

- 		this.end = end;

- 		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );

- 	},

- 	cur: function() {

- 		var hooks = Tween.propHooks[ this.prop ];

- 

- 		return hooks && hooks.get ?

- 			hooks.get( this ) :

- 			Tween.propHooks._default.get( this );

- 	},

- 	run: function( percent ) {

- 		var eased,

- 			hooks = Tween.propHooks[ this.prop ];

- 

- 		if ( this.options.duration ) {

- 			this.pos = eased = jQuery.easing[ this.easing ](

- 				percent, this.options.duration * percent, 0, 1, this.options.duration

- 			);

- 		} else {

- 			this.pos = eased = percent;

- 		}

- 		this.now = ( this.end - this.start ) * eased + this.start;

- 

- 		if ( this.options.step ) {

- 			this.options.step.call( this.elem, this.now, this );

- 		}

- 

- 		if ( hooks && hooks.set ) {

- 			hooks.set( this );

- 		} else {

- 			Tween.propHooks._default.set( this );

- 		}

- 		return this;

- 	}

- };

- 

- Tween.prototype.init.prototype = Tween.prototype;

- 

- Tween.propHooks = {

- 	_default: {

- 		get: function( tween ) {

- 			var result;

- 

- 			// Use a property on the element directly when it is not a DOM element,

- 			// or when there is no matching style property that exists.

- 			if ( tween.elem.nodeType !== 1 ||

- 				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {

- 				return tween.elem[ tween.prop ];

- 			}

- 

- 			// Passing an empty string as a 3rd parameter to .css will automatically

- 			// attempt a parseFloat and fallback to a string if the parse fails.

- 			// Simple values such as "10px" are parsed to Float;

- 			// complex values such as "rotate(1rad)" are returned as-is.

- 			result = jQuery.css( tween.elem, tween.prop, "" );

- 

- 			// Empty strings, null, undefined and "auto" are converted to 0.

- 			return !result || result === "auto" ? 0 : result;

- 		},

- 		set: function( tween ) {

- 

- 			// Use step hook for back compat.

- 			// Use cssHook if its there.

- 			// Use .style if available and use plain properties where available.

- 			if ( jQuery.fx.step[ tween.prop ] ) {

- 				jQuery.fx.step[ tween.prop ]( tween );

- 			} else if ( tween.elem.nodeType === 1 &&

- 				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||

- 					jQuery.cssHooks[ tween.prop ] ) ) {

- 				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );

- 			} else {

- 				tween.elem[ tween.prop ] = tween.now;

- 			}

- 		}

- 	}

- };

- 

- // Support: IE <=9 only

- // Panic based approach to setting things on disconnected nodes

- Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {

- 	set: function( tween ) {

- 		if ( tween.elem.nodeType && tween.elem.parentNode ) {

- 			tween.elem[ tween.prop ] = tween.now;

- 		}

- 	}

- };

- 

- jQuery.easing = {

- 	linear: function( p ) {

- 		return p;

- 	},

- 	swing: function( p ) {

- 		return 0.5 - Math.cos( p * Math.PI ) / 2;

- 	},

- 	_default: "swing"

- };

- 

- jQuery.fx = Tween.prototype.init;

- 

- // Back compat <1.8 extension point

- jQuery.fx.step = {};

- 

- 

- 

- 

- var

- 	fxNow, inProgress,

- 	rfxtypes = /^(?:toggle|show|hide)$/,

- 	rrun = /queueHooks$/;

- 

- function schedule() {

- 	if ( inProgress ) {

- 		if ( document.hidden === false && window.requestAnimationFrame ) {

- 			window.requestAnimationFrame( schedule );

- 		} else {

- 			window.setTimeout( schedule, jQuery.fx.interval );

- 		}

- 

- 		jQuery.fx.tick();

- 	}

- }

- 

- // Animations created synchronously will run synchronously

- function createFxNow() {

- 	window.setTimeout( function() {

- 		fxNow = undefined;

- 	} );

- 	return ( fxNow = Date.now() );

- }

- 

- // Generate parameters to create a standard animation

- function genFx( type, includeWidth ) {

- 	var which,

- 		i = 0,

- 		attrs = { height: type };

- 

- 	// If we include width, step value is 1 to do all cssExpand values,

- 	// otherwise step value is 2 to skip over Left and Right

- 	includeWidth = includeWidth ? 1 : 0;

- 	for ( ; i < 4; i += 2 - includeWidth ) {

- 		which = cssExpand[ i ];

- 		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;

- 	}

- 

- 	if ( includeWidth ) {

- 		attrs.opacity = attrs.width = type;

- 	}

- 

- 	return attrs;

- }

- 

- function createTween( value, prop, animation ) {

- 	var tween,

- 		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),

- 		index = 0,

- 		length = collection.length;

- 	for ( ; index < length; index++ ) {

- 		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {

- 

- 			// We're done with this property

- 			return tween;

- 		}

- 	}

- }

- 

- function defaultPrefilter( elem, props, opts ) {

- 	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,

- 		isBox = "width" in props || "height" in props,

- 		anim = this,

- 		orig = {},

- 		style = elem.style,

- 		hidden = elem.nodeType && isHiddenWithinTree( elem ),

- 		dataShow = dataPriv.get( elem, "fxshow" );

- 

- 	// Queue-skipping animations hijack the fx hooks

- 	if ( !opts.queue ) {

- 		hooks = jQuery._queueHooks( elem, "fx" );

- 		if ( hooks.unqueued == null ) {

- 			hooks.unqueued = 0;

- 			oldfire = hooks.empty.fire;

- 			hooks.empty.fire = function() {

- 				if ( !hooks.unqueued ) {

- 					oldfire();

- 				}

- 			};

- 		}

- 		hooks.unqueued++;

- 

- 		anim.always( function() {

- 

- 			// Ensure the complete handler is called before this completes

- 			anim.always( function() {

- 				hooks.unqueued--;

- 				if ( !jQuery.queue( elem, "fx" ).length ) {

- 					hooks.empty.fire();

- 				}

- 			} );

- 		} );

- 	}

- 

- 	// Detect show/hide animations

- 	for ( prop in props ) {

- 		value = props[ prop ];

- 		if ( rfxtypes.test( value ) ) {

- 			delete props[ prop ];

- 			toggle = toggle || value === "toggle";

- 			if ( value === ( hidden ? "hide" : "show" ) ) {

- 

- 				// Pretend to be hidden if this is a "show" and

- 				// there is still data from a stopped show/hide

- 				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {

- 					hidden = true;

- 

- 				// Ignore all other no-op show/hide data

- 				} else {

- 					continue;

- 				}

- 			}

- 			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );

- 		}

- 	}

- 

- 	// Bail out if this is a no-op like .hide().hide()

- 	propTween = !jQuery.isEmptyObject( props );

- 	if ( !propTween && jQuery.isEmptyObject( orig ) ) {

- 		return;

- 	}

- 

- 	// Restrict "overflow" and "display" styles during box animations

- 	if ( isBox && elem.nodeType === 1 ) {

- 

- 		// Support: IE <=9 - 11, Edge 12 - 15

- 		// Record all 3 overflow attributes because IE does not infer the shorthand

- 		// from identically-valued overflowX and overflowY and Edge just mirrors

- 		// the overflowX value there.

- 		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];

- 

- 		// Identify a display type, preferring old show/hide data over the CSS cascade

- 		restoreDisplay = dataShow && dataShow.display;

- 		if ( restoreDisplay == null ) {

- 			restoreDisplay = dataPriv.get( elem, "display" );

- 		}

- 		display = jQuery.css( elem, "display" );

- 		if ( display === "none" ) {

- 			if ( restoreDisplay ) {

- 				display = restoreDisplay;

- 			} else {

- 

- 				// Get nonempty value(s) by temporarily forcing visibility

- 				showHide( [ elem ], true );

- 				restoreDisplay = elem.style.display || restoreDisplay;

- 				display = jQuery.css( elem, "display" );

- 				showHide( [ elem ] );

- 			}

- 		}

- 

- 		// Animate inline elements as inline-block

- 		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {

- 			if ( jQuery.css( elem, "float" ) === "none" ) {

- 

- 				// Restore the original display value at the end of pure show/hide animations

- 				if ( !propTween ) {

- 					anim.done( function() {

- 						style.display = restoreDisplay;

- 					} );

- 					if ( restoreDisplay == null ) {

- 						display = style.display;

- 						restoreDisplay = display === "none" ? "" : display;

- 					}

- 				}

- 				style.display = "inline-block";

- 			}

- 		}

- 	}

- 

- 	if ( opts.overflow ) {

- 		style.overflow = "hidden";

- 		anim.always( function() {

- 			style.overflow = opts.overflow[ 0 ];

- 			style.overflowX = opts.overflow[ 1 ];

- 			style.overflowY = opts.overflow[ 2 ];

- 		} );

- 	}

- 

- 	// Implement show/hide animations

- 	propTween = false;

- 	for ( prop in orig ) {

- 

- 		// General show/hide setup for this element animation

- 		if ( !propTween ) {

- 			if ( dataShow ) {

- 				if ( "hidden" in dataShow ) {

- 					hidden = dataShow.hidden;

- 				}

- 			} else {

- 				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );

- 			}

- 

- 			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"

- 			if ( toggle ) {

- 				dataShow.hidden = !hidden;

- 			}

- 

- 			// Show elements before animating them

- 			if ( hidden ) {

- 				showHide( [ elem ], true );

- 			}

- 

- 			/* eslint-disable no-loop-func */

- 

- 			anim.done( function() {

- 

- 			/* eslint-enable no-loop-func */

- 

- 				// The final step of a "hide" animation is actually hiding the element

- 				if ( !hidden ) {

- 					showHide( [ elem ] );

- 				}

- 				dataPriv.remove( elem, "fxshow" );

- 				for ( prop in orig ) {

- 					jQuery.style( elem, prop, orig[ prop ] );

- 				}

- 			} );

- 		}

- 

- 		// Per-property setup

- 		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );

- 		if ( !( prop in dataShow ) ) {

- 			dataShow[ prop ] = propTween.start;

- 			if ( hidden ) {

- 				propTween.end = propTween.start;

- 				propTween.start = 0;

- 			}

- 		}

- 	}

- }

- 

- function propFilter( props, specialEasing ) {

- 	var index, name, easing, value, hooks;

- 

- 	// camelCase, specialEasing and expand cssHook pass

- 	for ( index in props ) {

- 		name = camelCase( index );

- 		easing = specialEasing[ name ];

- 		value = props[ index ];

- 		if ( Array.isArray( value ) ) {

- 			easing = value[ 1 ];

- 			value = props[ index ] = value[ 0 ];

- 		}

- 

- 		if ( index !== name ) {

- 			props[ name ] = value;

- 			delete props[ index ];

- 		}

- 

- 		hooks = jQuery.cssHooks[ name ];

- 		if ( hooks && "expand" in hooks ) {

- 			value = hooks.expand( value );

- 			delete props[ name ];

- 

- 			// Not quite $.extend, this won't overwrite existing keys.

- 			// Reusing 'index' because we have the correct "name"

- 			for ( index in value ) {

- 				if ( !( index in props ) ) {

- 					props[ index ] = value[ index ];

- 					specialEasing[ index ] = easing;

- 				}

- 			}

- 		} else {

- 			specialEasing[ name ] = easing;

- 		}

- 	}

- }

- 

- function Animation( elem, properties, options ) {

- 	var result,

- 		stopped,

- 		index = 0,

- 		length = Animation.prefilters.length,

- 		deferred = jQuery.Deferred().always( function() {

- 

- 			// Don't match elem in the :animated selector

- 			delete tick.elem;

- 		} ),

- 		tick = function() {

- 			if ( stopped ) {

- 				return false;

- 			}

- 			var currentTime = fxNow || createFxNow(),

- 				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),

- 

- 				// Support: Android 2.3 only

- 				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)

- 				temp = remaining / animation.duration || 0,

- 				percent = 1 - temp,

- 				index = 0,

- 				length = animation.tweens.length;

- 

- 			for ( ; index < length; index++ ) {

- 				animation.tweens[ index ].run( percent );

- 			}

- 

- 			deferred.notifyWith( elem, [ animation, percent, remaining ] );

- 

- 			// If there's more to do, yield

- 			if ( percent < 1 && length ) {

- 				return remaining;

- 			}

- 

- 			// If this was an empty animation, synthesize a final progress notification

- 			if ( !length ) {

- 				deferred.notifyWith( elem, [ animation, 1, 0 ] );

- 			}

- 

- 			// Resolve the animation and report its conclusion

- 			deferred.resolveWith( elem, [ animation ] );

- 			return false;

- 		},

- 		animation = deferred.promise( {

- 			elem: elem,

- 			props: jQuery.extend( {}, properties ),

- 			opts: jQuery.extend( true, {

- 				specialEasing: {},

- 				easing: jQuery.easing._default

- 			}, options ),

- 			originalProperties: properties,

- 			originalOptions: options,

- 			startTime: fxNow || createFxNow(),

- 			duration: options.duration,

- 			tweens: [],

- 			createTween: function( prop, end ) {

- 				var tween = jQuery.Tween( elem, animation.opts, prop, end,

- 						animation.opts.specialEasing[ prop ] || animation.opts.easing );

- 				animation.tweens.push( tween );

- 				return tween;

- 			},

- 			stop: function( gotoEnd ) {

- 				var index = 0,

- 

- 					// If we are going to the end, we want to run all the tweens

- 					// otherwise we skip this part

- 					length = gotoEnd ? animation.tweens.length : 0;

- 				if ( stopped ) {

- 					return this;

- 				}

- 				stopped = true;

- 				for ( ; index < length; index++ ) {

- 					animation.tweens[ index ].run( 1 );

- 				}

- 

- 				// Resolve when we played the last frame; otherwise, reject

- 				if ( gotoEnd ) {

- 					deferred.notifyWith( elem, [ animation, 1, 0 ] );

- 					deferred.resolveWith( elem, [ animation, gotoEnd ] );

- 				} else {

- 					deferred.rejectWith( elem, [ animation, gotoEnd ] );

- 				}

- 				return this;

- 			}

- 		} ),

- 		props = animation.props;

- 

- 	propFilter( props, animation.opts.specialEasing );

- 

- 	for ( ; index < length; index++ ) {

- 		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );

- 		if ( result ) {

- 			if ( isFunction( result.stop ) ) {

- 				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =

- 					result.stop.bind( result );

- 			}

- 			return result;

- 		}

- 	}

- 

- 	jQuery.map( props, createTween, animation );

- 

- 	if ( isFunction( animation.opts.start ) ) {

- 		animation.opts.start.call( elem, animation );

- 	}

- 

- 	// Attach callbacks from options

- 	animation

- 		.progress( animation.opts.progress )

- 		.done( animation.opts.done, animation.opts.complete )

- 		.fail( animation.opts.fail )

- 		.always( animation.opts.always );

- 

- 	jQuery.fx.timer(

- 		jQuery.extend( tick, {

- 			elem: elem,

- 			anim: animation,

- 			queue: animation.opts.queue

- 		} )

- 	);

- 

- 	return animation;

- }

- 

- jQuery.Animation = jQuery.extend( Animation, {

- 

- 	tweeners: {

- 		"*": [ function( prop, value ) {

- 			var tween = this.createTween( prop, value );

- 			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );

- 			return tween;

- 		} ]

- 	},

- 

- 	tweener: function( props, callback ) {

- 		if ( isFunction( props ) ) {

- 			callback = props;

- 			props = [ "*" ];

- 		} else {

- 			props = props.match( rnothtmlwhite );

- 		}

- 

- 		var prop,

- 			index = 0,

- 			length = props.length;

- 

- 		for ( ; index < length; index++ ) {

- 			prop = props[ index ];

- 			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];

- 			Animation.tweeners[ prop ].unshift( callback );

- 		}

- 	},

- 

- 	prefilters: [ defaultPrefilter ],

- 

- 	prefilter: function( callback, prepend ) {

- 		if ( prepend ) {

- 			Animation.prefilters.unshift( callback );

- 		} else {

- 			Animation.prefilters.push( callback );

- 		}

- 	}

- } );

- 

- jQuery.speed = function( speed, easing, fn ) {

- 	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {

- 		complete: fn || !fn && easing ||

- 			isFunction( speed ) && speed,

- 		duration: speed,

- 		easing: fn && easing || easing && !isFunction( easing ) && easing

- 	};

- 

- 	// Go to the end state if fx are off

- 	if ( jQuery.fx.off ) {

- 		opt.duration = 0;

- 

- 	} else {

- 		if ( typeof opt.duration !== "number" ) {

- 			if ( opt.duration in jQuery.fx.speeds ) {

- 				opt.duration = jQuery.fx.speeds[ opt.duration ];

- 

- 			} else {

- 				opt.duration = jQuery.fx.speeds._default;

- 			}

- 		}

- 	}

- 

- 	// Normalize opt.queue - true/undefined/null -> "fx"

- 	if ( opt.queue == null || opt.queue === true ) {

- 		opt.queue = "fx";

- 	}

- 

- 	// Queueing

- 	opt.old = opt.complete;

- 

- 	opt.complete = function() {

- 		if ( isFunction( opt.old ) ) {

- 			opt.old.call( this );

- 		}

- 

- 		if ( opt.queue ) {

- 			jQuery.dequeue( this, opt.queue );

- 		}

- 	};

- 

- 	return opt;

- };

- 

- jQuery.fn.extend( {

- 	fadeTo: function( speed, to, easing, callback ) {

- 

- 		// Show any hidden elements after setting opacity to 0

- 		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()

- 

- 			// Animate to the value specified

- 			.end().animate( { opacity: to }, speed, easing, callback );

- 	},

- 	animate: function( prop, speed, easing, callback ) {

- 		var empty = jQuery.isEmptyObject( prop ),

- 			optall = jQuery.speed( speed, easing, callback ),

- 			doAnimation = function() {

- 

- 				// Operate on a copy of prop so per-property easing won't be lost

- 				var anim = Animation( this, jQuery.extend( {}, prop ), optall );

- 

- 				// Empty animations, or finishing resolves immediately

- 				if ( empty || dataPriv.get( this, "finish" ) ) {

- 					anim.stop( true );

- 				}

- 			};

- 			doAnimation.finish = doAnimation;

- 

- 		return empty || optall.queue === false ?

- 			this.each( doAnimation ) :

- 			this.queue( optall.queue, doAnimation );

- 	},

- 	stop: function( type, clearQueue, gotoEnd ) {

- 		var stopQueue = function( hooks ) {

- 			var stop = hooks.stop;

- 			delete hooks.stop;

- 			stop( gotoEnd );

- 		};

- 

- 		if ( typeof type !== "string" ) {

- 			gotoEnd = clearQueue;

- 			clearQueue = type;

- 			type = undefined;

- 		}

- 		if ( clearQueue && type !== false ) {

- 			this.queue( type || "fx", [] );

- 		}

- 

- 		return this.each( function() {

- 			var dequeue = true,

- 				index = type != null && type + "queueHooks",

- 				timers = jQuery.timers,

- 				data = dataPriv.get( this );

- 

- 			if ( index ) {

- 				if ( data[ index ] && data[ index ].stop ) {

- 					stopQueue( data[ index ] );

- 				}

- 			} else {

- 				for ( index in data ) {

- 					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {

- 						stopQueue( data[ index ] );

- 					}

- 				}

- 			}

- 

- 			for ( index = timers.length; index--; ) {

- 				if ( timers[ index ].elem === this &&

- 					( type == null || timers[ index ].queue === type ) ) {

- 

- 					timers[ index ].anim.stop( gotoEnd );

- 					dequeue = false;

- 					timers.splice( index, 1 );

- 				}

- 			}

- 

- 			// Start the next in the queue if the last step wasn't forced.

- 			// Timers currently will call their complete callbacks, which

- 			// will dequeue but only if they were gotoEnd.

- 			if ( dequeue || !gotoEnd ) {

- 				jQuery.dequeue( this, type );

- 			}

- 		} );

- 	},

- 	finish: function( type ) {

- 		if ( type !== false ) {

- 			type = type || "fx";

- 		}

- 		return this.each( function() {

- 			var index,

- 				data = dataPriv.get( this ),

- 				queue = data[ type + "queue" ],

- 				hooks = data[ type + "queueHooks" ],

- 				timers = jQuery.timers,

- 				length = queue ? queue.length : 0;

- 

- 			// Enable finishing flag on private data

- 			data.finish = true;

- 

- 			// Empty the queue first

- 			jQuery.queue( this, type, [] );

- 

- 			if ( hooks && hooks.stop ) {

- 				hooks.stop.call( this, true );

- 			}

- 

- 			// Look for any active animations, and finish them

- 			for ( index = timers.length; index--; ) {

- 				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {

- 					timers[ index ].anim.stop( true );

- 					timers.splice( index, 1 );

- 				}

- 			}

- 

- 			// Look for any animations in the old queue and finish them

- 			for ( index = 0; index < length; index++ ) {

- 				if ( queue[ index ] && queue[ index ].finish ) {

- 					queue[ index ].finish.call( this );

- 				}

- 			}

- 

- 			// Turn off finishing flag

- 			delete data.finish;

- 		} );

- 	}

- } );

- 

- jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {

- 	var cssFn = jQuery.fn[ name ];

- 	jQuery.fn[ name ] = function( speed, easing, callback ) {

- 		return speed == null || typeof speed === "boolean" ?

- 			cssFn.apply( this, arguments ) :

- 			this.animate( genFx( name, true ), speed, easing, callback );

- 	};

- } );

- 

- // Generate shortcuts for custom animations

- jQuery.each( {

- 	slideDown: genFx( "show" ),

- 	slideUp: genFx( "hide" ),

- 	slideToggle: genFx( "toggle" ),

- 	fadeIn: { opacity: "show" },

- 	fadeOut: { opacity: "hide" },

- 	fadeToggle: { opacity: "toggle" }

- }, function( name, props ) {

- 	jQuery.fn[ name ] = function( speed, easing, callback ) {

- 		return this.animate( props, speed, easing, callback );

- 	};

- } );

- 

- jQuery.timers = [];

- jQuery.fx.tick = function() {

- 	var timer,

- 		i = 0,

- 		timers = jQuery.timers;

- 

- 	fxNow = Date.now();

- 

- 	for ( ; i < timers.length; i++ ) {

- 		timer = timers[ i ];

- 

- 		// Run the timer and safely remove it when done (allowing for external removal)

- 		if ( !timer() && timers[ i ] === timer ) {

- 			timers.splice( i--, 1 );

- 		}

- 	}

- 

- 	if ( !timers.length ) {

- 		jQuery.fx.stop();

- 	}

- 	fxNow = undefined;

- };

- 

- jQuery.fx.timer = function( timer ) {

- 	jQuery.timers.push( timer );

- 	jQuery.fx.start();

- };

- 

- jQuery.fx.interval = 13;

- jQuery.fx.start = function() {

- 	if ( inProgress ) {

- 		return;

- 	}

- 

- 	inProgress = true;

- 	schedule();

- };

- 

- jQuery.fx.stop = function() {

- 	inProgress = null;

- };

- 

- jQuery.fx.speeds = {

- 	slow: 600,

- 	fast: 200,

- 

- 	// Default speed

- 	_default: 400

- };

- 

- 

- // Based off of the plugin by Clint Helfers, with permission.

- // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/

- jQuery.fn.delay = function( time, type ) {

- 	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;

- 	type = type || "fx";

- 

- 	return this.queue( type, function( next, hooks ) {

- 		var timeout = window.setTimeout( next, time );

- 		hooks.stop = function() {

- 			window.clearTimeout( timeout );

- 		};

- 	} );

- };

- 

- 

- ( function() {

- 	var input = document.createElement( "input" ),

- 		select = document.createElement( "select" ),

- 		opt = select.appendChild( document.createElement( "option" ) );

- 

- 	input.type = "checkbox";

- 

- 	// Support: Android <=4.3 only

- 	// Default value for a checkbox should be "on"

- 	support.checkOn = input.value !== "";

- 

- 	// Support: IE <=11 only

- 	// Must access selectedIndex to make default options select

- 	support.optSelected = opt.selected;

- 

- 	// Support: IE <=11 only

- 	// An input loses its value after becoming a radio

- 	input = document.createElement( "input" );

- 	input.value = "t";

- 	input.type = "radio";

- 	support.radioValue = input.value === "t";

- } )();

- 

- 

- var boolHook,

- 	attrHandle = jQuery.expr.attrHandle;

- 

- jQuery.fn.extend( {

- 	attr: function( name, value ) {

- 		return access( this, jQuery.attr, name, value, arguments.length > 1 );

- 	},

- 

- 	removeAttr: function( name ) {

- 		return this.each( function() {

- 			jQuery.removeAttr( this, name );

- 		} );

- 	}

- } );

- 

- jQuery.extend( {

- 	attr: function( elem, name, value ) {

- 		var ret, hooks,

- 			nType = elem.nodeType;

- 

- 		// Don't get/set attributes on text, comment and attribute nodes

- 		if ( nType === 3 || nType === 8 || nType === 2 ) {

- 			return;

- 		}

- 

- 		// Fallback to prop when attributes are not supported

- 		if ( typeof elem.getAttribute === "undefined" ) {

- 			return jQuery.prop( elem, name, value );

- 		}

- 

- 		// Attribute hooks are determined by the lowercase version

- 		// Grab necessary hook if one is defined

- 		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {

- 			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||

- 				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );

- 		}

- 

- 		if ( value !== undefined ) {

- 			if ( value === null ) {

- 				jQuery.removeAttr( elem, name );

- 				return;

- 			}

- 

- 			if ( hooks && "set" in hooks &&

- 				( ret = hooks.set( elem, value, name ) ) !== undefined ) {

- 				return ret;

- 			}

- 

- 			elem.setAttribute( name, value + "" );

- 			return value;

- 		}

- 

- 		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {

- 			return ret;

- 		}

- 

- 		ret = jQuery.find.attr( elem, name );

- 

- 		// Non-existent attributes return null, we normalize to undefined

- 		return ret == null ? undefined : ret;

- 	},

- 

- 	attrHooks: {

- 		type: {

- 			set: function( elem, value ) {

- 				if ( !support.radioValue && value === "radio" &&

- 					nodeName( elem, "input" ) ) {

- 					var val = elem.value;

- 					elem.setAttribute( "type", value );

- 					if ( val ) {

- 						elem.value = val;

- 					}

- 					return value;

- 				}

- 			}

- 		}

- 	},

- 

- 	removeAttr: function( elem, value ) {

- 		var name,

- 			i = 0,

- 

- 			// Attribute names can contain non-HTML whitespace characters

- 			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2

- 			attrNames = value && value.match( rnothtmlwhite );

- 

- 		if ( attrNames && elem.nodeType === 1 ) {

- 			while ( ( name = attrNames[ i++ ] ) ) {

- 				elem.removeAttribute( name );

- 			}

- 		}

- 	}

- } );

- 

- // Hooks for boolean attributes

- boolHook = {

- 	set: function( elem, value, name ) {

- 		if ( value === false ) {

- 

- 			// Remove boolean attributes when set to false

- 			jQuery.removeAttr( elem, name );

- 		} else {

- 			elem.setAttribute( name, name );

- 		}

- 		return name;

- 	}

- };

- 

- jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {

- 	var getter = attrHandle[ name ] || jQuery.find.attr;

- 

- 	attrHandle[ name ] = function( elem, name, isXML ) {

- 		var ret, handle,

- 			lowercaseName = name.toLowerCase();

- 

- 		if ( !isXML ) {

- 

- 			// Avoid an infinite loop by temporarily removing this function from the getter

- 			handle = attrHandle[ lowercaseName ];

- 			attrHandle[ lowercaseName ] = ret;

- 			ret = getter( elem, name, isXML ) != null ?

- 				lowercaseName :

- 				null;

- 			attrHandle[ lowercaseName ] = handle;

- 		}

- 		return ret;

- 	};

- } );

- 

- 

- 

- 

- var rfocusable = /^(?:input|select|textarea|button)$/i,

- 	rclickable = /^(?:a|area)$/i;

- 

- jQuery.fn.extend( {

- 	prop: function( name, value ) {

- 		return access( this, jQuery.prop, name, value, arguments.length > 1 );

- 	},

- 

- 	removeProp: function( name ) {